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
« 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
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.") 2TH
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
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
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
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 1g
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
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) 2f RH' a
100 return DeviceResources._init_from_ctx(self._h_context, self._device_id) 2f RH'
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' 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 )
125 return Stream._init(options=options, device_id=self._device_id, ctx=self) 2' Dcc d Eci k
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(¤t_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
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
146 def __hash__(self) -> int:
147 return hash(as_intptr(self._h_context)) 2X Y l UHVHWHLCMC
149 def __repr__(self) -> str:
150 return f"<Context handle={as_intptr(self._h_context):#x} device={self._device_id}>" 2XH
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