Coverage for cuda/core/graph/_graph_node.pyx: 90.62%
437 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-07-29 01:38 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-07-29 01:38 +0000
1# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2#
3# SPDX-License-Identifier: Apache-2.0
5"""GraphNode base class — factory, properties, and builder methods."""
7from __future__ import annotations
9from collections.abc import Iterable
10from typing import TYPE_CHECKING
12from libc.stddef cimport size_t
13from libc.stdint cimport uintptr_t
14from libc.string cimport memset as c_memset
16from libcpp.vector cimport vector
18from cuda.bindings cimport cydriver
20from cuda.core._event cimport Event
21from cuda.core._kernel_arg_handler cimport ParamHolder
22from cuda.core._launch_config cimport LaunchConfig
23from cuda.core._memory._buffer cimport Buffer
24from cuda.core._module cimport Kernel
25from cuda.core.graph._graph_definition cimport GraphCondition, GraphDefinition
26from cuda.core.graph._subclasses cimport (
27 AllocNode,
28 ChildGraphNode,
29 ConditionalNode,
30 EmptyNode,
31 EventRecordNode,
32 EventWaitNode,
33 FreeNode,
34 HostCallbackNode,
35 IfElseNode,
36 IfNode,
37 KernelNode,
38 MemcpyNode,
39 MemsetNode,
40 SwitchNode,
41 WhileNode,
42)
43from cuda.core._resource_handles cimport (
44 GraphHandle,
45 GraphNodeHandle,
46 OpaqueHandle,
47 PreparedAttachment,
48 as_cu,
49 as_intptr,
50 as_py,
51 create_child_graph_handle,
52 create_graph_node_handle,
53 graph_clone_attachments,
54 graph_commit_attachment,
55 graph_node_get_graph,
56 graph_prepare_attachment,
57 invalidate_child_graph_state,
58 invalidate_graph_node,
59 make_opaque_py,
60)
61from cuda.core._utils.cuda_utils cimport HANDLE_RETURN, _parse_fill_value
63from cuda.core.graph._host_callback cimport (
64 _resolve_host_callback,
65)
67import ctypes as ct
68import weakref
70from cuda.core.graph._adjacency_set_proxy import AdjacencySetProxy
71from cuda.core._utils.validators import check_str_enum
72from cuda.core._utils.cuda_utils import driver
73from cuda.core.typing import GraphMemoryType
75if TYPE_CHECKING:
76 from cuda.core._device import Device
78__all__ = ['GraphNode']
80# See _cpp/REGISTRY_DESIGN.md (Level 2: Resource Handle -> Python Object)
81_node_registry: weakref.WeakValueDictionary[int, GraphNode] = weakref.WeakValueDictionary()
84cdef inline GraphNode _registered(GraphNode n):
85 return _node_registry.setdefault(<uintptr_t>n._h_node.get(), n) 2Ie,h^kJe_k,i-i-e^dUiViWi-h:dXiNe.hYilfHk.imfnfofpf_d/hIkJkGiHiIiJiKic d e f ObPbQbRbZi0i1i{c|c}cchLi:h%f`k`dOePeQeqfKkLkdhehIc; JcKcLcMcfhghlj;hmj'f{dRenjSeojTepjrfMkNkhhihqjNcfj= rjOcsjPctjQcujRcjhkh=h;d2iUe?h3i@h=d4iVe[h5i]h(f|dWeXeYesfOkPklhmhSc? TcUcVcWcnhohvj^hwj)f}dxjZeyj0ezj1eAjtfQkRkphqhBjXcgj@ CjYcDjZcEj0cFj1crhshGj_hHj*f~dIj2eJj3eKj4eLjufSkTkthuhMj2cNj[ Oj3cPj4cQj5cRj6cvhwh`h+fae5e6e7evfUkVkxhyh7c] 8c9c!c#czhAh{h?d6i8e|h7i}h@d8i9e~h9i=iai[d!i!ebi#icjdd;fMi$i#eWkBhChDhEhJbKbLbMb?i/i:iXkYk*c[c%i-c.eSbTbUbVbXbYbZb0b5k$e6kcidi%e7k/beifiNiedOiPiGdHdIdJdfd]d2f3f,f:c$c;i]cZk'e;c0k=c3b2b1b.c8k`i[iQilb9k+cDc!k'i(iFh1k4f^cgd{i|iKd]iwfxfZfH 4byfzfgiLdbe-j.j/eUj=f?fShW bc@f[fzb(e)e:eKe_b`b%cX cc{b|bhiMdce/j:j;eVj]f^fThY dc_f`f}b~b=bfbgbhbibiiNdde;j=j=eWj{f|fUhZ ec}f~fjiOdee?j@j?eXjagbgVh0 fccgdgkiPdfe[j]j@eYjegfgWh1 gcgghggeT EcFc,chcpbqbBb2 xbrbsbliQdhe^j_j[eZjigjgXh3 ickglgmiYhRdSdTdUdZhVdWdXdYd: ?c@c/cFbGbB NbHbIbniZdie`j{j]e0jmgng0h4 jcogpgzdAdBdCd5f6f7f8f9foi0dje|j}j^e1jqgrg1h5 kcsgtg1dLeMeWbke?b@bq V [b]bpi2dle~jak_e2jugvg2h6 lcwgxgb z A y l m n o u CbDbAbL M r N O qi3dmebkck`e3jygzg3h7 mcAgBgri4dnedkek{e4jCgDg4h8 ncEgFgsi5doefkgk|e5jGgHg5h9 ocIgJg!fti6dpehkik}e6jKgLg6h! pcMgNgjb7d8dqeDd$b%b^bP +b'b(bui9drejkkk~e7jOgPg7h# qcQgRg)b*b5b{ | } ~ vi!dselkmkaf8jSgTg8h$ rcUgVgwi#dtenkokbf9jWgXg9h% scYgZgxi$duepkqkcf!j0g1g!h' tc2g3gudG :b;bac,babbbmbQ ebcbdbyi%dverkskdf#j4g5g#h( uc6g7g8g-fhdidjdkd.fldmdndodU GcHcvctbubx ybvbwbzi'dwetkukef$j9g!g$h) wc#g$g~cadbdcdAfBfCfDfEfAi(dxevkwkff%j%g'g%h* xc(g)gpdEdFdEbvd6b7bk K 8b9bBi)dyexkykgf'j*g+g'h+ yc,g-ga v w t g h i j s nbobkbC D p E F Ci*dzezkAkhf(j.g/g(h, zc:g;g=gqdwdhjijAedjRfSf/fR -bTfUfDi+dBeBkCkif)j?g@g)h- Ac[g]gFf)iCe*e#k$kGf2kGhHhRi^ 'cIhJh^grdxdjjkjDeejVfWf:fS .bXfYfEi,dEeDkEkjf*j_g`g*h. Bc{g|gFi-dFeFkGkkf+j}g~g+h/ Ccahbh#f_csd}i~i.d^iHfIf0fI !bJfKf$f`ctdajbj/d_iLfMf1fJ #bNfOf*iGe+e%k'kPf3kKhLhSi_ (cMhNh+iHe,e(k)kQf4kOhPhTi` )cQhRh
88cdef class GraphNode:
89 """A node in a graph definition.
91 Nodes are created by calling builder methods on GraphDefinition (for
92 entry-point nodes with no dependencies) or on other Nodes (for
93 nodes that depend on a predecessor).
94 """
96 @staticmethod
97 cdef GraphNode _create(GraphHandle h_graph, cydriver.CUgraphNode node):
98 """Factory: dispatch to the right subclass based on node type."""
99 return GN_create(h_graph, node) 2Ie^kJe_k^dhliljlkl.i{c|c}c`kljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kllmlnlolplqlvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRjrlsltlulvlwl}k~kalblcldlelflcjddJbKbLbMb?i*c-cSbTbUbVbXbYbZb0bed:c$c]c'e;c=c3b2b1b.c`i[iQilb+cDc
101 def __repr__(self) -> str:
102 cdef cydriver.CUgraphNode node = as_cu(self._h_node) 2Zl
103 if node == NULL: 2Zl
104 return "<GraphNode entry>" 2Zl
105 return f"<GraphNode handle=0x{<uintptr_t>node:x}>"
107 def __eq__(self, other: object) -> bool:
108 if not isinstance(other, GraphNode): 2^dljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRj4f^cgd{i|iKd]iwfxfZfH 4bxlyfzfjb7d8dqeDd$b%b^bP +b'b(bui9drejkkk~e7jOgPg7h# qc4lQgRg)b*b5b{ | } ~ vi!dselkmkaf8jSgTg8h$ rc5lUgVgwi#dtenkokbf9jWgXg9h% sc6lYgZgxi$duepkqkcf!j0g1g!h' tc7l2g3gudG :b;bac,babbbmbQ ebcbdbyi%dverkskdf#j4g5g#h( uc8l6g7g8g-fhdidjdkd.fldmdndodU GcHcvctbubx ybvbwbzi'dwetkukef$j9g!g$h) wc9l#g$g~cadbdcdAfBfCfDfEfAi(dxevkwkff%j%g'g%h* xc!l(g)gpdEdFdEbvd6b7bk K 8b9bBi)dyexkykgf'j*g+g'h+ yc#l,g-ga v w t g h i j s nbobkbC D p E F Ci*dzezkAkhf(j.g/g(h, zc$l:g;g=gqdwdhjijAedjRfSf/fR -bTfUfDi+dBeBkCkif)j?g@g)h- Ac%l[g]gFf^grdxdjjkjDeejVfWf:fS .bDlXfYf#f_csd}i~i.d^iHfIf0fI !bylJfKf$f`ctdajbj/d_iLfMf1fJ #bzlNfOf
109 return NotImplemented 24f^cgd{i|iKd]iwfxfZfH 4bxlyfzfui9drejkkk~e7jOgPg7h# qc4lQgRgvi!dselkmkaf8jSgTg8h$ rc5lUgVgwi#dtenkokbf9jWgXg9h% sc6lYgZgxi$duepkqkcf!j0g1g!h' tc7l2g3gyi%dverkskdf#j4g5g#h( uc8l6g7gzi'dwetkukef$j9g!g$h) wc9l#g$gAi(dxevkwkff%j%g'g%h* xc!l(g)gBi)dyexkykgf'j*g+g'h+ yc#l,g-gCi*dzezkAkhf(j.g/g(h, zc$l:g;gDi+dBeBkCkif)j?g@g)h- Ac%l[g]g
110 cdef GraphNode o = <GraphNode>other 2^dljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRj4f^cgd{i|iKd]iwfxfZfH 4bxlyfzfjb7d8dqeDd$b%b^bP +b'b(b)b*b5b{ | } ~ udG :b;bac,babbbmbQ ebcbdb8g-fhdidjdkd.fldmdndodU GcHcvctbubx ybvbwb~cadbdcdAfBfCfDfEfpdEdFdEbvd6b7bk K 8b9ba v w t g h i j s nbobkbC D p E F =gqdwdhjijAedjRfSf/fR -bTfUfFf^grdxdjjkjDeejVfWf:fS .bDlXfYf#f_csd}i~i.d^iHfIf0fI !bylJfKf$f`ctdajbj/d_iLfMf1fJ #bzlNfOf
111 cdef GraphHandle self_graph = graph_node_get_graph(self._h_node) 2^dljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRj4f^cgd{i|iKd]iwfxfZfH 4bxlyfzfjb7d8dqeDd$b%b^bP +b'b(b)b*b5b{ | } ~ udG :b;bac,babbbmbQ ebcbdb8g-fhdidjdkd.fldmdndodU GcHcvctbubx ybvbwb~cadbdcdAfBfCfDfEfpdEdFdEbvd6b7bk K 8b9ba v w t g h i j s nbobkbC D p E F =gqdwdhjijAedjRfSf/fR -bTfUfFf^grdxdjjkjDeejVfWf:fS .bDlXfYf#f_csd}i~i.d^iHfIf0fI !bylJfKf$f`ctdajbj/d_iLfMf1fJ #bzlNfOf
112 cdef GraphHandle other_graph = graph_node_get_graph(o._h_node) 2^dljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRj4f^cgd{i|iKd]iwfxfZfH 4bxlyfzfjb7d8dqeDd$b%b^bP +b'b(b)b*b5b{ | } ~ udG :b;bac,babbbmbQ ebcbdb8g-fhdidjdkd.fldmdndodU GcHcvctbubx ybvbwb~cadbdcdAfBfCfDfEfpdEdFdEbvd6b7bk K 8b9ba v w t g h i j s nbobkbC D p E F =gqdwdhjijAedjRfSf/fR -bTfUfFf^grdxdjjkjDeejVfWf:fS .bDlXfYf#f_csd}i~i.d^iHfIf0fI !bylJfKf$f`ctdajbj/d_iLfMf1fJ #bzlNfOf
113 return (as_intptr(self._h_node) == as_intptr(o._h_node) 2^dljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRj4f^cgd{i|iKd]iwfxfZfH 4bxlyfzfjb7d8dqeDd$b%b^bP +b'b(b)b*b5b{ | } ~ udG :b;bac,babbbmbQ ebcbdb8g-fhdidjdkd.fldmdndodU GcHcvctbubx ybvbwb~cadbdcdAfBfCfDfEfpdEdFdEbvd6b7bk K 8b9ba v w t g h i j s nbobkbC D p E F =gqdwdhjijAedjRfSf/fR -bTfUfFf^grdxdjjkjDeejVfWf:fS .bDlXfYf#f_csd}i~i.d^iHfIf0fI !bylJfKf$f`ctdajbj/d_iLfMf1fJ #bzlNfOf
114 and as_intptr(self_graph) == as_intptr(other_graph)) 2^dljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRj4f^cgd{i|iKd]iwfxfZfH 4bxlyfzfjb7d8dqeDd$b%b^bP +b'b(b)b*b5b{ | } ~ udG :b;bac,babbbmbQ ebcbdb8g-fhdidjdkd.fldmdndodU GcHcvctbubx ybvbwb~cadbdcdAfBfCfDfEfpdEdFdEbvd6b7bk K 8b9ba v w t g h i j s nbobkbC D p E F =gqdwdhjijAedjRfSf/fR -bTfUfFf^grdxdjjkjDeejVfWf:fS .bDlXfYf#f_csd}i~i.d^iHfIf0fI !bylJfKf$f`ctdajbj/d_iLfMf1fJ #bzlNfOf
116 def __hash__(self) -> int:
117 cdef GraphHandle g = graph_node_get_graph(self._h_node) 2Ie^kJe_k^dhlil'ljlkl(l.i{c|c}c`kljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kllmlnlolplqlvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]krlsltlulvlwl}k~k0lalbl1lcldl2lelfl3lcjddJbKbLbMb?i*c-cSbTbUbVbXbYbZb0b:c$c]c'e;c=c3b2b1b.c`i[iQilb+cDcgiLdbe-j.j/eUj=f?fShW bc)l@f[fzb(e)e:eKe_b`b%cX cc{b|bhiMdce/j:j;eVj]f^fThY dc*l_f`f}b~b=bfbgbhbibiiNdde;j=j=eWj{f|fUhZ ec+l}f~fjiOdee?j@j?eXjagbgVh0 fc,lcgdgkiPdfe[j]j@eYjegfgWh1 gc-lgghggeT EcFc,chcpbqbBb2 xbrbsbliQdhe^j_j[eZjigjgXh3 ic.lkglgmiYhRdSdTdUdZhVdWdXdYd: ?c@c/cFbGbB NbHbIbniZdie`j{j]e0jmgng0h4 jc/logpgzdAdBdCd5f6f7f8f9foi0dje|j}j^e1jqgrg1h5 kc:lsgtg1dLeMeWbke?b@bq V [b]bpi2dle~jak_e2jugvg2h6 lc;lwgxgb z A y l m n o u CbDbAbL M r N O qi3dmebkck`e3jygzg3h7 mc=lAgBgri4dnedkek{e4jCgDg4h8 ncEgFgsi5doefkgk|e5jGgHg5h9 oc?lIgJg!fti6dpehkik}e6jKgLg6h! pc@lMgNgEi,dEeDkEkjf*j_g`g*h. Bc[l{g|gFi-dFeFkGkkf+j}g~g+h/ Cc]lahbh#f_csd}i~i.d^iHfIf0fI !bylJfKf$f`ctdajbj/d_iLfMf1fJ #bzlNfOf
118 return hash((as_intptr(self._h_node), as_intptr(g))) 2Ie^kJe_k^dhlil'ljlkl(l.i{c|c}c`kljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kllmlnlolplqlvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]krlsltlulvlwl}k~k0lalbl1lcldl2lelfl3lcjddJbKbLbMb?i*c-cSbTbUbVbXbYbZb0b:c$c]c'e;c=c3b2b1b.c`i[iQilb+cDcgiLdbe-j.j/eUj=f?fShW bc)l@f[fzb(e)e:eKe_b`b%cX cc{b|bhiMdce/j:j;eVj]f^fThY dc*l_f`f}b~b=bfbgbhbibiiNdde;j=j=eWj{f|fUhZ ec+l}f~fjiOdee?j@j?eXjagbgVh0 fc,lcgdgkiPdfe[j]j@eYjegfgWh1 gc-lgghggeT EcFc,chcpbqbBb2 xbrbsbliQdhe^j_j[eZjigjgXh3 ic.lkglgmiYhRdSdTdUdZhVdWdXdYd: ?c@c/cFbGbB NbHbIbniZdie`j{j]e0jmgng0h4 jc/logpgzdAdBdCd5f6f7f8f9foi0dje|j}j^e1jqgrg1h5 kc:lsgtg1dLeMeWbke?b@bq V [b]bpi2dle~jak_e2jugvg2h6 lc;lwgxgb z A y l m n o u CbDbAbL M r N O qi3dmebkck`e3jygzg3h7 mc=lAgBgri4dnedkek{e4jCgDg4h8 ncEgFgsi5doefkgk|e5jGgHg5h9 oc?lIgJg!fti6dpehkik}e6jKgLg6h! pc@lMgNgEi,dEeDkEkjf*j_g`g*h. Bc[l{g|gFi-dFeFkGkkf+j}g~g+h/ Cc]lahbh#f_csd}i~i.d^iHfIf0fI !bylJfKf$f`ctdajbj/d_iLfMf1fJ #bzlNfOf
120 @property
121 def type(self) -> driver.CUgraphNodeType | None:
122 """Return the CUDA graph node type.
124 Returns
125 -------
126 CUgraphNodeType or None
127 The node type enum value, or None for the entry node.
128 """
129 cdef cydriver.CUgraphNode node = as_cu(self._h_node) 2ElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXl+c
130 if node == NULL: 2ElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXl+c
131 return None 2El+c
132 cdef cydriver.CUgraphNodeType node_type
133 with nogil: 2ydFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXl
134 HANDLE_RETURN(cydriver.cuGraphNodeGetType(node, &node_type)) 2FlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXl
135 return driver.CUgraphNodeType(<int>node_type) 2FlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXl
137 @property
138 def graph(self) -> GraphDefinition:
139 """Return the GraphDefinition this node belongs to."""
140 return GraphDefinition._from_handle(graph_node_get_graph(self._h_node)) 2^l_l`l{l|l}l
142 @property
143 def handle(self) -> driver.CUgraphNode:
144 """Return the underlying driver CUgraphNode handle.
146 Returns None for the entry node.
147 """
148 return as_py(self._h_node) 2+c4f^cgd{i|iKd]iwfxfZfH 4bxlyfzf
150 @property
151 def is_valid(self) -> bool:
152 """Whether this node is valid (not destroyed).
154 Returns ``False`` after :meth:`destroy` has been called.
155 """
156 return as_intptr(self._h_node) != 0 2-cSbTbUbVb+cDc
158 def destroy(self) -> None:
159 """Destroy this node and remove all its edges from the parent graph.
161 After this call, :attr:`is_valid` returns ``False`` and the node
162 cannot be re-added to any graph. Safe to call on an
163 already-destroyed node (no-op).
164 """
165 cdef cydriver.CUgraphNode node = as_cu(self._h_node) 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+cDc
166 cdef PreparedAttachment prepared
167 if node == NULL: 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+cDc
168 return 2+c
170 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+cDc
171 # Allocate the cleanup transaction before asking CUDA to destroy the
172 # node. A failed CUDA call leaves metadata and wrappers unchanged.
173 HANDLE_RETURN(graph_prepare_attachment( 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+cDc
174 h_graph, OpaqueHandle(), OpaqueHandle(), &prepared))
175 with nogil: 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+cDc
176 HANDLE_RETURN(cydriver.cuGraphDestroyNode(node)) 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+cDc
178 # Publish attachment removal before invalidating graph and node aliases.
179 cdef cydriver.CUresult cleanup_status = graph_commit_attachment(prepared, node) 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+c
180 invalidate_child_graph_state(h_graph, node) 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+c
181 _node_registry.pop(<uintptr_t>self._h_node.get(), None) 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+c
182 invalidate_graph_node(self._h_node) 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+c
183 HANDLE_RETURN(cleanup_status) 2=i?i/i:i[c%i-c.eSbTbUbVbXbYbZb0b:c;i]c;c3b2b1b+c
185 @property
186 def pred(self) -> AdjacencySetProxy:
187 """A mutable set-like view of this node's predecessors."""
188 return AdjacencySetProxy(self, False) 2-elfEl.i{c|c}cchGjHj~lIjJjKjLjambmcmdmMjNjOjPjQjRjemfm}k~k0lalbl1ldded[iQilb+c
190 @pred.setter
191 def pred(self, value: Iterable[GraphNode]) -> None:
192 p = AdjacencySetProxy(self, False) 21bQi
193 p.clear() 21bQi
194 p.update(value) 21bQi
196 @property
197 def succ(self) -> AdjacencySetProxy:
198 """A mutable set-like view of this node's successors."""
199 return AdjacencySetProxy(self, True) 2El.iGjHjIjJjKjLjMjNjOjPjQjRjcldl2lelfl3l2b.c8k`i[iQilb9k+c!k
201 @succ.setter
202 def succ(self, value: Iterable[GraphNode]) -> None:
203 s = AdjacencySetProxy(self, True) 2.iQi
204 s.clear() 2.iQi
205 s.update(value) 2.iQi
207 def launch(self, config: LaunchConfig, kernel: Kernel, *args) -> KernelNode:
208 """Add a kernel launch node depending on this node.
210 .. warning::
212 Use caution when a retained kernel argument directly or indirectly
213 owns a graph. Any reference cycle involving the argument and a
214 graph that retains it cannot be broken by Python's cyclic garbage
215 collector. Use a weak reference to break such cycles.
217 Parameters
218 ----------
219 config : LaunchConfig
220 Launch configuration (grid, block, shared memory, etc.)
221 kernel : Kernel
222 The kernel to launch.
223 *args
224 Kernel arguments.
226 Returns
227 -------
228 KernelNode
229 A new KernelNode representing the kernel launch.
230 """
231 return GN_launch(self, config, <Kernel>kernel, ParamHolder(args)) 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
233 def join(self, *nodes: GraphNode) -> EmptyNode:
234 """Create an empty node that depends on this node and all given nodes.
236 This is used to synchronize multiple branches of execution.
238 Parameters
239 ----------
240 *nodes : GraphNode
241 Additional nodes to depend on.
243 Returns
244 -------
245 EmptyNode
246 A new EmptyNode that depends on all input nodes.
247 """
248 return GN_join(self, nodes) 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
250 def allocate(self, size_t size, *, device: Device | int | None = None,
251 memory_type: GraphMemoryType = GraphMemoryType.DEVICE,
252 peer_access: list[Device | int] | None = None) -> AllocNode:
253 """Add a memory allocation node depending on this node.
255 Parameters
256 ----------
257 size : int
258 Number of bytes to allocate.
259 device : int or Device, optional
260 The device on which to allocate memory. If None (default),
261 uses the current CUDA context's device.
262 memory_type : GraphMemoryType or str, optional
263 Type of memory to allocate. One of:
265 - ``GraphMemoryType.DEVICE`` (default): Pinned device memory,
266 optimal for GPU kernels.
267 - ``GraphMemoryType.HOST``: Pinned host memory, accessible from
268 both host and device. Useful for graphs containing host
269 callback nodes. Note: may not be supported on all
270 systems/drivers.
271 - ``GraphMemoryType.MANAGED``: Managed/unified memory that
272 automatically migrates between host and device. Useful for
273 mixed host/device access patterns.
275 peer_access : list of int or Device, optional
276 List of devices that should have read-write access to the
277 allocated memory. If None (default), only the allocating
278 device has access.
280 Returns
281 -------
282 AllocNode
283 A new AllocNode representing the allocation. Access the allocated
284 device pointer via the dptr property.
286 Notes
287 -----
288 IPC (inter-process communication) is not supported for graph
289 memory allocation nodes per CUDA documentation.
290 """
291 return GN_alloc(self, size, device, memory_type, peer_access) 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
293 def deallocate(self, dptr: int) -> FreeNode:
294 """Add a memory free node depending on this node.
296 Parameters
297 ----------
298 dptr : int
299 Device pointer to free (typically from AllocNode.dptr).
301 Returns
302 -------
303 FreeNode
304 A new FreeNode representing the free operation.
305 """
306 return GN_free(self, <cydriver.CUdeviceptr>dptr) 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfglKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
308 def memset(
309 self,
310 dst: Buffer | int,
311 value,
312 size_t width,
313 size_t height=1,
314 size_t pitch=0,
315 *,
316 dst_owner=None,
317 ) -> MemsetNode:
318 """Add a memset node depending on this node.
320 .. warning::
322 Use caution when a retained operand owner directly or indirectly
323 owns a graph. Any reference cycle involving the owner and a graph
324 that retains it cannot be broken by Python's cyclic garbage
325 collector. Use a weak reference to break such cycles.
327 Parameters
328 ----------
329 dst : Buffer or int
330 Destination. When ``dst`` is a :class:`Buffer`, the underlying
331 allocation is retained for the graph's lifetime. A raw pointer
332 (``int``) is used as-is; the caller must keep the underlying memory
333 alive, or supply ``dst_owner`` to have the graph retain it.
334 value : int or buffer-protocol object
335 Fill value. int for 1-byte fill (range [0, 256)),
336 or buffer-protocol object of 1, 2, or 4 bytes.
337 width : int
338 Width of the row in elements.
339 height : int, optional
340 Number of rows (default 1).
341 pitch : int, optional
342 Pitch of destination in bytes (default 0, unused if height is 1).
343 dst_owner : object, optional
344 Object retained for the graph's lifetime when ``dst`` is a raw
345 pointer. A :class:`Buffer` owner retains its underlying allocation,
346 not the wrapper. Must not be passed when ``dst`` is a :class:`Buffer`.
348 Returns
349 -------
350 MemsetNode
351 A new MemsetNode representing the memset operation.
353 Raises
354 ------
355 ValueError
356 If ``dst_owner`` is given together with a :class:`Buffer` ``dst``.
357 """
358 cdef cydriver.CUdeviceptr c_dst
359 cdef unsigned int val
360 cdef unsigned int elem_size
361 cdef OpaqueHandle dst_attachment_owner = _resolve_memcpy_operand( 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c;f2f3fAlCl,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
362 dst, dst_owner, "dst", &c_dst)
363 val, elem_size = _parse_fill_value(value) 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c;f2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
364 return GN_memset( 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
365 self, c_dst, dst_attachment_owner,
366 val, elem_size, width, height, pitch) 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
368 def memcpy(
369 self,
370 dst: Buffer | int,
371 src: Buffer | int,
372 size_t size,
373 *,
374 dst_owner=None,
375 src_owner=None,
376 ) -> MemcpyNode:
377 """Add a memcpy node depending on this node.
379 Copies ``size`` bytes from ``src`` to ``dst``. Memory types are
380 auto-detected via the driver, so both device and pinned host
381 pointers are supported.
383 .. warning::
385 Use caution when a retained operand owner directly or indirectly
386 owns a graph. Any reference cycle involving the owner and a graph
387 that retains it cannot be broken by Python's cyclic garbage
388 collector. Use a weak reference to break such cycles.
390 Parameters
391 ----------
392 dst : Buffer or int
393 Destination (device or pinned host). When a :class:`Buffer` is given,
394 the underlying allocation is retained for the graph's lifetime. A raw
395 pointer (``int``) is used as-is; the caller must keep the underlying
396 memory alive, or supply ``dst_owner`` to have the graph retain it.
397 src : Buffer or int
398 Source (device or pinned host). Same retention rules as ``dst``;
399 use ``src_owner`` for a raw pointer.
400 size : int
401 Number of bytes to copy.
402 dst_owner : object, optional
403 Object retained for the graph's lifetime when ``dst`` is a raw
404 pointer. A :class:`Buffer` owner retains its underlying allocation.
405 Must not be passed when ``dst`` is a :class:`Buffer`.
406 src_owner : object, optional
407 Object retained for the graph's lifetime when ``src`` is a raw
408 pointer. A :class:`Buffer` owner retains its underlying allocation.
409 Must not be passed when ``src`` is a :class:`Buffer`.
411 Returns
412 -------
413 MemcpyNode
414 A new MemcpyNode representing the copy operation.
416 Raises
417 ------
418 ValueError
419 If ``dst_owner`` or ``src_owner`` is given together with a
420 :class:`Buffer` ``dst`` or ``src`` respectively.
421 """
422 cdef cydriver.CUdeviceptr c_dst
423 cdef cydriver.CUdeviceptr c_src
424 cdef OpaqueHandle dst_attachment_owner = _resolve_memcpy_operand( 2c d e f ; = ? @ [ ] #e[c/bGdYl{kHdIdJd|kfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
425 dst, dst_owner, "dst", &c_dst)
426 cdef OpaqueHandle src_attachment_owner = _resolve_memcpy_operand( 2c d e f ; = ? @ [ ] #e[c/bGd{kHdIdJd|kfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
427 src, src_owner, "src", &c_src)
428 return GN_memcpy( 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
429 self, c_dst, dst_attachment_owner,
430 c_src, src_attachment_owner, size) 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
432 def embed(self, child: GraphDefinition) -> ChildGraphNode:
433 """Add a child graph node depending on this node.
435 Embeds a clone of the given graph definition as a sub-graph node.
436 The child graph must not contain allocation, free, or conditional
437 nodes.
439 Parameters
440 ----------
441 child : GraphDefinition
442 The graph definition to embed (will be cloned).
444 Returns
445 -------
446 ChildGraphNode
447 A new ChildGraphNode representing the embedded sub-graph.
448 """
449 return GN_embed(self, <GraphDefinition>child) 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
451 def record(self, event: Event) -> EventRecordNode:
452 """Add an event record node depending on this node.
454 Parameters
455 ----------
456 event : Event
457 The event to record.
459 Returns
460 -------
461 EventRecordNode
462 A new EventRecordNode representing the event record operation.
463 """
464 return GN_record_event(self, <Event>event) 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
466 def wait(self, event: Event) -> EventWaitNode:
467 """Add an event wait node depending on this node.
469 Parameters
470 ----------
471 event : Event
472 The event to wait for.
474 Returns
475 -------
476 EventWaitNode
477 A new EventWaitNode representing the event wait operation.
478 """
479 return GN_wait_event(self, <Event>event) 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
481 def callback(self, fn, *, user_data=None) -> object:
482 """Add a host callback node depending on this node.
484 The callback runs on the host CPU when the graph reaches this node.
485 Two modes are supported:
487 - **Python callable**: Pass any callable. The GIL is acquired
488 automatically. The callable must take no arguments; use closures
489 or ``functools.partial`` to bind state.
490 - **ctypes function pointer**: Pass a ``ctypes.CFUNCTYPE`` instance.
491 The function receives a single ``void*`` argument (the
492 ``user_data``). The caller must keep the ctypes wrapper alive
493 for the lifetime of the graph.
495 .. warning::
497 Callbacks must not call CUDA API functions. Doing so may
498 deadlock or corrupt driver state.
500 Use caution when a Python callback retains an object that owns a
501 graph. Any reference cycle involving the callback and a graph that
502 retains it cannot be broken by Python's cyclic garbage collector.
503 Use a weak reference to break such cycles.
505 Parameters
506 ----------
507 fn : callable or ctypes function pointer
508 The callback function.
509 user_data : int or bytes-like, optional
510 Only for ctypes function pointers. If ``int``, passed as a raw
511 pointer (caller manages lifetime). If bytes-like, the data is
512 copied and its lifetime is tied to the graph.
514 Returns
515 -------
516 HostCallbackNode
517 A new HostCallbackNode representing the callback.
518 """
519 return GN_callback(self, fn, user_data) 2HkBlIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
521 def if_then(self, condition: GraphCondition) -> IfNode:
522 """Add an if-conditional node depending on this node.
524 The body graph executes only when the condition evaluates to
525 a non-zero value at runtime.
527 Parameters
528 ----------
529 condition : GraphCondition
530 GraphCondition from :meth:`GraphDefinition.create_condition`.
532 Returns
533 -------
534 IfNode
535 A new IfNode with one branch accessible via ``.then``.
536 """
537 return _make_conditional_node( 2^dehihmhqhuhyhSjBhJbSbXbxf?f`b^fgb|fbgfgqbjgSdWdGbngAd7f8f9frg@bvgm M zgDgHgLg%bPg| TgXg1gbb5gidmdub!gadCfDfEf'g7b+gh D /gSf@gHhWf`g~gIfMfLhPh
538 self, condition,
539 cydriver.CU_GRAPH_COND_TYPE_IF, 1, IfNode) 2^dehihmhqhuhyhSjBhJbSbXbxf?f`b^fgb|fbgfgqbjgSdWdGbngAd7f8f9frg@bvgm M zgDgHgLg%bPg| TgXg1gbb5gidmdub!gadCfDfEf'g7b+gh D /gSf@gHhWf`g~gIfMfLhPh
541 def if_else(self, condition: GraphCondition) -> IfElseNode:
542 """Add an if-else conditional node depending on this node.
544 Two body graphs: the first executes when the condition is
545 non-zero, the second when it is zero.
547 Parameters
548 ----------
549 condition : GraphCondition
550 GraphCondition from :meth:`GraphDefinition.create_condition`.
552 Returns
553 -------
554 IfElseNode
555 A new IfElseNode with branches accessible via
556 ``.then`` and ``.else_``.
557 """
558 return _make_conditional_node( 2dhhhlhphthxhChKbTbYbwf=f_b]ffb{fagegpbigRdVdFbmgzd5f6f7fqg?bugl L ygCgGgKg$bOg{ SgWg0gab4ghdldtb9g~cAfBfCf%g6b*gg C .gRf?gGhVf_g}gHfLfKhOh
559 self, condition,
560 cydriver.CU_GRAPH_COND_TYPE_IF, 2, IfElseNode) 2dhhhlhphthxhChKbTbYbwf=f_b]ffb{fagegpbigRdVdFbmgzd5f6f7fqg?bugl L ygCgGgKg$bOg{ SgWg0gab4ghdldtb9g~cAfBfCf%g6b*gg C .gRf?gGhVf_g}gHfLfKhOh
562 def while_loop(self, condition: GraphCondition) -> WhileNode:
563 """Add a while-loop conditional node depending on this node.
565 The body graph executes repeatedly while the condition
566 evaluates to a non-zero value.
568 Parameters
569 ----------
570 condition : GraphCondition
571 GraphCondition from :meth:`GraphDefinition.create_condition`.
573 Returns
574 -------
575 WhileNode
576 A new WhileNode with body accessible via ``.body``.
577 """
578 return _make_conditional_node( 2ghkhohshwhAhEhMbVb0b'ezf[f|b`fib~fdghgsblgUdYdIbpgCd6f9ftg]bxgo O BgFgJg!fNg(bRg~ VgZg3gdb7gkdodwb$gcdBfEf)g9b-gj F ;gUf]gFfJhYf|gbhKfOfNhRh
579 self, condition,
580 cydriver.CU_GRAPH_COND_TYPE_WHILE, 1, WhileNode) 2ghkhohshwhAhEhMbVb0b'ezf[f|b`fib~fdghgsblgUdYdIbpgCd6f9ftg]bxgo O BgFgJg!fNg(bRg~ VgZg3gdb7gkdodwb$gcdBfEf)g9b-gj F ;gUf]gFfJhYf|gbhKfOfNhRh
582 def switch(self, condition: GraphCondition, unsigned int count) -> SwitchNode:
583 """Add a switch conditional node depending on this node.
585 The condition value selects which branch to execute. If the
586 value is out of range, no branch executes.
588 Parameters
589 ----------
590 condition : GraphCondition
591 GraphCondition from :meth:`GraphDefinition.create_condition`.
592 count : int
593 Number of switch cases (branches).
595 Returns
596 -------
597 SwitchNode
598 A new SwitchNode with branches accessible via ``.branches``.
599 """
600 return _make_conditional_node( 2fhjhnhrhvhzhTjDhLbUbZbyf@f{b_fhb}fcgggrbkgTdXdHbogBd5f8fsg[bwgn N AgEgIg!fMg'bQg} UgYg2gcb6gjdndvb#gbdAfDf(g8b,gi E :gTf[gFfIhXf{gahJfNfMhQh
601 self, condition,
602 cydriver.CU_GRAPH_COND_TYPE_SWITCH, count, SwitchNode) 2fhjhnhrhvhzhTjDhLbUbZbyf@f{b_fhb}fcgggrbkgTdXdHbogBd5f8fsg[bwgn N AgEgIg!fMg'bQg} UgYg2gcb6gjdndvb#gbdAfDf(g8b,gi E :gTf[gFfIhXf{gahJfNfMhQh
605cdef inline ConditionalNode _make_conditional_node(
606 GraphNode pred,
607 GraphCondition condition,
608 cydriver.CUgraphConditionalNodeType cond_type,
609 unsigned int size,
610 type node_cls):
611 if not isinstance(condition, GraphCondition): 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
612 raise TypeError(
613 f"condition must be a GraphCondition object (from "
614 f"GraphDefinition.create_condition()), got {type(condition).__name__}")
615 cdef cydriver.CUgraphNodeParams params
616 cdef cydriver.CUgraphNode new_node = NULL 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
618 c_memset(¶ms, 0, sizeof(params)) 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
619 params.type = cydriver.CU_GRAPH_NODE_TYPE_CONDITIONAL 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
620 params.conditional.handle = condition._c_handle 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
621 params.conditional.type = cond_type 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
622 params.conditional.size = size 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
624 cdef cydriver.CUcontext ctx = NULL 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
625 cdef GraphHandle h_graph = graph_node_get_graph(pred._h_node) 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
626 cdef cydriver.CUgraphNode pred_node = as_cu(pred._h_node) 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
627 cdef cydriver.CUgraphNode* deps = NULL 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
628 cdef size_t num_deps = 0 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
630 if pred_node != NULL: 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
631 deps = &pred_node
632 num_deps = 1
634 with nogil: 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
635 HANDLE_RETURN(cydriver.cuCtxGetCurrent(&ctx)) 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
636 params.conditional.ctx = ctx 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
638 with nogil: 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
639 IF CUDA_CORE_BUILD_MAJOR >= 13:
640 HANDLE_RETURN(cydriver.cuGraphAddNode( 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhSjTjBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
641 &new_node, as_cu(h_graph), deps, NULL, num_deps, ¶ms))
642 ELSE:
643 HANDLE_RETURN(cydriver.cuGraphAddNode(
644 &new_node, as_cu(h_graph), deps, num_deps, ¶ms))
646 cdef list branch_list = [] 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
647 cdef unsigned int i
648 cdef cydriver.CUgraph bg
649 cdef GraphHandle h_branch
650 for i in range(size): 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
651 bg = params.conditional.phGraph_out[i] 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
652 h_branch = create_child_graph_handle(bg, h_graph, new_node) 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
653 branch_list.append(GraphDefinition._from_handle(h_branch)) 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
654 cdef tuple branches = tuple(branch_list) 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
656 cdef ConditionalNode n = node_cls.__new__(node_cls) 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
657 n._h_node = create_graph_node_handle(new_node, h_graph) 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
658 n._condition = condition 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
659 n._cond_type = cond_type 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
660 n._branches = branches 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
662 return _registered(n) 2^ddhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhJbKbLbMbSbTbUbVbXbYbZb0b'ewfxfyfzf=f?f@f[f_b`b{b|b]f^f_f`ffbgbhbib{f|f}f~fagbgcgdgegfggghgpbqbrbsbigjgkglgRdSdTdUdVdWdXdYdFbGbHbIbmgngogpgzdAdBdCd5f6f7f8f9fqgrgsgtg?b@b[b]bugvgwgxgl m n o L M N O ygzgAgBgCgDgEgFgGgHgIgJg!fKgLgMgNg$b%b'b(bOgPgQgRg{ | } ~ SgTgUgVgWgXgYgZg0g1g2g3gabbbcbdb4g5g6g7ghdidjdkdldmdndodtbubvbwb9g!g#g$g~cadbdcdAfBfCfDfEf%g'g(g)g6b7b8b9b*g+g,g-gg h i j C D E F .g/g:g;gRfSfTfUf?g@g[g]gFfGhHhIhJhVfWfXfYf_g`g{g|g}g~gahbhHfIfJfKfLfMfNfOfKhLhMhNhOhPhQhRh
664cdef inline GraphNode GN_create(GraphHandle h_graph, cydriver.CUgraphNode node):
665 cdef GraphNodeHandle h_node = create_graph_node_handle(node, h_graph) 2Ie^kJe_k^dhliljlkl.i{c|c}c`kljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kllmlnlolplqlvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRjrlsltlulvlwl}k~kalblcldlelflcjddJbKbLbMb?i*c-cSbTbUbVbXbYbZb0bed:c$c]c'e;c=c3b2b1b.c`i[iQilb+cDc
667 # Sentinel: virtual node to represent the graph entry point.
668 if node == NULL: 2Ie^kJe_k^dhliljlkl.i{c|c}c`kljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kllmlnlolplqlvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRjrlsltlulvlwl}k~kalblcldlelflcjddJbKbLbMb?i*c-cSbTbUbVbXbYbZb0bed:c$c]c'e;c=c3b2b1b.c`i[iQilb+cDc
669 n = GraphNode.__new__(GraphNode)
670 (<GraphNode>n)._h_node = h_node
671 return n
673 # Return a registered object or create and register a new one.
674 registered = _node_registry.get(<uintptr_t>h_node.get()) 2Ie^kJe_k^dhliljlkl.i{c|c}c`kljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kllmlnlolplqlvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRjrlsltlulvlwl}k~kalblcldlelflcjddJbKbLbMb?i*c-cSbTbUbVbXbYbZb0bed:c$c]c'e;c=c3b2b1b.c`i[iQilb+cDc
675 if registered is not None: 2Ie^kJe_k^dhliljlkl.i{c|c}c`kljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kllmlnlolplqlvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRjrlsltlulvlwl}k~kalblcldlelflcjddJbKbLbMb?i*c-cSbTbUbVbXbYbZb0bed:c$c]c'e;c=c3b2b1b.c`i[iQilb+cDc
676 return <GraphNode>registered 2IeJe^dhliljlkl.i{c|c}cljmj*knjojpj+k,k-kqjfjrjsjtjuj.k/kllmlnlolplqlvjwj:kxjyjzjAj;k=k?k@kBjgjCjDjEjFj[k]kGjHjIjJjKjLjMjNjOjPjQjRjrlsltlulvlwl}k~kalblcldlelflcjdded=c3b2b1b.c`i[iQilb+cDc
677 else:
678 return _registered(GN_create_impl(h_node)) 2Ie^kJe_k`kljmjnjojpjqjfjrjsjtjujvjwjxjyjzjAjBjgjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjJbKbLbMb?i*c-cSbTbUbVbXbYbZb0b:c$c]c'e;clb
681cdef inline GraphNode GN_create_impl(GraphNodeHandle h_node):
682 cdef cydriver.CUgraphNodeType node_type
683 with nogil: 2Ie^kJe_k`kljmjnjojpjqjfjrjsjtjujvjwjxjyjzjAjBjgjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjJbKbLbMb?i*c-cSbTbUbVbXbYbZb0b:c$c]c'e;clb
684 HANDLE_RETURN(cydriver.cuGraphNodeGetType(as_cu(h_node), &node_type)) 2Ie^kJe_k`kljmjnjojpjqjfjrjsjtjujvjwjxjyjzjAjBjgjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjJbKbLbMb?i*c-cSbTbUbVbXbYbZb0b:c$c]c'e;clb
686 if node_type == cydriver.CU_GRAPH_NODE_TYPE_EMPTY: 2Ie^kJe_k`kljmjnjojpjqjfjrjsjtjujvjwjxjyjzjAjBjgjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjJbKbLbMb?i*c-cSbTbUbVbXbYbZb0b:c$c]c'e;clb
687 return EmptyNode._create_impl(h_node) 2fjgjNj
688 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_KERNEL:
689 return KernelNode._create_from_driver(h_node) 2Ie^kJe_k`kJbKbLbMb*c$clb
690 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_MEM_ALLOC:
691 return AllocNode._create_from_driver(h_node) 2ljmjnjojpjqjfjrjsjtjujvjwjxjyjzjAjBjgjCjDjEjFjGjHjIjJjKjLjMjOjPjQjRj
692 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_MEM_FREE:
693 return FreeNode._create_from_driver(h_node)
694 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_MEMSET:
695 return MemsetNode._create_from_driver(h_node) 2lb
696 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_MEMCPY:
697 return MemcpyNode._create_from_driver(h_node)
698 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_GRAPH:
699 return ChildGraphNode._create_from_driver(h_node) 2?i-c:c$c;c
700 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_EVENT_RECORD:
701 return EventRecordNode._create_from_driver(h_node)
702 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_WAIT_EVENT:
703 return EventWaitNode._create_from_driver(h_node)
704 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_HOST:
705 return HostCallbackNode._create_from_driver(h_node) 2?i-c:c]c;c
706 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_CONDITIONAL:
707 return ConditionalNode._create_from_driver(h_node) 2SbTbUbVbXbYbZb0b'e
708 else:
709 n = GraphNode.__new__(GraphNode)
710 (<GraphNode>n)._h_node = h_node
711 return n
714cdef inline KernelNode GN_launch(GraphNode self, LaunchConfig conf, Kernel ker, ParamHolder ker_args):
715 cdef cydriver.CUgraphNode new_node = NULL 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
716 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
717 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
718 cdef cydriver.CUgraphNode* deps = NULL 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
719 cdef size_t num_deps = 0 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
720 cdef OpaqueHandle args_owner
721 cdef PreparedAttachment prepared
723 if pred_node != NULL: 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
724 deps = &pred_node 2IeJechIcNcScXc2c7c=c3b2b1b.clbFh
725 num_deps = 1 2IeJechIcNcScXc2c7c=c3b2b1b.clbFh
727 cdef cydriver.CUDA_KERNEL_NODE_PARAMS node_params = cydriver.CUDA_KERNEL_NODE_PARAMS(
728 kern=as_cu(ker._h_kernel), 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
729 func=<cydriver.CUfunction>NULL, 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
730 gridDimX=conf.grid[0], 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
731 gridDimY=conf.grid[1], 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
732 gridDimZ=conf.grid[2], 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
733 blockDimX=conf.block[0], 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
734 blockDimY=conf.block[1], 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
735 blockDimZ=conf.block[2], 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
736 sharedMemBytes=conf.shmem_size, 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
737 kernelParams=<void**><uintptr_t>(ker_args.ptr), 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
738 extra=NULL, 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
739 ctx=<cydriver.CUcontext>NULL, 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
740 )
742 # Keep the kernel and argument objects alive because CUDA copies argument
743 # values but does not retain the resources they reference.
744 cdef OpaqueHandle kernel_owner = ker._h_kernel 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
745 kernel_args = ker_args.kernel_args 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
746 if kernel_args is not None: 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
747 args_owner = make_opaque_py(kernel_args) 2Ie,hJeeifi=c3b2b1b.clbFh
748 HANDLE_RETURN(graph_prepare_attachment( 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
749 h_graph, kernel_owner, args_owner, &prepared))
751 with nogil: 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
752 HANDLE_RETURN(cydriver.cuGraphAddKernelNode( 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
753 &new_node, as_cu(h_graph), deps, num_deps, &node_params))
755 HANDLE_RETURN(graph_commit_attachment(prepared, new_node)) 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
757 return _registered(KernelNode._create_with_params( 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
758 create_graph_node_handle(new_node, h_graph), 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
759 conf.grid, conf.block, conf.shmem_size, 2Ie,hJe_dGiHiIiJiKichLi`dIc{dNc|dSc}dXc~d2cae7cMiJbKbLbMb*ceifiNiedOiPi$c=c3b2b1b.clbFh^cZfLdShzb%cMdTh}b~b=bfbgbhbibNdUhOdVhPdWhT BbQdXh: Zd0h0d1h1dLeMeWbke?b@bq V [b]b2d2hb u 3d3h4d4h5d5h6d6hjb^b9d7h)b*b5b{ | } ~ !d8h#d9h$d!hG mb%d#hU 'd$h(d%hpdEdFdEbvd6b7bk K 8b9b)d'ha s *d(hqd/f+d)hCeRird:f,d*h-d+h_c0f`c1fGeSiHeTi
760 ker._h_kernel))
763cdef inline EmptyNode GN_join(GraphNode self, tuple nodes):
764 cdef vector[cydriver.CUgraphNode] deps
765 cdef cydriver.CUgraphNode new_node = NULL 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
766 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
767 cdef GraphNode other
768 cdef cydriver.CUgraphNode* deps_ptr = NULL 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
769 cdef size_t num_deps = 0 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
770 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
772 if pred_node != NULL: 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
773 deps.push_back(pred_node) 2:d;d=d?d@d[ddd
774 for other in nodes: 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
775 if as_cu((<GraphNode>other)._h_node) != NULL: 2:dNec d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e[d!e=c3b2b1b.cgdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
776 deps.push_back(as_cu((<GraphNode>other)._h_node)) 2:dNec d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e[d!e=c3b2b1b.cgdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
778 num_deps = deps.size() 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
779 if num_deps > 0: 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
780 deps_ptr = deps.data() 2:dNec d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e[d!edd=c3b2b1b.cgdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
782 with nogil: 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
783 HANDLE_RETURN(cydriver.cuGraphAddEmptyNode( 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
784 &new_node, as_cu(h_graph), deps_ptr, num_deps))
786 return _registered(EmptyNode._create_impl(create_graph_node_handle(new_node, h_graph))) 2:dNe.ic d e f {c|c}cOe; Re= ;dUe=dVeWe? Ze@ 2e[ 5e] ?d8e@d9e=i[d!ecjdd=c3b2b1b.c8k`i[iQi9k!k'i(igdH beW X ceY deZ ee0 fe1 geT EcFc,chcpbqbBb2 xbrbsbhe3 B ie4 je5 q le6 b z A y l m n o r me7 ne8 oe9 pe! P re# se$ te% ue' udG :b;bac,babbbmbQ ebcbdbve( x we) xe* k ye+ a v w t g h i j p ze, wdR Be- *e^ xdS Ee. Fe/ sdI tdJ +e_ ,e`
789cdef inline AllocNode GN_alloc(GraphNode self, size_t size, object device,
790 object memory_type, object peer_access):
791 cdef int device_id
792 cdef cydriver.CUdevice dev
794 if device is None: 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
795 with nogil: 2-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
796 HANDLE_RETURN(cydriver.cuCtxGetDevice(&dev)) 2-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
797 device_id = <int>dev 2-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
798 else:
799 device_id = getattr(device, 'device_id', device) 2,i-i
801 cdef cydriver.CUDA_MEM_ALLOC_NODE_PARAMS alloc_params
802 cdef cydriver.CUgraphNode new_node = NULL 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
803 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
804 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
805 cdef cydriver.CUgraphNode* deps = NULL 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
806 cdef size_t num_deps = 0 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
808 if pred_node != NULL: 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
809 deps = &pred_node 2-e-h:d.h:h%f;h'f=h;d?h@h=d[h]h(f^h)f_h*f`h+f{h?d|h}h@d~hai[dbi
810 num_deps = 1 2-e-h:d.h:h%f;h'f=h;d?h@h=d[h]h(f^h)f_h*f`h+f{h?d|h}h@d~hai[dbi
812 cdef vector[cydriver.CUmemAccessDesc] access_descs
813 cdef int peer_id
814 cdef list peer_ids = [] 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
816 if peer_access is not None: 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
817 for peer_dev in peer_access:
818 peer_id = getattr(peer_dev, 'device_id', peer_dev)
819 peer_ids.append(peer_id)
820 access_descs.push_back(cydriver.CUmemAccessDesc_st(
821 cydriver.CUmemLocation_st(
822 cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE,
823 peer_id
824 ),
825 cydriver.CUmemAccess_flags.CU_MEM_ACCESS_FLAGS_PROT_READWRITE
826 ))
828 cdef str memory_type_str = "device" if memory_type is None else str(memory_type) 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
830 c_memset(&alloc_params, 0, sizeof(alloc_params)) 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
831 alloc_params.poolProps.handleTypes = cydriver.CUmemAllocationHandleType.CU_MEM_HANDLE_TYPE_NONE 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
832 alloc_params.bytesize = size 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
834 check_str_enum(memory_type_str, GraphMemoryType) 2,i-i-e,j@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
835 if memory_type_str == "device": 2,i-i-e@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
836 alloc_params.poolProps.allocType = cydriver.CUmemAllocationType.CU_MEM_ALLOCATION_TYPE_PINNED 2,i-i-e@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
837 alloc_params.poolProps.location.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE 2,i-i-e@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
838 alloc_params.poolProps.location.id = device_id 2,i-i-e@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
839 elif memory_type_str == "host": 2%f'f(f)f*f+f
840 alloc_params.poolProps.allocType = cydriver.CUmemAllocationType.CU_MEM_ALLOCATION_TYPE_PINNED
841 alloc_params.poolProps.location.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_HOST
842 alloc_params.poolProps.location.id = 0
843 elif memory_type_str == "managed": 2%f'f(f)f*f+f
844 IF CUDA_CORE_BUILD_MAJOR >= 13:
845 alloc_params.poolProps.allocType = cydriver.CUmemAllocationType.CU_MEM_ALLOCATION_TYPE_MANAGED 2%f'f(f)f*f+f
846 alloc_params.poolProps.location.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE 2%f'f(f)f*f+f
847 alloc_params.poolProps.location.id = device_id 2%f'f(f)f*f+f
848 ELSE:
849 raise ValueError("memory_type='managed' requires CUDA 13.0 or later")
851 if access_descs.size() > 0: 2,i-i-e@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
852 alloc_params.accessDescs = access_descs.data()
853 alloc_params.accessDescCount = access_descs.size()
855 with nogil: 2,i-i-e@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
856 HANDLE_RETURN(cydriver.cuGraphAddMemAllocNode( 2,i-i-e@iUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
857 &new_node, as_cu(h_graph), deps, num_deps, &alloc_params))
859 return _registered(AllocNode._create_with_params( 2,i-i-eUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
860 create_graph_node_handle(new_node, h_graph), alloc_params.dptr, size, 2,i-i-eUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
861 device_id, memory_type_str, tuple(peer_ids))) 2,i-i-eUiViWi-h:dXiNe.hYilfmfnfofpfc d e f ObPbQbRbZi0i1i{c|c}c:h%fOePeQeqfIc; JcKcLcMc;h'fReSeTerfNc= OcPcQcRc=h;d2iUe?h3i@h=d4iVe[h5i]h(fWeXeYesfSc? TcUcVcWc^h)fZe0e1etfXc@ YcZc0c1c_h*f2e3e4euf2c[ 3c4c5c6c`h+f5e6e7evf7c] 8c9c!c#c{h?d6i8e|h7i}h@d8i9e~h9iai[d!i!ebi#idd;f$i$e%eDc4fgdKdH 4bgibe/eW bczb(e)e:eKe_b`b%cX cc{b|bhice;eY dciide=eZ ecjiee?e0 fckife@e1 gcgeT EcFc,chcpbqbBb2 xbrbsblihe[e3 ic: ?c@c/cFbGbB NbHbIbniie]e4 jcoije^e5 kcWbq V pile_e6 lcb z A y l m n o u CbDbAbL M r N O qime`e7 mcrine{e8 ncsioe|e9 octipe}e! pcjb7d8dqeDd$b%b^bP +b'b(buire~e# qcviseaf$ rcwitebf% scxiuecf' tcudG :b;bac,babbbmbQ ebcbdbyivedf( ucU GcHcvctbubx ybvbwbziweef) wcAixeff* xcEbk K Biyegf+ yca v w t g h i j s nbobkbC D p E F Cizehf, zc=gwdAeR -bDiBeif- Ac)i*eGf^ 'c^gxdDeS .bEiEejf. BcFiFekf/ Cc#fsd.dI !b$ftd/dJ #b*i+ePf_ (c+i,eQf` )c
864cdef inline FreeNode GN_free(GraphNode self, cydriver.CUdeviceptr c_dptr):
865 cdef cydriver.CUgraphNode new_node = NULL 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfglKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
866 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfglKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
867 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfglKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
868 cdef cydriver.CUgraphNode* deps = NULL 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfglKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
869 cdef size_t num_deps = 0 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfglKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
871 if pred_node != NULL: 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfglKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
872 deps = &pred_node 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
873 num_deps = 1 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
875 with nogil: 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfglKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
876 HANDLE_RETURN(cydriver.cuGraphAddMemFreeNode( 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfglKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
877 &new_node, as_cu(h_graph), deps, num_deps, c_dptr))
879 return _registered(FreeNode._create_with_params(create_graph_node_handle(new_node, h_graph), c_dptr)) 2-elfmfnfofpfc d e f ObPbQbRbqfrfsftfufvfKd/e:e;e=e?e@e,c[e: ?c@c/cFbGbB NbHbIb]e^eWb_e`e{e|e}eqe~eafbfcfacdfU GcHcvctbubx ybvbwbefffEbgfhfAeifGfDejfkf.d/dPfQf
882cdef inline OpaqueHandle _buffer_attachment_owner(Buffer buf, str label):
883 """Copy a Buffer's device-pointer handle into an attachment owner."""
884 if not buf._h_ptr: 2/bGd{kHdIdJd|kfd]d2f3fAlCl,f
885 raise ValueError(f"{label} Buffer has no active allocation") 2|kAlCl
886 # The local is required: Cython permits the DevicePtrHandle -> OpaqueHandle
887 # conversion on assignment, but not directly in a return statement.
888 cdef OpaqueHandle attachment_owner = buf._h_ptr 2/bGd{kHdIdJdfd]d2f3f,f
889 return attachment_owner 2/bGd{kHdIdJdfd]d2f3f,f
892cdef inline OpaqueHandle _resolve_memcpy_operand(
893 object operand, object owner, str side, cydriver.CUdeviceptr* out_ptr):
894 """Resolve an operand to a pointer and optional attachment owner.
896 ``operand`` is a :class:`Buffer` or a raw integer address; its device
897 pointer is written to ``out_ptr``. For a :class:`Buffer` operand, returns an
898 owner that retains the underlying allocation (not the wrapper). For a raw
899 pointer, returns an owner built from ``owner`` (or an empty handle when
900 ``owner`` is ``None``).
902 Raises
903 ------
904 ValueError
905 If ``operand`` is a :class:`Buffer` and ``owner`` is not ``None``.
906 If a :class:`Buffer` operand or ``*_owner`` has no active allocation.
907 """
908 cdef Buffer buf
909 cdef OpaqueHandle attachment_owner
911 if isinstance(operand, Buffer): 2c d e f ObPbQbRb; JcKcLcMc= OcPcQcRc? TcUcVcWc@ YcZc0c1c[ 3c4c5c6c] 8c9c!c#c;f#e[c/bGdYl{kHdIdJd|kfd]d2f3fAlCl,flb+cH 4bW bcX ccY dcZ ec0 fc1 gc2 xb3 icB Nb4 jc5 kcq V 6 lcb z A y l m n o u CbDbAbL M r N O 7 mc8 nc9 oc! pcP +b# qc$ rc% sc' tcQ eb( ucx yb) wc* xck K + yca v w t g h i j s nbobkbC D p E F , zcR -b- Ac^ 'cS .b. Bc/ CcI !bJ #b_ (c` )c
912 if owner is not None: 2GdYl{kHdIdJdfd2f3fCl
913 raise ValueError( 2Yl{k
914 f"{side}_owner cannot be used when {side} is a Buffer" 2Yl{k
915 )
916 buf = operand 2Gd{kHdIdJdfd2f3fCl
917 attachment_owner = _buffer_attachment_owner(buf, side) 2Gd{kHdIdJdfd2f3fCl
918 out_ptr[0] = as_cu(buf._h_ptr) 2Gd{kHdIdJdfd2f3f
919 return attachment_owner 2Gd{kHdIdJdfd2f3f
920 out_ptr[0] = <cydriver.CUdeviceptr><uintptr_t>operand 2c d e f ObPbQbRb; JcKcLcMc= OcPcQcRc? TcUcVcWc@ YcZc0c1c[ 3c4c5c6c] 8c9c!c#c;f#e[c/b|kfd]dAl,flb+cH 4bW bcX ccY dcZ ec0 fc1 gc2 xb3 icB Nb4 jc5 kcq V 6 lcb z A y l m n o u CbDbAbL M r N O 7 mc8 nc9 oc! pcP +b# qc$ rc% sc' tcQ eb( ucx yb) wc* xck K + yca v w t g h i j s nbobkbC D p E F , zcR -b- Ac^ 'cS .b. Bc/ CcI !bJ #b_ (c` )c
921 if owner is None: 2c d e f ObPbQbRb; JcKcLcMc= OcPcQcRc? TcUcVcWc@ YcZc0c1c[ 3c4c5c6c] 8c9c!c#c;f#e[c/b|kfd]dAl,flb+cH 4bW bcX ccY dcZ ec0 fc1 gc2 xb3 icB Nb4 jc5 kcq V 6 lcb z A y l m n o u CbDbAbL M r N O 7 mc8 nc9 oc! pcP +b# qc$ rc% sc' tcQ eb( ucx yb) wc* xck K + yca v w t g h i j s nbobkbC D p E F , zcR -b- Ac^ 'cS .b. Bc/ CcI !bJ #b_ (c` )c
922 return OpaqueHandle() 2c d e f ObPbQbRb; JcKcLcMc= OcPcQcRc? TcUcVcWc@ YcZc0c1c[ 3c4c5c6c] 8c9c!c#c;f|klb+cH 4bW bcX ccY dcZ ec0 fc1 gc2 xb3 icB Nb4 jc5 kcq V 6 lcb z A y l m n o u CbDbAbL M r N O 7 mc8 nc9 oc! pcP +b# qc$ rc% sc' tcQ eb( ucx yb) wc* xck K + yca v w t g h i j s nbobkbC D p E F , zcR -b- Ac^ 'cS .b. Bc/ CcI !bJ #b_ (c` )c
923 if isinstance(owner, Buffer): 2#e[c/b|kfd]dAl,f
924 return _buffer_attachment_owner(owner, f"{side}_owner") 2/b|kfd]dAl,f
925 return make_opaque_py(owner) 2#e[c
928cdef inline MemsetNode GN_memset(
929 GraphNode self, cydriver.CUdeviceptr c_dst, OpaqueHandle dst_owner,
930 unsigned int val, unsigned int elem_size,
931 size_t width, size_t height, size_t pitch):
932 cdef cydriver.CUgraphNode new_node = NULL 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
933 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
934 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
935 cdef cydriver.CUgraphNode* deps = NULL 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
936 cdef size_t num_deps = 0 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
937 cdef PreparedAttachment prepared
939 if pred_node != NULL: 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
940 deps = &pred_node 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#clb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
941 num_deps = 1 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#clb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
943 cdef cydriver.CUcontext ctx = NULL 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
944 with nogil: 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
945 HANDLE_RETURN(cydriver.cuCtxGetCurrent(&ctx)) 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
947 cdef cydriver.CUDA_MEMSET_NODE_PARAMS memset_params = cydriver.CUDA_MEMSET_NODE_PARAMS(
948 dst=c_dst, 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
949 pitch=pitch, 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
950 value=val, 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
951 elementSize=elem_size, 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
952 width=width, 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
953 height=height, 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
954 )
956 if dst_owner: 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
957 HANDLE_RETURN(graph_prepare_attachment( 22f3f,f
958 h_graph, dst_owner, OpaqueHandle(), &prepared))
960 with nogil: 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
961 HANDLE_RETURN(cydriver.cuGraphAddMemsetNode( 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
962 &new_node, as_cu(h_graph), deps, num_deps,
963 &memset_params, ctx))
965 if dst_owner: 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
966 HANDLE_RETURN(graph_commit_attachment(prepared, new_node)) 22f3f,f
968 return _registered(MemsetNode._create_with_params( 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
969 create_graph_node_handle(new_node, h_graph), c_dst, 2c d e f ObPbQbRbJcKcLcMcOcPcQcRcTcUcVcWcYcZc0c1c3c4c5c6c8c9c!c#c2f3f,flb+c4bbcccdcecfcgcxbicNbjckcV lcu CbDbAbL M r N O mcncocpc+bqcrcsctcebucybwcxcK ycs nbobkbC D p E F zc-bAc'c.bBcCc!b#b(c)c
970 val, elem_size, width, height, pitch))
973cdef inline MemcpyNode GN_memcpy(
974 GraphNode self, cydriver.CUdeviceptr c_dst, OpaqueHandle dst_owner,
975 cydriver.CUdeviceptr c_src, OpaqueHandle src_owner, size_t size):
976 cdef unsigned int dst_mem_type = cydriver.CU_MEMORYTYPE_DEVICE 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
977 cdef unsigned int src_mem_type = cydriver.CU_MEMORYTYPE_DEVICE 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
978 cdef cydriver.CUresult ret
979 with nogil: 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
980 ret = cydriver.cuPointerGetAttribute( 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
981 &dst_mem_type,
982 cydriver.CU_POINTER_ATTRIBUTE_MEMORY_TYPE,
983 c_dst)
984 if ret != cydriver.CUDA_SUCCESS and ret != cydriver.CUDA_ERROR_INVALID_VALUE: 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
985 HANDLE_RETURN(ret)
986 ret = cydriver.cuPointerGetAttribute( 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
987 &src_mem_type,
988 cydriver.CU_POINTER_ATTRIBUTE_MEMORY_TYPE,
989 c_src)
990 if ret != cydriver.CUDA_SUCCESS and ret != cydriver.CUDA_ERROR_INVALID_VALUE: 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
991 HANDLE_RETURN(ret)
993 cdef cydriver.CUmemorytype c_dst_type = <cydriver.CUmemorytype>dst_mem_type 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
994 cdef cydriver.CUmemorytype c_src_type = <cydriver.CUmemorytype>src_mem_type 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
996 cdef cydriver.CUDA_MEMCPY3D params
997 c_memset(¶ms, 0, sizeof(params)) 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
999 params.srcMemoryType = c_src_type 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1000 params.dstMemoryType = c_dst_type 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1001 if c_src_type == cydriver.CU_MEMORYTYPE_HOST: 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1002 params.srcHost = <const void*><uintptr_t>c_src
1003 else:
1004 params.srcDevice = c_src 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1005 if c_dst_type == cydriver.CU_MEMORYTYPE_HOST: 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1006 params.dstHost = <void*><uintptr_t>c_dst
1007 else:
1008 params.dstDevice = c_dst 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1009 params.WidthInBytes = size 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1010 params.Height = 1 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1011 params.Depth = 1 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1013 cdef cydriver.CUgraphNode new_node = NULL 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1014 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1015 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1016 cdef cydriver.CUgraphNode* deps = NULL 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1017 cdef size_t num_deps = 0 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1018 cdef PreparedAttachment prepared
1020 if pred_node != NULL: 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1021 deps = &pred_node 1cdef;=?@[]HWXYZ0123B45q6bzAylmnor789!P#$%'Q(x)*k+avwtghijp,R-^S./IJ_`
1022 num_deps = 1 1cdef;=?@[]HWXYZ0123B45q6bzAylmnor789!P#$%'Q(x)*k+avwtghijp,R-^S./IJ_`
1024 cdef cydriver.CUcontext ctx = NULL 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1025 if dst_owner or src_owner: 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1026 HANDLE_RETURN(graph_prepare_attachment( 2#e[c/bGdHdIdJdfd]d
1027 h_graph, dst_owner, src_owner, &prepared))
1029 with nogil: 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1030 HANDLE_RETURN(cydriver.cuCtxGetCurrent(&ctx)) 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1031 HANDLE_RETURN(cydriver.cuGraphAddMemcpyNode( 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1032 &new_node, as_cu(h_graph), deps, num_deps, ¶ms, ctx))
1034 if dst_owner or src_owner: 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1035 HANDLE_RETURN(graph_commit_attachment(prepared, new_node)) 2#e[c/bGdHdIdJdfd]d
1037 return _registered(MemcpyNode._create_with_params( 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1038 create_graph_node_handle(new_node, h_graph), c_dst, c_src, size, 2c d e f ; = ? @ [ ] #e[c/bGdHdIdJdfd]dH W X Y Z 0 1 2 3 B 4 5 q 6 b z A y l m n o r 7 8 9 ! P # $ % ' Q ( x ) * k + a v w t g h i j p , R - ^ S . / I J _ `
1039 c_dst_type, c_src_type))
1042cdef inline ChildGraphNode GN_embed(GraphNode self, GraphDefinition child_def):
1043 cdef cydriver.CUgraphNode new_node = NULL 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1044 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1045 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1046 cdef cydriver.CUgraphNode* deps = NULL 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1047 cdef size_t num_deps = 0 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1048 cdef cydriver.CUresult rollback_status
1050 if pred_node != NULL: 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1051 deps = &pred_node
1052 num_deps = 1
1054 with nogil: 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1055 HANDLE_RETURN(cydriver.cuGraphAddChildGraphNode( 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1056 &new_node, as_cu(h_graph), deps, num_deps, as_cu(child_def._h_graph)))
1058 cdef cydriver.CUgraph embedded_graph = NULL 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1059 cdef GraphHandle h_embedded
1060 try: 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1061 with nogil: 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1062 HANDLE_RETURN(cydriver.cuGraphChildGraphNodeGetGraph( 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1063 new_node, &embedded_graph))
1064 h_embedded = create_child_graph_handle( 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1065 embedded_graph, h_graph, new_node)
1066 HANDLE_RETURN(graph_clone_attachments( 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1067 h_embedded, child_def._h_graph))
1068 except:
1069 with nogil:
1070 rollback_status = cydriver.cuGraphDestroyNode(new_node)
1071 if rollback_status == cydriver.CUDA_SUCCESS:
1072 invalidate_child_graph_state(h_graph, new_node)
1073 raise
1075 return _registered(ChildGraphNode._create_with_params( 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1076 create_graph_node_handle(new_node, h_graph), h_embedded)) 2_d`d{d|d}d~dae*c%i-c.e:c$c]c;c^cLdzbMd}b~b=bfbgbhbibNdOdPdT Qd: Zd0d1d2db u 3d4d5d6djb9d)b*b5b{ | } ~ !d#d$dG %dU 'd(dpd)da s *dqd+dCerd,d-d_c`cGeHe
1079cdef inline EventRecordNode GN_record_event(GraphNode self, Event ev):
1080 cdef cydriver.CUgraphNode new_node = NULL 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1081 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1082 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1083 cdef cydriver.CUgraphNode* deps = NULL 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1084 cdef size_t num_deps = 0 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1085 cdef PreparedAttachment prepared
1087 if pred_node != NULL: 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1088 deps = &pred_node 2PeSeXe0e3e6e$eed
1089 num_deps = 1 2PeSeXe0e3e6e$eed
1091 cdef OpaqueHandle owner = ev._h_event 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1092 HANDLE_RETURN(graph_prepare_attachment( 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1093 h_graph, owner, OpaqueHandle(), &prepared))
1095 with nogil: 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1096 HANDLE_RETURN(cydriver.cuGraphAddEventRecordNode( 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1097 &new_node, as_cu(h_graph), deps, num_deps, as_cu(ev._h_event)))
1099 HANDLE_RETURN(graph_commit_attachment(prepared, new_node)) 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1101 return _registered(EventRecordNode._create_with_params( 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1102 create_graph_node_handle(new_node, h_graph), ev._h_event)) 2/hPeSeXe0e3e6e5k$e6kcidied{i-j(e/j}b;j?j[jEc^jmiYhRdSdTdUd?c`j|jLe~jz Cbbkdkfkhk7djk)blknkpk:brk8g-fhdidjdkdGctkvkEdxkv nbzkhjBk#kjjDkFk}iaj%k(k
1105cdef inline EventWaitNode GN_wait_event(GraphNode self, Event ev):
1106 cdef cydriver.CUgraphNode new_node = NULL 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1107 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1108 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1109 cdef cydriver.CUgraphNode* deps = NULL 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1110 cdef size_t num_deps = 0 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1111 cdef PreparedAttachment prepared
1113 if pred_node != NULL: 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1114 deps = &pred_node 2/hQeTeYe1e4e7ecidi%e
1115 num_deps = 1 2/hQeTeYe1e4e7ecidi%e
1117 cdef OpaqueHandle owner = ev._h_event 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1118 HANDLE_RETURN(graph_prepare_attachment( 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1119 h_graph, owner, OpaqueHandle(), &prepared))
1121 with nogil: 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1122 HANDLE_RETURN(cydriver.cuGraphAddEventWaitNode( 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1123 &new_node, as_cu(h_graph), deps, num_deps, as_cu(ev._h_event)))
1125 HANDLE_RETURN(graph_commit_attachment(prepared, new_node)) 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1127 return _registered(EventWaitNode._create_with_params( 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1128 create_graph_node_handle(new_node, h_graph), ev._h_event)) 2/hQeTeYe1e4e7ecidi%e7k|i.j)e:j~b=j@j]jFc_jmiZhVdWdXdYd@c{j}jMeakA Dbckekgkik8dkk*bmkokqk;bsk8g.fldmdndodHcukwkFdykw obAkijCk$kkjEkGk~ibj'k)k
1131cdef inline HostCallbackNode GN_callback(GraphNode self, object fn, object user_data):
1132 cdef cydriver.CUDA_HOST_NODE_PARAMS node_params
1133 cdef cydriver.CUgraphNode new_node = NULL 2HkBlIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1134 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2HkBlIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1135 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2HkBlIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1136 cdef cydriver.CUgraphNode* deps = NULL 2HkBlIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1137 cdef size_t num_deps = 0 2HkBlIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1138 cdef OpaqueHandle fn_owner, data_owner
1139 cdef PreparedAttachment prepared
1141 if pred_node != NULL: 2HkBlIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1142 deps = &pred_node 2/bDc
1143 num_deps = 1 2/bDc
1145 _resolve_host_callback( 2HkBlIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1146 fn, user_data, &node_params.fn, &node_params.userData,
1147 &fn_owner, &data_owner)
1148 HANDLE_RETURN(graph_prepare_attachment( 2HkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1149 h_graph, fn_owner, data_owner, &prepared))
1151 with nogil: 2HkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1152 HANDLE_RETURN(cydriver.cuGraphAddHostNode( 2HkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1153 &new_node, as_cu(h_graph), deps, num_deps, &node_params))
1155 HANDLE_RETURN(graph_commit_attachment(prepared, new_node)) 2HkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1157 cdef object callable_obj = fn if not isinstance(fn, ct._CFuncPtr) else None 2HkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1158 return _registered(HostCallbackNode._create_with_params( 2HkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1159 create_graph_node_handle(new_node, h_graph), callable_obj, 2HkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk/i:iXkYk-c.eSbTbUbVbXbYbZb0b/b:c;i]cZk;c0kDc'i(i1k]iUjKeVj=bWjXjYjhcZjYhZh/c0jzdAdBdCd1jke2jy Ab3j4j5j6jDd7j5b8j9j!j,b#j-f.fvc$j~cadbdcd%jvd'jt kb(jdj)j2kej*j+j^i_i3k4k
1160 node_params.fn, node_params.userData))