ó
    „ñ:iŸ  ã                   ó®   • S r SSKrSSKrSSKrSSKJr  SSKJrJr  SSK	J
r
Jr  SSKJr  SSKJr  SSKJr   " S	 S
\5      r " S S5      r\" 5       rS rg)z¡
CUDA Runtime wrapper.

This provides a very minimal set of bindings, since the Runtime API is not
really used in Numba except for querying the Runtime version.
é    N)Úconfig)Ú	ERROR_MAPÚmake_logger)ÚCudaSupportErrorÚCudaRuntimeError)Úopen_cudalib)ÚAPI_PROTOTYPES)Úenumsc                   ó2   ^ • \ rS rSrSrU 4S jrS rSrU =r$ )ÚCudaRuntimeAPIErroré   zH
Raised when there is an error accessing a C API from the CUDA Runtime.
c                 ó<   >• Xl         X l        [        TU ]  X5        g )N)ÚcodeÚmsgÚsuperÚ__init__)Úselfr   r   Ú	__class__s      €Ú]/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/cuda/cudadrv/runtime.pyr   ÚCudaRuntimeAPIError.__init__   s   ø€ ØŒ	ØŒÜ‰Ñ˜Õ#ó    c                 ó>   • SU R                   < SU R                  < 3$ )NÚ[z] ©r   r   ©r   s    r   Ú__str__ÚCudaRuntimeAPIError.__str__   s   � Ø ŸIœI t§x£xÐ0Ð0r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      s   ø† ñõ$÷
1ð 1r   r   c                   óX   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 r\S 5       rSrg)ÚRuntimeé!   z9
Runtime object that lazily binds runtime API functions.
c                 ó   • SU l         g )NF)Úis_initializedr   s    r   r   ÚRuntime.__init__&   s
   € Ø#ˆÕr   c                 óŠ   • [        5       q[        R                  (       a  Sn[	        U5      e[        S5      U l        SU l        g )NzzCUDA is disabled due to setting NUMBA_DISABLE_CUDA=1 in the environment, or because CUDA is unsupported on 32-bit systems.ÚcudartT)r   Ú_loggerr   ÚDISABLE_CUDAr   r   Úlibr)   )r   r   s     r   Ú_initializeÚRuntime._initialize)   s<   € ô “-ˆä××ð%ˆCô # 3Ó'Ð'Ü Ó)ˆŒà"ˆÕr   c                 ó  •  [         U   nUS   nUSS  nU R                  (       d  U R	                  5         U R                  U5      nX5l        XEl        U R                  X5      n[        XU5        U$ ! [         a    [        U5      ef = f)Nr   é   )
r	   ÚKeyErrorÚAttributeErrorr)   r0   Ú	_find_apiÚrestypeÚargtypesÚ_wrap_api_callÚsetattr)r   ÚfnameÚprotor7   r8   ÚlibfnÚ	safe_calls          r   Ú__getattr__ÚRuntime.__getattr__7   s’   € ð	(Ü" 5Ñ)ˆEð ˜‘(ˆØ˜˜�9ˆà×"×"Ø×ÑÔð —‘˜uÓ%ˆØŒØ!Œà×'Ñ'¨Ó5ˆ	Ü�˜YÔ'ØÐøô ó 	(Ü  Ó'Ð'ð	(ús   ‚	A2 Á2Bc                 óN   ^ ^^• [         R                  " T5      UUU 4S j5       nU$ )Nc                  ót   >• [         R                  STR                  5        T" U 6 nTR                  TU5        g )Nzcall runtime api: %s)r-   Údebugr   Ú_check_error)ÚargsÚretcoder;   r=   r   s     €€€r   Úsafe_cuda_api_callÚ2Runtime._wrap_api_call.<locals>.safe_cuda_api_callM   s/   ø€ ä�M‰MÐ0°%·.±.ÔAÙ˜T�lˆGØ×Ñ˜e WÕ-r   )Ú	functoolsÚwraps)r   r;   r=   rG   s   ``` r   r9   ÚRuntime._wrap_api_callL   s&   ú€ Ü	�Š˜Ó	ö	.ó 
 ð	.ð "Ð!r   c                 ó®   • U[         R                  :w  aA  [        R                  " US5      nSU< SU< 3n[        R                  U5        [        X$5      eg )NÚcudaErrorUnknownzCall to z results in )r
   ÚCUDA_SUCCESSr   Úgetr-   Úerrorr   )r   r;   rF   Úerrnamer   s        r   rD   ÚRuntime._check_errorT   sG   € Ø”e×(Ñ(Ó(Ü—m’m GÐ-?Ó@‰GÛ05²wÐ?ˆCÜ�M‰M˜#ÔÜ% gÓ3Ð3ð	 )r   c                 ó|   ^•  [        U R                  T5      $ ! [         a     Of = fU4S jn[        U TU5        U$ )Nc                  ó$   >• Sn[        UT-  5      e)Nzruntime missing function: %s.)r   )rE   Úkwsr   r;   s      €r   Úabsent_functionÚ*Runtime._find_api.<locals>.absent_functionc   s   ø€ Ø1ˆCÜ" 3¨¡;Ó/Ð/r   )Úgetattrr/   r5   r:   )r   r;   rV   s    ` r   r6   ÚRuntime._find_api[   sD   ø€ ð	Ü˜4Ÿ8™8 UÓ+Ð+øÜó 	Ùð	úõ
	0ô 	��e˜_Ô-ØÐs   ƒ ™
&¥&c                 óÄ   • [         R                  " 5       nU R                  [         R                  " U5      5        UR                  S-  nUR                  US-  -
  S-  nX#4$ )z=
Returns the CUDA Runtime version as a tuple (major, minor).
iè  é
   )ÚctypesÚc_intÚcudaRuntimeGetVersionÚbyrefÚvalue)r   ÚrtverÚmajorÚminors       r   Úget_versionÚRuntime.get_versionj   sS   € ô —’“ˆØ×"Ñ"¤6§<¢<°Ó#6Ô7à—‘˜tÑ#ˆØ—‘ ¨¡Ñ-°"Ñ4ˆØˆ~Ðr   c                 ó<   • U R                  5       U R                  ;   $ )z:
Returns True if the CUDA Runtime is a supported version.
)rd   Úsupported_versionsr   s    r   Úis_supported_versionÚRuntime.is_supported_versionu   s   € ð
 ×ÑÓ! T×%<Ñ%<Ñ<Ð<r   c                 óV   • [         R                  S;  d  [        R                  S:w  a  gg)zrA tuple of all supported CUDA toolkit versions. Versions are given in
the form ``(major_version, minor_version)``.)ÚlinuxÚwin32é@   © ))é   r   )ro   r3   )ro   é   )ro   é   )ro   é   )ro   é   )ro   é   )ro   é   )ÚsysÚplatformr   ÚMACHINE_BITSr   s    r   rg   ÚRuntime.supported_versions|   s&   € ô �<‰<Ð1Ó1´V×5HÑ5HÈBÓ5Nàðr   )r)   r/   N)r   r   r    r!   r"   r   r0   r?   r9   rD   r6   rd   rh   Úpropertyrg   r#   rn   r   r   r&   r&   !   sC   † ñò$ò#òò*"ò4òò	ò=ð ñó ór   r&   c                  ó*   • [         R                  5       $ )z9
Return the runtime version as a tuple of (major, minor)
)Úruntimerd   rn   r   r   rd   rd   Š   s   € ô ×ÑÓ Ð r   )r"   r\   rI   rv   Ú
numba.corer   Únumba.cuda.cudadrv.driverr   r   Únumba.cuda.cudadrv.errorr   r   Únumba.cuda.cudadrv.libsr   Únumba.cuda.cudadrv.rtapir	   Únumba.cuda.cudadrvr
   r   r&   r|   rd   rn   r   r   Ú<module>rƒ      sO   ðñó Û Û 
å ß <ß GÝ 0Ý 3Ý $ô
1Ð*ô 
1÷cñ cñL ‹)€ó!r   