Coverage for cuda / core / graph / _graph_node.pyx: 90.24%
379 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-29 01:27 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-29 01:27 +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 libc.stddef cimport size_t
10from libc.stdint cimport uintptr_t
11from libc.string cimport memset as c_memset
13from libcpp.vector cimport vector
15from cuda.bindings cimport cydriver
17from cuda.core._event cimport Event
18from cuda.core._kernel_arg_handler cimport ParamHolder
19from cuda.core._launch_config cimport LaunchConfig
20from cuda.core._module cimport Kernel
21from cuda.core.graph._graph_definition cimport GraphCondition, GraphDefinition
22from cuda.core.graph._subclasses cimport (
23 AllocNode,
24 ChildGraphNode,
25 ConditionalNode,
26 EmptyNode,
27 EventRecordNode,
28 EventWaitNode,
29 FreeNode,
30 HostCallbackNode,
31 IfElseNode,
32 IfNode,
33 KernelNode,
34 MemcpyNode,
35 MemsetNode,
36 SwitchNode,
37 WhileNode,
38)
39from cuda.core._resource_handles cimport (
40 EventHandle,
41 GraphHandle,
42 KernelHandle,
43 GraphNodeHandle,
44 as_cu,
45 as_intptr,
46 as_py,
47 create_graph_handle_ref,
48 create_graph_node_handle,
49 graph_node_get_graph,
50 invalidate_graph_node,
51)
52from cuda.core._utils.cuda_utils cimport HANDLE_RETURN, _parse_fill_value
54from cuda.core.graph._utils cimport (
55 _attach_host_callback_to_graph,
56 _attach_user_object,
57)
59import weakref
61from cuda.core.graph._adjacency_set_proxy import AdjacencySetProxy
62from cuda.core._utils.cuda_utils import driver
64# See _cpp/REGISTRY_DESIGN.md (Level 2: Resource Handle -> Python Object)
65_node_registry = weakref.WeakValueDictionary()
68cdef inline GraphNode _registered(GraphNode n):
69 _node_registry[<uintptr_t>n._h_node.get()] = n 2_h`h]dqd6h7h8hmhkd9h!dnh!h9eIjyi#e$e%e'e(eziJjKjDiEiFiGiHig h i j TbUbVbWb#h$h%hMcNcOc'hIiohAfwk)e#d`d{d*eLjMj5g6g}b[ QcRcScTc7g8g6iph7iBf+e$d8i|d9i}d!i,eNjOj9g!g#i~bWi] $iUc%iVc'iWc(iXc#g$gqhld(h%drh)hshmd*h'dth+huhCf-e(d~dae.ePjQj%g'gac^ YcZc0c1c(g)g)ivh*iDf/e+i)d,ibe-ice.i:eRjSj*g+g/ibcXi_ :i2c;i3c=i4c?i5c,g-g@iwh[iEf;e]i*d^ide_iee`i=eTjUj.g/g{icc|i` }i6c~i7caj8cbj9c:g;gxhFf?e+dfege@eVjWj=g?gdc{ !c#c$c%c@g[gyhnd,h,dzh-hAhod.h-dBh/hcjChpd:h.dDh;hUi'c4h{h=h]g^g_g`gybzbAbBbXjYjgcZj/d0jAiBi:d1j|hrdJiKiec2j;dPc*b!b2bhc3jQiOi5hKb4jsd5j}hGf~c(cYiZiadRi[e]e2gH #b^e_eEhhetd6j7jiejjPfQf~h0 icRfSfEbjekele=d3b4bfc1 jc5b6bFhmeud8j9jnekjTfUfai2 kcVfWflcmc{bnbobpbqbGhoevd!j#jpeljXfYfbi3 ncZf0fHhqewd$j%jremj1f2fci4 oc3f4fIhsexd'j(jtenj5f6fdi5 pc7f8fydI :b;b=b$b| } Cb6 Fb~ abJhuezd)j*jveoj9f!fei7 qc#f$fCi?hAdBdCdDd@hEdFdGdHdV rcsc|brbsbz MbtbubKhweId+j,jxepj%f'ffi8 tc(f)fbdcdddedHfIfJfKfLfLhyeJd-j.jzeqj*f+fgi9 uc,f-fAepfqfLb!e+b,bq @ -b.bMhBeKd/j:jCerj.f/fhi! vc:f;fb A B x k l m n y NbObJbJ K r L M NhDeLd;j=jEesj=f?fii# wc@f[fOhFeMd?j@jGetj]f^fji$ xc_f`fPhHeNd[j]jIeuj{f|fki% yc}f~fMfQhJeOd^j_jKevjagbgli' zccgdgvbPdQdRdfdPbQb/bQ ?bRbSbRhLeSd`j{jMewjegfgmi( Acgghg@b[b%bbbcbdbebShNeTd|j}jOexjigjgni) BckglgThPeUd~jakQeyjmgngoi* CcogpgUhReVdbkckSezjqgrgpi+ Dcsgtg=cC 7b8b9bXbW X mbR wbY Z VhTeWddkekUeAjugvgqi, EcwgxgWh{g?c@c[c]c|g^c_c`c{cN ]b^b'bfbgbu GbhbibXhVeXdfkgkWeBjygzgri- FcAgBg)c*c+c,c`e{e|e}e~eYhXeYdhkikYeCjCgDgsi. GcEgFgZd^d_dDb9dYbZbo U 0b1bZhZe0djkkk0eDjGgHgti/ HcIgJga v w s c d e f t HbIbxbD E p F G 0h1e1dlkmk2eEjKgLgui: IcMgNgOg2d|cdjej3d0irfsfkhS _btfuf1h3e4dnkok4eFjPgQgvi; JcRgSgaf[hbf?dxkykcfpk}g~gLijb-cahbhTg5d}cfjgj6d1ivfwflhT `bxfyf2h5e7dqkrk6eGjUgVgwi= KcWgXg3h7e8dsktk8eHjYgZgxi? Lc0g1gNfgd.c2i3ihdSidfef3gO (bffgfOfid/c4i5ijdTihfif4gP )bjfkf]hlf@dzkAkmfukchdhMikb:cehfh^hnf[dBkCkofvkghhhNilb;cihjh
70 return n 2_h`h]dqd6h7h8hmhkd9h!dnh!h9eIjyi#e$e%e'e(eziJjKjDiEiFiGiHig h i j TbUbVbWb#h$h%hMcNcOc'hIiohAfwk)e#d`d{d*eLjMj5g6g}b[ QcRcScTc7g8g6iph7iBf+e$d8i|d9i}d!i,eNjOj9g!g#i~bWi] $iUc%iVc'iWc(iXc#g$gqhld(h%drh)hshmd*h'dth+huhCf-e(d~dae.ePjQj%g'gac^ YcZc0c1c(g)g)ivh*iDf/e+i)d,ibe-ice.i:eRjSj*g+g/ibcXi_ :i2c;i3c=i4c?i5c,g-g@iwh[iEf;e]i*d^ide_iee`i=eTjUj.g/g{icc|i` }i6c~i7caj8cbj9c:g;gxhFf?e+dfege@eVjWj=g?gdc{ !c#c$c%c@g[gyhnd,h,dzh-hAhod.h-dBh/hcjChpd:h.dDh;hUi'c4h{h=h]g^g_g`gybzbAbBbXjYjgcZj/d0jAiBi:d1j|hrdJiKiec2j;dPc*b!b2bhc3jQiOi5hKb4jsd5j}hGf~c(cYiZiadRi[e]e2gH #b^e_eEhhetd6j7jiejjPfQf~h0 icRfSfEbjekele=d3b4bfc1 jc5b6bFhmeud8j9jnekjTfUfai2 kcVfWflcmc{bnbobpbqbGhoevd!j#jpeljXfYfbi3 ncZf0fHhqewd$j%jremj1f2fci4 oc3f4fIhsexd'j(jtenj5f6fdi5 pc7f8fydI :b;b=b$b| } Cb6 Fb~ abJhuezd)j*jveoj9f!fei7 qc#f$fCi?hAdBdCdDd@hEdFdGdHdV rcsc|brbsbz MbtbubKhweId+j,jxepj%f'ffi8 tc(f)fbdcdddedHfIfJfKfLfLhyeJd-j.jzeqj*f+fgi9 uc,f-fAepfqfLb!e+b,bq @ -b.bMhBeKd/j:jCerj.f/fhi! vc:f;fb A B x k l m n y NbObJbJ K r L M NhDeLd;j=jEesj=f?fii# wc@f[fOhFeMd?j@jGetj]f^fji$ xc_f`fPhHeNd[j]jIeuj{f|fki% yc}f~fMfQhJeOd^j_jKevjagbgli' zccgdgvbPdQdRdfdPbQb/bQ ?bRbSbRhLeSd`j{jMewjegfgmi( Acgghg@b[b%bbbcbdbebShNeTd|j}jOexjigjgni) BckglgThPeUd~jakQeyjmgngoi* CcogpgUhReVdbkckSezjqgrgpi+ Dcsgtg=cC 7b8b9bXbW X mbR wbY Z VhTeWddkekUeAjugvgqi, EcwgxgWh{g?c@c[c]c|g^c_c`c{cN ]b^b'bfbgbu GbhbibXhVeXdfkgkWeBjygzgri- FcAgBg)c*c+c,c`e{e|e}e~eYhXeYdhkikYeCjCgDgsi. GcEgFgZd^d_dDb9dYbZbo U 0b1bZhZe0djkkk0eDjGgHgti/ HcIgJga v w s c d e f t HbIbxbD E p F G 0h1e1dlkmk2eEjKgLgui: IcMgNgOg2d|cdjej3d0irfsfkhS _btfuf1h3e4dnkok4eFjPgQgvi; JcRgSgaf[hbf?dxkykcfpk}g~gLijb-cahbhTg5d}cfjgj6d1ivfwflhT `bxfyf2h5e7dqkrk6eGjUgVgwi= KcWgXg3h7e8dsktk8eHjYgZgxi? Lc0g1gNfgd.c2i3ihdSidfef3gO (bffgfOfid/c4i5ijdTihfif4gP )bjfkf]hlf@dzkAkmfukchdhMikb:cehfh^hnf[dBkCkofvkghhhNilb;cihjh
73cdef class GraphNode:
74 """A node in a graph definition.
76 Nodes are created by calling builder methods on GraphDefinition (for
77 entry-point nodes with no dependencies) or on other Nodes (for
78 nodes that depend on a predecessor).
79 """
81 @staticmethod
82 cdef GraphNode _create(GraphHandle h_graph, cydriver.CUgraphNode node):
83 """Factory: dispatch to the right subclass based on node type."""
84 return GN_create(h_graph, node) 2qdWkXkYkZkyiMcNcOcwk6i7iDk8i9i!iEk#iWi$i%i'i(i0k1k2k3k4k5k)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbj6k7k8k9k!k#kMkNkOkPkQkRkSkTkUi'cybzbAbBbgcrdec;dPc*b!b2bhcQiOi5hKbsd
86 def __repr__(self) -> str:
87 cdef cydriver.CUgraphNode node = as_cu(self._h_node) 2hl
88 if node == NULL: 2hl
89 return "<GraphNode entry>" 2hl
90 return f"<GraphNode handle=0x{<uintptr_t>node:x}>"
92 def __eq__(self, other) -> bool:
93 if not isinstance(other, GraphNode): 2qd6i7iDk8i9i!iEk#iWi$i%i'i(i)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbjGf~c(cYiZiadRi[e]e2gH #b$k^e_evbPdQdRdfdPbQb/bQ ?bRbSbRhLeSd`j{jMewjegfgmi( Acmlgghg@b[b%bbbcbdbebShNeTd|j}jOexjigjgni) BcnlkglgThPeUd~jakQeyjmgngoi* CcologpgUhReVdbkckSezjqgrgpi+ Dcplsgtg=cC 7b8b9bXbW X mbR wbY Z VhTeWddkekUeAjugvgqi, EcqlwgxgWh{g?c@c[c]c|g^c_c`c{cN ]b^b'bfbgbu GbhbibXhVeXdfkgkWeBjygzgri- FcrlAgBg)c*c+c,c`e{e|e}e~eYhXeYdhkikYeCjCgDgsi. GcslEgFgZd^d_dDb9dYbZbo U 0b1bZhZe0djkkk0eDjGgHgti/ HctlIgJga v w s c d e f t HbIbxbD E p F G 0h1e1dlkmk2eEjKgLgui: IculMgNgOg2d|cdjej3d0irfsfkhS _btfuf1h3e4dnkok4eFjPgQgvi; JcvlRgSgafTg5d}cfjgj6d1ivfwflhT `b(kxfyfNfgd.c2i3ihdSidfef3gO (b%kffgfOfid/c4i5ijdTihfif4gP )b'kjfkf
94 return NotImplemented 2Gf~c(cYiZiadRi[e]e2gH #b$k^e_eRhLeSd`j{jMewjegfgmi( AcmlgghgShNeTd|j}jOexjigjgni) BcnlkglgThPeUd~jakQeyjmgngoi* CcologpgUhReVdbkckSezjqgrgpi+ DcplsgtgVhTeWddkekUeAjugvgqi, EcqlwgxgXhVeXdfkgkWeBjygzgri- FcrlAgBgYhXeYdhkikYeCjCgDgsi. GcslEgFgZhZe0djkkk0eDjGgHgti/ HctlIgJg0h1e1dlkmk2eEjKgLgui: IculMgNg1h3e4dnkok4eFjPgQgvi; JcvlRgSg
95 cdef GraphNode o = <GraphNode>other 2qd6i7iDk8i9i!iEk#iWi$i%i'i(i)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbjGf~c(cYiZiadRi[e]e2gH #b$k^e_evbPdQdRdfdPbQb/bQ ?bRbSb@b[b%bbbcbdbeb=cC 7b8b9bXbW X mbR wbY Z Wh{g?c@c[c]c|g^c_c`c{cN ]b^b'bfbgbu Gbhbib)c*c+c,c`e{e|e}e~eZd^d_dDb9dYbZbo U 0b1ba v w s c d e f t HbIbxbD E p F G Og2d|cdjej3d0irfsfkhS _btfufafTg5d}cfjgj6d1ivfwflhT `b(kxfyfNfgd.c2i3ihdSidfef3gO (b%kffgfOfid/c4i5ijdTihfif4gP )b'kjfkf
96 cdef GraphHandle self_graph = graph_node_get_graph(self._h_node) 2qd6i7iDk8i9i!iEk#iWi$i%i'i(i)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbjGf~c(cYiZiadRi[e]e2gH #b$k^e_evbPdQdRdfdPbQb/bQ ?bRbSb@b[b%bbbcbdbeb=cC 7b8b9bXbW X mbR wbY Z Wh{g?c@c[c]c|g^c_c`c{cN ]b^b'bfbgbu Gbhbib)c*c+c,c`e{e|e}e~eZd^d_dDb9dYbZbo U 0b1ba v w s c d e f t HbIbxbD E p F G Og2d|cdjej3d0irfsfkhS _btfufafTg5d}cfjgj6d1ivfwflhT `b(kxfyfNfgd.c2i3ihdSidfef3gO (b%kffgfOfid/c4i5ijdTihfif4gP )b'kjfkf
97 cdef GraphHandle other_graph = graph_node_get_graph(o._h_node) 2qd6i7iDk8i9i!iEk#iWi$i%i'i(i)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbjGf~c(cYiZiadRi[e]e2gH #b$k^e_evbPdQdRdfdPbQb/bQ ?bRbSb@b[b%bbbcbdbeb=cC 7b8b9bXbW X mbR wbY Z Wh{g?c@c[c]c|g^c_c`c{cN ]b^b'bfbgbu Gbhbib)c*c+c,c`e{e|e}e~eZd^d_dDb9dYbZbo U 0b1ba v w s c d e f t HbIbxbD E p F G Og2d|cdjej3d0irfsfkhS _btfufafTg5d}cfjgj6d1ivfwflhT `b(kxfyfNfgd.c2i3ihdSidfef3gO (b%kffgfOfid/c4i5ijdTihfif4gP )b'kjfkf
98 return (as_intptr(self._h_node) == as_intptr(o._h_node) 2qd6i7iDk8i9i!iEk#iWi$i%i'i(i)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbjGf~c(cYiZiadRi[e]e2gH #b$k^e_evbPdQdRdfdPbQb/bQ ?bRbSb@b[b%bbbcbdbeb=cC 7b8b9bXbW X mbR wbY Z Wh{g?c@c[c]c|g^c_c`c{cN ]b^b'bfbgbu Gbhbib)c*c+c,c`e{e|e}e~eZd^d_dDb9dYbZbo U 0b1ba v w s c d e f t HbIbxbD E p F G Og2d|cdjej3d0irfsfkhS _btfufafTg5d}cfjgj6d1ivfwflhT `b(kxfyfNfgd.c2i3ihdSidfef3gO (b%kffgfOfid/c4i5ijdTihfif4gP )b'kjfkf
99 and as_intptr(self_graph) == as_intptr(other_graph)) 2qd6i7iDk8i9i!iEk#iWi$i%i'i(i)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbjGf~c(cYiZiadRi[e]e2gH #b$k^e_evbPdQdRdfdPbQb/bQ ?bRbSb@b[b%bbbcbdbeb=cC 7b8b9bXbW X mbR wbY Z Wh{g?c@c[c]c|g^c_c`c{cN ]b^b'bfbgbu Gbhbib)c*c+c,c`e{e|e}e~eZd^d_dDb9dYbZbo U 0b1ba v w s c d e f t HbIbxbD E p F G Og2d|cdjej3d0irfsfkhS _btfufafTg5d}cfjgj6d1ivfwflhT `b(kxfyfNfgd.c2i3ihdSidfef3gO (b%kffgfOfid/c4i5ijdTihfif4gP )b'kjfkf
101 def __hash__(self) -> int:
102 cdef GraphHandle g = graph_node_get_graph(self._h_node) 2qdWkXkwlYkZkxlyiMcNcOcwk6i7iDk8i9i!iEk#iWi$i%i'i(i0k1k2k3k4k5k)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk6k7k8k9k!k#kMkNkilOkPkjlQkRkklSkTkllUi'cybzbAbBbgcec;dPc*b!b2bhcQiOi5hKbsdEhhetd6j7jiejjPfQf~h0 icylRfSfEbjekele=d3b4bfc1 jc5b6bFhmeud8j9jnekjTfUfai2 kczlVfWflcmc{bnbobpbqbGhoevd!j#jpeljXfYfbi3 ncAlZf0fHhqewd$j%jremj1f2fci4 ocBl3f4fIhsexd'j(jtenj5f6fdi5 pcCl7f8fydI :b;b=b$b| } Cb6 Fb~ abJhuezd)j*jveoj9f!fei7 qcDl#f$fCi?hAdBdCdDd@hEdFdGdHdV rcsc|brbsbz MbtbubKhweId+j,jxepj%f'ffi8 tcEl(f)fbdcdddedHfIfJfKfLfLhyeJd-j.jzeqj*f+fgi9 ucFl,f-fAepfqfLb!e+b,bq @ -b.bMhBeKd/j:jCerj.f/fhi! vcGl:f;fb A B x k l m n y NbObJbJ K r L M NhDeLd;j=jEesj=f?fii# wcHl@f[fOhFeMd?j@jGetj]f^fji$ xc_f`fPhHeNd[j]jIeuj{f|fki% ycIl}f~fMfQhJeOd^j_jKevjagbgli' zcJlcgdg2h5e7dqkrk6eGjUgVgwi= KcKlWgXg3h7e8dsktk8eHjYgZgxi? LcLl0g1gNfgd.c2i3ihdSidfef3gO (b%kffgfOfid/c4i5ijdTihfif4gP )b'kjfkf
103 return hash((as_intptr(self._h_node), as_intptr(g))) 2qdWkXkwlYkZkxlyiMcNcOcwk6i7iDk8i9i!iEk#iWi$i%i'i(i0k1k2k3k4k5k)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk6k7k8k9k!k#kMkNkilOkPkjlQkRkklSkTkllUi'cybzbAbBbgcec;dPc*b!b2bhcQiOi5hKbsdEhhetd6j7jiejjPfQf~h0 icylRfSfEbjekele=d3b4bfc1 jc5b6bFhmeud8j9jnekjTfUfai2 kczlVfWflcmc{bnbobpbqbGhoevd!j#jpeljXfYfbi3 ncAlZf0fHhqewd$j%jremj1f2fci4 ocBl3f4fIhsexd'j(jtenj5f6fdi5 pcCl7f8fydI :b;b=b$b| } Cb6 Fb~ abJhuezd)j*jveoj9f!fei7 qcDl#f$fCi?hAdBdCdDd@hEdFdGdHdV rcsc|brbsbz MbtbubKhweId+j,jxepj%f'ffi8 tcEl(f)fbdcdddedHfIfJfKfLfLhyeJd-j.jzeqj*f+fgi9 ucFl,f-fAepfqfLb!e+b,bq @ -b.bMhBeKd/j:jCerj.f/fhi! vcGl:f;fb A B x k l m n y NbObJbJ K r L M NhDeLd;j=jEesj=f?fii# wcHl@f[fOhFeMd?j@jGetj]f^fji$ xc_f`fPhHeNd[j]jIeuj{f|fki% ycIl}f~fMfQhJeOd^j_jKevjagbgli' zcJlcgdg2h5e7dqkrk6eGjUgVgwi= KcKlWgXg3h7e8dsktk8eHjYgZgxi? LcLl0g1gNfgd.c2i3ihdSidfef3gO (b%kffgfOfid/c4i5ijdTihfif4gP )b'kjfkf
105 @property
106 def type(self):
107 """Return the CUDA graph node type.
109 Returns
110 -------
111 CUgraphNodeType or None
112 The node type enum value, or None for the entry node.
113 """
114 cdef cydriver.CUgraphNode node = as_cu(self._h_node) 2)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}ksd
115 if node == NULL: 2zf)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}ksd
116 return None 2)ksd
117 cdef cydriver.CUgraphNodeType node_type
118 with nogil: 2*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k
119 HANDLE_RETURN(cydriver.cuGraphNodeGetType(node, &node_type)) 2*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k
120 return driver.CUgraphNodeType(<int>node_type) 2*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k
122 @property
123 def graph(self) -> "GraphDefinition":
124 """Return the GraphDefinition this node belongs to."""
125 return GraphDefinition._from_handle(graph_node_get_graph(self._h_node)) 2uovowoxoyozo
127 @property
128 def handle(self) -> driver.CUgraphNode:
129 """Return the underlying driver CUgraphNode handle.
131 Returns None for the entry node.
132 """
133 return as_py(self._h_node) 2zfsdGf~c(cYiZiadRi[e]e2gH #b$k^e_e
135 @property
136 def is_valid(self):
137 """Whether this node is valid (not destroyed).
139 Returns ``False`` after :meth:`destroy` has been called.
140 """
141 return as_intptr(self._h_node) != 0 2sd
143 def destroy(self):
144 """Destroy this node and remove all its edges from the parent graph.
146 After this call, :attr:`is_valid` returns ``False`` and the node
147 cannot be re-added to any graph. Safe to call on an
148 already-destroyed node (no-op).
149 """
150 cdef cydriver.CUgraphNode node = as_cu(self._h_node) 2cj*b!b2bsd
151 if node == NULL: 2cj*b!b2bsd
152 return 2sd
153 with nogil: 2cj*b!b2bsd
154 HANDLE_RETURN(cydriver.cuGraphDestroyNode(node)) 2cj*b!b2bsd
155 _node_registry.pop(<uintptr_t>self._h_node.get(), None) 2cj*b!b2bsd
156 invalidate_graph_node(self._h_node) 2cj*b!b2bsd
158 @property
159 def pred(self):
160 """A mutable set-like view of this node's predecessors."""
161 return AdjacencySetProxy(self, False) 2]d9e)kyiMcNcOc'h@i[iAo]i^i_i`iBoCoDoEo{i|i}i~iajbjFoGoMkNkilOkPkjl'crdOi5hKbsd
163 @pred.setter
164 def pred(self, value):
165 p = AdjacencySetProxy(self, False) 22b5h
166 p.clear() 22b5h
167 p.update(value) 22b5h
169 @property
170 def succ(self):
171 """A mutable set-like view of this node's successors."""
172 return AdjacencySetProxy(self, True) 2)kyi@i[i]i^i_i`i{i|i}i~iajbjQkRkklSkTkll!bhc3jQiOi5hKb4jsd5j
174 @succ.setter
175 def succ(self, value):
176 s = AdjacencySetProxy(self, True) 2yi5h
177 s.clear() 2yi5h
178 s.update(value) 2yi5h
180 def launch(self, config: LaunchConfig, kernel: Kernel, *args) -> KernelNode:
181 """Add a kernel launch node depending on this node.
183 Parameters
184 ----------
185 config : LaunchConfig
186 Launch configuration (grid, block, shared memory, etc.)
187 kernel : Kernel
188 The kernel to launch.
189 *args
190 Kernel arguments.
192 Returns
193 -------
194 KernelNode
195 A new KernelNode representing the kernel launch.
196 """
197 return GN_launch(self, config, <Kernel>kernel, ParamHolder(args)) 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
199 def join(self, *nodes: GraphNode) -> EmptyNode:
200 """Create an empty node that depends on this node and all given nodes.
202 This is used to synchronize multiple branches of execution.
204 Parameters
205 ----------
206 *nodes : GraphNode
207 Additional nodes to depend on.
209 Returns
210 -------
211 EmptyNode
212 A new EmptyNode that depends on all input nodes.
213 """
214 return GN_join(self, nodes) 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
216 def alloc(self, size_t size, options=None) -> AllocNode:
217 """Add a memory allocation node depending on this node.
219 Parameters
220 ----------
221 size : int
222 Number of bytes to allocate.
223 options : GraphAllocOptions, optional
224 Allocation options. If None, allocates on the current device.
226 Returns
227 -------
228 AllocNode
229 A new AllocNode representing the allocation. Access the allocated
230 device pointer via the dptr property.
231 """
232 return GN_alloc(self, size, options) 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
234 def free(self, dptr: int) -> FreeNode:
235 """Add a memory free node depending on this node.
237 Parameters
238 ----------
239 dptr : int
240 Device pointer to free (typically from AllocNode.dptr).
242 Returns
243 -------
244 FreeNode
245 A new FreeNode representing the free operation.
246 """
247 return GN_free(self, <cydriver.CUdeviceptr>dptr) 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eUkadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
249 def memset(self, dst: int, value, size_t width, size_t height=1, size_t pitch=0) -> MemsetNode:
250 """Add a memset node depending on this node.
252 Parameters
253 ----------
254 dst : int
255 Destination device pointer.
256 value : int or buffer-protocol object
257 Fill value. int for 1-byte fill (range [0, 256)),
258 or buffer-protocol object of 1, 2, or 4 bytes.
259 width : int
260 Width of the row in elements.
261 height : int, optional
262 Number of rows (default 1).
263 pitch : int, optional
264 Pitch of destination in bytes (default 0, unused if height is 1).
266 Returns
267 -------
268 MemsetNode
269 A new MemsetNode representing the memset operation.
270 """
271 cdef unsigned int val
272 cdef unsigned int elem_size
273 val, elem_size = _parse_fill_value(value) 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c4hKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
274 return GN_memset(self, <cydriver.CUdeviceptr>dst, val, elem_size, width, height, pitch) 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
276 def memcpy(self, dst: int, src: int, size_t size) -> MemcpyNode:
277 """Add a memcpy node depending on this node.
279 Copies ``size`` bytes from ``src`` to ``dst``. Memory types are
280 auto-detected via the driver, so both device and pinned host
281 pointers are supported.
283 Parameters
284 ----------
285 dst : int
286 Destination pointer (device or pinned host).
287 src : int
288 Source pointer (device or pinned host).
289 size : int
290 Number of bytes to copy.
292 Returns
293 -------
294 MemcpyNode
295 A new MemcpyNode representing the copy operation.
296 """
297 return GN_memcpy(self, <cydriver.CUdeviceptr>dst, <cydriver.CUdeviceptr>src, size) 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
299 def embed(self, child: GraphDefinition) -> ChildGraphNode:
300 """Add a child graph node depending on this node.
302 Embeds a clone of the given graph definition as a sub-graph node.
303 The child graph must not contain allocation, free, or conditional
304 nodes.
306 Parameters
307 ----------
308 child : GraphDefinition
309 The graph definition to embed (will be cloned).
311 Returns
312 -------
313 ChildGraphNode
314 A new ChildGraphNode representing the embedded sub-graph.
315 """
316 return GN_embed(self, <GraphDefinition>child) 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
318 def record_event(self, event: Event) -> EventRecordNode:
319 """Add an event record node depending on this node.
321 Parameters
322 ----------
323 event : Event
324 The event to record.
326 Returns
327 -------
328 EventRecordNode
329 A new EventRecordNode representing the event record operation.
330 """
331 return GN_record_event(self, <Event>event) 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
333 def wait_event(self, event: Event) -> EventWaitNode:
334 """Add an event wait node depending on this node.
336 Parameters
337 ----------
338 event : Event
339 The event to wait for.
341 Returns
342 -------
343 EventWaitNode
344 A new EventWaitNode representing the event wait operation.
345 """
346 return GN_wait_event(self, <Event>event) 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
348 def callback(self, fn, *, user_data=None) -> HostCallbackNode:
349 """Add a host callback node depending on this node.
351 The callback runs on the host CPU when the graph reaches this node.
352 Two modes are supported:
354 - **Python callable**: Pass any callable. The GIL is acquired
355 automatically. The callable must take no arguments; use closures
356 or ``functools.partial`` to bind state.
357 - **ctypes function pointer**: Pass a ``ctypes.CFUNCTYPE`` instance.
358 The function receives a single ``void*`` argument (the
359 ``user_data``). The caller must keep the ctypes wrapper alive
360 for the lifetime of the graph.
362 .. warning::
364 Callbacks must not call CUDA API functions. Doing so may
365 deadlock or corrupt driver state.
367 Parameters
368 ----------
369 fn : callable or ctypes function pointer
370 The callback function.
371 user_data : int or bytes-like, optional
372 Only for ctypes function pointers. If ``int``, passed as a raw
373 pointer (caller manages lifetime). If bytes-like, the data is
374 copied and its lifetime is tied to the graph.
376 Returns
377 -------
378 HostCallbackNode
379 A new HostCallbackNode representing the callback.
380 """
381 return GN_callback(self, fn, user_data) 2IjVkJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
383 def if_cond(self, condition: GraphCondition) -> IfNode:
384 """Add an if-conditional node depending on this node.
386 The body graph executes only when the condition evaluates to
387 a non-zero value at runtime.
389 Parameters
390 ----------
391 condition : GraphCondition
392 GraphCondition from :meth:`GraphDefinition.create_condition`.
394 Returns
395 -------
396 IfNode
397 A new IfNode with one branch accessible via ``.then``.
398 """
399 return _make_conditional_node( 2qd5g9g%g*g.g=ghj]gyb]eQf4bUfobYf2f6f} !fBdFdsb'fcdJfKfLf+f,b/fl K ?f^f|fbgQbfgcbjgngrgX vg@c_cgbzg*c|e}e~eDgZbHgd E LgsfQg~gwfVgZgefifdhhh
400 self, condition,
401 cydriver.CU_GRAPH_COND_TYPE_IF, 1, IfNode) 2qd5g9g%g*g.g=ghj]gyb]eQf4bUfobYf2f6f} !fBdFdsb'fcdJfKfLf+f,b/fl K ?f^f|fbgQbfgcbjgngrgX vg@c_cgbzg*c|e}e~eDgZbHgd E LgsfQg~gwfVgZgefifdhhh
403 def if_else(self, condition: GraphCondition) -> IfElseNode:
404 """Add an if-else conditional node depending on this node.
406 Two body graphs: the first executes when the condition is
407 non-zero, the second when it is zero.
409 Parameters
410 ----------
411 condition : GraphCondition
412 GraphCondition from :meth:`GraphDefinition.create_condition`.
414 Returns
415 -------
416 IfElseNode
417 A new IfElseNode with branches accessible via
418 ``.then`` and ``.else_``.
419 """
420 return _make_conditional_node( 26g!g'g+g/g?g^gzb[ePf3bTfnbXf1f5f| 9fAdEdrb%fbdHfIfJf*f+b.fk J =f]f{fagPbegbbigmgqgW ug?c^cfbyg)c`e{e|eCgYbGgc D KgrfPg}gvfUgYgdfhfchgh
421 self, condition,
422 cydriver.CU_GRAPH_COND_TYPE_IF, 2, IfElseNode) 26g!g'g+g/g?g^gzb[ePf3bTfnbXf1f5f| 9fAdEdrb%fbdHfIfJf*f+b.fk J =f]f{fagPbegbbigmgqgW ug?c^cfbyg)c`e{e|eCgYbGgc D KgrfPg}gvfUgYgdfhfchgh
424 def while_loop(self, condition: GraphCondition) -> WhileNode:
425 """Add a while-loop conditional node depending on this node.
427 The body graph executes repeatedly while the condition
428 evaluates to a non-zero value.
430 Parameters
431 ----------
432 condition : GraphCondition
433 GraphCondition from :meth:`GraphDefinition.create_condition`.
435 Returns
436 -------
437 WhileNode
438 A new WhileNode with body accessible via ``.body``.
439 """
440 return _make_conditional_node( 28g$g)g-g;g[g`gBb;d_eSf6bWfqb0f4f8fab$fDdHdub)fedIfLf-f.b;fn M [f`f~fMfdgSbhgeblgpgtgZ xg]c{cibBg,c{e~eFg1bJgf G NgufSgafbhyfXg1ggfkffhjh
441 self, condition,
442 cydriver.CU_GRAPH_COND_TYPE_WHILE, 1, WhileNode) 28g$g)g-g;g[g`gBb;d_eSf6bWfqb0f4f8fab$fDdHdub)fedIfLf-f.b;fn M [f`f~fMfdgSbhgeblgpgtgZ xg]c{cibBg,c{e~eFg1bJgf G NgufSgafbhyfXg1ggfkffhjh
444 def switch(self, condition: GraphCondition, unsigned int count) -> SwitchNode:
445 """Add a switch conditional node depending on this node.
447 The condition value selects which branch to execute. If the
448 value is out of range, no branch executes.
450 Parameters
451 ----------
452 condition : GraphCondition
453 GraphCondition from :meth:`GraphDefinition.create_condition`.
454 count : int
455 Number of switch cases (branches).
457 Returns
458 -------
459 SwitchNode
460 A new SwitchNode with branches accessible via ``.branches``.
461 """
462 return _make_conditional_node( 27g#g(g,g:g@gij_gAb^eRf5bVfpbZf3f7f~ #fCdGdtb(fddHfKf,f-b:fm L @f_f}fMfcgRbggdbkgogsgY wg[c`chbAg+c`e}eEg0bIge F MgtfRgafahxfWg0gffjfehih
463 self, condition,
464 cydriver.CU_GRAPH_COND_TYPE_SWITCH, count, SwitchNode) 27g#g(g,g:g@gij_gAb^eRf5bVfpbZf3f7f~ #fCdGdtb(fddHfKf,f-b:fm L @f_f}fMfcgRbggdbkgogsgY wg[c`chbAg+c`e}eEg0bIge F MgtfRgafahxfWg0gffjfehih
467cdef void _destroy_event_handle_copy(void* ptr) noexcept nogil:
468 cdef EventHandle* p = <EventHandle*>ptr 2MlNlOlPlQlRlSlTlUlVlWlXlYlZj/d0j:d1jZl0l1l2l3l4l5l6l~kal7l8l9l!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l?l@l[l]l^l_l`l{lblcl|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmomdlelpmqmrmsmtmumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmflglQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m
469 del p 2MlNlOlPlQlRlSlTlUlVlWlXlYlZj/d0j:d1jZl0l1l2l3l4l5l6l~kal7l8l9l!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l?l@l[l]l^l_l`l{lblcl|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmomdlelpmqmrmsmtmumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmflglQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m
472cdef void _destroy_kernel_handle_copy(void* ptr) noexcept nogil:
473 cdef KernelHandle* p = <KernelHandle*>ptr 2+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~man{hybzbAbBbgc|hecPc*b!b2bhcbncndnenfngnhnin~kaljnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnblclEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1ndlel2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/nflgl:n;n=n?n@n[n]n^n_n`n{n|n}n~naobocodoeofogohoiojokolomonooopoqorosoto
474 del p 2+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~man{hybzbAbBbgc|hecPc*b!b2bhcbncndnenfngnhnin~kaljnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnblclEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1ndlel2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/nflgl:n;n=n?n@n[n]n^n_n`n{n|n}n~naobocodoeofogohoiojokolomonooopoqorosoto
477cdef inline ConditionalNode _make_conditional_node(
478 GraphNode pred,
479 GraphCondition condition,
480 cydriver.CUgraphConditionalNodeType cond_type,
481 unsigned int size,
482 type node_cls):
483 if not isinstance(condition, GraphCondition): 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
484 raise TypeError(
485 f"condition must be a GraphCondition object (from "
486 f"GraphDefinition.create_condition()), got {type(condition).__name__}")
487 cdef cydriver.CUgraphNodeParams params
488 cdef cydriver.CUgraphNode new_node = NULL 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
490 c_memset(¶ms, 0, sizeof(params)) 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
491 params.type = cydriver.CU_GRAPH_NODE_TYPE_CONDITIONAL 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
492 params.conditional.handle = condition._c_handle 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
493 params.conditional.type = cond_type 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
494 params.conditional.size = size 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
496 cdef cydriver.CUcontext ctx = NULL 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
497 cdef GraphHandle h_graph = graph_node_get_graph(pred._h_node) 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
498 cdef cydriver.CUgraphNode pred_node = as_cu(pred._h_node) 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
499 cdef cydriver.CUgraphNode* deps = NULL 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
500 cdef size_t num_deps = 0 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
502 if pred_node != NULL: 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
503 deps = &pred_node
504 num_deps = 1
506 with nogil: 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
507 HANDLE_RETURN(cydriver.cuCtxGetCurrent(&ctx)) 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
508 params.conditional.ctx = ctx 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
510 with nogil: 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
511 IF CUDA_CORE_BUILD_MAJOR >= 13:
512 HANDLE_RETURN(cydriver.cuGraphAddNode( 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[ghjij]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
513 &new_node, as_cu(h_graph), deps, NULL, num_deps, ¶ms))
514 ELSE:
515 HANDLE_RETURN(cydriver.cuGraphAddNode(
516 &new_node, as_cu(h_graph), deps, num_deps, ¶ms))
518 cdef list branch_list = [] 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
519 cdef unsigned int i
520 cdef cydriver.CUgraph bg
521 cdef GraphHandle h_branch
522 for i in range(size): 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
523 bg = params.conditional.phGraph_out[i] 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
524 h_branch = create_graph_handle_ref(bg, h_graph) 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
525 branch_list.append(GraphDefinition._from_handle(h_branch)) 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
526 cdef tuple branches = tuple(branch_list) 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
528 cdef ConditionalNode n = node_cls.__new__(node_cls) 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
529 n._h_node = create_graph_node_handle(new_node, h_graph) 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
530 n._condition = condition 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
531 n._cond_type = cond_type 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
532 n._branches = branches 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
534 return _registered(n) 2qd5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gybzbAbBb;d[e]e^e_ePfQfRfSf3b4b5b6bTfUfVfWfnbobpbqbXfYfZf0f1f2f3f4f5f6f7f8f| } ~ ab9f!f#f$fAdBdCdDdEdFdGdHdrbsbtbub%f'f(f)fbdcdddedHfIfJfKfLf*f+f,f-f+b,b-b.b.f/f:f;fk l m n J K L M =f?f@f[f]f^f_f`f{f|f}f~fMfagbgcgdgPbQbRbSbegfggghgbbcbdbebigjgkglgmgngogpgqgrgsgtgW X Y Z ugvgwgxg?c@c[c]c^c_c`c{cfbgbhbibygzgAgBg)c*c+c,c`e{e|e}e~eCgDgEgFgYbZb0b1bGgHgIgJgc d e f D E F G KgLgMgNgrfsftfufPgQgRgSgaf}g~gahbhvfwfxfyfUgVgWgXgYgZg0g1gdfefffgfhfifjfkfchdhehfhghhhihjh
536cdef inline GraphNode GN_create(GraphHandle h_graph, cydriver.CUgraphNode node):
537 cdef GraphNodeHandle h_node = create_graph_node_handle(node, h_graph) 2qdWkXkYkZkyiMcNcOcwk6i7iDk8i9i!iEk#iWi$i%i'i(i0k1k2k3k4k5k)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbj6k7k8k9k!k#kMkNkOkPkQkRkSkTkUi'cybzbAbBbgcrdec;dPc*b!b2bhcQiOi5hKbsd
539 # Sentinel: virtual node to represent the graph entry point.
540 if node == NULL: 2qdWkXkYkZkyiMcNcOcwk6i7iDk8i9i!iEk#iWi$i%i'i(i0k1k2k3k4k5k)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbj6k7k8k9k!k#kMkNkOkPkQkRkSkTkUi'cybzbAbBbgcrdec;dPc*b!b2bhcQiOi5hKbsd
541 n = GraphNode.__new__(GraphNode)
542 (<GraphNode>n)._h_node = h_node
543 return n
545 # Return a registered object or create and register a new one.
546 registered = _node_registry.get(<uintptr_t>h_node.get()) 2qdWkXkYkZkyiMcNcOcwk6i7iDk8i9i!iEk#iWi$i%i'i(i0k1k2k3k4k5k)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbj6k7k8k9k!k#kMkNkOkPkQkRkSkTkUi'cybzbAbBbgcrdec;dPc*b!b2bhcQiOi5hKbsd
547 if registered is not None: 2qdWkXkYkZkyiMcNcOcwk6i7iDk8i9i!iEk#iWi$i%i'i(i0k1k2k3k4k5k)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbj6k7k8k9k!k#kMkNkOkPkQkRkSkTkUi'cybzbAbBbgcrdec;dPc*b!b2bhcQiOi5hKbsd
548 return <GraphNode>registered 2qdWkXkYkZkyiMcNcOc6i7iDk8i9i!iEk#iWi$i%i'i(i0k1k2k3k4k5k)i*iFk+i,i-i.iGkHkIkJk/iXi:i;i=i?iKkLk@i[i]i^i_i`i{i|i}i~iajbj6k7k8k9k!k#kMkNkOkPkQkRkSkTkUi'crdPc*b!b2bhcQiOi5hKbsd
549 else:
550 return _registered(GN_create_impl(h_node)) 2wk6i7i8i9i!i#iWi$i%i'i(i)i*i+i,i-i.i/iXi:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjybzbAbBbgcec;dKb
553cdef inline GraphNode GN_create_impl(GraphNodeHandle h_node):
554 cdef cydriver.CUgraphNodeType node_type
555 with nogil: 2wk6i7i8i9i!i#iWi$i%i'i(i)i*i+i,i-i.i/iXi:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjybzbAbBbgcec;dKb
556 HANDLE_RETURN(cydriver.cuGraphNodeGetType(as_cu(h_node), &node_type)) 2wk6i7i8i9i!i#iWi$i%i'i(i)i*i+i,i-i.i/iXi:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjybzbAbBbgcec;dKb
558 if node_type == cydriver.CU_GRAPH_NODE_TYPE_EMPTY: 2wk6i7i8i9i!i#iWi$i%i'i(i)i*i+i,i-i.i/iXi:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjybzbAbBbgcec;dKb
559 return EmptyNode._create_impl(h_node) 2WiXi|i
560 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_KERNEL:
561 return KernelNode._create_from_driver(h_node) 2wkybzbAbBbgcecKb
562 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_MEM_ALLOC:
563 return AllocNode._create_from_driver(h_node) 26i7i8i9i!i#iWi$i%i'i(i)i*i+i,i-i.i/iXi:i;i=i?i@i[i]i^i_i`i{i}i~iajbj
564 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_MEM_FREE:
565 return FreeNode._create_from_driver(h_node)
566 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_MEMSET:
567 return MemsetNode._create_from_driver(h_node) 2Kb
568 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_MEMCPY:
569 return MemcpyNode._create_from_driver(h_node)
570 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_GRAPH:
571 return ChildGraphNode._create_from_driver(h_node) 2ec
572 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_EVENT_RECORD:
573 return EventRecordNode._create_from_driver(h_node)
574 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_WAIT_EVENT:
575 return EventWaitNode._create_from_driver(h_node)
576 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_HOST:
577 return HostCallbackNode._create_from_driver(h_node)
578 elif node_type == cydriver.CU_GRAPH_NODE_TYPE_CONDITIONAL:
579 return ConditionalNode._create_from_driver(h_node) 2;d
580 else:
581 n = GraphNode.__new__(GraphNode)
582 (<GraphNode>n)._h_node = h_node
583 return n
586cdef inline KernelNode GN_launch(GraphNode self, LaunchConfig conf, Kernel ker, ParamHolder ker_args):
587 cdef cydriver.CUDA_KERNEL_NODE_PARAMS node_params
588 cdef cydriver.CUgraphNode new_node = NULL 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
589 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
590 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
591 cdef cydriver.CUgraphNode* deps = NULL 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
592 cdef size_t num_deps = 0 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
594 if pred_node != NULL: 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
595 deps = &pred_node 2'h}b~bacbcccdcPc*b!b2bhcKb}h
596 num_deps = 1 2'h}b~bacbcccdcPc*b!b2bhcKb}h
598 node_params.kern = as_cu(ker._h_kernel) 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
599 node_params.func = <cydriver.CUfunction>NULL 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
600 node_params.gridDimX = conf.grid[0] 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
601 node_params.gridDimY = conf.grid[1] 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
602 node_params.gridDimZ = conf.grid[2] 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
603 node_params.blockDimX = conf.block[0] 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
604 node_params.blockDimY = conf.block[1] 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
605 node_params.blockDimZ = conf.block[2] 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
606 node_params.sharedMemBytes = conf.shmem_size 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
607 node_params.kernelParams = <void**><uintptr_t>(ker_args.ptr) 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
608 node_params.extra = NULL 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
609 node_params.ctx = <cydriver.CUcontext>NULL 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
611 with nogil: 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
612 HANDLE_RETURN(cydriver.cuGraphAddKernelNode( 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
613 &new_node, as_cu(h_graph), deps, num_deps, &node_params))
615 _attach_user_object(as_cu(h_graph), <void*>new KernelHandle(ker._h_kernel), 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
616 <cydriver.CUhostFn>_destroy_kernel_handle_copy)
618 return _registered(KernelNode._create_with_params( 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
619 create_graph_node_handle(new_node, h_graph), 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
620 conf.grid, conf.block, conf.shmem_size, 2(eDiEiFiGiHi'hIi)e}b+e~b-eac/ebc;ecc?edc{hybzbAbBbgc|hrdJiKiecPc*b!b2bhcKb}h~c2ghe~hEbfcmeailcmc{bnbobpbqboebiqecisediI CbueeiV wefiyegiAepfqfLb!e+b,bq @ -b.bBehib y DeiiFejiHekiJelivb/bLemi@b[b%bbbcbdbebNeniPeoiRepiC mbTeqiN VeriXesiZd^d_dDb9dYbZbo U 0b1bZetia t 1eui2dkh3evibfLi5dlh5ewi7exigd3gid4glfMinfNi
621 ker._h_kernel))
624cdef inline EmptyNode GN_join(GraphNode self, tuple nodes):
625 cdef vector[cydriver.CUgraphNode] deps
626 cdef cydriver.CUgraphNode new_node = NULL 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
627 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
628 cdef GraphNode other
629 cdef cydriver.CUgraphNode* deps_ptr = NULL 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
630 cdef size_t num_deps = 0 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
631 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
633 if pred_node != NULL: 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
634 deps.push_back(pred_node) 2kdldmdndodpd'c
635 for other in nodes: 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
636 if as_cu((<GraphNode>other)._h_node) != NULL: 2kd!dg h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dpd.dPc*b!b2bhc(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
637 deps.push_back(as_cu((<GraphNode>other)._h_node)) 2kd!dg h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dpd.dPc*b!b2bhc(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
639 num_deps = deps.size() 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
640 if num_deps > 0: 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
641 deps_ptr = deps.data() 2kd!dg h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dpd.d'cPc*b!b2bhc(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
643 with nogil: 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
644 HANDLE_RETURN(cydriver.cuGraphAddEmptyNode( 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
645 &new_node, as_cu(h_graph), deps_ptr, num_deps))
647 return _registered(EmptyNode._create_impl(create_graph_node_handle(new_node, h_graph))) 2kd!dyig h i j McNcOc#d[ $d] ld%dmd'd(d^ )d_ *d` +d{ nd,dod-dcjpd.dUi'cPc*b!b2bhc3jQiOi5h4j5j(cH td0 1 ud2 vd3 wd4 xd5 ydI :b;b=b$b| } Cb6 Fb~ abzd7 z Id8 Jd9 q Kd! b A B x k l m n r Ld# Md$ Nd% Od' Q Sd( Td) Ud* Vd+ =cC 7b8b9bXbW X mbR wbY Z Wd, u Xd- Yd. o 0d/ a v w s c d e f p 1d: |cS 4d; ?djb}cT 7d= 8d? .cO /cP @dkb[dlb
650cdef inline AllocNode GN_alloc(GraphNode self, size_t size, object options):
651 cdef int device_id
652 cdef cydriver.CUdevice dev
654 if options is None or options.device is None: 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
655 with nogil: 2]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
656 HANDLE_RETURN(cydriver.cuCtxGetDevice(&dev)) 2]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
657 device_id = <int>dev 2]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
658 else:
659 device_id = getattr(options.device, 'device_id', options.device) 2_h`h
661 cdef cydriver.CUDA_MEM_ALLOC_NODE_PARAMS alloc_params
662 cdef cydriver.CUgraphNode new_node = NULL 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
663 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
664 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
665 cdef cydriver.CUgraphNode* deps = NULL 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
666 cdef size_t num_deps = 0 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
668 if pred_node != NULL: 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
669 deps = &pred_node 2]dmhkdnhohAfphBfqhldrhshmdthuhCfvhDfwhEfxhFfyhndzhAhodBhChpdDh
670 num_deps = 1 2]dmhkdnhohAfphBfqhldrhshmdthuhCfvhDfwhEfxhFfyhndzhAhodBhChpdDh
672 cdef vector[cydriver.CUmemAccessDesc] access_descs
673 cdef int peer_id
674 cdef list peer_ids = [] 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
676 if options is not None and options.peer_access is not None: 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
677 for peer_dev in options.peer_access:
678 peer_id = getattr(peer_dev, 'device_id', peer_dev)
679 peer_ids.append(peer_id)
680 access_descs.push_back(cydriver.CUmemAccessDesc_st(
681 cydriver.CUmemLocation_st(
682 cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE,
683 peer_id
684 ),
685 cydriver.CUmemAccess_flags.CU_MEM_ACCESS_FLAGS_PROT_READWRITE
686 ))
688 cdef str memory_type = "device" 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
689 if options is not None and options.memory_type is not None: 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
690 memory_type = options.memory_type 2_h`hViAfBfCfDfEfFf
692 c_memset(&alloc_params, 0, sizeof(alloc_params)) 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
693 alloc_params.poolProps.handleTypes = cydriver.CUmemAllocationHandleType.CU_MEM_HANDLE_TYPE_NONE 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
694 alloc_params.bytesize = size 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
696 if memory_type == "device": 2_h`h]dViPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
697 alloc_params.poolProps.allocType = cydriver.CUmemAllocationType.CU_MEM_ALLOCATION_TYPE_PINNED 2_h`h]dPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
698 alloc_params.poolProps.location.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE 2_h`h]dPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
699 alloc_params.poolProps.location.id = device_id 2_h`h]dPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
700 elif memory_type == "host": 2ViAfBfCfDfEfFf
701 alloc_params.poolProps.allocType = cydriver.CUmemAllocationType.CU_MEM_ALLOCATION_TYPE_PINNED
702 alloc_params.poolProps.location.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_HOST
703 alloc_params.poolProps.location.id = 0
704 elif memory_type == "managed": 2ViAfBfCfDfEfFf
705 IF CUDA_CORE_BUILD_MAJOR >= 13:
706 alloc_params.poolProps.allocType = cydriver.CUmemAllocationType.CU_MEM_ALLOCATION_TYPE_MANAGED 2AfBfCfDfEfFf
707 alloc_params.poolProps.location.type = cydriver.CUmemLocationType.CU_MEM_LOCATION_TYPE_DEVICE 2AfBfCfDfEfFf
708 alloc_params.poolProps.location.id = device_id 2AfBfCfDfEfFf
709 ELSE:
710 raise ValueError("memory_type='managed' requires CUDA 13.0 or later")
711 else:
712 raise ValueError(f"Invalid memory_type: {memory_type!r}. " 2Vi
713 "Must be 'device', 'host', or 'managed'.")
715 if access_descs.size() > 0: 2_h`h]dPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
716 alloc_params.accessDescs = access_descs.data()
717 alloc_params.accessDescCount = access_descs.size()
719 with nogil: 2_h`h]dPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
720 HANDLE_RETURN(cydriver.cuGraphAddMemAllocNode( 2_h`h]dPi6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
721 &new_node, as_cu(h_graph), deps, num_deps, &alloc_params))
723 return _registered(AllocNode._create_with_params( 2_h`h]d6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
724 create_graph_node_handle(new_node, h_graph), alloc_params.dptr, size, 2_h`h]d6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
725 device_id, memory_type, tuple(peer_ids))) 2_h`h]d6h7h8hmhkd9h!dnh!h9e#e$e%e'eg h i j TbUbVbWb#h$h%hMcNcOcohAf#d`d{d*e}b[ QcRcScTcphBf$d|d}d,e~b] UcVcWcXcqhld(h%drh)hshmd*h'dth+huhCf(d~dae.eac^ YcZc0c1cvhDf)dbece:ebc_ 2c3c4c5cwhEf*ddeee=ecc` 6c7c8c9cxhFf+dfege@edc{ !c#c$c%cyhnd,h,dzh-hAhod.h-dBh/hChpd:h.dDh;h'c4h=h/d:dGf(cadH #bEhtdie0 icEbjekele=d3b4bfc1 jc5b6bFhudne2 kcGhvdpe3 ncHhwdre4 ocIhxdte5 pcydI :b;b=b$b| } Cb6 Fb~ abJhzdve7 qcV rcsc|brbsbz MbtbubKhIdxe8 tcLhJdze9 ucLbq @ MhKdCe! vcb A B x k l m n y NbObJbJ K r L M NhLdEe# wcOhMdGe$ xcPhNdIe% ycQhOdKe' zcvbPdQdRdfdPbQb/bQ ?bRbSbRhSdMe( AcShTdOe) BcThUdQe* CcUhVdSe+ Dc=cC 7b8b9bXbW X mbR wbY Z VhWdUe, EcN ]b^b'bfbgbu GbhbibXhXdWe- FcYhYdYe. GcDbo U Zh0d0e/ Hca v w s c d e f t HbIbxbD E p F G 0h1d2e: IcOg|c3dS _b1h4d4e; Jc[h?dcfjb-cTg}c6dT `b2h7d6e= Kc3h8d8e? LcNf.chdO (bOf/cjdP )b]h@dmfkb:c^h[doflb;c
728cdef inline FreeNode GN_free(GraphNode self, cydriver.CUdeviceptr c_dptr):
729 cdef cydriver.CUgraphNode new_node = NULL 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eUkadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
730 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eUkadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
731 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eUkadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
732 cdef cydriver.CUgraphNode* deps = NULL 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eUkadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
733 cdef size_t num_deps = 0 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eUkadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
735 if pred_node != NULL: 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eUkadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
736 deps = &pred_node 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
737 num_deps = 1 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
739 with nogil: 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eUkadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
740 HANDLE_RETURN(cydriver.cuGraphAddMemFreeNode( 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eUkadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
741 &new_node, as_cu(h_graph), deps, num_deps, c_dptr))
743 return _registered(FreeNode._create_with_params(create_graph_node_handle(new_node, h_graph), c_dptr)) 2]d9e#e$e%e'eg h i j TbUbVbWb*e,e.e:e=e@eadieleneperete=bveV rcsc|brbsbz MbtbubxezeLbCeEeGeIeKeRdMeOeQeSe9bUeN ]b^b'bfbgbu GbhbibWeYeDb0e2e3d4ecf6d6e8ehdjdmfof
746cdef inline MemsetNode GN_memset(
747 GraphNode self, cydriver.CUdeviceptr c_dst,
748 unsigned int val, unsigned int elem_size,
749 size_t width, size_t height, size_t pitch):
750 cdef cydriver.CUDA_MEMSET_NODE_PARAMS memset_params
751 cdef cydriver.CUgraphNode new_node = NULL 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
752 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
753 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
754 cdef cydriver.CUgraphNode* deps = NULL 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
755 cdef size_t num_deps = 0 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
757 if pred_node != NULL: 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
758 deps = &pred_node 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
759 num_deps = 1 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
761 cdef cydriver.CUcontext ctx = NULL 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
762 with nogil: 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
763 HANDLE_RETURN(cydriver.cuCtxGetCurrent(&ctx)) 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
765 c_memset(&memset_params, 0, sizeof(memset_params)) 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
766 memset_params.dst = c_dst 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
767 memset_params.value = val 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
768 memset_params.elementSize = elem_size 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
769 memset_params.width = width 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
770 memset_params.height = height 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
771 memset_params.pitch = pitch 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
773 with nogil: 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
774 HANDLE_RETURN(cydriver.cuGraphAddMemsetNode( 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
775 &new_node, as_cu(h_graph), deps, num_deps,
776 &memset_params, ctx))
778 return _registered(MemsetNode._create_with_params( 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
779 create_graph_node_handle(new_node, h_graph), c_dst, 2g h i j TbUbVbWbQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%cKbsd#bicjckcncocpcFbqcMbtcuc@ vcy NbObJbJ K r L M wcxcyczc?bAcBcCcDcwbEcGbFcGcU Hct HbIbxbD E p F G Ic_bJc-c`bKcLc(b)b:c;c
780 val, elem_size, width, height, pitch))
783cdef inline MemcpyNode GN_memcpy(
784 GraphNode self, cydriver.CUdeviceptr c_dst,
785 cydriver.CUdeviceptr c_src, size_t size):
786 cdef unsigned int dst_mem_type = cydriver.CU_MEMORYTYPE_DEVICE 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
787 cdef unsigned int src_mem_type = cydriver.CU_MEMORYTYPE_DEVICE 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
788 cdef cydriver.CUresult ret
789 with nogil: 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
790 ret = cydriver.cuPointerGetAttribute( 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
791 &dst_mem_type,
792 cydriver.CU_POINTER_ATTRIBUTE_MEMORY_TYPE,
793 c_dst)
794 if ret != cydriver.CUDA_SUCCESS and ret != cydriver.CUDA_ERROR_INVALID_VALUE: 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
795 HANDLE_RETURN(ret)
796 ret = cydriver.cuPointerGetAttribute( 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
797 &src_mem_type,
798 cydriver.CU_POINTER_ATTRIBUTE_MEMORY_TYPE,
799 c_src)
800 if ret != cydriver.CUDA_SUCCESS and ret != cydriver.CUDA_ERROR_INVALID_VALUE: 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
801 HANDLE_RETURN(ret)
803 cdef cydriver.CUmemorytype c_dst_type = <cydriver.CUmemorytype>dst_mem_type 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
804 cdef cydriver.CUmemorytype c_src_type = <cydriver.CUmemorytype>src_mem_type 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
806 cdef cydriver.CUDA_MEMCPY3D params
807 c_memset(¶ms, 0, sizeof(params)) 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
809 params.srcMemoryType = c_src_type 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
810 params.dstMemoryType = c_dst_type 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
811 if c_src_type == cydriver.CU_MEMORYTYPE_HOST: 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
812 params.srcHost = <const void*><uintptr_t>c_src
813 else:
814 params.srcDevice = c_src 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
815 if c_dst_type == cydriver.CU_MEMORYTYPE_HOST: 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
816 params.dstHost = <void*><uintptr_t>c_dst
817 else:
818 params.dstDevice = c_dst 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
819 params.WidthInBytes = size 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
820 params.Height = 1 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
821 params.Depth = 1 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
823 cdef cydriver.CUgraphNode new_node = NULL 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
824 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
825 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
826 cdef cydriver.CUgraphNode* deps = NULL 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
827 cdef size_t num_deps = 0 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
829 if pred_node != NULL: 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
830 deps = &pred_node 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
831 num_deps = 1 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
833 cdef cydriver.CUcontext ctx = NULL 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
834 with nogil: 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
835 HANDLE_RETURN(cydriver.cuCtxGetCurrent(&ctx)) 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
836 HANDLE_RETURN(cydriver.cuGraphAddMemcpyNode( 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
837 &new_node, as_cu(h_graph), deps, num_deps, ¶ms, ctx))
839 return _registered(MemcpyNode._create_with_params( 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
840 create_graph_node_handle(new_node, h_graph), c_dst, c_src, size, 2g h i j [ ] ^ _ ` { H 0 1 2 3 4 5 6 7 z 8 9 q ! b A B x k l m n r # $ % ' Q ( ) * + R , u - . o / a v w s c d e f p : S ; jbT = ? O P kblb
841 c_dst_type, c_src_type))
844cdef inline ChildGraphNode GN_embed(GraphNode self, GraphDefinition child_def):
845 cdef cydriver.CUgraphNode new_node = NULL 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
846 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
847 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
848 cdef cydriver.CUgraphNode* deps = NULL 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
849 cdef size_t num_deps = 0 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
851 if pred_node != NULL: 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
852 deps = &pred_node
853 num_deps = 1
855 with nogil: 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
856 HANDLE_RETURN(cydriver.cuGraphAddChildGraphNode( 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
857 &new_node, as_cu(h_graph), deps, num_deps, as_cu(child_def._h_graph)))
859 cdef cydriver.CUgraph embedded_graph = NULL 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
860 with nogil: 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
861 HANDLE_RETURN(cydriver.cuGraphChildGraphNodeGetGraph( 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
862 new_node, &embedded_graph))
864 cdef GraphHandle h_embedded = create_graph_handle_ref(embedded_graph, h_graph) 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
866 return _registered(ChildGraphNode._create_with_params( 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
867 create_graph_node_handle(new_node, h_graph), h_embedded)) 2(e)e+e-e/e;e?egcec~cheEbmelcmc{bnbobpbqboeqeseI ueV weyeAeBeb y DeFeHeJevbLe@b[b%bbbcbdbebNePeReC TeN VeXeZdZea t 1e2d3ebf5d5e7egdidlfnf
870cdef inline EventRecordNode GN_record_event(GraphNode self, Event ev):
871 cdef cydriver.CUgraphNode new_node = NULL 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
872 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
873 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
874 cdef cydriver.CUgraphNode* deps = NULL 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
875 cdef size_t num_deps = 0 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
877 if pred_node != NULL: 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
878 deps = &pred_node 2`d|d~dbedefe/drd
879 num_deps = 1 2`d|d~dbedefe/drd
881 with nogil: 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
882 HANDLE_RETURN(cydriver.cuGraphAddEventRecordNode( 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
883 &new_node, as_cu(h_graph), deps, num_deps, as_cu(ev._h_event)))
885 _attach_user_object(as_cu(h_graph), <void*>new EventHandle(ev._h_event), 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
886 <cydriver.CUhostFn>_destroy_event_handle_copy)
888 return _registered(EventRecordNode._create_with_params( 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
889 create_graph_node_handle(new_node, h_graph), ev._h_event)) 2zi`d|d~dbedefeZj/d0jAiBirdYi6jje8jlc!j$j'j:b)jCi?hAdBdCdDdrc+j-jpf/jA Nb;j?j[j^jPd`j@b|j~jbk7bdkWh{g?c@c[c]c]bfkhk^djkv Hblkdjnkxkfjqksk2i4izkBk
892cdef inline EventWaitNode GN_wait_event(GraphNode self, Event ev):
893 cdef cydriver.CUgraphNode new_node = NULL 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
894 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
895 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
896 cdef cydriver.CUgraphNode* deps = NULL 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
897 cdef size_t num_deps = 0 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
899 if pred_node != NULL: 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
900 deps = &pred_node 2zi{d}daeceeegeAiBi:d
901 num_deps = 1 2zi{d}daeceeegeAiBi:d
903 with nogil: 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
904 HANDLE_RETURN(cydriver.cuGraphAddEventWaitNode( 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
905 &new_node, as_cu(h_graph), deps, num_deps, as_cu(ev._h_event)))
907 _attach_user_object(as_cu(h_graph), <void*>new EventHandle(ev._h_event), 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
908 <cydriver.CUhostFn>_destroy_event_handle_copy)
910 return _registered(EventWaitNode._create_with_params( 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
911 create_graph_node_handle(new_node, h_graph), ev._h_event)) 2zi{d}daeceeegeAiBi:d1jZi7jke9jmc#j%j(j;b*jCi@hEdFdGdHdsc,j.jqf:jB Ob=j@j]j_jQd{j[b}jakck8bekWh|g^c_c`c{c^bgkik_dkkw Ibmkejokykgjrktk3i5iAkCk
914cdef inline HostCallbackNode GN_callback(GraphNode self, object fn, object user_data):
915 import ctypes as ct 2IjVkJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
917 cdef cydriver.CUDA_HOST_NODE_PARAMS node_params
918 cdef cydriver.CUgraphNode new_node = NULL 2IjVkJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
919 cdef GraphHandle h_graph = graph_node_get_graph(self._h_node) 2IjVkJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
920 cdef cydriver.CUgraphNode pred_node = as_cu(self._h_node) 2IjVkJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
921 cdef cydriver.CUgraphNode* deps = NULL 2IjVkJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
922 cdef size_t num_deps = 0 2IjVkJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
924 if pred_node != NULL: 2IjVkJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
925 deps = &pred_node
926 num_deps = 1
928 _attach_host_callback_to_graph( 2IjVkJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
929 as_cu(h_graph), fn, user_data,
930 &node_params.fn, &node_params.userData)
932 with nogil: 2IjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
933 HANDLE_RETURN(cydriver.cuGraphAddHostNode( 2IjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
934 &new_node, as_cu(h_graph), deps, num_deps, &node_params))
936 cdef object callable_obj = fn if not isinstance(fn, ct._CFuncPtr) else None 2IjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
937 return _registered(HostCallbackNode._create_with_params( 2IjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
938 create_graph_node_handle(new_node, h_graph), callable_obj, 2IjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYj2jRijj=dkj{bljmjnj$boj?h@h|bpjbdcdddedqj!erjx Jbsjtjujvjfdwj%bxjyjzjXbAj{g|g'bBj)c*c+c,cCj9dDjs xbEj0iFjpk1iGjHjSiTiukvk
939 node_params.fn, node_params.userData))