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

52 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-16 01:23 +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.") 2xF

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) 2jckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHck Icl Jcm KcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4cn 5c6c7c8co 9cp !cq #cr $cs %ct 'cu (cv )cw *cx +cy ,cz -cA .cB /cC :cD ;cE =cF ?cG @cH [cI ]cJ ^cK _cL `cM {cN |c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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[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{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!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~haibicidieifigihiiijikili' minioipiqirisitiuiviwixiyiO ziAiBiCiDiEiFiGiHiIiP JiKiLiMiNiOiPi( ) * + , - . / : ; = ? Qi@ [ ] ^ _ Ri` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbSisbtbTiubUivbwbVixbWiybzbAbBbXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|iCb}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!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^kU _kQ `kR {kV |kj }kT ~kalblcldlelflglhliljlklllmlnlf olplqlrlsltlulvlwlxlylzlAlBlW ClDlElFlGlHlIlDbEbFbJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=ld ?lX @l[lY Z b ]lc ^l0 1 g 2 _lh 3 4 5 i 6 7 `l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmuma vmwm8 e xmymzmAmBmGbCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%nHbIbJbKbLb'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*o+o,o-o.o/o:o;o=o?o@o[o]o^o_o`o{o|o}o~oapbpcpdpepfpgphpMbNbipjpkplpmpnpObopppqprpsptpupvpwpxpypzpPbQbApBpRbSbTbUbCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVbVpWpXpYpZp0p1p2p3p4p5p6p7p8p9p!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~paqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+qWb,q-q.q/q:q;q=q?q@q[q]qXb^q_q`q{q|q}q~qarbrcrdrYberZbfrgrhrirjrkrlrmrnr0borprqrrrsrtrurvrwrxryrzrArBrCrDrErFrGr1bHr2bIr3bJr4bKr5bLr6bMrNrOrPrQrRrSrTrUrVrWrXrYrZr0r1r2r3r4r5r6r7r8r9r!r#r7b$r%r'r8b(r9b)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsXsYsZs0s1s2s3s4s5s6s7s8s9s!s#s$s%s's(s)s*s+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqt!brtstttutvtwt#bxtytztAtBtCtDtEtFtGtHtItJtKtLtMtNtOtPtQtRt$bStTtUtVt%bWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t't(t)t*t'b+t,t-t.t/t:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudu(beufu)bguhuiuju*b+bkulumunuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuHuIuJuKuLu,bMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u8u-b9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u.b`u{u|u}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrv/bsvtvuvvvwvxvyvzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOv:bPvQvRvSvTvUvVvWvXvYvZv0v1v2v3v4v5v6v7v8v9v!v#v;b$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v@v[v]v^v_v`v{v|v}v=b~vawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwww?bxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5w6w7w8w9w!w#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^w_w`w{w|w}w~waxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzxAxBxCxDxExFxS GxHxIxJxKxLx@bMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x[b1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]x^x_x`x{x|x}x~xaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4y5y6y7y8y9y!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~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzzzAzBzCzDzEzFzGzHzIzJzKzLzMzNzOzPzQzRzSzTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!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~zaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyA

51 ctx._h_context = h_context 2jckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHck Icl Jcm KcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4cn 5c6c7c8co 9cp !cq #cr $cs %ct 'cu (cv )cw *cx +cy ,cz -cA .cB /cC :cD ;cE =cF ?cG @cH [cI ]cJ ^cK _cL `cM {cN |c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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[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{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!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~haibicidieifigihiiijikili' minioipiqirisitiuiviwixiyiO ziAiBiCiDiEiFiGiHiIiP JiKiLiMiNiOiPi( ) * + , - . / : ; = ? Qi@ [ ] ^ _ Ri` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbSisbtbTiubUivbwbVixbWiybzbAbBbXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|iCb}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!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^kU _kQ `kR {kV |kj }kT ~kalblcldlelflglhliljlklllmlnlf olplqlrlsltlulvlwlxlylzlAlBlW ClDlElFlGlHlIlDbEbFbJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=ld ?lX @l[lY Z b ]lc ^l0 1 g 2 _lh 3 4 5 i 6 7 `l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmuma vmwm8 e xmymzmAmBmGbCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%nHbIbJbKbLb'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*o+o,o-o.o/o:o;o=o?o@o[o]o^o_o`o{o|o}o~oapbpcpdpepfpgphpMbNbipjpkplpmpnpObopppqprpsptpupvpwpxpypzpPbQbApBpRbSbTbUbCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVbVpWpXpYpZp0p1p2p3p4p5p6p7p8p9p!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~paqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+qWb,q-q.q/q:q;q=q?q@q[q]qXb^q_q`q{q|q}q~qarbrcrdrYberZbfrgrhrirjrkrlrmrnr0borprqrrrsrtrurvrwrxryrzrArBrCrDrErFrGr1bHr2bIr3bJr4bKr5bLr6bMrNrOrPrQrRrSrTrUrVrWrXrYrZr0r1r2r3r4r5r6r7r8r9r!r#r7b$r%r'r8b(r9b)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsXsYsZs0s1s2s3s4s5s6s7s8s9s!s#s$s%s's(s)s*s+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqt!brtstttutvtwt#bxtytztAtBtCtDtEtFtGtHtItJtKtLtMtNtOtPtQtRt$bStTtUtVt%bWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t't(t)t*t'b+t,t-t.t/t:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudu(beufu)bguhuiuju*b+bkulumunuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuHuIuJuKuLu,bMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u8u-b9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u.b`u{u|u}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrv/bsvtvuvvvwvxvyvzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOv:bPvQvRvSvTvUvVvWvXvYvZv0v1v2v3v4v5v6v7v8v9v!v#v;b$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v@v[v]v^v_v`v{v|v}v=b~vawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwww?bxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5w6w7w8w9w!w#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^w_w`w{w|w}w~waxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzxAxBxCxDxExFxS GxHxIxJxKxLx@bMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x[b1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]x^x_x`x{x|x}x~xaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4y5y6y7y8y9y!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~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzzzAzBzCzDzEzFzGzHzIzJzKzLzMzNzOzPzQzRzSzTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!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~zaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyA

52 ctx._device_id = device_id 2jckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHck Icl Jcm KcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4cn 5c6c7c8co 9cp !cq #cr $cs %ct 'cu (cv )cw *cx +cy ,cz -cA .cB /cC :cD ;cE =cF ?cG @cH [cI ]cJ ^cK _cL `cM {cN |c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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[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{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!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~haibicidieifigihiiijikili' minioipiqirisitiuiviwixiyiO ziAiBiCiDiEiFiGiHiIiP JiKiLiMiNiOiPi( ) * + , - . / : ; = ? Qi@ [ ] ^ _ Ri` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbSisbtbTiubUivbwbVixbWiybzbAbBbXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|iCb}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!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^kU _kQ `kR {kV |kj }kT ~kalblcldlelflglhliljlklllmlnlf olplqlrlsltlulvlwlxlylzlAlBlW ClDlElFlGlHlIlDbEbFbJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=ld ?lX @l[lY Z b ]lc ^l0 1 g 2 _lh 3 4 5 i 6 7 `l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmuma vmwm8 e xmymzmAmBmGbCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%nHbIbJbKbLb'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*o+o,o-o.o/o:o;o=o?o@o[o]o^o_o`o{o|o}o~oapbpcpdpepfpgphpMbNbipjpkplpmpnpObopppqprpsptpupvpwpxpypzpPbQbApBpRbSbTbUbCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVbVpWpXpYpZp0p1p2p3p4p5p6p7p8p9p!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~paqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+qWb,q-q.q/q:q;q=q?q@q[q]qXb^q_q`q{q|q}q~qarbrcrdrYberZbfrgrhrirjrkrlrmrnr0borprqrrrsrtrurvrwrxryrzrArBrCrDrErFrGr1bHr2bIr3bJr4bKr5bLr6bMrNrOrPrQrRrSrTrUrVrWrXrYrZr0r1r2r3r4r5r6r7r8r9r!r#r7b$r%r'r8b(r9b)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsXsYsZs0s1s2s3s4s5s6s7s8s9s!s#s$s%s's(s)s*s+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqt!brtstttutvtwt#bxtytztAtBtCtDtEtFtGtHtItJtKtLtMtNtOtPtQtRt$bStTtUtVt%bWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t't(t)t*t'b+t,t-t.t/t:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudu(beufu)bguhuiuju*b+bkulumunuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuHuIuJuKuLu,bMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u8u-b9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u.b`u{u|u}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrv/bsvtvuvvvwvxvyvzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOv:bPvQvRvSvTvUvVvWvXvYvZv0v1v2v3v4v5v6v7v8v9v!v#v;b$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v@v[v]v^v_v`v{v|v}v=b~vawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwww?bxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5w6w7w8w9w!w#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^w_w`w{w|w}w~waxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzxAxBxCxDxExFxS GxHxIxJxKxLx@bMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x[b1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]x^x_x`x{x|x}x~xaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4y5y6y7y8y9y!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~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzzzAzBzCzDzEzFzGzHzIzJzKzLzMzNzOzPzQzRzSzTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!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~zaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyA

53 return ctx 2jckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHck Icl Jcm KcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4cn 5c6c7c8co 9cp !cq #cr $cs %ct 'cu (cv )cw *cx +cy ,cz -cA .cB /cC :cD ;cE =cF ?cG @cH [cI ]cJ ^cK _cL `cM {cN |c}c~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d7d8d9d!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[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{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!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~haibicidieifigihiiijikili' minioipiqirisitiuiviwixiyiO ziAiBiCiDiEiFiGiHiIiP JiKiLiMiNiOiPi( ) * + , - . / : ; = ? Qi@ [ ] ^ _ Ri` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbSisbtbTiubUivbwbVixbWiybzbAbBbXiYiZi0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|iCb}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!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^kU _kQ `kR {kV |kj }kT ~kalblcldlelflglhliljlklllmlnlf olplqlrlsltlulvlwlxlylzlAlBlW ClDlElFlGlHlIlDbEbFbJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=ld ?lX @l[lY Z b ]lc ^l0 1 g 2 _lh 3 4 5 i 6 7 `l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmuma vmwm8 e xmymzmAmBmGbCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%nHbIbJbKbLb'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*o+o,o-o.o/o:o;o=o?o@o[o]o^o_o`o{o|o}o~oapbpcpdpepfpgphpMbNbipjpkplpmpnpObopppqprpsptpupvpwpxpypzpPbQbApBpRbSbTbUbCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVbVpWpXpYpZp0p1p2p3p4p5p6p7p8p9p!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~paqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+qWb,q-q.q/q:q;q=q?q@q[q]qXb^q_q`q{q|q}q~qarbrcrdrYberZbfrgrhrirjrkrlrmrnr0borprqrrrsrtrurvrwrxryrzrArBrCrDrErFrGr1bHr2bIr3bJr4bKr5bLr6bMrNrOrPrQrRrSrTrUrVrWrXrYrZr0r1r2r3r4r5r6r7r8r9r!r#r7b$r%r'r8b(r9b)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsXsYsZs0s1s2s3s4s5s6s7s8s9s!s#s$s%s's(s)s*s+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqt!brtstttutvtwt#bxtytztAtBtCtDtEtFtGtHtItJtKtLtMtNtOtPtQtRt$bStTtUtVt%bWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t't(t)t*t'b+t,t-t.t/t:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudu(beufu)bguhuiuju*b+bkulumunuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuHuIuJuKuLu,bMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u8u-b9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u.b`u{u|u}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrv/bsvtvuvvvwvxvyvzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOv:bPvQvRvSvTvUvVvWvXvYvZv0v1v2v3v4v5v6v7v8v9v!v#v;b$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v@v[v]v^v_v`v{v|v}v=b~vawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwww?bxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5w6w7w8w9w!w#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^w_w`w{w|w}w~waxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzxAxBxCxDxExFxS GxHxIxJxKxLx@bMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x[b1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]x^x_x`x{x|x}x~xaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4y5y6y7y8y9y!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~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrzsztzuzvzwzxzyzzzAzBzCzDzEzFzGzHzIzJzKzLzMzNzOzPzQzRzSzTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!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~zaAbAcAdAeAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwAxAyA

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) 1dXYZbc01234567a8e

59 if not h_context: 1dXYZbc01234567a8e

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) 1dXYZbc01234567a8e

63  

64 @property 

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

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

67 if not self._h_context: 2k l m 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 f BAW CADAh ]ba 9 S

68 return None 1a

69 if as_cu(self._h_context) == NULL: 2k l m 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 f BAW CADAh ]ba 9 S

70 return None 

71 return as_py(self._h_context) 2k l m 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 f BAW CADAh ]ba 9 S

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 1e

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: 2EAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA0A1A2Ak l m 3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A/An :A;Ao 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 =A?A@A[A]A^A_A`A{A|A}A~AaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVB# $ % WBXBYBZB0B1B2B3B4B5B6B7B8B9B!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~BaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCIC' JCKCLCMCNCOCPCQCRCO SCTCUCVCWCXCYCZC0CP 1C( ) 2C* 3C+ 4C, - . / 5C: 6C; = 7C? 8C@ 9C[ ] ^ _ !C#C` $C{ %C| 'C} ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtb(Cub)Cvbwb*CxbybzbAbBb+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}CCb~CaDbDcDdDeDfDgDhDiDjDkDlDmDU Q R V j T nDf oDpDDbEbFbqDrDsDtDuDvDwDxDyDzDADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSD! ^bb c _bg `bh ]bTDi a UDGbVDWDXDYDZD0D1D2D3D4D5DHbIbJbKbLb6D7D8D9D!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)EMbNbObPbQbRbSbTbUbVb*EWb+EXb,E-EYbZb0b1b2b3b4b5b6b7b8b9b.E/E:E!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b;E=ES ?E@E[E]E^E@b_E`E{E|E}E~EaFbFcFdFeFfFgFhF[biFjFkFlFmFnFoFpFqFrFsFtFuF

86 return False 1a

87 return get_context_green_ctx(self._h_context).get() != NULL 2EAFAGAHAIAJAKALAMANAOAPAQARASATAUAVAWAXAYAZA0A1A2Ak l m 3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A/An :A;Ao 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 =A?A@A[A]A^A_A`A{A|A}A~AaBbBcBdBeBfBgBhBiBjBkBlBmBnBoBpBqBrBsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVB# $ % WBXBYBZB0B1B2B3B4B5B6B7B8B9B!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~BaCbCcCdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCIC' JCKCLCMCNCOCPCQCRCO SCTCUCVCWCXCYCZC0CP 1C( ) 2C* 3C+ 4C, - . / 5C: 6C; = 7C? 8C@ 9C[ ] ^ _ !C#C` $C{ %C| 'C} ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtb(Cub)Cvbwb*CxbybzbAbBb+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}CCb~CaDbDcDdDeDfDgDhDiDjDkDlDmDU Q R V j T nDf oDpDDbEbFbqDrDsDtDuDvDwDxDyDzDADBDCDDDEDFDGDHDIDJDKDLDMDNDODPDQDRDSD! ^bb c _bg `bh ]bTDi UDGbVDWDXDYDZD0D1D2D3D4D5DHbIbJbKbLb6D7D8D9D!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)EMbNbObPbQbRbSbTbUbVb*EWb+EXb,E-EYbZb0b1b2b3b4b5b6b7b8b9b.E/E:E!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b;E=ES ?E@E[E]E^E@b_E`E{E|E}E~EaFbFcFdFeFfFgFhF[biFjFkFlFmFnFoFpFqFrFsFtFuF

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) 2d vF! a

100 return DeviceResources._init_from_ctx(self._h_context, self._device_id) 2d vF!

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! ^bb c _bg `bi

119 if not self.is_green: 2! ^bb c _bg `bi

120 raise RuntimeError( 2`b

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! ^bb c _bg i

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: 2d {b|b}bb c ~bacbcccdcecfcgchca ice

131 with nogil: 2d {b|b}bb c ~bacbcccdcecfcgchca ice

132 HANDLE_RETURN(cydriver.cuCtxGetCurrent(&current_ctx)) 2d {b|b}bb c ~bacbcccdcecfcgchca ice

133 if current_ctx == as_cu(self._h_context): 2d {b|b}bb c ~bacbcccdcecfcgchca ice

134 raise RuntimeError( 2~b

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() 2d {b|b}bb c acbcccdcecfcgchca ice

139  

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

141 if not isinstance(other, Context): 2Q R j T f g h i 9 wFzAAA

142 return NotImplemented 2T 9 wF

143 cdef Context _other = <Context>other 2Q R j f g h i 9 zAAA

144 return as_intptr(self._h_context) == as_intptr(_other._h_context) 2Q R j f g h i 9 zAAA

145  

146 def __hash__(self) -> int: 

147 return hash(as_intptr(self._h_context)) 2U V j yFzFAFzAAA

148  

149 def __repr__(self) -> str: 

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

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