Coverage for cuda/core/_stream.pyx: 83.26%

227 statements  

« prev     ^ index     » next       coverage.py v7.17.2, created at 2026-11-05 01:11 +0000

1# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 

2# 

3# SPDX-License-Identifier: Apache-2.0 

4  

5from __future__ import annotations 

6  

7from libc.stdint cimport uintptr_t, INT32_MIN 

8from libc.stdlib cimport strtol, getenv 

9  

10from cuda.bindings cimport cydriver 

11  

12from cuda.core._event cimport Event as cyEvent, Event_accept 

13from cuda.core._utils.cuda_utils cimport ( 

14 check_or_create_options, 

15 HANDLE_RETURN, 

16) 

17from cuda.core._utils.version cimport cy_driver_version 

18  

19import cython 

20import warnings 

21from dataclasses import dataclass 

22from typing import Protocol, TYPE_CHECKING 

23  

24from cuda.core._context cimport ( 

25 Context, 

26 Context_check_open, 

27) 

28from cuda.core._device_resources cimport DeviceResources 

29from cuda.core._event import Event, EventOptions 

30  

31from cuda.core._rt cimport context_get_device 

32from cuda.core._rt cimport ( 

33 ContextHandle, 

34 EventHandle, 

35 StreamHandle, 

36 create_context_handle_ref, 

37 create_event_handle_for_stream, 

38 create_stream_handle, 

39 create_stream_handle_with_owner, 

40 context_get_stream_priority_range, 

41 get_last_error, 

42 get_legacy_stream, 

43 get_per_thread_stream, 

44 get_stream_context, 

45 as_intptr, 

46 as_cu, 

47 as_py, 

48) 

49  

50if TYPE_CHECKING: 

51 import cuda.bindings.driver # no-cython-lint 

52 from cuda.core._device import Device 

53 from cuda.core.graph import GraphBuilder 

54  

55__all__ = ['LEGACY_DEFAULT_STREAM', 'PER_THREAD_DEFAULT_STREAM', 'Stream', 'StreamOptions'] 

56  

57  

58@dataclass 

59cdef class StreamOptions: 

60 """Customizable :obj:`~_stream.Stream` options. 

61  

62 Attributes 

63 ---------- 

64 nonblocking : bool, optional 

65 Stream does not synchronize with the NULL stream. (Default to True) 

66 priority : int, optional 

67 Stream priority where lower number represents a 

68 higher priority. (Default to lowest priority) 

69  

70 """ 

71  

72 nonblocking : cython.bint = True 

73 priority: int | None = None 

74  

75  

76class IsStreamType(Protocol): 

77 def __cuda_stream__(self) -> tuple[int, int]: 

78 """ 

79 For any Python object that is meant to be interpreted as a CUDA stream, the intent 

80 can be communicated by implementing this protocol that returns a 2-tuple: The protocol 

81 version number (currently ``0``) and the address of ``cudaStream_t``. Both values 

82 should be Python `int`. 

83 """ 

84 ... 

85  

86  

87cdef class Stream: 

88 """Represent a queue of GPU operations that are executed in a specific order. 

89  

90 Applications use streams to control the order of execution for 

91 GPU work. Work within a single stream are executed sequentially. 

92 Whereas work across multiple streams can be further controlled 

93 using stream priorities and :obj:`~_event.Event` managements. 

94  

95 Advanced users can utilize default streams for enforce complex 

96 implicit synchronization behaviors. 

97  

98 Directly creating a :obj:`~_stream.Stream` is not supported due to ambiguity. 

99 New streams should instead be created through a :obj:`~_device.Device` 

100 object, or created directly through using an existing handle 

101 using Stream.from_handle(). 

102 """ 

103 def __init__(self, *args, **kwargs) -> None: 

104 raise RuntimeError( 28m

105 "Stream objects cannot be instantiated directly. " 

106 "Please use Device APIs (create_stream) or other Stream APIs (from_handle)." 

107 ) 

108  

109 @staticmethod 

110 cdef Stream _from_handle(type cls, StreamHandle h_stream): 

111 """Create a Stream from an existing StreamHandle (cdef-only factory).""" 

112 cdef Stream s = cls.__new__(cls) 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eXhZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(bYh~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`fPk-h:cQkoc;cRkpc/gqc:g.h=cSk/h{fTk:h;g|f}fUk=g~fVk?cWkrcagXksc@cYktc[cZk;h?g=h@g?h[gucvc]c0kwc^c1kxc_c2kyc`c3k{c4k|c5k}c6k~c7kad8kbd9kcd!kdd#k@h]g[h^g]h_g^h`g_h{g`h|g{h}g|h~g}hah~hbhaichbicidhdieh8 eifh9 fighgihh! hiihiijijhkikhlilhmimhsftfwmxmymzmAmBmikufCmvfwfxfDmyfEmzfFmAfnhGmohjkHmImBfCfedfdgdhdidjdniQ F R { | } ~ abbbcbdb; zcAcoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGikkHiIiJiKiLiMiNiOiPiQi6c7c8c9c!c#cRiSi5 3glkMbTiJm4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 UiOcViWiPeOb'cQeUfVfWfXfXiYiReZi1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'iqhrh(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6fokpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEfBeWh7f8fgkhk9f!fshthyjvkuhCevhwhxhyhzhAhBhChDhwkxkog/cykzkAkDeO Df#fXeYeV $f%f'fW X (fzjBkZe)fpgPcQcRcrb$kCkEhDk%kFhEk'k5gGhFk(kHhGk)kIhEesbtbHk*k+kJhIk,kKhJk-kLhKk.kMhLk/kNhMk:kOhNk;kPhOk=kQhFeThUhC [ Ffqg)cSc= Yg] ^ B T Vh6g7g? VgZgGf*f+fWgem_ fmrgub@ RhXg0g2 JbAjBjCjDjEjFjGjVb,fWb-fGeHeShIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXb8gckdkek

113 s._h_stream = h_stream 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eXhZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(bYh~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`fPk-h:cQkoc;cRkpc/gqc:g.h=cSk/h{fTk:h;g|f}fUk=g~fVk?cWkrcagXksc@cYktc[cZk;h?g=h@g?h[gucvc]c0kwc^c1kxc_c2kyc`c3k{c4k|c5k}c6k~c7kad8kbd9kcd!kdd#k@h]g[h^g]h_g^h`g_h{g`h|g{h}g|h~g}hah~hbhaichbicidhdieh8 eifh9 fighgihh! hiihiijijhkikhlilhmimhsftfwmxmymzmAmBmikufCmvfwfxfDmyfEmzfFmAfnhGmohjkHmImBfCfedfdgdhdidjdniQ F R { | } ~ abbbcbdb; zcAcoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGikkHiIiJiKiLiMiNiOiPiQi6c7c8c9c!c#cRiSi5 3glkMbTiJm4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 UiOcViWiPeOb'cQeUfVfWfXfXiYiReZi1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'iqhrh(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6fokpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEfBeWh7f8fgkhk9f!fshthyjvkuhCevhwhxhyhzhAhBhChDhwkxkog/cykzkAkDeO Df#fXeYeV $f%f'fW X (fzjBkZe)fpgPcQcRcrb$kCkEhDk%kFhEk'k5gGhFk(kHhGk)kIhEesbtbHk*k+kJhIk,kKhJk-kLhKk.kMhLk/kNhMk:kOhNk;kPhOk=kQhFeThUhC [ Ffqg)cSc= Yg] ^ B T Vh6g7g? VgZgGf*f+fWgem_ fmrgub@ RhXg0g2 JbAjBjCjDjEjFjGjVb,fWb-fGeHeShIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXb8gckdkek

114 s._h_context = get_stream_context(h_stream) 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eXhZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(bYh~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`fPk-h:cQkoc;cRkpc/gqc:g.h=cSk/h{fTk:h;g|f}fUk=g~fVk?cWkrcagXksc@cYktc[cZk;h?g=h@g?h[gucvc]c0kwc^c1kxc_c2kyc`c3k{c4k|c5k}c6k~c7kad8kbd9kcd!kdd#k@h]g[h^g]h_g^h`g_h{g`h|g{h}g|h~g}hah~hbhaichbicidhdieh8 eifh9 fighgihh! hiihiijijhkikhlilhmimhsftfwmxmymzmAmBmikufCmvfwfxfDmyfEmzfFmAfnhGmohjkHmImBfCfedfdgdhdidjdniQ F R { | } ~ abbbcbdb; zcAcoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGikkHiIiJiKiLiMiNiOiPiQi6c7c8c9c!c#cRiSi5 3glkMbTiJm4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 UiOcViWiPeOb'cQeUfVfWfXfXiYiReZi1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'iqhrh(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6fokpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEfBeWh7f8fgkhk9f!fshthyjvkuhCevhwhxhyhzhAhBhChDhwkxkog/cykzkAkDeO Df#fXeYeV $f%f'fW X (fzjBkZe)fpgPcQcRcrb$kCkEhDk%kFhEk'k5gGhFk(kHhGk)kIhEesbtbHk*k+kJhIk,kKhJk-kLhKk.kMhLk/kNhMk:kOhNk;kPhOk=kQhFeThUhC [ Ffqg)cSc= Yg] ^ B T Vh6g7g? VgZgGf*f+fWgem_ fmrgub@ RhXg0g2 JbAjBjCjDjEjFjGjVb,fWb-fGeHeShIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXb8gckdkek

115 s._device_id = -1 # lazy init'd (invalid sentinel) 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eXhZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(bYh~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`fPk-h:cQkoc;cRkpc/gqc:g.h=cSk/h{fTk:h;g|f}fUk=g~fVk?cWkrcagXksc@cYktc[cZk;h?g=h@g?h[gucvc]c0kwc^c1kxc_c2kyc`c3k{c4k|c5k}c6k~c7kad8kbd9kcd!kdd#k@h]g[h^g]h_g^h`g_h{g`h|g{h}g|h~g}hah~hbhaichbicidhdieh8 eifh9 fighgihh! hiihiijijhkikhlilhmimhsftfwmxmymzmAmBmikufCmvfwfxfDmyfEmzfFmAfnhGmohjkHmImBfCfedfdgdhdidjdniQ F R { | } ~ abbbcbdb; zcAcoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGikkHiIiJiKiLiMiNiOiPiQi6c7c8c9c!c#cRiSi5 3glkMbTiJm4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 UiOcViWiPeOb'cQeUfVfWfXfXiYiReZi1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'iqhrh(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6fokpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEfBeWh7f8fgkhk9f!fshthyjvkuhCevhwhxhyhzhAhBhChDhwkxkog/cykzkAkDeO Df#fXeYeV $f%f'fW X (fzjBkZe)fpgPcQcRcrb$kCkEhDk%kFhEk'k5gGhFk(kHhGk)kIhEesbtbHk*k+kJhIk,kKhJk-kLhKk.kMhLk/kNhMk:kOhNk;kPhOk=kQhFeThUhC [ Ffqg)cSc= Yg] ^ B T Vh6g7g? VgZgGf*f+fWgem_ fmrgub@ RhXg0g2 JbAjBjCjDjEjFjGjVb,fWb-fGeHeShIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXb8gckdkek

116 s._nonblocking = -1 # lazy init'd 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eXhZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(bYh~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`fPk-h:cQkoc;cRkpc/gqc:g.h=cSk/h{fTk:h;g|f}fUk=g~fVk?cWkrcagXksc@cYktc[cZk;h?g=h@g?h[gucvc]c0kwc^c1kxc_c2kyc`c3k{c4k|c5k}c6k~c7kad8kbd9kcd!kdd#k@h]g[h^g]h_g^h`g_h{g`h|g{h}g|h~g}hah~hbhaichbicidhdieh8 eifh9 fighgihh! hiihiijijhkikhlilhmimhsftfwmxmymzmAmBmikufCmvfwfxfDmyfEmzfFmAfnhGmohjkHmImBfCfedfdgdhdidjdniQ F R { | } ~ abbbcbdb; zcAcoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGikkHiIiJiKiLiMiNiOiPiQi6c7c8c9c!c#cRiSi5 3glkMbTiJm4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 UiOcViWiPeOb'cQeUfVfWfXfXiYiReZi1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'iqhrh(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6fokpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEfBeWh7f8fgkhk9f!fshthyjvkuhCevhwhxhyhzhAhBhChDhwkxkog/cykzkAkDeO Df#fXeYeV $f%f'fW X (fzjBkZe)fpgPcQcRcrb$kCkEhDk%kFhEk'k5gGhFk(kHhGk)kIhEesbtbHk*k+kJhIk,kKhJk-kLhKk.kMhLk/kNhMk:kOhNk;kPhOk=kQhFeThUhC [ Ffqg)cSc= Yg] ^ B T Vh6g7g? VgZgGf*f+fWgem_ fmrgub@ RhXg0g2 JbAjBjCjDjEjFjGjVb,fWb-fGeHeShIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXb8gckdkek

117 s._priority = INT32_MIN # lazy init'd 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eXhZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(bYh~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`fPk-h:cQkoc;cRkpc/gqc:g.h=cSk/h{fTk:h;g|f}fUk=g~fVk?cWkrcagXksc@cYktc[cZk;h?g=h@g?h[gucvc]c0kwc^c1kxc_c2kyc`c3k{c4k|c5k}c6k~c7kad8kbd9kcd!kdd#k@h]g[h^g]h_g^h`g_h{g`h|g{h}g|h~g}hah~hbhaichbicidhdieh8 eifh9 fighgihh! hiihiijijhkikhlilhmimhsftfwmxmymzmAmBmikufCmvfwfxfDmyfEmzfFmAfnhGmohjkHmImBfCfedfdgdhdidjdniQ F R { | } ~ abbbcbdb; zcAcoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGikkHiIiJiKiLiMiNiOiPiQi6c7c8c9c!c#cRiSi5 3glkMbTiJm4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 UiOcViWiPeOb'cQeUfVfWfXfXiYiReZi1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'iqhrh(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6fokpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEfBeWh7f8fgkhk9f!fshthyjvkuhCevhwhxhyhzhAhBhChDhwkxkog/cykzkAkDeO Df#fXeYeV $f%f'fW X (fzjBkZe)fpgPcQcRcrb$kCkEhDk%kFhEk'k5gGhFk(kHhGk)kIhEesbtbHk*k+kJhIk,kKhJk-kLhKk.kMhLk/kNhMk:kOhNk;kPhOk=kQhFeThUhC [ Ffqg)cSc= Yg] ^ B T Vh6g7g? VgZgGf*f+fWgem_ fmrgub@ RhXg0g2 JbAjBjCjDjEjFjGjVb,fWb-fGeHeShIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXb8gckdkek

118 return s 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eXhZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(bYh~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`fPk-h:cQkoc;cRkpc/gqc:g.h=cSk/h{fTk:h;g|f}fUk=g~fVk?cWkrcagXksc@cYktc[cZk;h?g=h@g?h[gucvc]c0kwc^c1kxc_c2kyc`c3k{c4k|c5k}c6k~c7kad8kbd9kcd!kdd#k@h]g[h^g]h_g^h`g_h{g`h|g{h}g|h~g}hah~hbhaichbicidhdieh8 eifh9 fighgihh! hiihiijijhkikhlilhmimhsftfwmxmymzmAmBmikufCmvfwfxfDmyfEmzfFmAfnhGmohjkHmImBfCfedfdgdhdidjdniQ F R { | } ~ abbbcbdb; zcAcoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGikkHiIiJiKiLiMiNiOiPiQi6c7c8c9c!c#cRiSi5 3glkMbTiJm4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 UiOcViWiPeOb'cQeUfVfWfXfXiYiReZi1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'iqhrh(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6fokpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEfBeWh7f8fgkhk9f!fshthyjvkuhCevhwhxhyhzhAhBhChDhwkxkog/cykzkAkDeO Df#fXeYeV $f%f'fW X (fzjBkZe)fpgPcQcRcrb$kCkEhDk%kFhEk'k5gGhFk(kHhGk)kIhEesbtbHk*k+kJhIk,kKhJk-kLhKk.kMhLk/kNhMk:kOhNk;kPhOk=kQhFeThUhC [ Ffqg)cSc= Yg] ^ B T Vh6g7g? VgZgGf*f+fWgem_ fmrgub@ RhXg0g2 JbAjBjCjDjEjFjGjVb,fWb-fGeHeShIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXb8gckdkek

119  

120 @classmethod 

121 def _legacy_default(cls) -> Stream: 

122 """Return the legacy default stream (supports subclassing).""" 

123 return Stream._from_handle(cls, get_legacy_stream()) 2em

124  

125 @classmethod 

126 def _per_thread_default(cls) -> Stream: 

127 """Return the per-thread default stream (supports subclassing).""" 

128 return Stream._from_handle(cls, get_per_thread_stream()) 2fm

129  

130 @classmethod 

131 def _init(cls, obj: IsStreamType | None = None, options: StreamOptions | None = None, 

132 device_id: int | None = None, Context ctx: Context | None = None) -> Stream: 

133 cdef StreamHandle h_stream 

134 cdef cydriver.CUstream borrowed 

135 cdef ContextHandle h_context 

136  

137 if obj is not None and options is not None: 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFh5gGhHhIhEesbtbJhKhLhMhNhOhPhQhFeThUhC [ Ffqg)cSc= Yg] ^ B T Vh6g7g? VgZgGfClDl?k5m@k*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

138 raise ValueError("obj and options cannot be both specified") 25m

139 if obj is not None: 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFh5gGhHhIhEesbtbJhKhLhMhNhOhPhQhFeThUhC [ Ffqg)cSc= Yg] ^ B T Vh6g7g? VgZgGfClDl?k@k*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

140 # Borrowed stream from foreign object 

141 # C++ handle prevents owner from being GC'd until handle is released 

142 # Owner is responsible for keeping the stream's context alive 

143 borrowed = _handle_from_stream_protocol(obj) 21 U 5gThUhC [ Ff= ] ^ B T Vh? GfClDl?k@k_ @ Jb

144 h_stream = create_stream_handle_with_owner(borrowed, obj) 21 U 5gThUhC Ff= ] ^ B T Vh? Gf_ @

145 return Stream._from_handle(cls, h_stream) 21 U 5gThUhC Ff= ] ^ B T Vh? Gf_ @

146  

147 if ctx is None: 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

148 raise RuntimeError("A CUDA context is required to create a stream") 

149 Context_check_open(ctx) 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

150 h_context = ctx._h_context 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

151  

152 cdef StreamOptions opts = check_or_create_options(StreamOptions, options, "Stream options") 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

153 nonblocking = opts.nonblocking 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

154 priority = opts.priority 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

155  

156 cdef unsigned int flags = (cydriver.CUstream_flags.CU_STREAM_NON_BLOCKING if nonblocking 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

157 else cydriver.CUstream_flags.CU_STREAM_DEFAULT) 2fkpg

158 # TODO: we might want to consider memoizing high/low per CUDA context and avoid this call 

159 cdef int high, low 

160 cdef cydriver.CUresult res_code 

161 res_code = context_get_stream_priority_range(ctx._h_context, &high, &low) 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

162 HANDLE_RETURN(res_code) 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMbEl4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

163 cdef int prio 

164 if priority is not None: 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

165 prio = priority 2T *f+frg

166 if not (low <= prio <= high): 2T *f+frg

167 raise ValueError(f"{priority=} is out of range {[low, high]}") 2rg

168 else: 

169 prio = high 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B 6g7g? VgZgGfWg_ ub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

170  

171 # C++ creates the stream and returns owning handle with context dependency. 

172 # For green contexts, the C++ layer auto-dispatches to cuGreenCtxStreamCreate, 

173 # a 12.5 driver API. cuGreenCtxCreate itself is 12.4. The driver alone 

174 # decides availability. The gate lives here, not in C++. 

175 if ctx.is_green and cy_driver_version() < (12, 5, 0): 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

176 raise RuntimeError( 

177 "Green context stream creation requires CUDA driver 12.5 or newer " 

178 f"(current driver: {'.'.join(map(str, cy_driver_version()))})" 

179 ) 

180 h_stream = create_stream_handle(h_context, flags, prio) 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

181 if not h_stream: 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNcfk%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

182 res_code = get_last_error() 2fk

183 if not nonblocking and res_code == cydriver.CUresult.CUDA_ERROR_INVALID_VALUE: 2fk

184 # cuGreenCtxStreamCreate rejects CU_STREAM_DEFAULT; 

185 # no need to check is_green since primary streams don't fail this way 

186 raise ValueError( 2fk

187 "Green context streams must be non-blocking. " 

188 "Use StreamOptions(nonblocking=True) or omit the option (True is the default)." 

189 ) 

190 else: 

191 HANDLE_RETURN(res_code) 

192 cdef Stream self = Stream._from_handle(cls, h_stream) 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

193 self._nonblocking = int(nonblocking) 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

194 self._priority = prio 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

195 if device_id is not None: 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

196 self._device_id = device_id 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

197 return self 2Jg9g*cKg!gLg1g#g$gD HfIfJf%g'gDbMg+c,c-c.c(g` Kfx G vbH Lf)g*gy Mf% Nf+gv Eb_f,gz A E ' -gTcFbOfYb.g7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e@e2gsg[e]e^etg_eZb0b1bKb`eug{e2b3bLb4b5b6b7b8b9b|e}e!b#b$b%b'b(b~eNgOgPgUcVcWcQgRgSgTgUgXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?befwbffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBbjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew nc`f:coc;cpc/gqc:g=c{f;g|f}f=g~f?crcagsc@ctc[c?g@g[gucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd]g^g_g`g{g|g}g~gahbhchdheh8 fh9 ghhh! ihjhkhlhmhsftfufvfwfxfyfzfAfnhohBfCfedfdgdhdidjdQ F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 3gMb4gbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 cgdgegfggghgigphjgkglgmgJcKc$cLcMcNc%cNb4 OcPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdldU qhrhRbSbTbUbmdndodpd2f3f4f5f6fqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAengEfBe7f8f9f!fshthuhCevhwhxhyhzhAhBhChDhog/cDeO Df#fXeYeV $f%f'fW X (fZe)fpgPcQcRcrbEhFhGhHhIhEesbtbJhKhLhMhNhOhPhQhFe[ qg)cSc= Yg] ^ B T 6g7g? VgZgGf*f+fWg_ rgub@ RhXg0g2 JbVb,fWb-fGeHeShIeJeKeLeXb8g

198  

199 cpdef close(self): 

200 """Destroy the stream. 

201  

202 Releases the stream handle. For owned streams, this destroys the 

203 underlying CUDA stream. For borrowed streams, this releases the 

204 reference and allows the Python owner to be GC'd. 

205  

206 .. warning:: 

207 Do not close :obj:`LEGACY_DEFAULT_STREAM` or 

208 :obj:`PER_THREAD_DEFAULT_STREAM`. They are shared module-level 

209 objects, so closing one invalidates it for the rest of the process. 

210 """ 

211 self._h_stream.reset() 2HfIfJfDbEb_fA Fb7 MeNePkQkRk9m!mSkTk#mUkVkWkXkYkZk$m%m'm0k1k2k3k4k5k6k7k8k9k!k#k(m)m*m+m,m-m.m/m:m;m=m?m@m8 [m9 ]m^m! _m`m{m|m}m5 Mb4gJcKcNbPeOb'cQeUfVfWfXfRe1 SeTe(cPbUeVeYfZf0f1fWeQbkdldRbSbTbUbEfXeYeV $f%fW X ZepgRmFeThUhC [ FfT GfVb,fWb-fGeHeIeJeKeLe

212  

213 @property 

214 def is_closed(self) -> bool: 

215 """Whether this stream has been closed.""" 

216 return self._h_stream.get() == NULL 2RmThUhC [ Ff

217  

218 def __cuda_stream__(self) -> tuple[int, int]: 

219 """Return an instance of a __cuda_stream__ protocol.""" 

220 Stream_check_open(self) 2Jg1 U [ FfB

221 return (0, as_intptr(self._h_stream)) 2Jg1 U FfB

222  

223 def __hash__(self) -> int: 

224 return hash(as_intptr(self._h_stream)) 25g~manbncn1m2mdngm= B 7g? Vg@

225  

226 def __eq__(self, other: object) -> bool: 

227 if not isinstance(other, Stream): 20m5g6m7m1m2mgm= Yg] ^ B ? VgZg_ @ 0g

228 return NotImplemented 20m6m0g

229 return as_intptr(self._h_stream) == as_intptr((<Stream>other)._h_stream) 20m5g7m1m2mgm= Yg] ^ B ? VgZg_ @

230  

231 def __repr__(self) -> str: 

232 cdef ContextHandle h_context 

233 if not self._h_stream: 2RmKm

234 return "<Stream handle=0x0 context=0x0>" 2Rm

235 Stream_get_ctx(self, &h_context) 2Km

236 return f"<Stream handle={as_intptr(self._h_stream):#x} context={as_intptr(h_context):#x}>" 2Km

237  

238 @property 

239 def handle(self) -> cuda.bindings.driver.CUstream: 

240 """Return the underlying ``CUstream`` object. 

241  

242 .. caution:: 

243  

244 This handle is a Python object. To get the memory address of the underlying C 

245 handle, call ``int(Stream.handle)``. 

246 """ 

247 return as_py(self._h_stream) 2Jg1g` G vbH Yba b c d e f g h i j k l m n o p I q r s t u J K L M 2gsgtgKbugLbN w 3gMbNbkdld2f3f4f5f6fEfWh7f8fgkhk9f!f/cRm0m5gFeFf= ] ^ T 6g? Gf_ @ VbGeHeIeJeKeLeXb8g

248  

249 @property 

250 def is_nonblocking(self) -> bool: 

251 """Return True if this is a nonblocking stream, otherwise False.""" 

252 Stream_check_open(self) 2T *f+fWg

253 cdef unsigned int flags 

254 if self._nonblocking == -1: 2T *f+fWg

255 with nogil: 1T

256 HANDLE_RETURN(cydriver.cuStreamGetFlags(as_cu(self._h_stream), &flags)) 1T

257 self._nonblocking = flags & cydriver.CUstream_flags.CU_STREAM_NON_BLOCKING 1T

258 return bool(self._nonblocking) 2T *f+fWg

259  

260 @property 

261 def priority(self) -> int: 

262 """Return the stream priority.""" 

263 Stream_check_open(self) 2T *f+frg

264 cdef int prio 

265 if self._priority == INT32_MIN: 2T *f+frg

266 with nogil: 1T

267 HANDLE_RETURN(cydriver.cuStreamGetPriority(as_cu(self._h_stream), &prio)) 1T

268 self._priority = prio 1T

269 return self._priority 2T *f+frg

270  

271 def sync(self) -> None: 

272 """Synchronize the stream.""" 

273 Stream_check_open(self) 2*cHfIfJfDb+c,c-c.c` G H % v Eb' TcFb7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e[k@esg[e]e^e]ktg_eXhZb0b1bKb`eug{e^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b|e}e!b#b$b%b'b(bYh~e( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrflcmcncPk-hQkocRkpcqc.hSk/hTk:hUkVkWkrcXkscdmYktcZk;h=h?hucvc0kwc1kxc2kyc3k4k5k6k7k8k9k!k#k@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimisftfufvf~kwfxfyfalzfAfblclBfCfdlelfl.fglhl/filjlklllniQ F R ml:fnlol;fplhmqlrlimjmsltlkmlmulvlmmnm=f?fompm@f[fqmrm]f^fsmwlxltmylzlumAlBlvmoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiHiIiJiKiLiMiNiOiPiQiRiSi5 Ti# P $ S LcMcNc4 UiOcViWiPeOb'cQeXiYiReZi1 SeTe(cPbUeWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbwjxjWhyjDfXeYeV W X zjZePcQcRc$k%k'k(k)k*k+k,k-k.k/k:k;k=kFeC [ Xg2 AjBjCjDjEjFjGjVbWbGeHeIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

274 with nogil: 2*cHfIfJfDb+c,c-c.c` G H % v Eb' TcFb7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e[k@esg[e]e^e]ktg_eXhZb0b1bKb`eug{e^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b|e}e!b#b$b%b'b(bYh~e( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrflcmcncPk-hQkocRkpcqc.hSk/hTk:hUkVkWkrcXkscdmYktcZk;h=h?hucvc0kwc1kxc2kyc3k4k5k6k7k8k9k!k#k@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimisftfufvf~kwfxfyfalzfAfblclBfCfdlelfl.fglhl/filjlklllniQ F R ml:fnlol;fplhmqlrlimjmsltlkmlmulvlmmnm=f?fompm@f[fqmrm]f^fsmwlxltmylzlumAlBlvmoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiHiIiJiKiLiMiNiOiPiQiRiSi5 Ti# P $ S LcMcNc4 UiOcViWiPeOb'cQeXiYiReZi1 SeTe(cPbUeWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbwjxjWhyjDfXeYeV W X zjZePcQcRc$k%k'k(k)k*k+k,k-k.k/k:k;k=kFeC Xg2 AjBjCjDjEjFjGjVbWbGeHeIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

275 HANDLE_RETURN(cydriver.cuStreamSynchronize(as_cu(self._h_stream))) 2*cHfIfJfDb+c,c-c.c` G H % v Eb' TcFb7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e[k@esg[e]e^e]ktg_eXhZb0b1bKb`eug{e^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b|e}e!b#b$b%b'b(bYh~e( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrflcmcncPk-hQkocRkpcqc.hSk/hTk:hUkVkWkrcXkscdmYktcZk;h=h?hucvc0kwc1kxc2kyc3k4k5k6k7k8k9k!k#k@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimisftfufvf~kwfxfyfalzfAfblclBfCfdlelfl.fglhl/filjlklllniQ F R ml:fnlol;fplhmqlrlimjmsltlkmlmulvlmmnm=f?fompm@f[fqmrm]f^fsmwlxltmylzlumAlBlvmoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiHiIiJiKiLiMiNiOiPiQiRiSi5 Ti# P $ S LcMcNc4 UiOcViWiPeOb'cQeXiYiReZi1 SeTe(cPbUeWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbwjxjWhyjDfXeYeV W X zjZePcQcRc$k%k'k(k)k*k+k,k-k.k/k:k;k=kFeC Xg2 AjBjCjDjEjFjGjVbWbGeHeIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

276  

277 def record(self, event: Event | None = None, options: EventOptions | None = None) -> Event: 

278 """Record an event onto the stream. 

279  

280 Creates an :obj:`~_event.Event` object (or reuses the given one) by 

281 recording on the stream. 

282  

283 Parameters 

284 ---------- 

285 event : :obj:`~_event.Event`, optional 

286 Optional event object to be reused for recording. 

287 options : :obj:`EventOptions`, optional 

288 Customizable dataclass for event creation options. 

289  

290 Returns 

291 ------- 

292 :obj:`~_event.Event` 

293 Newly created event object. 

294  

295 Note 

296 ---- 

297 A default stream (:obj:`LEGACY_DEFAULT_STREAM` or 

298 :obj:`PER_THREAD_DEFAULT_STREAM`) carries no context of its own; it 

299 refers to whichever context is current, so a newly created event is 

300 associated with the current context at call time. 

301  

302 """ 

303 # Create an Event object (or reusing the given one) by recording 

304 # on the stream. Event flags such as disabling timing, nonblocking, 

305 # and CU_EVENT_RECORD_EXTERNAL, can be set in EventOptions. 

306 Stream_check_open(self) 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u Y GbZ Hb0 Ibw Q F R { | } ~ abbbcbdb; zcAcbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 4 V W X rbsbtb[ ub2

307 cdef ContextHandle h_context 

308 cdef int device_id 

309 cdef cyEvent event_obj 

310 if event is None: 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u Y GbZ Hb0 Ibw Q F R { | } ~ abbbcbdb; zcAcbg# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 4 V W X rbsbtbub2

311 Stream_get_ctx_device(self, &h_context, &device_id) 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u Y Z 0 w Q F R { | } ~ abbbcbdb; zcAc# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 4 V W X rbsbtbub2

312 event_obj = cyEvent._init(cyEvent, device_id, h_context, options, False) 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u Y Z 0 w Q F R { | } ~ abbbcbdb; zcAc# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 4 V W X rbsbtbub2

313 else: 

314 event_obj = Event_accept(event) 2GbHbIb; bgP

315 if event is not None and event_obj.is_ipc_enabled: 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u Y GbZ Hb0 Ibw Q F R { | } ~ abbbcbdb; # P $ ebfbgbhbibjbS kblbmbnbobpbqb3 4 V W X rbsbtbub2

316 raise TypeError( 1;

317 "IPC-enabled events should not be re-recorded, instead create a " 

318 "new event by supplying options." 

319 ) 

320  

321 cdef cydriver.CUevent e = as_cu(event_obj._h_event) 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u Y GbZ Hb0 Ibw Q F R { | } ~ abbbcbdb; # P $ ebfbgbhbibjbS kblbmbnbobpbqb3 4 V W X rbsbtbub2

322 with nogil: 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u Y GbZ Hb0 Ibw Q F R { | } ~ abbbcbdb; # P $ ebfbgbhbibjbS kblbmbnbobpbqb3 4 V W X rbsbtbub2

323 HANDLE_RETURN(cydriver.cuEventRecord(e, as_cu(self._h_stream))) 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u Y GbZ Hb0 Ibw Q F R { | } ~ abbbcbdb; # P $ ebfbgbhbibjbS kblbmbnbobpbqb3 4 V W X rbsbtbub2

324 return event_obj 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u Y GbZ Hb0 Ibw Q F R { | } ~ abbbcbdb; # P $ ebfbgbhbibjbS kblbmbnbobpbqb3 4 V W X rbsbtbub2

325  

326 def wait(self, event_or_stream: Event | Stream) -> None: 

327 """Wait for a CUDA event or a CUDA stream. 

328  

329 Waiting for an event or a stream establishes a stream order. 

330  

331 If a :obj:`~_stream.Stream` is provided, then wait until the stream's 

332 work is completed. This is done by recording a new :obj:`~_event.Event` 

333 on the stream and then waiting on it. 

334  

335 Parameters 

336 ---------- 

337 event_or_stream : :obj:`~_event.Event` | :obj:`~_stream.Stream` 

338 The event or stream to wait for. Objects supporting the 

339 ``__cuda_stream__`` protocol are also accepted and treated as 

340 streams. 

341  

342 """ 

343 Stream_check_open(self) 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u w bg2 Jb

344 cdef Stream stream 

345 cdef cyEvent event 

346 cdef EventHandle h_event 

347  

348 # Handle Event directly 

349 if isinstance(event_or_stream, Event): 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u w bg2 Jb

350 event = Event_accept(event_or_stream) 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u w bg2

351 with nogil: 1DxyvzAEabcdefghijklmnopqrstuw2

352 # TODO: support flags other than 0? 

353 HANDLE_RETURN(cydriver.cuStreamWaitEvent( 1DxyvzAEabcdefghijklmnopqrstuw2

354 as_cu(self._h_stream), as_cu(event._h_event), 0)) 

355 return 1DxyvzAEabcdefghijklmnopqrstuw2

356  

357 # Convert to Stream if needed 

358 if isinstance(event_or_stream, Stream): 2D x y v z A E a b c d e f g h i j k l m n o p q r s t u w Jb

359 stream = <Stream>event_or_stream 1DxyvzAEabcdefghijklmnopqrstuw

360 Stream_check_open(stream) 1DxyvzAEabcdefghijklmnopqrstuw

361 else: 

362 try: 2Jb

363 stream = Stream._init(obj=event_or_stream) 2Jb

364 except Exception as e: 2Jb

365 raise ValueError( 2Jb

366 "only an Event, Stream, or object supporting __cuda_stream__ can be waited," 2Jb

367 f" got {type(event_or_stream)}" 2Jb

368 ) from e 2Jb

369  

370 # Wait on stream via a temporary event created in that stream's own 

371 # context; an event from the current context would be rejected by 

372 # cuEventRecord when the streams live on different devices. 

373 with nogil: 1DxyvzEabcdefghijklmnopqrstuw

374 h_event = create_event_handle_for_stream( 1DxyvzEabcdefghijklmnopqrstuw

375 as_cu(stream._h_stream), cydriver.CUevent_flags.CU_EVENT_DISABLE_TIMING) 

376 if not h_event: 1DxyvzEabcdefghijklmnopqrstuw

377 HANDLE_RETURN(get_last_error()) 

378 HANDLE_RETURN(cydriver.cuEventRecord(as_cu(h_event), as_cu(stream._h_stream))) 1DxyvzEabcdefghijklmnopqrstuw

379 # TODO: support flags other than 0? 

380 HANDLE_RETURN(cydriver.cuStreamWaitEvent(as_cu(self._h_stream), as_cu(h_event), 0)) 1DxyvzEabcdefghijklmnopqrstuw

381  

382 @property 

383 def device(self) -> Device: 

384 """Return the :obj:`~_device.Device` singleton associated with this stream. 

385  

386 Note 

387 ---- 

388 A default stream (:obj:`LEGACY_DEFAULT_STREAM` or 

389 :obj:`PER_THREAD_DEFAULT_STREAM`) carries no context of its own; it 

390 refers to whichever context is current, so this returns the device for 

391 the current context at call time. 

392  

393 For a created stream, the current context on the device may differ from 

394 this stream's context. That case occurs when a different CUDA context is 

395 set current after the stream is created. 

396  

397 """ 

398 Stream_check_open(self) 2D x G vbH y v z A E a b c d e f g h i j k l m n o p I q r s t u J K L M N w vg.f/fF :f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6 wgxgygzgAgBgCgDgEgFgGgO HgIgC ScB

399 from cuda.core._device import Device # avoid circular import 2D x G vbH y v z A E a b c d e f g h i j k l m n o p I q r s t u J K L M N w vg.f/fF :f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6 wgxgygzgAgBgCgDgEgFgGgO HgIgC ScB

400 cdef ContextHandle h_context 

401 cdef int device_id 

402 Stream_get_ctx_device(self, &h_context, &device_id) 2D x G vbH y v z A E a b c d e f g h i j k l m n o p I q r s t u J K L M N w vg.f/fF :f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6 wgxgygzgAgBgCgDgEgFgGgO HgIgC ScB

403 return Device(device_id) 2D x G vbH y v z A E a b c d e f g h i j k l m n o p I q r s t u J K L M N w vg.f/fF :f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6 wgxgygzgAgBgCgDgEgFgGgO HgIgC ScB

404  

405 @property 

406 def context(self) -> Context: 

407 """Return the :obj:`~_context.Context` associated with this stream. 

408  

409 Note 

410 ---- 

411 A default stream (:obj:`LEGACY_DEFAULT_STREAM` or 

412 :obj:`PER_THREAD_DEFAULT_STREAM`) carries no context of its own; it 

413 refers to whichever context is current, so this returns the current 

414 context at call time. 

415  

416 """ 

417 Stream_check_open(self) 2G vbH Yba b c d e f g h i j k l m n o p I q r s t u J K L M N w 6c7c8c9c!c#c5 Mb%cNb4 C )cB

418 cdef ContextHandle h_context 

419 cdef int device_id 

420 Stream_get_ctx_device(self, &h_context, &device_id) 2G vbH Yba b c d e f g h i j k l m n o p I q r s t u J K L M N w 6c7c8c9c!c#c5 Mb%cNb4 C )cB

421 return Context._from_handle(Context, h_context, device_id) 2G vbH Yba b c d e f g h i j k l m n o p I q r s t u J K L M N w 6c7c8c9c!c#c5 Mb%cNb4 C )cB

422  

423 @property 

424 def resources(self) -> DeviceResources: 

425 """Query the hardware resources provisioned for this stream's context. 

426  

427 For streams created from a green context, returns the resources 

428 that context was provisioned with. For streams on the primary 

429 context, returns the full device resources. 

430  

431 Note 

432 ---- 

433 A default stream (:obj:`LEGACY_DEFAULT_STREAM` or 

434 :obj:`PER_THREAD_DEFAULT_STREAM`) carries no context of its own; it 

435 refers to whichever context is current, so this queries the current 

436 context at call time. 

437  

438 """ 

439 Stream_check_open(self) 2JcKc$c

440 cdef ContextHandle h_context 

441 cdef int device_id 

442 Stream_get_ctx_device(self, &h_context, &device_id) 2JcKc$c

443 return DeviceResources._init_from_ctx(h_context, device_id) 2JcKc$c

444  

445 @staticmethod 

446 def from_handle(handle) -> Stream: 

447 """Create a new :obj:`~_stream.Stream` object from a foreign stream handle. 

448  

449 Uses a cudaStream_t pointer address represented as a Python int 

450 to create a new :obj:`~_stream.Stream` object. 

451  

452 Note 

453 ---- 

454 Stream lifetime is not managed, foreign object must remain 

455 alive while this stream is active. 

456  

457 Parameters 

458 ---------- 

459 handle : int 

460 Stream handle representing the address of a foreign 

461 stream object. 

462  

463 Returns 

464 ------- 

465 :obj:`~_stream.Stream` 

466 Newly created stream object. 

467  

468 """ 

469  

470 class _stream_holder: 25gThUhC Ff= ] ^ T Vh? _ @

471 def __cuda_stream__(self) -> tuple[int, int]: 25gThUhC Ff= ] ^ T Vh? _ @

472 return (0, handle) 25gThUhC Ff= ] ^ T Vh? _ @

473  

474 return Stream._init(obj=_stream_holder()) 25gThUhC Ff= ] ^ T Vh? _ @

475  

476 def create_graph_builder(self) -> GraphBuilder: 

477 """Create a new :obj:`~graph.GraphBuilder` object. 

478  

479 The new graph builder will be associated with this stream. 

480  

481 Returns 

482 ------- 

483 :obj:`~graph.GraphBuilder` 

484 Newly created graph builder object. 

485  

486 """ 

487 Stream_check_open(self) 2*cKgLgHfIfJfDbMg+c,c-c.c% Eb' Fb7 NgOgPgUcVcWcQgRgSgTgUgXcYcZc( ) * + , - . / : 8 9 ! 'c(cVepg[

488 from cuda.core.graph._graph_builder import GraphBuilder 2*cKgLgHfIfJfDbMg+c,c-c.c% Eb' Fb7 NgOgPgUcVcWcQgRgSgTgUgXcYcZc( ) * + , - . / : 8 9 ! 'c(cVepg

489  

490 return GraphBuilder._init(self) 2*cKgLgHfIfJfDbMg+c,c-c.c% Eb' Fb7 NgOgPgUcVcWcQgRgSgTgUgXcYcZc( ) * + , - . / : 8 9 ! 'c(cVepg

491  

492  

493LEGACY_DEFAULT_STREAM: Stream = Stream._legacy_default() 

494PER_THREAD_DEFAULT_STREAM: Stream = Stream._per_thread_default() 

495  

496  

497cpdef Stream default_stream(): 

498 """Return the default CUDA :obj:`~_stream.Stream`. 

499  

500 The type of default stream returned depends on if the environment 

501 variable CUDA_PYTHON_CUDA_PER_THREAD_DEFAULT_STREAM is set. 

502  

503 If set, returns a per-thread default stream. Otherwise returns 

504 the legacy stream. 

505  

506 """ 

507 # TODO: flip the default 

508 cdef const char* use_ptds_raw = getenv("CUDA_PYTHON_CUDA_PER_THREAD_DEFAULT_STREAM") 2` G H % ' 7 a b c d e f g h i j k l m n o p I q r s t u J K L M [k]kXhZb0b1bKb^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b!b#b$b%b'b(bYh( )b) * + *b, - . / : +b,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hwb(h)h@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicxbybzbAbBb*h+h,hjcN CbkclcmcFlGlvgnc-h:coc;cpcqc.h=c/h:h?crcsc@ctc[c;h=h?hucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimiHlIlJlKlLlMlNlikOl~kPlalQlRlblSlcljkTlUledfdgdhdidjddlelfl.fglhl/filjlklllniSmTmUmQ F R ml:fnlol;fplhmqlrlimjmsltlkmlmulvlmmnm=f?fompm@f[fqmrm]f^fsmVmwlxltmWmylzlumXmAlBlvmoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSilkTi4l5l6lP S LcMcNcUiOcViWiObXiYiZiPbQb0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAeYm!l#l$l%lBeWh'l(l)l*lgkhkyjvk+l,lCeZm-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxk/cykzkAkDeamFgGgO HgIgzjBkPcQcRcCkDkEkFkGkEebmcmHkIkJkKkLkMkNkOkgmLmAjBjCjDjEjFjGjWbHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

509  

510 cdef int use_ptds = 0 2` G H % ' 7 a b c d e f g h i j k l m n o p I q r s t u J K L M [k]kXhZb0b1bKb^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b!b#b$b%b'b(bYh( )b) * + *b, - . / : +b,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hwb(h)h@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicxbybzbAbBb*h+h,hjcN CbkclcmcFlGlvgnc-h:coc;cpcqc.h=c/h:h?crcsc@ctc[c;h=h?hucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimiHlIlJlKlLlMlNlikOl~kPlalQlRlblSlcljkTlUledfdgdhdidjddlelfl.fglhl/filjlklllniSmTmUmQ F R ml:fnlol;fplhmqlrlimjmsltlkmlmulvlmmnm=f?fompm@f[fqmrm]f^fsmVmwlxltmWmylzlumXmAlBlvmoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSilkTi4l5l6lP S LcMcNcUiOcViWiObXiYiZiPbQb0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAeYm!l#l$l%lBeWh'l(l)l*lgkhkyjvk+l,lCeZm-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxk/cykzkAkDeamFgGgO HgIgzjBkPcQcRcCkDkEkFkGkEebmcmHkIkJkKkLkMkNkOkgmLmAjBjCjDjEjFjGjWbHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

511 if use_ptds_raw != NULL: 2` G H % ' 7 a b c d e f g h i j k l m n o p I q r s t u J K L M [k]kXhZb0b1bKb^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b!b#b$b%b'b(bYh( )b) * + *b, - . / : +b,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hwb(h)h@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicxbybzbAbBb*h+h,hjcN CbkclcmcFlGlvgnc-h:coc;cpcqc.h=c/h:h?crcsc@ctc[c;h=h?hucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimiHlIlJlKlLlMlNlikOl~kPlalQlRlblSlcljkTlUledfdgdhdidjddlelfl.fglhl/filjlklllniSmTmUmQ F R ml:fnlol;fplhmqlrlimjmsltlkmlmulvlmmnm=f?fompm@f[fqmrm]f^fsmVmwlxltmWmylzlumXmAlBlvmoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSilkTi4l5l6lP S LcMcNcUiOcViWiObXiYiZiPbQb0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAeYm!l#l$l%lBeWh'l(l)l*lgkhkyjvk+l,lCeZm-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxk/cykzkAkDeamFgGgO HgIgzjBkPcQcRcCkDkEkFkGkEebmcmHkIkJkKkLkMkNkOkgmLmAjBjCjDjEjFjGjWbHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

512 use_ptds = <int>strtol(use_ptds_raw, NULL, 10) 2Lm

513  

514 # value is non-zero, including for weird stuff like 123foo 

515 if use_ptds: 2` G H % ' 7 a b c d e f g h i j k l m n o p I q r s t u J K L M [k]kXhZb0b1bKb^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b!b#b$b%b'b(bYh( )b) * + *b, - . / : +b,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hwb(h)h@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicxbybzbAbBb*h+h,hjcN CbkclcmcFlGlvgnc-h:coc;cpcqc.h=c/h:h?crcsc@ctc[c;h=h?hucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimiHlIlJlKlLlMlNlikOl~kPlalQlRlblSlcljkTlUledfdgdhdidjddlelfl.fglhl/filjlklllniSmTmUmQ F R ml:fnlol;fplhmqlrlimjmsltlkmlmulvlmmnm=f?fompm@f[fqmrm]f^fsmVmwlxltmWmylzlumXmAlBlvmoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSilkTi4l5l6lP S LcMcNcUiOcViWiObXiYiZiPbQb0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAeYm!l#l$l%lBeWh'l(l)l*lgkhkyjvk+l,lCeZm-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxk/cykzkAkDeamFgGgO HgIgzjBkPcQcRcCkDkEkFkGkEebmcmHkIkJkKkLkMkNkOkgmLmAjBjCjDjEjFjGjWbHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

516 return PER_THREAD_DEFAULT_STREAM 2Lm

517 else: 

518 return LEGACY_DEFAULT_STREAM 2` G H % ' 7 a b c d e f g h i j k l m n o p I q r s t u J K L M [k]kXhZb0b1bKb^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b!b#b$b%b'b(bYh( )b) * + *b, - . / : +b,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hwb(h)h@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicxbybzbAbBb*h+h,hjcN CbkclcmcFlGlvgnc-h:coc;cpcqc.h=c/h:h?crcsc@ctc[c;h=h?hucvc]cwc^cxc_cyc`c{c|c}c~cadbdcddd@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimiHlIlJlKlLlMlNlikOl~kPlalQlRlblSlcljkTlUledfdgdhdidjddlelfl.fglhl/filjlklllniSmTmUmQ F R ml:fnlol;fplhmqlrlimjmsltlkmlmulvlmmnm=f?fompm@f[fqmrm]f^fsmVmwlxltmWmylzlumXmAlBlvmoiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSilkTi4l5l6lP S LcMcNcUiOcViWiObXiYiZiPbQb0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAeYm!l#l$l%lBeWh'l(l)l*lgkhkyjvk+l,lCeZm-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxk/cykzkAkDeamFgGgO HgIgzjBkPcQcRcCkDkEkFkGkEebmcmHkIkJkKkLkMkNkOkgmLmAjBjCjDjEjFjGjWbHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

519  

520  

521cdef inline int Stream_get_ctx(Stream self, ContextHandle* h_context) except?-1 nogil: 

522 """Resolve the stream's context handle into ``h_context``.""" 

523 cdef cydriver.CUcontext ctx 

524 cdef bint is_default = Stream_is_default_token(self) 2D x G vbH y v z A E Yba b c d e f g h i j k l m n o p I q r s t u J K L M Y Z 0 N w vg.f/fQ F R { | } ~ abbbcbdb; zcAc:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6c7c8c9c!c#c5 Mb# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 JcKc$c%cNb4 6 wgxgygzgAgBgCgDgEgFgGgO HgIgV W X rbsbtbKmC )cScB ub2

525  

526 # Default-stream tokens must never reuse a sticky object field, even if 

527 # something else populated ``_h_context`` (defense in depth for #2485). 

528 if self._h_context and not is_default: 2D x G vbH y v z A E Yba b c d e f g h i j k l m n o p I q r s t u J K L M Y Z 0 N w vg.f/fQ F R { | } ~ abbbcbdb; zcAc:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6c7c8c9c!c#c5 Mb# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 JcKc$c%cNb4 6 wgxgygzgAgBgCgDgEgFgGgO HgIgV W X rbsbtbKmC )cScB ub2

529 h_context[0] = self._h_context 2D x G vbH y v z A E Yba b c d e f g h i j k l m n o p I q r s t u J K L M Y Z 0 N w Q F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 Mb# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 JcKc$c%cNb4 6 O V W X rbsbtbKmC )cScB ub2

530 return 0 2D x G vbH y v z A E Yba b c d e f g h i j k l m n o p I q r s t u J K L M Y Z 0 N w Q F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 Mb# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 JcKc$c%cNb4 6 O V W X rbsbtbKmC )cScB ub2

531  

532 h_context[0] = get_stream_context(self._h_stream) 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC

533 if not h_context[0]: 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC

534 HANDLE_RETURN(cydriver.cuStreamGetCtx(as_cu(self._h_stream), &ctx)) 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC

535 if ctx != NULL: 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC

536 with gil: 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC

537 h_context[0] = create_context_handle_ref(ctx) 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC

538  

539 if h_context[0] and not is_default: 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC

540 self._h_context = h_context[0] 1C

541 return 0 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC

542  

543  

544cdef inline int Stream_get_ctx_device(Stream self, ContextHandle* h_context, int* device_id) except?-1: 

545 """Resolve the stream's context handle and device ID.""" 

546 cdef cydriver.CUdevice target_dev 

547 cdef bint is_default = Stream_is_default_token(self) 2D x G vbH y v z A E Yba b c d e f g h i j k l m n o p I q r s t u J K L M Y Z 0 N w vg.f/fQ F R { | } ~ abbbcbdb; zcAc:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6c7c8c9c!c#c5 Mb# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 JcKc$c%cNb4 6 wgxgygzgAgBgCgDgEgFgGgO HgIgV W X rbsbtbC )cScB ub2

548  

549 with nogil: 2D x G vbH y v z A E Yba b c d e f g h i j k l m n o p I q r s t u J K L M Y Z 0 N w vg.f/fQ F R { | } ~ abbbcbdb; zcAc:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6c7c8c9c!c#c5 Mb# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 JcKc$c%cNb4 6 wgxgygzgAgBgCgDgEgFgGgO HgIgV W X rbsbtbC )cScB ub2

550 Stream_get_ctx(self, h_context) 2D x G vbH y v z A E Yba b c d e f g h i j k l m n o p I q r s t u J K L M Y Z 0 N w vg.f/fQ F R { | } ~ abbbcbdb; zcAc:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6c7c8c9c!c#c5 Mb# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 JcKc$c%cNb4 6 wgxgygzgAgBgCgDgEgFgGgO HgIgV W X rbsbtbC )cScB ub2

551 if self._device_id >= 0 and not is_default: 2D x G vbH y v z A E Yba b c d e f g h i j k l m n o p I q r s t u J K L M Y Z 0 N w vg.f/fQ F R { | } ~ abbbcbdb; zcAc:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6c7c8c9c!c#c5 Mb# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 JcKc$c%cNb4 6 wgxgygzgAgBgCgDgEgFgGgO HgIgV W X rbsbtbC )cScB ub2

552 device_id[0] = self._device_id 2D x G vbH y v z A E Yba b c d e f g h i j k l m n o p I q r s t u J K L M Y Z 0 N w Q F R { | } ~ abbbcbdb; zcAc6c7c8c9c!c#c5 Mb# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 JcKc$c%cNb4 6 O V W X rbsbtbC )cScB ub2

553 else: 

554 # Query the device with the stream's context current. The handle 

555 # layer restores the caller's context, including on failure. 

556 HANDLE_RETURN(context_get_device(h_context[0], &target_dev)) 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC B

557 device_id[0] = <int>target_dev 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC B

558 if not is_default: 2vg.f/f:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIcwgxgygzgAgBgCgDgEgFgGgO HgIgC B

559 self._device_id = device_id[0] 1CB

560 return 0 2D x G vbH y v z A E Yba b c d e f g h i j k l m n o p I q r s t u J K L M Y Z 0 N w vg.f/fQ F R { | } ~ abbbcbdb; zcAc:f;f=f?f@f[f]f^fBcCcDcEcFcGcHcIc6c7c8c9c!c#c5 Mb# P $ ebfbgbhbibjbS kblbmbnbobpbqb3 JcKc$c%cNb4 6 wgxgygzgAgBgCgDgEgFgGgO HgIgV W X rbsbtbC )cScB ub2

561  

562  

563cdef cydriver.CUstream _handle_from_stream_protocol(obj) except*: 

564 if isinstance(obj, Stream): 21 U 5gThUhC [ Ff= ] ^ B T Vh? GfClDl?k@k_ @ Jb

565 Stream_check_open(<Stream>obj) 2Gf

566 return as_cu((<Stream>obj)._h_stream) 2Gf

567  

568 try: 21 U 5gThUhC [ Ff= ] ^ B T Vh? ClDl?k@k_ @ Jb

569 cuda_stream_attr = obj.__cuda_stream__ 21 U 5gThUhC [ Ff= ] ^ B T Vh? ClDl?k@k_ @ Jb

570 except AttributeError: 2Jb

571 raise TypeError(f"{type(obj)} object does not have a '__cuda_stream__' attribute") from None 2Jb

572  

573 if callable(cuda_stream_attr): 21 U 5gThUhC [ Ff= ] ^ B T Vh? ClDl?k@k_ @

574 info = cuda_stream_attr() 21 U 5gThUhC [ Ff= ] ^ B T Vh? ClDl?k_ @

575 else: 

576 info = cuda_stream_attr 2@k

577 warnings.warn( 2@k

578 "Implementing __cuda_stream__ as an attribute is deprecated; it must be implemented as a method", 

579 stacklevel=3, 

580 category=DeprecationWarning, 2@k

581 ) 

582  

583 try: 21 U 5gThUhC Ff= ] ^ B T Vh? ClDl?k@k_ @

584 len_info = len(info) 21 U 5gThUhC Ff= ] ^ B T Vh? ClDl?k@k_ @

585 except TypeError as e: 2Cl

586 raise RuntimeError(f"obj.__cuda_stream__ must return a sequence with 2 elements, got {type(info)}") from e 2Cl

587 if len_info != 2: 21 U 5gThUhC Ff= ] ^ B T Vh? Dl?k@k_ @

588 raise RuntimeError(f"obj.__cuda_stream__ must return a sequence with 2 elements, got {len_info} elements") 2Dl@k

589 if info[0] != 0: 21 U 5gThUhC Ff= ] ^ B T Vh? ?k_ @

590 raise RuntimeError( 2?k

591 f"The first element of the sequence returned by obj.__cuda_stream__ must be 0, got {repr(info[0])}" 2?k

592 ) 

593 return <cydriver.CUstream><uintptr_t>(info[1]) 21 U 5gThUhC Ff= ] ^ B T Vh? _ @

594  

595# Helper for API functions that accept either Stream or GraphBuilder. Performs 

596# needed checks and returns the relevant stream. Rejects None so that callers 

597# cannot rely on an implicit fallback to the default stream; if the default 

598# stream is wanted, pass `device.default_stream` explicitly. 

599cpdef Stream Stream_accept(arg, bint allow_stream_protocol=False): 

600 from cuda.core.graph._graph_builder import GraphBuilder 2*cDb+c,c-c.c` Kfx G H Lfy Mf% Nfv Eb_fz A ' TcFbOf7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e[k@e[e]e^e]k_eXhZb0b1bKb`e{e^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b|e}e!b#b$b%b'b(bYh~eUcVcWcXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew FlGlvgnc`fPk-h:cQkoc;cRkpcqc.h=cSk/h{fTk:h|f}fUk~fVkMm?cWkrcagXkscdm@cYktc[cZk;h=h?hucvc]c0kwc^c1kxc_c2kyc`c3k{c4kNm|c5kOm}c6kPm~c7kad8kbd9kcd!kdd#k@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimisftfHlIlJlKlLlMlNlikufOlvf~kwfxfPlyfalQlzfRlAfblSlcljkTlUlBfCfedfdgdhdidjddlelfl.fglhl/filjlklllniQ F R ml:fnlol;fplqlrlsltlulvl=f?f@f[f]f^fwlxlylzlAlBloiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSi5 lkTi4l5l6lP S 3 cgdgegfggghgigjgkglgmgLcMcNcUiOcViWiPeOb'cQeUfVfWfXfXiYiReZi1 SeTe(cPbUeVeYf3mZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6f7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEf!l#l$l%lBeWh'l(l)l*l7f8fgkhk9f!fyjvk+l,lCe-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxkog/cykzkAkDeamFgGgO HgIgDf#fXeYeV $f%f'fW X (fzjBkZe)fPcQcRc$kCkDk%kEk'kFk(kGk)kEebmcmHk*k+kIk,kJk-kKk.kLk/kMk:kNk;kOk=kFeC [ Ffqg4mAjBjCjDjEjFjGjVb,fQmWb-fGeHeIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

601  

602 cdef Stream stream 

603 if arg is None: 2*cDb+c,c-c.c` Kfx G H Lfy Mf% Nfv Eb_fz A ' TcFbOf7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e[k@e[e]e^e]k_eXhZb0b1bKb`e{e^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b|e}e!b#b$b%b'b(bYh~eUcVcWcXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew FlGlvgnc`fPk-h:cQkoc;cRkpcqc.h=cSk/h{fTk:h|f}fUk~fVkMm?cWkrcagXkscdm@cYktc[cZk;h=h?hucvc]c0kwc^c1kxc_c2kyc`c3k{c4kNm|c5kOm}c6kPm~c7kad8kbd9kcd!kdd#k@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimisftfHlIlJlKlLlMlNlikufOlvf~kwfxfPlyfalQlzfRlAfblSlcljkTlUlBfCfedfdgdhdidjddlelfl.fglhl/filjlklllniQ F R ml:fnlol;fplqlrlsltlulvl=f?f@f[f]f^fwlxlylzlAlBloiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSi5 lkTi4l5l6lP S 3 cgdgegfggghgigjgkglgmgLcMcNcUiOcViWiPeOb'cQeUfVfWfXfXiYiReZi1 SeTe(cPbUeVeYf3mZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6f7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEf!l#l$l%lBeWh'l(l)l*l7f8fgkhk9f!fyjvk+l,lCe-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxkog/cykzkAkDeamFgGgO HgIgDf#fXeYeV $f%f'fW X (fzjBkZe)fPcQcRc$kCkDk%kEk'kFk(kGk)kEebmcmHk*k+kIk,kJk-kKk.kLk/kMk:kNk;kOk=kFeC [ Ffqg4mAjBjCjDjEjFjGjVb,fQmWb-fGeHeIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

604 raise TypeError( 23m#f4m

605 "stream is required and must not be None; " 

606 "pass device.default_stream explicitly to use the default stream." 

607 ) 

608 if isinstance(arg, Stream): 2*cDb+c,c-c.c` Kfx G H Lfy Mf% Nfv Eb_fz A ' TcFbOf7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e[k@e[e]e^e]k_eXhZb0b1bKb`e{e^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b|e}e!b#b$b%b'b(bYh~eUcVcWcXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrfPfQfRflcmcSfTfOew FlGlvgnc`fPk-h:cQkoc;cRkpcqc.h=cSk/h{fTk:h|f}fUk~fVkMm?cWkrcagXkscdm@cYktc[cZk;h=h?hucvc]c0kwc^c1kxc_c2kyc`c3k{c4kNm|c5kOm}c6kPm~c7kad8kbd9kcd!kdd#k@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimisftfHlIlJlKlLlMlNlikufOlvf~kwfxfPlyfalQlzfRlAfblSlcljkTlUlBfCfedfdgdhdidjddlelfl.fglhl/filjlklllniQ F R ml:fnlol;fplqlrlsltlulvl=f?f@f[f]f^fwlxlylzlAlBloiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSi5 lkTi4l5l6lP S 3 cgdgegfggghgigjgkglgmgLcMcNcUiOcViWiPeOb'cQeUfVfWfXfXiYiReZi1 SeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6f7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEf!l#l$l%lBeWh'l(l)l*l7f8fgkhk9f!fyjvk+l,lCe-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxkog/cykzkAkDeamFgGgO HgIgDf#fXeYeV $f%f'fW X (fzjBkZe)fPcQcRc$kCkDk%kEk'kFk(kGk)kEebmcmHk*k+kIk,kJk-kKk.kLk/kMk:kNk;kOk=kFeC [ FfqgAjBjCjDjEjFjGjVb,fQmWb-fGeHeIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

609 stream = <Stream>arg 2*cDb+c,c-c.c` G H % v Eb_f' TcFb7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e[k@e[e]e^e]k_eXhZb0b1bKb`e{e^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b|e}e!b#b$b%b'b(bYh~eUcVcWcXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrflcmcOeFlGlvgnc`fPk-h:cQkoc;cRkpcqc.h=cSk/h{fTk:h|f}fUk~fVkMm?cWkrcagXkscdm@cYktc[cZk;h=h?hucvc]c0kwc^c1kxc_c2kyc`c3k{c4kNm|c5kOm}c6kPm~c7kad8kbd9kcd!kdd#k@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimisftfHlIlJlKlLlMlNlikufOlvf~kwfxfPlyfalQlzfRlAfblSlcljkTlUlBfCfedfdgdhdidjddlelfl.fglhl/filjlklllniQ F R ml:fnlol;fplqlrlsltlulvl=f?f@f[f]f^fwlxlylzlAlBloiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSi5 lkTi4l5l6lP S 3 cgdgegfggghgigjgkglgmgLcMcNcUiOcViWiPeOb'cQeUfVfWfXfXiYiReZiSeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6f7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEf!l#l$l%lBeWh'l(l)l*l7f8fgkhk9f!fyjvk+l,lCe-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxkog/cykzkAkDeamFgGgO HgIgDf#fXeYeV $f%fW X zjBkZePcQcRc$kCkDk%kEk'kFk(kGk)kEebmcmHk*k+kIk,kJk-kKk.kLk/kMk:kNk;kOk=kFeC [ FfAjBjCjDjEjFjGjVb,fWb-fGeHeIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

610 Stream_check_open(stream) 2*cDb+c,c-c.c` G H % v Eb_f' TcFb7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e[k@e[e]e^e]k_eXhZb0b1bKb`e{e^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b|e}e!b#b$b%b'b(bYh~eUcVcWcXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrflcmcOeFlGlvgnc`fPk-h:cQkoc;cRkpcqc.h=cSk/h{fTk:h|f}fUk~fVkMm?cWkrcagXkscdm@cYktc[cZk;h=h?hucvc]c0kwc^c1kxc_c2kyc`c3k{c4kNm|c5kOm}c6kPm~c7kad8kbd9kcd!kdd#k@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimisftfHlIlJlKlLlMlNlikufOlvf~kwfxfPlyfalQlzfRlAfblSlcljkTlUlBfCfedfdgdhdidjddlelfl.fglhl/filjlklllniQ F R ml:fnlol;fplqlrlsltlulvl=f?f@f[f]f^fwlxlylzlAlBloiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSi5 lkTi4l5l6lP S 3 cgdgegfggghgigjgkglgmgLcMcNcUiOcViWiPeOb'cQeUfVfWfXfXiYiReZiSeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6f7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEf!l#l$l%lBeWh'l(l)l*l7f8fgkhk9f!fyjvk+l,lCe-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxkog/cykzkAkDeamFgGgO HgIgDf#fXeYeV $f%fW X zjBkZePcQcRc$kCkDk%kEk'kFk(kGk)kEebmcmHk*k+kIk,kJk-kKk.kLk/kMk:kNk;kOk=kFeC [ FfAjBjCjDjEjFjGjVb,fWb-fGeHeIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

611 return stream 2*cDb+c,c-c.c` G H % v Eb' TcFb7 a b c d e f g h i j k l m n o p I q r s t u J K L M 0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=eMeNe?e[k@e[e]e^e]k_eXhZb0b1bKb`e{e^k_k`k2b3bLb{k4b5b6b7b8b|k}k9b|e}e!b#b$b%b'b(bYh~eUcVcWcXcYcZc( )b) * + *b, - . / : 0c1c2c3c4c5caf+bbfY Gbcfdf,b-b.b/b:b;b=b?bZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'hefwb(h)hffZ Hbgfhf@b[b]b^b_b`b{b|bifjf0 Ibkflf}b~bacbcccdcecfcmfgchcicxbybzbAbBb*h+h,hjcnfofpfqfN CbkcrflcmcOeFlGlvgnc`fPk-h:cQkoc;cRkpcqc.h=cSk/h{fTk:h|f}fUk~fVkMm?cWkrcagXkscdm@cYktc[cZk;h=h?hucvc]c0kwc^c1kxc_c2kyc`c3k{c4kNm|c5kOm}c6kPm~c7kad8kbd9kcd!kdd#k@h[h]h^h_h`h{h|h}h~haibicidi8 ei9 figi! hiiijikilimisftfHlIlJlKlLlMlNlikufOlvf~kwfxfPlyfalQlzfRlAfblSlcljkTlUlBfCfedfdgdhdidjddlelfl.fglhl/filjlklllniQ F R ml:fnlol;fplqlrlsltlulvl=f?f@f[f]f^fwlxlylzlAlBloiBcpiqiCcrisiDctiuiEcviwiFcxiyiziAiBiGcCiDiHcEiFiIcGiVlWlXlYlZl0l1l2lkk3lHiIiJiKiLiMiNiOiPiQiRiSi5 lkTi4l5l6lP S 3 cgdgegfggghgigjgkglgmgLcMcNcUiOcViWiPeOb'cQeUfVfWfXfXiYiReZiSeTe(cPbUeVeYfZf0f1fWeQb6 kdld0i1iU 2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjRbSbTbUbmknkmdndodpd2f3f4f5f6f7l8lok9lpkqkrkwjxjsktkqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeukAengEf!l#l$l%lBeWh'l(l)l*l7f8fgkhk9f!fyjvk+l,lCe-l.lwg/l:l;l=l?l@lxgygzgAg[l]lBg^l_l`lCg{l|l}l~lDgEgwkxkog/cykzkAkDeamFgGgO HgIgDf#fXeYeV $f%fW X zjBkZePcQcRc$kCkDk%kEk'kFk(kGk)kEebmcmHk*k+kIk,kJk-kKk.kLk/kMk:kNk;kOk=kFeC FfAjBjCjDjEjFjGjVb,fWb-fGeHeIeJeKeHjIjJjKjLjMjNjOjPjQjRjSjTjLeUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkXbckdkek

612 elif isinstance(arg, GraphBuilder): 2Db` Kfx G H Lfy Mf% Nfv Ebz A ' TcFbOf7 a b c d e f g h i j k l m n o p I q r s t u J K L M UcVcWcXcYcZc( ) * + , - . / : 0c1c2c3c4c5cwbxbybzbAbBbN CbPfQfRfSfTfOew 8 9 ! 1 U 'f(f)f[ qgVbQm

613 stream = <Stream>arg.stream 2Db` Kfx G H Lfy Mf% Nfv Ebz A ' TcFbOf7 a b c d e f g h i j k l m n o p I q r s t u J K L M UcVcWcXcYcZc( ) * + , - . / : 0c1c2c3c4c5cwbxbybzbAbBbN CbPfQfRfSfTfOew 8 9 ! 'f(f)fqgVb

614 Stream_check_open(stream) 2Db` Kfx G H Lfy Mf% Nfv Ebz A ' TcFbOf7 a b c d e f g h i j k l m n o p I q r s t u J K L M UcVcWcXcYcZc( ) * + , - . / : 0c1c2c3c4c5cwbxbybzbAbBbN CbPfQfRfSfTfOew 8 9 ! 'f(f)fVb

615 return stream 2Db` Kfx G H Lfy Mf% Nfv Ebz A ' TcFbOf7 a b c d e f g h i j k l m n o p I q r s t u J K L M UcVcWcXcYcZc( ) * + , - . / : 0c1c2c3c4c5cwbxbybzbAbBbN CbPfQfRfSfTfOew 8 9 ! 'f(f)fVb

616 elif allow_stream_protocol and hasattr(arg, "__cuda_stream__"): 21 U [ Qm

617 stream = Stream._init(arg) 11U[

618 warnings.warn( 11U

619 "Passing foreign stream objects to this function via the " 

620 "stream protocol is deprecated. Convert the object explicitly " 

621 "using Stream(obj) instead.", 

622 stacklevel=2, 

623 category=DeprecationWarning, 11U

624 ) 

625 return stream 11U

626 raise TypeError(f"Stream or GraphBuilder expected, got {type(arg).__name__}") 2Qm