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

237 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-09-10 02:27 +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) 

17  

18import cython 

19import warnings 

20from dataclasses import dataclass 

21from typing import Protocol, TYPE_CHECKING 

22  

23from cuda.core._context cimport ( 

24 Context, 

25 Context_check_open, 

26) 

27from cuda.core._device_resources cimport DeviceResources 

28from cuda.core._event import Event, EventOptions 

29  

30from cuda.core._resource_handles cimport ( 

31 ContextHandle, 

32 EventHandle, 

33 StreamHandle, 

34 create_context_handle_ref, 

35 create_event_handle_for_stream, 

36 create_stream_handle, 

37 create_stream_handle_with_owner, 

38 context_get_stream_priority_range, 

39 get_current_context, 

40 get_last_error, 

41 get_legacy_stream, 

42 get_per_thread_stream, 

43 get_stream_context, 

44 as_intptr, 

45 as_cu, 

46 as_py, 

47) 

48  

49if TYPE_CHECKING: 

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

51 from cuda.core._device import Device 

52 from cuda.core.graph import GraphBuilder 

53  

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

55  

56  

57@dataclass 

58cdef class StreamOptions: 

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

60  

61 Attributes 

62 ---------- 

63 nonblocking : bool, optional 

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

65 priority : int, optional 

66 Stream priority where lower number represents a 

67 higher priority. (Default to lowest priority) 

68  

69 """ 

70  

71 nonblocking : cython.bint = True 

72 priority: int | None = None 

73  

74  

75class IsStreamType(Protocol): 

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

77 """ 

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

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

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

81 should be Python `int`. 

82 """ 

83 ... 

84  

85  

86cdef class Stream: 

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

88  

89 Applications use streams to control the order of execution for 

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

91 Whereas work across multiple streams can be further controlled 

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

93  

94 Advanced users can utilize default streams for enforce complex 

95 implicit synchronization behaviors. 

96  

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

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

99 object, or created directly through using an existing handle 

100 using Stream.from_handle(). 

101 """ 

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

103 raise RuntimeError( 2%m

104 "Stream objects cannot be instantiated directly. " 

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

106 ) 

107  

108 @staticmethod 

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

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

111 cdef Stream s = cls.__new__(cls) 2-c3f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4edmmb$fGcnb5e6e1f7eji/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^erfsftfufvfrew 5befmk@hTcnk6bUcokyb^fzb_fmhVcpknhffqkoh`fwfgfrk{fhfskWctk7bifukAbXcvk8bYcwk[h|f]h}f^h~fBb9bZcxk!b0cyk#b1czk$b2cAk3cBk4cCk5cDk6cEk7cFk8cGk9cHk!cIkphagqhbgGicgHidgIiegrhfg_hgg`hhg{hig|hjg}h~hkgailg6 bimg7 JingKiog! cipgdieiqgfirggisghitg_e`eemfmgmhmim]j{ejm|e}e~ekmafuglmvg^jmmnmbfcf@c[c]c^c_c`cJkLiL KkC LkU V W X Y Z 0 1 8 KbLbompmqmrmsmtmumvmwmMiNiOiPiQiRi%b'b(b)b*b+bshth%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS SiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBf{j|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjfleiiCfDf@j[jEfFfxgygrjdkmeekfkYf=cgkhkneB dfGf?cseikjkkklkQbDcEc~ MktjzgujNkAgvjOk'fBgwjPkCgxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kDgTj$kEg#c%kFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZgUj'k0gVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k1g*jal2g$cbl3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb+jcl;g,jdl=g-jel?g.jfl@g/jgl[g:jhl]g;jil^g=jjl_gxmjhkhhbkfZf.bRbcb8fibjbA O lh(f)fdb5f9flfHfIf6f=lkb?l0febfb`g7f!fQ SbEbFbJfoepe{gqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

112 s._h_stream = h_stream 2-c3f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4edmmb$fGcnb5e6e1f7eji/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^erfsftfufvfrew 5befmk@hTcnk6bUcokyb^fzb_fmhVcpknhffqkoh`fwfgfrk{fhfskWctk7bifukAbXcvk8bYcwk[h|f]h}f^h~fBb9bZcxk!b0cyk#b1czk$b2cAk3cBk4cCk5cDk6cEk7cFk8cGk9cHk!cIkphagqhbgGicgHidgIiegrhfg_hgg`hhg{hig|hjg}h~hkgailg6 bimg7 JingKiog! cipgdieiqgfirggisghitg_e`eemfmgmhmim]j{ejm|e}e~ekmafuglmvg^jmmnmbfcf@c[c]c^c_c`cJkLiL KkC LkU V W X Y Z 0 1 8 KbLbompmqmrmsmtmumvmwmMiNiOiPiQiRi%b'b(b)b*b+bshth%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS SiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBf{j|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjfleiiCfDf@j[jEfFfxgygrjdkmeekfkYf=cgkhkneB dfGf?cseikjkkklkQbDcEc~ MktjzgujNkAgvjOk'fBgwjPkCgxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kDgTj$kEg#c%kFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZgUj'k0gVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k1g*jal2g$cbl3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb+jcl;g,jdl=g-jel?g.jfl@g/jgl[g:jhl]g;jil^g=jjl_gxmjhkhhbkfZf.bRbcb8fibjbA O lh(f)fdb5f9flfHfIf6f=lkb?l0febfb`g7f!fQ SbEbFbJfoepe{gqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

113 s._h_context = get_stream_context(h_stream) 2-c3f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4edmmb$fGcnb5e6e1f7eji/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^erfsftfufvfrew 5befmk@hTcnk6bUcokyb^fzb_fmhVcpknhffqkoh`fwfgfrk{fhfskWctk7bifukAbXcvk8bYcwk[h|f]h}f^h~fBb9bZcxk!b0cyk#b1czk$b2cAk3cBk4cCk5cDk6cEk7cFk8cGk9cHk!cIkphagqhbgGicgHidgIiegrhfg_hgg`hhg{hig|hjg}h~hkgailg6 bimg7 JingKiog! cipgdieiqgfirggisghitg_e`eemfmgmhmim]j{ejm|e}e~ekmafuglmvg^jmmnmbfcf@c[c]c^c_c`cJkLiL KkC LkU V W X Y Z 0 1 8 KbLbompmqmrmsmtmumvmwmMiNiOiPiQiRi%b'b(b)b*b+bshth%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS SiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBf{j|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjfleiiCfDf@j[jEfFfxgygrjdkmeekfkYf=cgkhkneB dfGf?cseikjkkklkQbDcEc~ MktjzgujNkAgvjOk'fBgwjPkCgxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kDgTj$kEg#c%kFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZgUj'k0gVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k1g*jal2g$cbl3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb+jcl;g,jdl=g-jel?g.jfl@g/jgl[g:jhl]g;jil^g=jjl_gxmjhkhhbkfZf.bRbcb8fibjbA O lh(f)fdb5f9flfHfIf6f=lkb?l0febfb`g7f!fQ SbEbFbJfoepe{gqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

114 s._device_id = -1 # lazy init'd (invalid sentinel) 2-c3f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4edmmb$fGcnb5e6e1f7eji/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^erfsftfufvfrew 5befmk@hTcnk6bUcokyb^fzb_fmhVcpknhffqkoh`fwfgfrk{fhfskWctk7bifukAbXcvk8bYcwk[h|f]h}f^h~fBb9bZcxk!b0cyk#b1czk$b2cAk3cBk4cCk5cDk6cEk7cFk8cGk9cHk!cIkphagqhbgGicgHidgIiegrhfg_hgg`hhg{hig|hjg}h~hkgailg6 bimg7 JingKiog! cipgdieiqgfirggisghitg_e`eemfmgmhmim]j{ejm|e}e~ekmafuglmvg^jmmnmbfcf@c[c]c^c_c`cJkLiL KkC LkU V W X Y Z 0 1 8 KbLbompmqmrmsmtmumvmwmMiNiOiPiQiRi%b'b(b)b*b+bshth%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS SiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBf{j|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjfleiiCfDf@j[jEfFfxgygrjdkmeekfkYf=cgkhkneB dfGf?cseikjkkklkQbDcEc~ MktjzgujNkAgvjOk'fBgwjPkCgxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kDgTj$kEg#c%kFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZgUj'k0gVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k1g*jal2g$cbl3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb+jcl;g,jdl=g-jel?g.jfl@g/jgl[g:jhl]g;jil^g=jjl_gxmjhkhhbkfZf.bRbcb8fibjbA O lh(f)fdb5f9flfHfIf6f=lkb?l0febfb`g7f!fQ SbEbFbJfoepe{gqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

115 s._nonblocking = -1 # lazy init'd 2-c3f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4edmmb$fGcnb5e6e1f7eji/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^erfsftfufvfrew 5befmk@hTcnk6bUcokyb^fzb_fmhVcpknhffqkoh`fwfgfrk{fhfskWctk7bifukAbXcvk8bYcwk[h|f]h}f^h~fBb9bZcxk!b0cyk#b1czk$b2cAk3cBk4cCk5cDk6cEk7cFk8cGk9cHk!cIkphagqhbgGicgHidgIiegrhfg_hgg`hhg{hig|hjg}h~hkgailg6 bimg7 JingKiog! cipgdieiqgfirggisghitg_e`eemfmgmhmim]j{ejm|e}e~ekmafuglmvg^jmmnmbfcf@c[c]c^c_c`cJkLiL KkC LkU V W X Y Z 0 1 8 KbLbompmqmrmsmtmumvmwmMiNiOiPiQiRi%b'b(b)b*b+bshth%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS SiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBf{j|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjfleiiCfDf@j[jEfFfxgygrjdkmeekfkYf=cgkhkneB dfGf?cseikjkkklkQbDcEc~ MktjzgujNkAgvjOk'fBgwjPkCgxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kDgTj$kEg#c%kFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZgUj'k0gVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k1g*jal2g$cbl3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb+jcl;g,jdl=g-jel?g.jfl@g/jgl[g:jhl]g;jil^g=jjl_gxmjhkhhbkfZf.bRbcb8fibjbA O lh(f)fdb5f9flfHfIf6f=lkb?l0febfb`g7f!fQ SbEbFbJfoepe{gqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

116 s._priority = INT32_MIN # lazy init'd 2-c3f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4edmmb$fGcnb5e6e1f7eji/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^erfsftfufvfrew 5befmk@hTcnk6bUcokyb^fzb_fmhVcpknhffqkoh`fwfgfrk{fhfskWctk7bifukAbXcvk8bYcwk[h|f]h}f^h~fBb9bZcxk!b0cyk#b1czk$b2cAk3cBk4cCk5cDk6cEk7cFk8cGk9cHk!cIkphagqhbgGicgHidgIiegrhfg_hgg`hhg{hig|hjg}h~hkgailg6 bimg7 JingKiog! cipgdieiqgfirggisghitg_e`eemfmgmhmim]j{ejm|e}e~ekmafuglmvg^jmmnmbfcf@c[c]c^c_c`cJkLiL KkC LkU V W X Y Z 0 1 8 KbLbompmqmrmsmtmumvmwmMiNiOiPiQiRi%b'b(b)b*b+bshth%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS SiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBf{j|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjfleiiCfDf@j[jEfFfxgygrjdkmeekfkYf=cgkhkneB dfGf?cseikjkkklkQbDcEc~ MktjzgujNkAgvjOk'fBgwjPkCgxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kDgTj$kEg#c%kFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZgUj'k0gVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k1g*jal2g$cbl3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb+jcl;g,jdl=g-jel?g.jfl@g/jgl[g:jhl]g;jil^g=jjl_gxmjhkhhbkfZf.bRbcb8fibjbA O lh(f)fdb5f9flfHfIf6f=lkb?l0febfb`g7f!fQ SbEbFbJfoepe{gqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

117 return s 2-c3f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4edmmb$fGcnb5e6e1f7eji/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^erfsftfufvfrew 5befmk@hTcnk6bUcokyb^fzb_fmhVcpknhffqkoh`fwfgfrk{fhfskWctk7bifukAbXcvk8bYcwk[h|f]h}f^h~fBb9bZcxk!b0cyk#b1czk$b2cAk3cBk4cCk5cDk6cEk7cFk8cGk9cHk!cIkphagqhbgGicgHidgIiegrhfg_hgg`hhg{hig|hjg}h~hkgailg6 bimg7 JingKiog! cipgdieiqgfirggisghitg_e`eemfmgmhmim]j{ejm|e}e~ekmafuglmvg^jmmnmbfcf@c[c]c^c_c`cJkLiL KkC LkU V W X Y Z 0 1 8 KbLbompmqmrmsmtmumvmwmMiNiOiPiQiRi%b'b(b)b*b+bshth%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS SiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBf{j|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjfleiiCfDf@j[jEfFfxgygrjdkmeekfkYf=cgkhkneB dfGf?cseikjkkklkQbDcEc~ MktjzgujNkAgvjOk'fBgwjPkCgxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kDgTj$kEg#c%kFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZgUj'k0gVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k1g*jal2g$cbl3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb+jcl;g,jdl=g-jel?g.jfl@g/jgl[g:jhl]g;jil^g=jjl_gxmjhkhhbkfZf.bRbcb8fibjbA O lh(f)fdb5f9flfHfIf6f=lkb?l0febfb`g7f!fQ SbEbFbJfoepe{gqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

118  

119 @classmethod 

120 def _legacy_default(cls) -> Stream: 

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

122 return Stream._from_handle(cls, get_legacy_stream()) 2-c=l

123  

124 @classmethod 

125 def _per_thread_default(cls) -> Stream: 

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

127 return Stream._from_handle(cls, get_per_thread_stream()) 2-c?l

128  

129 @classmethod 

130 @cython.annotation_typing(False) 

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

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

133 cdef StreamHandle h_stream 

134 cdef cydriver.CUstream borrowed 

135 cdef ContextHandle h_context 

136 cdef Context context 

137  

138 if obj is not None and options is not None: 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAg'fBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_gjhkhhbkfZf.bRbcb8fibjbA O lh(f)fdb5f9flfIlJlklNmllHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

139 raise ValueError("obj and options cannot be both specified") 2Nm

140 if obj is not None: 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAg'fBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_gjhkhhbkfZf.bRbcb8fibjbA O lh(f)fdb5f9flfIlJlklllHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

141 # Borrowed stream from foreign object 

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

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

144 borrowed = _handle_from_stream_protocol(obj) 2P 'fjhkhhbkfcbibjbA O lhdblfIlJlklllkbfbSb

145 h_stream = create_stream_handle_with_owner(borrowed, obj) 2P 'fjhkhkfcbibjbA O lhdblfkbfb

146 return Stream._from_handle(cls, h_stream) 2P 'fjhkhkfcbibjbA O lhdblfkbfb

147  

148 if ctx is None: 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

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

150 context = <Context>ctx 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

151 Context_check_open(context) 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

152 h_context = context._h_context 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

153  

154 cdef StreamOptions opts = check_or_create_options(StreamOptions, options, "Stream options") 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

155 nonblocking = opts.nonblocking 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

156 priority = opts.priority 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

157  

158 cdef unsigned int flags = (cydriver.CUstream_flags.CU_STREAM_NON_BLOCKING if nonblocking 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

159 else cydriver.CUstream_flags.CU_STREAM_DEFAULT) 2?j

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

161 cdef int high, low 

162 cdef cydriver.CUresult res_code 

163 res_code = context_get_stream_priority_range(context._h_context, &high, &low) 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

164 HANDLE_RETURN(res_code) 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

165 cdef int prio 

166 if priority is not None: 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

167 prio = priority 2O HfIf0f

168 if not (low <= prio <= high): 2O HfIf0f

169 raise ValueError(f"{priority=} is out of range {[low, high]}") 20f

170 else: 

171 prio = high 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA (f)fdb5f9flf6fkbebfb`g7f!fQ SbEbFbJfoepe{gqeGb

172  

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

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

175 h_stream = create_stream_handle(h_context, flags, prio) 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

176 if not h_stream: 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb?j-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

177 res_code = get_last_error() 2?j

178 if not nonblocking and res_code == cydriver.CUresult.CUDA_ERROR_INVALID_VALUE: 2?j

179 # cuGreenCtxStreamCreate rejects CU_STREAM_DEFAULT; 

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

181 raise ValueError( 2?j

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

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

184 ) 

185 elif res_code == cydriver.CUresult.CUDA_ERROR_NOT_SUPPORTED: 

186 raise RuntimeError( 

187 "cuGreenCtxStreamCreate is not available. " 

188 "Green context stream creation requires CUDA 12.5 or newer." 

189 ) 

190 else: 

191 HANDLE_RETURN(res_code) 

192 cdef Stream self = Stream._from_handle(cls, h_stream) 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

193 self._nonblocking = int(nonblocking) 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

194 self._priority = prio 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

195 if device_id is not None: 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

196 self._device_id = device_id 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

197 return self 23f*f# +f#f,f-f.f/fvb4f.c/c:c;c:flbmfx D gbE nf;f=fy of$ pf?fv wbKf@fz % [fFcxbqfHb]f9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emb$fGcnb5e6e1f7e/b:b3b8e2f9e;b=b4b?b@b[b]b^bob!e_b`b{b|b}b~b#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcqb*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbAcsb[e]etbK ubBc^erfsftfufvfrew 5befTc6bUcyb^fzb_fVcff`fwfgf{fhfWc7bifAbXc8bYc|f}f~fBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cagbgcgdgegfggghgigjgkglg6 mg7 ngog! pgqgrgsgtg_e`e{e|e}e~eafugvgbfcf@c[c]c^c_c`cL C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+b%fCbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R MfNfOfPfQfRfSfwgTfUfVfWfMb,bNbObPb-bDbS CcT P {c|c}c~cxfyfzfAfBfadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejekeXfjfleCfDfEfFfxgygmeYf=cneB dfGf?cseQbDcEc~ zgAgBgCgDgEg#cFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g$c3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:gabbb;g=g?g@g[g]g^g_ghbZf.bRbcb8fibjbA O (f)fdb5f9flfHfIf6fkb0febfb`g7f!fQ SbEbFbJfoepe{gqeGb

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() 2vbwbKfxb9 mknkok'm(mpkqk)mrksktkukvkwk*m+m,mxkykzkAkBkCkDkEkFkGkHkIk-m.m/m:m;m=m?m@m[m]m^m_m6 `m7 {m|m! }m~manbncnCbMbDbjf?cseEmjhkhhbkfO lfEbFbJfoepeqe

212  

213 @property 

214 def is_closed(self) -> bool: 

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

216 return self._h_stream.get() == NULL 2Emjhkhhbkf

217  

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

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

220 Stream_check_open(self) 23fP hbkfA

221 return (0, as_intptr(self._h_stream)) 23fP kfA

222  

223 def __hash__(self) -> int: 

224 return hash(as_intptr(self._h_stream)) 2'fdnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnKmLmFn@lcbA )fdb5ffb

225  

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

227 if not isinstance(other, Stream): 2Jm'fOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$mKmLm@lcb8fibjbA db5f9fkbfb!f

228 return NotImplemented 2JmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m!f

229 return as_intptr(self._h_stream) == as_intptr((<Stream>other)._h_stream) 2Jm'f$mKmLm@lcb8fibjbA db5f9fkbfb

230  

231 def __repr__(self) -> str: 

232 cdef ContextHandle h_context 

233 if not self._h_stream: 2# mbGcnbobpb4 qbrb5 sbtbL C U V W X Y Z 0 1 |gTb}gUb~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bEm;l

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

235 Stream_get_ctx(self, &h_context) 2# mbGcnbobpb4 qbrb5 sbtbL C U V W X Y Z 0 1 |gTb}gUb~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2b;l

236 return f"<Stream handle={as_intptr(self._h_stream):#x} context={as_intptr(h_context):#x}>" 2# mbGcnbobpb4 qbrb5 sbtbL C U V W X Y Z 0 1 |gTb}gUb~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2b;l

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) 23f#flbD gbE Hba b c d e f g h i j k l m n o p F q r s t u G H I J $fGc1f3b2f4bK w %fCbDbxfyfzfAfBfjfiiCfDf@j[jEfFf=cEmJm'fkfcbibjbO (fdblfkbfbEboepeqeGb

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) 2O HfIf6f

253 cdef unsigned int flags 

254 if self._nonblocking == -1: 2O HfIf6f

255 with nogil: 1O

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

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

258 return bool(self._nonblocking) 2O HfIf6f

259  

260 @property 

261 def priority(self) -> int: 

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

263 Stream_check_open(self) 2O HfIf0f

264 cdef int prio 

265 if self._priority == INT32_MIN: 2O HfIf0f

266 with nogil: 1O

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

268 self._priority = prio 1O

269 return self._priority 2O HfIf0f

270  

271 def sync(self) -> None: 

272 """Synchronize the stream.""" 

273 Stream_check_open(self) 2# vb.c/c:c;clbD E $ v wb% Fcxb9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emlmbGcnb5e6enl1f7eji/b:b3b8e2f9eolplql;b=b4brl?b@b[b]bsltl^bob!e_b`b{b|b}b~bki#e' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^e5bmk@hnk6bokybzbmhpknhqkohrksktk7bukAb:lvk8bwk[h]h^hBb9bxk!byk#bzk$bAkBkCkDkEkFkGkHkIkphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihi_e`e{e|eul}e~eafvlwlbfcfxlylzlJk%cAl'cBlClLiKkLk|gTb[lDlEl]l^lFlGl_l`l}gHl{l|l(c)c}l~l*c+cambmUb,ccm~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishth2 M 3 N NbObPbS SiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjuhvhiirjdf?cseQbDcEcMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlhb7fQ EbFboepeqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

274 with nogil: 2# vb.c/c:c;clbD E $ v wb% Fcxb9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emlmbGcnb5e6enl1f7eji/b:b3b8e2f9eolplql;b=b4brl?b@b[b]bsltl^bob!e_b`b{b|b}b~bki#e' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^e5bmk@hnk6bokybzbmhpknhqkohrksktk7bukAb:lvk8bwk[h]h^hBb9bxk!byk#bzk$bAkBkCkDkEkFkGkHkIkphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihi_e`e{e|eul}e~eafvlwlbfcfxlylzlJk%cAl'cBlClLiKkLk|gTb[lDlEl]l^lFlGl_l`l}gHl{l|l(c)c}l~l*c+cambmUb,ccm~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishth2 M 3 N NbObPbS SiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjuhvhiirjdf?cseQbDcEcMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljl7fQ EbFboepeqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

275 HANDLE_RETURN(cydriver.cuStreamSynchronize(as_cu(self._h_stream))) 2# vb.c/c:c;clbD E $ v wb% Fcxb9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emlmbGcnb5e6enl1f7eji/b:b3b8e2f9eolplql;b=b4brl?b@b[b]bsltl^bob!e_b`b{b|b}b~bki#e' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^e5bmk@hnk6bokybzbmhpknhqkohrksktk7bukAb:lvk8bwk[h]h^hBb9bxk!byk#bzk$bAkBkCkDkEkFkGkHkIkphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihi_e`e{e|eul}e~eafvlwlbfcfxlylzlJk%cAl'cBlClLiKkLk|gTb[lDlEl]l^lFlGl_l`l}gHl{l|l(c)c}l~l*c+cambmUb,ccm~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishth2 M 3 N NbObPbS SiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjuhvhiirjdf?cseQbDcEcMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljl7fQ EbFboepeqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

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) 2x y v z a b c d e f g h i j k l m n o p q r s t u w L C U V W X Y Z 0 1 8 KbLbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R S ~ abbbhbebQ

307 cdef ContextHandle h_context 

308 cdef int device_id 

309 cdef cyEvent event_obj 

310 if event is None: 2x y v z a b c d e f g h i j k l m n o p q r s t u w L C U V W X Y Z 0 1 8 KbLbLf2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R S ~ abbbebQ

311 Stream_get_ctx_device(self, &h_context, &device_id) 2x y v z a b c d e f g h i j k l m n o p q r s t u w L C U V W X Y Z 0 1 8 KbLb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R S ~ abbbebQ

312 event_obj = cyEvent._init(cyEvent, device_id, h_context, options, False) 2x y v z a b c d e f g h i j k l m n o p q r s t u w L C U V W X Y Z 0 1 8 KbLb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R S ~ abbbebQ

313 else: 

314 event_obj = Event_accept(event) 28 Lf

315 if event is not None and event_obj.is_ipc_enabled: 2x y v z a b c d e f g h i j k l m n o p q r s t u w L C U V W X Y Z 0 1 8 2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R S ~ abbbebQ

316 raise TypeError( 18

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) 2x y v z a b c d e f g h i j k l m n o p q r s t u w L C U V W X Y Z 0 1 8 2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R S ~ abbbebQ

322 with nogil: 2x y v z a b c d e f g h i j k l m n o p q r s t u w L C U V W X Y Z 0 1 8 2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R S ~ abbbebQ

323 HANDLE_RETURN(cydriver.cuEventRecord(e, as_cu(self._h_stream))) 2x y v z a b c d e f g h i j k l m n o p q r s t u w L C U V W X Y Z 0 1 8 2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R S ~ abbbebQ

324 return event_obj 2x y v z a b c d e f g h i j k l m n o p q r s t u w L C U V W X Y Z 0 1 8 2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R S ~ abbbebQ

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) 2x y v z a b c d e f g h i j k l m n o p q r s t u w LfQ Sb

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): 2x y v z a b c d e f g h i j k l m n o p q r s t u w LfQ Sb

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

351 with nogil: 1xyvzabcdefghijklmnopqrstuwQ

352 # TODO: support flags other than 0? 

353 HANDLE_RETURN(cydriver.cuStreamWaitEvent( 1xyvzabcdefghijklmnopqrstuwQ

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

355 return 1xyvzabcdefghijklmnopqrstuwQ

356  

357 # Convert to Stream if needed 

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

359 stream = <Stream>event_or_stream 1xyvzabcdefghijklmnopqrstuw

360 Stream_check_open(stream) 1xyvzabcdefghijklmnopqrstuw

361 else: 

362 try: 2Sb

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

364 except Exception as e: 2Sb

365 raise ValueError( 2Sb

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

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

368 ) from e 2Sb

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: 1xyvzabcdefghijklmnopqrstuw

374 h_event = create_event_handle_for_stream( 1xyvzabcdefghijklmnopqrstuw

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

376 if not h_event: 1xyvzabcdefghijklmnopqrstuw

377 HANDLE_RETURN(get_last_error()) 

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

379 # TODO: support flags other than 0? 

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

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) 2x D gbE y v z a b c d e f g h i j k l m n o p F q r s t u G H I J K w te%c'cC Tb(c)c*c+cUb,cVbWbXbYbZb0b1b2bT uevewexeyezeAeBeB CeDeRbA

399 from cuda.core._device import Device # avoid circular import 2x D gbE y v z a b c d e f g h i j k l m n o p F q r s t u G H I J K w te%c'cC Tb(c)c*c+cUb,cVbWbXbYbZb0b1b2bT uevewexeyezeAeBeB CeDeRbA

400 cdef ContextHandle h_context 

401 cdef int device_id 

402 Stream_get_ctx_device(self, &h_context, &device_id) 2x D gbE y v z a b c d e f g h i j k l m n o p F q r s t u G H I J K w te%c'cC Tb(c)c*c+cUb,cVbWbXbYbZb0b1b2bT uevewexeyezeAeBeB CeDeRbA

403 return Device(device_id) 2x D gbE y v z a b c d e f g h i j k l m n o p F q r s t u G H I J K w te%c'cC Tb(c)c*c+cUb,cVbWbXbYbZb0b1b2bT uevewexeyezeAeBeB CeDeRbA

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) 2D gbE Hba b c d e f g h i j k l m n o p F q r s t u G H I J K w %b'b(b)b*b+bCb-bDbS .bA

418 cdef ContextHandle h_context 

419 cdef int device_id 

420 Stream_get_ctx_device(self, &h_context, &device_id) 2D gbE Hba b c d e f g h i j k l m n o p F q r s t u G H I J K w %b'b(b)b*b+bCb-bDbS .bA

421 return Context._from_handle(Context, h_context, device_id) 2D gbE Hba b c d e f g h i j k l m n o p F q r s t u G H I J K w %b'b(b)b*b+bCb-bDbS .bA

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) 2Mb,b

440 cdef ContextHandle h_context 

441 cdef int device_id 

442 Stream_get_ctx_device(self, &h_context, &device_id) 2Mb,b

443 return DeviceResources._init_from_ctx(h_context, device_id) 2Mb,b

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: 2'fjhkhkfcbibjbO lhdbkbfb

471 def __cuda_stream__(self) -> tuple[int, int]: 2'fjhkhkfcbibjbO lhdbkbfb

472 return (0, handle) 2'fjhkhkfcbibjbO lhdbkbfb

473  

474 return Stream._init(obj=_stream_holder()) 2'fjhkhkfcbibjbO lhdbkbfb

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# vb4f.c/c:c;c$ wb% xb9 HcIcJcKcLcMc' ( ) * + , - . / 6 7 ! hb

488 from cuda.core.graph._graph_builder import GraphBuilder 2# vb4f.c/c:c;c$ wb% xb9 HcIcJcKcLcMc' ( ) * + , - . / 6 7 !

489  

490 return GraphBuilder._init(self) 2# vb4f.c/c:c;c$ wb% xb9 HcIcJcKcLcMc' ( ) * + , - . / 6 7 !

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") 2lbD E $ % 9 a b c d e f g h i j k l m n o p F q r s t u G H I J mlnlji/b:b3bolplql;b=b4brl?b@b[b]bsltl^b_b`b{b|b}b~bki' ac( ) * bc+ , - . / 4 ccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiBiCikclcmcncocpcqcrcsctcucvcwcxcyczc5 IbJbDiEiFiAcK ubBcKlLlte5b@hTc6bUcybzbmhVcnhohWc7bAbXc8bYc[h]h^hBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihiMlNlOlPlQlRl]jSlulTlvlUlwl^jVlWl@c[c]c^c_c`cxlylzl%cAl'cBlClLiFmGmL C |gTb[lDlEl]l^lFlGl_l`l}gHl{l|l(c)c}l~l*c+cambmUb,ccm~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N NbObPbSiCcTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeHm0l1l2lleii3l4l5l6l@j[jrjdk7l8lmeIm9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfk=cgkhkne-lAeBeB CeDeikjkkklkQbDcEctjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTj#cUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j$c.l/l+j,j-j.j/j:j;j=j@lymFbwhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

509  

510 cdef int use_ptds = 0 2lbD E $ % 9 a b c d e f g h i j k l m n o p F q r s t u G H I J mlnlji/b:b3bolplql;b=b4brl?b@b[b]bsltl^b_b`b{b|b}b~bki' ac( ) * bc+ , - . / 4 ccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiBiCikclcmcncocpcqcrcsctcucvcwcxcyczc5 IbJbDiEiFiAcK ubBcKlLlte5b@hTc6bUcybzbmhVcnhohWc7bAbXc8bYc[h]h^hBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihiMlNlOlPlQlRl]jSlulTlvlUlwl^jVlWl@c[c]c^c_c`cxlylzl%cAl'cBlClLiFmGmL C |gTb[lDlEl]l^lFlGl_l`l}gHl{l|l(c)c}l~l*c+cambmUb,ccm~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N NbObPbSiCcTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeHm0l1l2lleii3l4l5l6l@j[jrjdk7l8lmeIm9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfk=cgkhkne-lAeBeB CeDeikjkkklkQbDcEctjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTj#cUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j$c.l/l+j,j-j.j/j:j;j=j@lymFbwhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

511 if use_ptds_raw != NULL: 2lbD E $ % 9 a b c d e f g h i j k l m n o p F q r s t u G H I J mlnlji/b:b3bolplql;b=b4brl?b@b[b]bsltl^b_b`b{b|b}b~bki' ac( ) * bc+ , - . / 4 ccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiBiCikclcmcncocpcqcrcsctcucvcwcxcyczc5 IbJbDiEiFiAcK ubBcKlLlte5b@hTc6bUcybzbmhVcnhohWc7bAbXc8bYc[h]h^hBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihiMlNlOlPlQlRl]jSlulTlvlUlwl^jVlWl@c[c]c^c_c`cxlylzl%cAl'cBlClLiFmGmL C |gTb[lDlEl]l^lFlGl_l`l}gHl{l|l(c)c}l~l*c+cambmUb,ccm~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N NbObPbSiCcTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeHm0l1l2lleii3l4l5l6l@j[jrjdk7l8lmeIm9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfk=cgkhkne-lAeBeB CeDeikjkkklkQbDcEctjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTj#cUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j$c.l/l+j,j-j.j/j:j;j=j@lymFbwhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

512 use_ptds = strtol(use_ptds_raw, NULL, 10) 2ym

513  

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

515 if use_ptds: 2lbD E $ % 9 a b c d e f g h i j k l m n o p F q r s t u G H I J mlnlji/b:b3bolplql;b=b4brl?b@b[b]bsltl^b_b`b{b|b}b~bki' ac( ) * bc+ , - . / 4 ccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiBiCikclcmcncocpcqcrcsctcucvcwcxcyczc5 IbJbDiEiFiAcK ubBcKlLlte5b@hTc6bUcybzbmhVcnhohWc7bAbXc8bYc[h]h^hBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihiMlNlOlPlQlRl]jSlulTlvlUlwl^jVlWl@c[c]c^c_c`cxlylzl%cAl'cBlClLiFmGmL C |gTb[lDlEl]l^lFlGl_l`l}gHl{l|l(c)c}l~l*c+cambmUb,ccm~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N NbObPbSiCcTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeHm0l1l2lleii3l4l5l6l@j[jrjdk7l8lmeIm9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfk=cgkhkne-lAeBeB CeDeikjkkklkQbDcEctjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTj#cUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j$c.l/l+j,j-j.j/j:j;j=j@lymFbwhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

516 return PER_THREAD_DEFAULT_STREAM 2ym

517 else: 

518 return LEGACY_DEFAULT_STREAM 2lbD E $ % 9 a b c d e f g h i j k l m n o p F q r s t u G H I J mlnlji/b:b3bolplql;b=b4brl?b@b[b]bsltl^b_b`b{b|b}b~bki' ac( ) * bc+ , - . / 4 ccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiBiCikclcmcncocpcqcrcsctcucvcwcxcyczc5 IbJbDiEiFiAcK ubBcKlLlte5b@hTc6bUcybzbmhVcnhohWc7bAbXc8bYc[h]h^hBb9bZc!b0c#b1c$b2c3c4c5c6c7c8c9c!cphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihiMlNlOlPlQlRl]jSlulTlvlUlwl^jVlWl@c[c]c^c_c`cxlylzl%cAl'cBlClLiFmGmL C |gTb[lDlEl]l^lFlGl_l`l}gHl{l|l(c)c}l~l*c+cambmUb,ccm~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N NbObPbSiCcTiUiViWiXiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeHm0l1l2lleii3l4l5l6l@j[jrjdk7l8lmeIm9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfk=cgkhkne-lAeBeB CeDeikjkkklkQbDcEctjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTj#cUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j$c.l/l+j,j-j.j/j:j;j=j@lymFbwhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

519  

520cdef inline bint Stream_is_default_token(Stream self) noexcept nogil: 

521 """Return True for CU_STREAM_LEGACY and CU_STREAM_PER_THREAD. 

522  

523 These tokens carry no context of their own; they refer to whatever context 

524 is current, so nothing resolved from one may be cached on the object. 

525 """ 

526 cdef uintptr_t h = <uintptr_t>as_cu(self._h_stream) 2# x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J mbGcnbobpb4 qbrb5 IbJbsbtbK w teefTcUcybzbmhVcnhffohgfhfWcifAbXcYcBbZc0c1c2c3c4c5c6c7c8c9c!cphqhrh%c'cL C U V W X Y Z 0 1 8 KbLb|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2b%b'b(b)b*b+bshthCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,bNbObPb-bDbS T uhvhuevewexeyezeAeBeB CeDe?cQb~ tjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTj#cUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j$cabbb+j;l,j-j.j/j:j;j=j.bRbA ebQ EbFbwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

527 return h == <uintptr_t>cydriver.CU_STREAM_LEGACY or h == <uintptr_t>cydriver.CU_STREAM_PER_THREAD 2# x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J mbGcnbobpb4 qbrb5 IbJbsbtbK w teefTcUcybzbmhVcnhffohgfhfWcifAbXcYcBbZc0c1c2c3c4c5c6c7c8c9c!cphqhrh%c'cL C U V W X Y Z 0 1 8 KbLb|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2b%b'b(b)b*b+bshthCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,bNbObPb-bDbS T uhvhuevewexeyezeAeBeB CeDe?cQb~ tjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTj#cUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j$cabbb+j;l,j-j.j/j:j;j=j.bRbA ebQ EbFbwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

528  

529  

530cdef inline bint Stream_is_legacy_default_token(Stream self) noexcept nogil: 

531 """Return True only for CU_STREAM_LEGACY. 

532  

533 Unlike CU_STREAM_PER_THREAD, the legacy default stream token is rejected 

534 outright (CUDA_ERROR_INVALID_VALUE) by cuMemcpyWithAttributesAsync and 

535 cuMemcpyBatchAsync; CU_STREAM_PER_THREAD is a real stream to those entry 

536 points and is accepted normally. Use this narrower check, not 

537 Stream_is_default_token, wherever that distinction matters. 

538 """ 

539 return <uintptr_t>as_cu(self._h_stream) == <uintptr_t>cydriver.CU_STREAM_LEGACY 25b@h6bybzbmhnhohwfzm7bAb:l8b[h]h^hBb9b!b#b$bAmBmCmphqhrh_h`h{h|h}h~hai6 bi7 cidieifigihi

540  

541  

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

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

544 cdef cydriver.CUcontext ctx 

545 cdef bint is_default = Stream_is_default_token(self) 2# x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J mbGcnbobpb4 qbrb5 sbtbK w te%c'cL C U V W X Y Z 0 1 8 KbLb|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2b%b'b(b)b*b+bCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,b-bDbS T uevewexeyezeAeBeB CeDe~ abbb;l.bRbA ebQ

546  

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

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

549 if self._h_context and not is_default: 2# x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J mbGcnbobpb4 qbrb5 sbtbK w te%c'cL C U V W X Y Z 0 1 8 KbLb|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2b%b'b(b)b*b+bCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,b-bDbS T uevewexeyezeAeBeB CeDe~ abbb;l.bRbA ebQ

550 h_context[0] = self._h_context 2# x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J mbGcnbobpb4 qbrb5 sbtbK w L C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+bCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,b-bDbS T B ~ abbb;l.bRbA ebQ

551 return 0 2# x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J mbGcnbobpb4 qbrb5 sbtbK w L C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+bCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,b-bDbS T B ~ abbb;l.bRbA ebQ

552  

553 h_context[0] = get_stream_context(self._h_stream) 2te%c'c|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2buevewexeyezeAeBeB CeDe

554 if not h_context[0]: 2te%c'c|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2buevewexeyezeAeBeB CeDe

555 HANDLE_RETURN(cydriver.cuStreamGetCtx(as_cu(self._h_stream), &ctx)) 2te%c'c|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2buevewexeyezeAeBeB CeDe

556 if ctx != NULL: 2te%c'c|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2buevewexeyezeAeBeB CeDe

557 with gil: 2te%c'c|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2buevewexeyezeAeBeB CeDe

558 h_context[0] = create_context_handle_ref(ctx) 2te%c'c|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2buevewexeyezeAeBeB CeDe

559  

560 if h_context[0] and not is_default: 2te%c'c|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2buevewexeyezeAeBeB CeDe

561 self._h_context = h_context[0] 

562 return 0 2te%c'c|gTb}g(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2buevewexeyezeAeBeB CeDe

563  

564  

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

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

567 cdef cydriver.CUcontext ctx 

568 cdef cydriver.CUdevice target_dev 

569 cdef ContextHandle current_context 

570 cdef bint switch_context 

571 cdef bint is_default = Stream_is_default_token(self) 2x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J K w te%c'cL C U V W X Y Z 0 1 8 KbLbTb(c)c*c+cUb,cVbWbXbYbZb0b1b2b%b'b(b)b*b+bCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,b-bDbS T uevewexeyezeAeBeB CeDe~ abbb.bRbA ebQ

572  

573 with nogil: 2x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J K w te%c'cL C U V W X Y Z 0 1 8 KbLbTb(c)c*c+cUb,cVbWbXbYbZb0b1b2b%b'b(b)b*b+bCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,b-bDbS T uevewexeyezeAeBeB CeDe~ abbb.bRbA ebQ

574 Stream_get_ctx(self, h_context) 2x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J K w te%c'cL C U V W X Y Z 0 1 8 KbLbTb(c)c*c+cUb,cVbWbXbYbZb0b1b2b%b'b(b)b*b+bCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,b-bDbS T uevewexeyezeAeBeB CeDe~ abbb.bRbA ebQ

575 if self._device_id >= 0 and not is_default: 2x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J K w te%c'cL C U V W X Y Z 0 1 8 KbLbTb(c)c*c+cUb,cVbWbXbYbZb0b1b2b%b'b(b)b*b+bCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,b-bDbS T uevewexeyezeAeBeB CeDe~ abbb.bRbA ebQ

576 device_id[0] = self._device_id 2x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J K w L C U V W X Y Z 0 1 8 KbLb%b'b(b)b*b+bCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,b-bDbS T B ~ abbb.bRbA ebQ

577 else: 

578 # Get device ID from context, switching context temporarily if needed 

579 current_context = get_current_context() 2te%c'cTb(c)c*c+cUb,cVbWbXbYbZb0b1b2buevewexeyezeAeBeB CeDeA

580 switch_context = (as_cu(current_context) != as_cu(h_context[0])) 2te%c'cTb(c)c*c+cUb,cVbWbXbYbZb0b1b2buevewexeyezeAeBeB CeDeA

581 if switch_context: 2te%c'cTb(c)c*c+cUb,cVbWbXbYbZb0b1b2buevewexeyezeAeBeB CeDeA

582 HANDLE_RETURN(cydriver.cuCtxPushCurrent(as_cu(h_context[0]))) 

583 HANDLE_RETURN(cydriver.cuCtxGetDevice(&target_dev)) 2te%c'cTb(c)c*c+cUb,cVbWbXbYbZb0b1b2buevewexeyezeAeBeB CeDeA

584 if switch_context: 2te%c'cTb(c)c*c+cUb,cVbWbXbYbZb0b1b2buevewexeyezeAeBeB CeDeA

585 HANDLE_RETURN(cydriver.cuCtxPopCurrent(&ctx)) 

586 device_id[0] = <int>target_dev 2te%c'cTb(c)c*c+cUb,cVbWbXbYbZb0b1b2buevewexeyezeAeBeB CeDeA

587 if not is_default: 2te%c'cTb(c)c*c+cUb,cVbWbXbYbZb0b1b2buevewexeyezeAeBeB CeDeA

588 self._device_id = device_id[0] 1A

589 return 0 2x D gbE y v z Hba b c d e f g h i j k l m n o p F q r s t u G H I J K w te%c'cL C U V W X Y Z 0 1 8 KbLbTb(c)c*c+cUb,cVbWbXbYbZb0b1b2b%b'b(b)b*b+bCb2 M 3 : ; = ? @ [ N ] ^ _ ` { | } R Mb,b-bDbS T uevewexeyezeAeBeB CeDe~ abbb.bRbA ebQ

590  

591  

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

593 if isinstance(obj, Stream): 2P 'fjhkhhbkfcbibjbA O lhdblfIlJlklllkbfbSb

594 Stream_check_open(<Stream>obj) 2lf

595 return as_cu((<Stream>obj)._h_stream) 2lf

596  

597 try: 2P 'fjhkhhbkfcbibjbA O lhdbIlJlklllkbfbSb

598 cuda_stream_attr = obj.__cuda_stream__ 2P 'fjhkhhbkfcbibjbA O lhdbIlJlklllkbfbSb

599 except AttributeError: 2Sb

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

601  

602 if callable(cuda_stream_attr): 2P 'fjhkhhbkfcbibjbA O lhdbIlJlklllkbfb

603 info = cuda_stream_attr() 2P 'fjhkhhbkfcbibjbA O lhdbIlJlklkbfb

604 else: 

605 info = cuda_stream_attr 2ll

606 warnings.warn( 2ll

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

608 stacklevel=3, 

609 category=DeprecationWarning, 2ll

610 ) 

611  

612 try: 2P 'fjhkhkfcbibjbA O lhdbIlJlklllkbfb

613 len_info = len(info) 2P 'fjhkhkfcbibjbA O lhdbIlJlklllkbfb

614 except TypeError as e: 2Il

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

616 if len_info != 2: 2P 'fjhkhkfcbibjbA O lhdbJlklllkbfb

617 raise RuntimeError(f"obj.__cuda_stream__ must return a sequence with 2 elements, got {len_info} elements") 2Jlll

618 if info[0] != 0: 2P 'fjhkhkfcbibjbA O lhdbklkbfb

619 raise RuntimeError( 2kl

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

621 ) 

622 return <cydriver.CUstream><uintptr_t>(info[1]) 2P 'fjhkhkfcbibjbA O lhdbkbfb

623  

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

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

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

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

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

629 from cuda.core.graph._graph_builder import GraphBuilder 2# vb.c/c:c;clbmfx D E nfy of$ pfv wbKfz % Fcxbqf9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emlmbnb5e6enl7eji/b:b3b8e9eolplql;b=b4brl?b@b[b]bsltl^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^erfsftfufvfrew KlLlte5befmk@hTcnk6bUcokybzbmhVcpknhffqkohwfgfrkhfskzmWctk7bifukAb:lXcvk8bYcwk[h]h^hBb9bZcxk!b0cyk#b1czk$b2cAk3cBkAm4cCkBm5cDkCm6cEk7cFk8cGk9cHk!cIkphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihi_e`eMlNlOlPlQlRl]j{eSl|eul}e~eTlafvlUlwl^jVlWlbfcf@c[c]c^c_c`cxlylzlJk%cAl'cBlClLiL KkC Lk|gTbDlElFlGl}gHl(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N R MfNfOfPfQfRfSfTfUfVfWfNbObPbSiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBfXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjf0l1l2lleii3l4l5l6lCfDf@j[jEfFfrjdk7l8lme9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfkYf=cgkhkne-lAeBeB CeDedfGf?cseikjkkklkQbDcEcMktjujNkvjOkwjPkxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kTj$k#c%kUj'kVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k*jal$cbl.l/l+jcl,jdl-jel.jfl/jgl:jhl;jil=jjlhbkfZfMmEbDmFbJfoepeqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

630  

631 cdef Stream stream 

632 if arg is None: 2# vb.c/c:c;clbmfx D E nfy of$ pfv wbKfz % Fcxbqf9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emlmbnb5e6enl7eji/b:b3b8e9eolplql;b=b4brl?b@b[b]bsltl^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^erfsftfufvfrew KlLlte5befmk@hTcnk6bUcokybzbmhVcpknhffqkohwfgfrkhfskzmWctk7bifukAb:lXcvk8bYcwk[h]h^hBb9bZcxk!b0cyk#b1czk$b2cAk3cBkAm4cCkBm5cDkCm6cEk7cFk8cGk9cHk!cIkphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihi_e`eMlNlOlPlQlRl]j{eSl|eul}e~eTlafvlUlwl^jVlWlbfcf@c[c]c^c_c`cxlylzlJk%cAl'cBlClLiL KkC Lk|gTbDlElFlGl}gHl(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N R MfNfOfPfQfRfSfTfUfVfWfNbObPbSiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBfXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjf0l1l2lleii3l4l5l6lCfDf@j[jEfFfrjdk7l8lme9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfkYf=cgkhkne-lAeBeB CeDedfGf?cseikjkkklkQbDcEcMktjujNkvjOkwjPkxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kTj$k#c%kUj'kVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k*jal$cbl.l/l+jcl,jdl-jel.jfl/jgl:jhl;jil=jjlhbkfZfMmEbDmFbJfoepeqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

633 raise TypeError( 2GfMm

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

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

636 ) 

637 if isinstance(arg, Stream): 2# vb.c/c:c;clbmfx D E nfy of$ pfv wbKfz % Fcxbqf9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emlmbnb5e6enl7eji/b:b3b8e9eolplql;b=b4brl?b@b[b]bsltl^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^erfsftfufvfrew KlLlte5befmk@hTcnk6bUcokybzbmhVcpknhffqkohwfgfrkhfskzmWctk7bifukAb:lXcvk8bYcwk[h]h^hBb9bZcxk!b0cyk#b1czk$b2cAk3cBkAm4cCkBm5cDkCm6cEk7cFk8cGk9cHk!cIkphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihi_e`eMlNlOlPlQlRl]j{eSl|eul}e~eTlafvlUlwl^jVlWlbfcf@c[c]c^c_c`cxlylzlJk%cAl'cBlClLiL KkC Lk|gTbDlElFlGl}gHl(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N R MfNfOfPfQfRfSfTfUfVfWfNbObPbSiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBfXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjf0l1l2lleii3l4l5l6lCfDf@j[jEfFfrjdk7l8lme9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfkYf=cgkhkne-lAeBeB CeDedfGf?cseikjkkklkQbDcEcMktjujNkvjOkwjPkxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kTj$k#c%kUj'kVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k*jal$cbl.l/l+jcl,jdl-jel.jfl/jgl:jhl;jil=jjlhbkfZfEbDmFbJfoepeqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

638 stream = <Stream>arg 2# vb.c/c:c;clbD E $ v wbKf% Fcxb9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emlmbnb5e6enl7eji/b:b3b8e9eolplql;b=b4brl?b@b[b]bsltl^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^ereKlLlte5befmk@hTcnk6bUcokybzbmhVcpknhffqkohwfgfrkhfskzmWctk7bifukAb:lXcvk8bYcwk[h]h^hBb9bZcxk!b0cyk#b1czk$b2cAk3cBkAm4cCkBm5cDkCm6cEk7cFk8cGk9cHk!cIkphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihi_e`eMlNlOlPlQlRl]j{eSl|eul}e~eTlafvlUlwl^jVlWlbfcf@c[c]c^c_c`cxlylzlJk%cAl'cBlClLiL KkC Lk|gTbDlElFlGl}gHl(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N R MfNfOfPfQfRfSfTfUfVfWfNbObPbSiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBfXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjf0l1l2lleii3l4l5l6lCfDf@j[jEfFfrjdk7l8lme9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfkYf=cgkhkne-lAeBeB CeDedfGf?cseikjkkklkQbDcEcMktjujNkvjOkwjPkxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kTj$k#c%kUj'kVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k*jal$cbl.l/l+jcl,jdl-jel.jfl/jgl:jhl;jil=jjlhbkfEbFbJfoepeqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

639 Stream_check_open(stream) 2# vb.c/c:c;clbD E $ v wbKf% Fcxb9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emlmbnb5e6enl7eji/b:b3b8e9eolplql;b=b4brl?b@b[b]bsltl^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^ereKlLlte5befmk@hTcnk6bUcokybzbmhVcpknhffqkohwfgfrkhfskzmWctk7bifukAb:lXcvk8bYcwk[h]h^hBb9bZcxk!b0cyk#b1czk$b2cAk3cBkAm4cCkBm5cDkCm6cEk7cFk8cGk9cHk!cIkphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihi_e`eMlNlOlPlQlRl]j{eSl|eul}e~eTlafvlUlwl^jVlWlbfcf@c[c]c^c_c`cxlylzlJk%cAl'cBlClLiL KkC Lk|gTbDlElFlGl}gHl(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N R MfNfOfPfQfRfSfTfUfVfWfNbObPbSiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBfXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjf0l1l2lleii3l4l5l6lCfDf@j[jEfFfrjdk7l8lme9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfkYf=cgkhkne-lAeBeB CeDedfGf?cseikjkkklkQbDcEcMktjujNkvjOkwjPkxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kTj$k#c%kUj'kVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k*jal$cbl.l/l+jcl,jdl-jel.jfl/jgl:jhl;jil=jjlhbkfEbFbJfoepeqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

640 return stream 2# vb.c/c:c;clbD E $ v wb% Fcxb9 a b c d e f g h i j k l m n o p F q r s t u G H I J EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4emlmbnb5e6enl7eji/b:b3b8e9eolplql;b=b4brl?b@b[b]bsltl^bob!e_b`b{b|b}b~bki#eHcIcJcKcLcMc' ac( ) * bc+ , - . / NcOcPcQcRcScpb4 $e%e'e(e)eccdcecfcgchcicjcliminioipiqirisitiuiviwixiyiziAiqbBiCi*e+e,e-e.ekclcmcncocpcqcrc/e:e;e=e?e@esctcucvcwcxcyczcrb5 IbJbDiEiFiAcsb[e]etbK ubBc^ereKlLlte5befmk@hTcnk6bUcokybzbmhVcpknhffqkohwfgfrkhfskzmWctk7bifukAb:lXcvk8bYcwk[h]h^hBb9bZcxk!b0cyk#b1czk$b2cAk3cBkAm4cCkBm5cDkCm6cEk7cFk8cGk9cHk!cIkphqhGiHiIirh_h`h{h|h}h~hai6 bi7 JiKi! cidieifigihi_e`eMlNlOlPlQlRl]j{eSl|eul}e~eTlafvlUlwl^jVlWlbfcf@c[c]c^c_c`cxlylzlJk%cAl'cBlClLiL KkC Lk|gTbDlElFlGl}gHl(c)c*c+cUb,c~gVbahWbbhXbchYbdhZbehfhgh0bhh1bih2bMiNiOiPiQiRishthM N R MfNfOfPfQfRfSfTfUfVfWfNbObPbSiCcTiUiT ViWiP XiYiZi0i1i2i3i4i5i6i7i8i9i!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~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqj_j`j{c|c}c~cxfyfzfAfBfXlYl{jZl|j}j~juhvhakbkadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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~daebecedeeefegeheiejeckkeXfjf0l1l2lleii3l4l5l6lCfDf@j[jEfFfrjdk7l8lme9l!lue#l$l%l'l(l)lvewexeye*l+lze,lekfkYf=cgkhkne-lAeBeB CeDedfGf?cseikjkkklkQbDcEcMktjujNkvjOkwjPkxjQkyjRkzjSkAjTkBjUkCjVkDjWkEjXkFjYkGjZkHj0kIj1kJj2kKj3kLj4kMj5kNj6kOj7kPj8kQj9kRj!kSj#kTj$k#c%kUj'kVj(kWj)kXj*kYj+kZj,k0j-k1j.k2j/k3j:k4j;k5j=k6j?k7j@k8j[k9j]k!j^k#j_k$j`k%j{k'j|k(j}k)j~k*jal$cbl.l/l+jcl,jdl-jel.jfl/jgl:jhl;jil=jjlkfEbFbJfoepeqewhxhyhzhAhBhChDhEhFhGhHhsjIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hGb?h

641 elif isinstance(arg, GraphBuilder): 2vblbmfx D E nfy of$ pfv wbz % Fcxbqf9 a b c d e f g h i j k l m n o p F q r s t u G H I J HcIcJcKcLcMc' ( ) * + , - . / NcOcPcQcRcScK ubrfsftfufvfrew 6 7 ! P hbZfEbDm

642 stream = <Stream>arg.stream 2vblbmfx D E nfy of$ pfv wbz % Fcxbqf9 a b c d e f g h i j k l m n o p F q r s t u G H I J HcIcJcKcLcMc' ( ) * + , - . / NcOcPcQcRcScK ubrfsftfufvfrew 6 7 ! ZfEb

643 Stream_check_open(stream) 2vblbmfx D E nfy of$ pfv wbz % Fcxbqf9 a b c d e f g h i j k l m n o p F q r s t u G H I J HcIcJcKcLcMc' ( ) * + , - . / NcOcPcQcRcScK ubrfsftfufvfrew 6 7 ! Eb

644 return stream 2vblbmfx D E nfy of$ pfv wbz % Fcxbqf9 a b c d e f g h i j k l m n o p F q r s t u G H I J HcIcJcKcLcMc' ( ) * + , - . / NcOcPcQcRcScK ubrfsftfufvfrew 6 7 ! Eb

645 elif allow_stream_protocol and hasattr(arg, "__cuda_stream__"): 2P hbDm

646 stream = Stream._init(arg) 2P hb

647 warnings.warn( 1P

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

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

650 "using Stream(obj) instead.", 

651 stacklevel=2, 

652 category=DeprecationWarning, 1P

653 ) 

654 return stream 1P

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