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
« 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
5from __future__ import annotations
7from collections.abc import Sequence
8from dataclasses import dataclass
9from typing import TYPE_CHECKING
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
27if TYPE_CHECKING:
28 import cuda.bindings.driver # no-cython-lint
31__all__ = ['Context', 'ContextOptions']
34DeviceResourcesType = Sequence[SMResource | WorkqueueResource]
37cdef class Context:
38 """CUDA context wrapper.
40 Context objects represent CUDA contexts and cannot be instantiated directly.
41 Use Device or Stream APIs to obtain context objects.
42 """
44 def __init__(self, *args, **kwargs) -> None:
45 raise RuntimeError("Context objects cannot be instantiated directly. Please use Device or Stream APIs.") 2xF
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
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
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
73 @property
74 def _handle(self) -> cuda.bindings.driver.CUcontext | None:
75 return self.handle 1a
77 @property
78 def is_closed(self) -> bool:
79 """Whether this context has been closed."""
80 return self._h_context.get() == NULL 1e
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
89 @property
90 def resources(self) -> DeviceResources:
91 """Query the hardware resources provisioned for this context.
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.
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!
102 def create_stream(self, options: StreamOptions | None = None) -> Stream:
103 """Create a new stream bound to this green context.
105 This method is only available on green contexts. For primary
106 contexts, use :meth:`Device.create_stream` instead.
108 Parameters
109 ----------
110 options : :obj:`~_stream.StreamOptions`, optional
111 Customizable dataclass for stream creation options.
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 )
125 return Stream._init(options=options, device_id=self._device_id, ctx=self) 2! ^bb c _bg i
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(¤t_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
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
146 def __hash__(self) -> int:
147 return hash(as_intptr(self._h_context)) 2U V j yFzFAFzAAA
149 def __repr__(self) -> str:
150 return f"<Context handle={as_intptr(self._h_context):#x} device={self._device_id}>" 2BF
153@dataclass
154cdef class ContextOptions:
155 """Options for context creation.
157 Attributes
158 ----------
159 resources : :obj:`~cuda.core.typing.DeviceResourcesType`
160 Device resources used to create a green context.
161 """
162 resources: DeviceResourcesType