Coverage for cuda/core/_context.pyx: 67.31%

52 statements  

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

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

2# 

3# SPDX-License-Identifier: Apache-2.0 

4  

5from __future__ import annotations 

6  

7from collections.abc import Sequence 

8from dataclasses import dataclass 

9from typing import TYPE_CHECKING 

10  

11from cuda.bindings cimport cydriver 

12from cuda.core._device_resources cimport DeviceResources, SMResource, WorkqueueResource 

13from cuda.core._device_resources import SMResource, WorkqueueResource 

14from cuda.core._rt cimport ( 

15 ContextHandle, 

16 GreenCtxHandle, 

17 as_cu, 

18 create_context_handle_from_green_ctx, 

19 get_context_green_ctx, 

20 get_last_error, 

21 as_intptr, 

22 as_py, 

23) 

24from cuda.core._stream import Stream, StreamOptions 

25from cuda.core._utils.cuda_utils cimport HANDLE_RETURN 

26  

27if TYPE_CHECKING: 

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

29  

30  

31__all__ = ['Context', 'ContextOptions'] 

32  

33  

34DeviceResourcesType = Sequence[SMResource | WorkqueueResource] 

35  

36  

37cdef class Context: 

38 """CUDA context wrapper. 

39  

40 Context objects represent CUDA contexts and cannot be instantiated directly. 

41 Use Device or Stream APIs to obtain context objects. 

42 """ 

43  

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

45 raise RuntimeError("Context objects cannot be instantiated directly. Please use Device or Stream APIs.") 2TH

46  

47 @staticmethod 

48 cdef Context _from_handle(type cls, ContextHandle h_context, int device_id): 

49 """Create Context from existing ContextHandle (cdef-only factory).""" 

50 cdef Context ctx = cls.__new__(cls) 2TcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cm +cn ,co -c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddp edfdgdhdq idr jds kdt ldu mdv ndw odx pdy qdz rdA sdB tdC udD vdE wdF xdG ydH zdI AdJ BdK CdL DdM EdN FdO GdP HdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[fb ]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuh( vh) wh* xhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi+ 0i1i2i3i4i5i6i7i8i9i!i#i$iQ %i'i(i)i*i+i,i, -i- .i/i:i;i=iR ?i@i[i]i^i_i`i. / : ; = ? @ [ ] ^ _ ` {i{ | } ~ ab|ibbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxb}iybzb~iAbajBbCbbjDbcjEbFbGbHbdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjIbPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlX XlS YlT ZlY 0ll 1lW 2l3l4l5lU 6l7l8l9l!l#l$l%l'l(l)l*l+lh ,l-l.l/l:l;l=l?l@l[l]l^l_l`l{l|l}l~lZ ambmcmdmemfmgmJbhmKbimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmf Zm0 0m1m1 2 c 2md 3m3 4 i 5 4mj 6 7 8 k 9 ! 5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^ma _m`m{m|m# g }m~manbncnLbdnMbenNbfnObgnPbhnQbinRbjnSbknlnmnTbnnonUbpnVbqnWbrnXbsnYbtnZbun0bvn1bwnxn2byn3bzn4bAn5bBn6bCn7bDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/n:n;n=n?n@n[n]n^n_n`n{n|n}n~naobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o6o7o8o9o!o#o$o%o'o(o)o*o8b9b!b#b$b+o,o-o.o/o:o;o=o?o@o[o]o^o_o`o{o|o}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p3p4p5p6p7p8p9p!p#p$p%p'p(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqlq%b'bmqnqoqpqqqrqsqtq(buqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJq)b*bKqLq+b,b-b.bMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q/b6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r:b`r;b{r=b|r?b}r@b~r[bas]bbs^bcs_bdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs`bSsTsUsVsWsXsYsZs0s1s2s{b3s4s5s6s7s8s9s!s#s$s%s|b's}b(s)s*s+s,s-s.s/s:s~b;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftacgtbchtccitdcjtecktfcltmtntotptqtrtstttutvtwtxtytztAtBtCtDtEtFtGtHtItJtKtLtMtgcNtOtPtQtRtStTtUtVtWtXthcYticZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t't(t)t*t+t,t-t.t/t:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|u}u~uavbvjccvdvevfvgvhvkcivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzvAvBvCvlcDvEvFvGvmcHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv0v1v2vnc3v4v5v6v7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=voc?v@vpc[v]v^v_vqcrc`v{v|v}v~vawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwscxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwtcUwVwWwXwYwZw0w1w2w3w4w5w6w7w8w9w!w#w$w%w'w(w)wuc*w+w,w-w.w/w:w;w=w?w@w[w]w^w_w`w{w|w}w~waxbxcxvcdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzxwcAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxxcXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-xyc.x/x:x;x=x?x@x[x]x^x_x`x{x|x}x~xaybycydyeyfygyhyzciyjykylymynyoypyqyrysytyuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4y5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlz$ mznzozpzqzrzsztzV uzvzwzxzyzzzAcAzBzCzDzEzFzGzHzIzJzKzLzMzNzOzBcPzQzRzSzTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A/A:A;A=A?Ae @A[A]A^A_A`A{A|A}A~AaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB0B1B2B3B4B5B6B7B8B9B!B#B$B%B'B(B)B*B+B,B-B.B/B:B;B=B?B@B[B]B^B_B`B{B|B}B~BaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKC

51 ctx._h_context = h_context 2TcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cm +cn ,co -c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddp edfdgdhdq idr jds kdt ldu mdv ndw odx pdy qdz rdA sdB tdC udD vdE wdF xdG ydH zdI AdJ BdK CdL DdM EdN FdO GdP HdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[fb ]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuh( vh) wh* xhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi+ 0i1i2i3i4i5i6i7i8i9i!i#i$iQ %i'i(i)i*i+i,i, -i- .i/i:i;i=iR ?i@i[i]i^i_i`i. / : ; = ? @ [ ] ^ _ ` {i{ | } ~ ab|ibbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxb}iybzb~iAbajBbCbbjDbcjEbFbGbHbdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjIbPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlX XlS YlT ZlY 0ll 1lW 2l3l4l5lU 6l7l8l9l!l#l$l%l'l(l)l*l+lh ,l-l.l/l:l;l=l?l@l[l]l^l_l`l{l|l}l~lZ ambmcmdmemfmgmJbhmKbimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmf Zm0 0m1m1 2 c 2md 3m3 4 i 5 4mj 6 7 8 k 9 ! 5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^ma _m`m{m|m# g }m~manbncnLbdnMbenNbfnObgnPbhnQbinRbjnSbknlnmnTbnnonUbpnVbqnWbrnXbsnYbtnZbun0bvn1bwnxn2byn3bzn4bAn5bBn6bCn7bDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/n:n;n=n?n@n[n]n^n_n`n{n|n}n~naobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o6o7o8o9o!o#o$o%o'o(o)o*o8b9b!b#b$b+o,o-o.o/o:o;o=o?o@o[o]o^o_o`o{o|o}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p3p4p5p6p7p8p9p!p#p$p%p'p(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqlq%b'bmqnqoqpqqqrqsqtq(buqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJq)b*bKqLq+b,b-b.bMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q/b6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r:b`r;b{r=b|r?b}r@b~r[bas]bbs^bcs_bdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs`bSsTsUsVsWsXsYsZs0s1s2s{b3s4s5s6s7s8s9s!s#s$s%s|b's}b(s)s*s+s,s-s.s/s:s~b;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftacgtbchtccitdcjtecktfcltmtntotptqtrtstttutvtwtxtytztAtBtCtDtEtFtGtHtItJtKtLtMtgcNtOtPtQtRtStTtUtVtWtXthcYticZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t't(t)t*t+t,t-t.t/t:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|u}u~uavbvjccvdvevfvgvhvkcivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzvAvBvCvlcDvEvFvGvmcHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv0v1v2vnc3v4v5v6v7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=voc?v@vpc[v]v^v_vqcrc`v{v|v}v~vawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwscxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwtcUwVwWwXwYwZw0w1w2w3w4w5w6w7w8w9w!w#w$w%w'w(w)wuc*w+w,w-w.w/w:w;w=w?w@w[w]w^w_w`w{w|w}w~waxbxcxvcdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzxwcAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxxcXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-xyc.x/x:x;x=x?x@x[x]x^x_x`x{x|x}x~xaybycydyeyfygyhyzciyjykylymynyoypyqyrysytyuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4y5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlz$ mznzozpzqzrzsztzV uzvzwzxzyzzzAcAzBzCzDzEzFzGzHzIzJzKzLzMzNzOzBcPzQzRzSzTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A/A:A;A=A?Ae @A[A]A^A_A`A{A|A}A~AaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB0B1B2B3B4B5B6B7B8B9B!B#B$B%B'B(B)B*B+B,B-B.B/B:B;B=B?B@B[B]B^B_B`B{B|B}B~BaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKC

52 ctx._device_id = device_id 2TcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cm +cn ,co -c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddp edfdgdhdq idr jds kdt ldu mdv ndw odx pdy qdz rdA sdB tdC udD vdE wdF xdG ydH zdI AdJ BdK CdL DdM EdN FdO GdP HdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[fb ]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuh( vh) wh* xhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi+ 0i1i2i3i4i5i6i7i8i9i!i#i$iQ %i'i(i)i*i+i,i, -i- .i/i:i;i=iR ?i@i[i]i^i_i`i. / : ; = ? @ [ ] ^ _ ` {i{ | } ~ ab|ibbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxb}iybzb~iAbajBbCbbjDbcjEbFbGbHbdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjIbPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlX XlS YlT ZlY 0ll 1lW 2l3l4l5lU 6l7l8l9l!l#l$l%l'l(l)l*l+lh ,l-l.l/l:l;l=l?l@l[l]l^l_l`l{l|l}l~lZ ambmcmdmemfmgmJbhmKbimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmf Zm0 0m1m1 2 c 2md 3m3 4 i 5 4mj 6 7 8 k 9 ! 5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^ma _m`m{m|m# g }m~manbncnLbdnMbenNbfnObgnPbhnQbinRbjnSbknlnmnTbnnonUbpnVbqnWbrnXbsnYbtnZbun0bvn1bwnxn2byn3bzn4bAn5bBn6bCn7bDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/n:n;n=n?n@n[n]n^n_n`n{n|n}n~naobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o6o7o8o9o!o#o$o%o'o(o)o*o8b9b!b#b$b+o,o-o.o/o:o;o=o?o@o[o]o^o_o`o{o|o}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p3p4p5p6p7p8p9p!p#p$p%p'p(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqlq%b'bmqnqoqpqqqrqsqtq(buqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJq)b*bKqLq+b,b-b.bMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q/b6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r:b`r;b{r=b|r?b}r@b~r[bas]bbs^bcs_bdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs`bSsTsUsVsWsXsYsZs0s1s2s{b3s4s5s6s7s8s9s!s#s$s%s|b's}b(s)s*s+s,s-s.s/s:s~b;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftacgtbchtccitdcjtecktfcltmtntotptqtrtstttutvtwtxtytztAtBtCtDtEtFtGtHtItJtKtLtMtgcNtOtPtQtRtStTtUtVtWtXthcYticZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t't(t)t*t+t,t-t.t/t:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|u}u~uavbvjccvdvevfvgvhvkcivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzvAvBvCvlcDvEvFvGvmcHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv0v1v2vnc3v4v5v6v7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=voc?v@vpc[v]v^v_vqcrc`v{v|v}v~vawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwscxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwtcUwVwWwXwYwZw0w1w2w3w4w5w6w7w8w9w!w#w$w%w'w(w)wuc*w+w,w-w.w/w:w;w=w?w@w[w]w^w_w`w{w|w}w~waxbxcxvcdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzxwcAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxxcXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-xyc.x/x:x;x=x?x@x[x]x^x_x`x{x|x}x~xaybycydyeyfygyhyzciyjykylymynyoypyqyrysytyuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4y5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlz$ mznzozpzqzrzsztzV uzvzwzxzyzzzAcAzBzCzDzEzFzGzHzIzJzKzLzMzNzOzBcPzQzRzSzTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A/A:A;A=A?Ae @A[A]A^A_A`A{A|A}A~AaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB0B1B2B3B4B5B6B7B8B9B!B#B$B%B'B(B)B*B+B,B-B.B/B:B;B=B?B@B[B]B^B_B`B{B|B}B~BaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKC

53 return ctx 2TcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*cm +cn ,co -c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdcdddp edfdgdhdq idr jds kdt ldu mdv ndw odx pdy qdz rdA sdB tdC udD vdE wdF xdG ydH zdI AdJ BdK CdL DdM EdN FdO GdP HdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[fb ]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuh( vh) wh* xhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi+ 0i1i2i3i4i5i6i7i8i9i!i#i$iQ %i'i(i)i*i+i,i, -i- .i/i:i;i=iR ?i@i[i]i^i_i`i. / : ; = ? @ [ ] ^ _ ` {i{ | } ~ ab|ibbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxb}iybzb~iAbajBbCbbjDbcjEbFbGbHbdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjIbPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlX XlS YlT ZlY 0ll 1lW 2l3l4l5lU 6l7l8l9l!l#l$l%l'l(l)l*l+lh ,l-l.l/l:l;l=l?l@l[l]l^l_l`l{l|l}l~lZ ambmcmdmemfmgmJbhmKbimjmkmlmmmnmompmqmrmsmtmumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmf Zm0 0m1m1 2 c 2md 3m3 4 i 5 4mj 6 7 8 k 9 ! 5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^ma _m`m{m|m# g }m~manbncnLbdnMbenNbfnObgnPbhnQbinRbjnSbknlnmnTbnnonUbpnVbqnWbrnXbsnYbtnZbun0bvn1bwnxn2byn3bzn4bAn5bBn6bCn7bDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/n:n;n=n?n@n[n]n^n_n`n{n|n}n~naobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o6o7o8o9o!o#o$o%o'o(o)o*o8b9b!b#b$b+o,o-o.o/o:o;o=o?o@o[o]o^o_o`o{o|o}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p3p4p5p6p7p8p9p!p#p$p%p'p(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqlq%b'bmqnqoqpqqqrqsqtq(buqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJq)b*bKqLq+b,b-b.bMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q/b6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r:b`r;b{r=b|r?b}r@b~r[bas]bbs^bcs_bdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs`bSsTsUsVsWsXsYsZs0s1s2s{b3s4s5s6s7s8s9s!s#s$s%s|b's}b(s)s*s+s,s-s.s/s:s~b;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftacgtbchtccitdcjtecktfcltmtntotptqtrtstttutvtwtxtytztAtBtCtDtEtFtGtHtItJtKtLtMtgcNtOtPtQtRtStTtUtVtWtXthcYticZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t't(t)t*t+t,t-t.t/t:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|u}u~uavbvjccvdvevfvgvhvkcivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzvAvBvCvlcDvEvFvGvmcHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv0v1v2vnc3v4v5v6v7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=voc?v@vpc[v]v^v_vqcrc`v{v|v}v~vawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwscxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwtcUwVwWwXwYwZw0w1w2w3w4w5w6w7w8w9w!w#w$w%w'w(w)wuc*w+w,w-w.w/w:w;w=w?w@w[w]w^w_w`w{w|w}w~waxbxcxvcdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzxwcAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxxcXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-xyc.x/x:x;x=x?x@x[x]x^x_x`x{x|x}x~xaybycydyeyfygyhyzciyjykylymynyoypyqyrysytyuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4y5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlz$ mznzozpzqzrzsztzV uzvzwzxzyzzzAcAzBzCzDzEzFzGzHzIzJzKzLzMzNzOzBcPzQzRzSzTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A/A:A;A=A?Ae @A[A]A^A_A`A{A|A}A~AaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBXBYBZB0B1B2B3B4B5B6B7B8B9B!B#B$B%B'B(B)B*B+B,B-B.B/B:B;B=B?B@B[B]B^B_B`B{B|B}B~BaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKC

54  

55 @staticmethod 

56 cdef Context _from_green_ctx(type cls, GreenCtxHandle h_green_ctx, int device_id): 

57 """Create Context from an owning green context handle.""" 

58 cdef ContextHandle h_context = create_context_handle_from_green_ctx(h_green_ctx) 1bf012cd3456789!a#ge

59 if not h_context: 1bf012cd3456789!a#ge

60 HANDLE_RETURN(get_last_error()) 

61 raise RuntimeError("Failed to create CUDA context view from green context") 

62 return Context._from_handle(cls, h_context, device_id) 1bf012cd3456789!a#ge

63  

64 @property 

65 def handle(self) -> cuda.bindings.driver.CUcontext | None: 

66 """Return the underlying CUcontext handle.""" 

67 if not self._h_context: 2m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P b Q R U h NCZ OCPCj Cca % $ V e

68 return None 1a

69 if as_cu(self._h_context) == NULL: 2m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P b Q R U h NCZ OCPCj Cca % $ V e

70 return None 

71 return as_py(self._h_context) 2m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P b Q R U h NCZ OCPCj Cca % $ V e

72  

73 @property 

74 def _handle(self) -> cuda.bindings.driver.CUcontext | None: 

75 return self.handle 1a

76  

77 @property 

78 def is_closed(self) -> bool: 

79 """Whether this context has been closed.""" 

80 return self._h_context.get() == NULL 1g

81  

82 @property 

83 def is_green(self) -> bool: 

84 """True if this context was created from device resources.""" 

85 if not self._h_context: 2QCRCSCTCUCVCWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'Cm n o (C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|Cp }C~Cq r s t u v w x y z A B C D E F G H I J K L M N O P aDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzDb ADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD0D1D2D3D4D5D6D7D8D( ) * 9D!D#D$D%D'D(D)D*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzEAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVE+ WEXEYEZE0E1E2E3E4EQ 5E6E7E8E9E!E, - #E$E%ER 'E. / (E: )E; *E= ? @ [ +E] ,E^ _ -E` .E{ /E| } ~ ab:E;Ebb=Ecb?Edb@Eebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzb[EAb]EBbCb^EDbEbFbGbHb_E`E{E|E}E~EaFbFcFdFeFfFgFhFiFjFkFlFIbmFnFoFpFqFrFsFtFuFvFwFxFyFzFX S T Y l W U AFh BFCFJbDFKbEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF0F1F2F3F4F5F6F' Dcc d Eci Fcj Cc7Fk a 8FLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b9F!F#F$F%F'F(F)F*F+F,F-F.F8b9b!b#b$b/F:F;F=F?F@F[F]F^F_F`F{F|F}F~FaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G1G2G3G4G5G6G7G8G9G!G#G$G%G'G(G)G*G+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G%b'b(b)b*b+b,b-b.b{G/b:b;b=b?b@b[b]b^b_b|G`b}G{b~GaH|b}b~bacbcccdcecfcgchcicbHcHdHjckclcmcncocpcqcrcsctcucvcwcxcyczceHfHgHV hHiHjHkHlHAcmHnHoHpHqHrHsHtHuHvHwHxHyHzHBcAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQH

86 return False 1a

87 return get_context_green_ctx(self._h_context).get() != NULL 2QCRCSCTCUCVCWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'Cm n o (C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|Cp }C~Cq r s t u v w x y z A B C D E F G H I J K L M N O P aDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxDyDzDb ADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSDTDUDVDWDXDYDZD0D1D2D3D4D5D6D7D8D( ) * 9D!D#D$D%D'D(D)D*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzEAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESETEUEVE+ WEXEYEZE0E1E2E3E4EQ 5E6E7E8E9E!E, - #E$E%ER 'E. / (E: )E; *E= ? @ [ +E] ,E^ _ -E` .E{ /E| } ~ ab:E;Ebb=Ecb?Edb@Eebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzb[EAb]EBbCb^EDbEbFbGbHb_E`E{E|E}E~EaFbFcFdFeFfFgFhFiFjFkFlFIbmFnFoFpFqFrFsFtFuFvFwFxFyFzFX S T Y l W U AFh BFCFJbDFKbEFFFGFHFIFJFKFLFMFNFOFPFQFRFSFTFUFVFWFXFYFZF0F1F2F3F4F5F6F' Dcc d Eci Fcj Cc7Fk 8FLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b9F!F#F$F%F'F(F)F*F+F,F-F.F8b9b!b#b$b/F:F;F=F?F@F[F]F^F_F`F{F|F}F~FaGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G1G2G3G4G5G6G7G8G9G!G#G$G%G'G(G)G*G+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G%b'b(b)b*b+b,b-b.b{G/b:b;b=b?b@b[b]b^b_b|G`b}G{b~GaH|b}b~bacbcccdcecfcgchcicbHcHdHjckclcmcncocpcqcrcsctcucvcwcxcyczceHfHgHV hHiHjHkHlHAcmHnHoHpHqHrHsHtHuHvHwHxHyHzHBcAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQH

88  

89 @property 

90 def resources(self) -> DeviceResources: 

91 """Query the hardware resources provisioned for this context. 

92  

93 For green contexts, returns the resources this context was created 

94 with (SM partition, workqueue config). For primary contexts, returns 

95 the full device resources. 

96  

97 Raises :class:`RuntimeError` if the context has been closed. 

98 """ 

99 Context_check_open(self) 2f RH' a

100 return DeviceResources._init_from_ctx(self._h_context, self._device_id) 2f RH'

101  

102 def create_stream(self, options: StreamOptions | None = None) -> Stream: 

103 """Create a new stream bound to this green context. 

104  

105 This method is only available on green contexts. For primary 

106 contexts, use :meth:`Device.create_stream` instead. 

107  

108 Parameters 

109 ---------- 

110 options : :obj:`~_stream.StreamOptions`, optional 

111 Customizable dataclass for stream creation options. 

112  

113 Returns 

114 ------- 

115 :obj:`~_stream.Stream` 

116 Newly created stream object. 

117 """ 

118 Context_check_open(self) 2' Dcc d Eci Fck

119 if not self.is_green: 2' Dcc d Eci Fck

120 raise RuntimeError( 2Fc

121 "Context.create_stream() is only supported on green contexts. " 

122 "Use Device.create_stream() for primary contexts." 

123 ) 

124  

125 return Stream._init(options=options, device_id=self._device_id, ctx=self) 2' Dcc d Eci k

126  

127 cpdef close(self): 

128 """Release this context wrapper's underlying CUDA handles.""" 

129 cdef cydriver.CUcontext current_ctx 

130 if self._h_context and as_cu(self._h_context) != NULL: 2b f GcHcIcc d JcKcLcMcNcOcPcQcRca Scg e

131 with nogil: 2b f GcHcIcc d JcKcLcMcNcOcPcQcRca Scg e

132 HANDLE_RETURN(cydriver.cuCtxGetCurrent(&current_ctx)) 2b f GcHcIcc d JcKcLcMcNcOcPcQcRca Scg e

133 if current_ctx == as_cu(self._h_context): 2b f GcHcIcc d JcKcLcMcNcOcPcQcRca Scg e

134 raise RuntimeError( 2Jc

135 "Cannot close a CUDA context while it is current. " 

136 "Restore a previous context before closing this context." 

137 ) 

138 self._h_context.reset() 2b f GcHcIcc d KcLcMcNcOcPcQcRca Scg e

139  

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

141 if not isinstance(other, Context): 2S T l W h i j k % SHLCMC

142 return NotImplemented 2W % SH

143 cdef Context _other = <Context>other 2S T l h i j k % LCMC

144 return as_intptr(self._h_context) == as_intptr(_other._h_context) 2S T l h i j k % LCMC

145  

146 def __hash__(self) -> int: 

147 return hash(as_intptr(self._h_context)) 2X Y l UHVHWHLCMC

148  

149 def __repr__(self) -> str: 

150 return f"<Context handle={as_intptr(self._h_context):#x} device={self._device_id}>" 2XH

151  

152  

153@dataclass 

154cdef class ContextOptions: 

155 """Options for context creation. 

156  

157 Attributes 

158 ---------- 

159 resources : :obj:`~cuda.core.typing.DeviceResourcesType` 

160 Device resources used to create a green context. 

161 """ 

162 resources: DeviceResourcesType