ó
    „ñ:i  ã                   ój  • S SK r S SKrS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
  S SKJr  S SKJr  S SKJr  S SKr\" \5      R$                  r\S-  S	-  r " S
 S\\5      r " S S\5      rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S  r)S! r*S" r+ " S# S$\,5      r-g)%é    N)ÚSerialMixin)Úget_conda_ctk)ÚdriverÚdevicesÚlibs)Úconfig)ÚTestCase)ÚPathÚtestsÚdatac                   ó*   • \ rS rSrSrS rS rS rSrg)ÚCUDATestCaseé   a  
For tests that use a CUDA device. Test methods in a CUDATestCase must not
be run out of module order, because the ContextResettingTestCase may reset
the context and destroy resources used by a normal CUDATestCase if any of
its tests are run between tests from a CUDATestCase.
c                 ó„   • [         R                  U l        [         R                  U l        S[         l        S[         l        g )Nr   )r   ÚCUDA_LOW_OCCUPANCY_WARNINGSÚ_low_occupancy_warningsÚCUDA_WARN_ON_IMPLICIT_COPYÚ_warn_on_implicit_copy©Úselfs    ÚU/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/cuda/testing.pyÚsetUpÚCUDATestCase.setUp   s0   € Ü'-×'IÑ'IˆÔ$Ü&,×&GÑ&GˆÔ#ð ./ŒÔ*à,-ŒÕ)ó    c                 óX   • U R                   [        l        U R                  [        l        g ©N)r   r   r   r   r   r   s    r   ÚtearDownÚCUDATestCase.tearDown"   s   € Ø-1×-IÑ-IŒÔ*Ø,0×,GÑ,GŒÕ)r   c                 óÖ   • [         R                  " 5       R                  R                  n[        R
                  R                  US9nUR                  (       a  U R                  U5        g g )N)Úcc)	r   Úget_contextÚdeviceÚcompute_capabilityr   ÚLinkerÚnewÚltoÚskipTest)r   Úreasonr    Úlinkers       r   Úskip_if_ltoÚCUDATestCase.skip_if_lto&   sM   € ô × Ò Ó"×)Ñ)×<Ñ<ˆÜ—‘×"Ñ" bÐ"Ð)ˆØ�:�:Ø�M‰M˜&Õ!ð r   )r   r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r*   Ú__static_attributes__© r   r   r   r      s   † ñò.òHõ"r   r   c                   ó,   ^ • \ rS rSrSrU 4S jrSrU =r$ )ÚContextResettingTestCaseé/   zø
For tests where the context needs to be reset after each test. Typically
these inspect or modify parts of the context that would usually be expected
to be internal implementation details (such as the state of allocations and
deallocations, etc.).
c                 ó<   >• [         TU ]  5         SSKJn  U" 5         g )Nr   )Úreset)Úsuperr   Únumba.cuda.cudadrv.devicesr7   )r   r7   Ú	__class__s     €r   r   Ú!ContextResettingTestCase.tearDown7   s   ø€ Ü‰ÑÔÝ4Ù�r   r2   )r,   r-   r.   r/   r0   r   r1   Ú__classcell__)r:   s   @r   r4   r4   /   s   ø† ñ÷ó r   r4   c                  óV   • SSK Jn   SSKJn  U " 5       (       a  UR	                  5         g g )Nr   )Úis_available)Únvvm)Ú
numba.cudar>   Únumba.cuda.cudadrvr?   Úget_supported_ccs)Úcuda_is_availabler?   s     r   Ú ensure_supported_ccs_initializedrD   =   s$   € Ý<Ý'á×Ñð 	×ÑÕ ð r   c                 óL   • [         R                  " [        R                  U 5      $ )z/Skip this test if running on the CUDA simulator)ÚunittestÚskipIfr   ÚENABLE_CUDASIM©r(   s    r   Úskip_on_cudasimrJ   K   s   € ä�?Š?œ6×0Ñ0°&Ó9Ð9r   c                 óL   • [         R                  " [        R                  U 5      $ )z*Skip this test if running on CUDA hardware)rF   Ú
skipUnlessr   rH   rI   s    r   Úskip_unless_cudasimrM   P   s   € ä×Òœv×4Ñ4°fÓ=Ð=r   c                 óD   • [         R                  " [        5       SLU 5      $ )z8Skip test if the CUDA toolkit was not installed by CondaN)rF   rL   r   rI   s    r   Úskip_unless_conda_cudatoolkitrO   U   s   € ä×Òœ}›°dÐ:¸FÓCÐCr   c                 óR   • [         R                  " [        R                  S:g  U 5      $ )z$Skip test if an EMM Plugin is in useÚdefault)rF   rG   r   ÚCUDA_MEMORY_MANAGERrI   s    r   Úskip_if_external_memmgrrS   Z   s   € ä�?Š?œ6×5Ñ5¸ÑBÀFÓKÐKr   c                 ón   • [         R                  " [        R                  R	                  S5      S LU 5      $ )NÚCUDA_MEMCHECK)rF   rG   ÚosÚenvironÚgetrI   s    r   Úskip_under_cuda_memcheckrY   _   s%   € Ü�?Š?œ2Ÿ:™:Ÿ>™>¨/Ó:À$ÐFÈÓOÐOr   c                 ó`   • [         R                  " S5      n[        R                  " US L U 5      $ ©NÚnvdisasm©ÚshutilÚwhichrF   rG   ©r(   Únvdisasm_paths     r   Úskip_without_nvdisasmrb   c   s&   € Ü—L’L Ó,€MÜ�?Š?˜=¨DÐ0°&Ó9Ð9r   c                 ó`   • [         R                  " S5      n[        R                  " US LU 5      $ r[   r]   r`   s     r   Úskip_with_nvdisasmrd   h   s&   € Ü—L’L Ó,€MÜ�?Š?˜=°Ð4°fÓ=Ð=r   c                 óª   • [         R                  " 5       nUR                  S5      =(       d    UR                  S5      n[        R                  " X 5      $ )NÚarmÚaarch)ÚplatformÚ	processorÚ
startswithrF   rG   )r(   ÚcpuÚis_arms      r   Úskip_on_armrm   m   s;   € Ü
×
Ò
Ó
€CØ�^‰^˜EÓ"×= c§n¡n°WÓ&=€FÜ�?Š?˜6Ó*Ð*r   c                 ó$  • [         R                  R                  [        R                  S5      n[         R                  R                  U5      =(       a    [         R                  R                  U5      nSn[        R                  " X#5      " U 5      $ )Nzcuda.hz-CUDA include dir not available on this system)	rV   ÚpathÚjoinr   ÚCUDA_INCLUDE_PATHÚexistsÚisfilerF   rL   )ÚfnÚcuda_hÚcuda_h_filer(   s       r   Úskip_if_cuda_includes_missingrw   s   s]   € ô �W‰W�\‰\œ&×2Ñ2°HÓ=€FÜ—7‘7—>‘> &Ó)×D¬b¯g©g¯n©n¸VÓ.D€KØ<€FÜ×Ò˜{Ô3°BÓ7Ð7r   c                 óL   • [         R                  " [        R                  U 5      $ )z5Skip a test if Minor Version Compatibility is enabled)rF   rG   r   Ú'CUDA_ENABLE_MINOR_VERSION_COMPATIBILITYrI   s    r   Úskip_if_mvc_enabledrz   |   s   € ä�?Š?œ6×IÑIØ!ó#ð #r   c                 óv   • Sn SS K nSS KnSn[        R                  " US5      " U 5      $ ! [         a     N)f = f)NFr   Tz$Requires cubinlinker and ptxcompiler)ÚcubinlinkerÚptxcompilerÚImportErrorrF   rL   )rt   Úlibs_availabler|   r}   s       r   Ú!skip_if_mvc_libraries_unavailabler€   ‚   sP   € Ø€NðÛÛØˆô ×Ò˜~ØEôGØGIóKð Køô ó Ùðús   „
+ «
8·8c                 óŒ   • [         R                  (       d/  [        R                  " 5       R                  R
                  nX U4:¬  $ g)NT)r   rH   r   r!   r"   r#   )ÚmajorÚminorr    s      r   Úcc_X_or_abover„   �   s5   € Ü× × Ü× Ò Ó"×)Ñ)×<Ñ<ˆØ˜U�^Ñ#Ð#àr   c                 óP   • [         R                  " [        SS5      S5      " U 5      $ )Né   r   zrequires cc >= 5.0©rF   rL   r„   ©rt   s    r   Úskip_unless_cc_50r‰   —   ó"   € Ü×Òœ}¨Q°Ó2Ð4HÔIÈ"ÓMÐMr   c                 óP   • [         R                  " [        SS5      S5      " U 5      $ )Nr†   é   zrequires cc >= 5.3r‡   rˆ   s    r   Úskip_unless_cc_53r�   ›   rŠ   r   c                 óP   • [         R                  " [        SS5      S5      " U 5      $ )Né   r   zrequires cc >= 6.0r‡   rˆ   s    r   Úskip_unless_cc_60r�   Ÿ   rŠ   r   c                 óP   • [         R                  " [        SS5      S5      " U 5      $ )Né   r†   zrequires cc >= 7.5r‡   rˆ   s    r   Úskip_unless_cc_75r“   £   rŠ   r   c                 ó\   • [         R                  (       a  U $ [        R                  " U 5      $ r   )r   rH   rF   ÚexpectedFailurerˆ   s    r   Úxfail_unless_cudasimr–   §   s!   € Ü××Øˆ	ä×'Ò'¨Ó+Ð+r   c                 óL   • [         R                  " [        R                  U 5      $ r   )rF   rG   r   ÚUSE_NV_BINDINGrI   s    r   Úskip_with_cuda_pythonr™   ®   s   € Ü�?Š?œ6×0Ñ0°&Ó9Ð9r   c                  ó¨   • [         R                  (       a  g [        R                  " SSS9n [        R                  " U 5        g! [
         a     gf = f)NFÚ	cudadevrtT)Ústatic)r   rH   r   Úget_cudalibÚcheck_static_libÚFileNotFoundError)ro   s    r   Úcudadevrt_missingr    ²   sL   € Ü××ØðÜ×Ò °DÑ9ˆÜ×Ò˜dÔ#ð øô ó Ùðús   ˜+A Á
AÁAc                 óL   • [         R                  " [        5       S5      " U 5      $ )Nzcudadevrt missing)rF   rG   r    rˆ   s    r   Úskip_if_cudadevrt_missingr¢   ½   s   € Ü�?Š?Ô,Ó.Ð0CÔDÀRÓHÐHr   c                   ó   • \ rS rSrSrS rSrg)ÚForeignArrayéÁ   zª
Class for emulating an array coming from another library through the CUDA
Array interface. This just hides a DeviceNDArray so that it doesn't look
like a DeviceNDArray.
c                 ó2   • Xl         UR                  U l        g r   )Ú_arrÚ__cuda_array_interface__)r   Úarrs     r   Ú__init__ÚForeignArray.__init__È   s   € ØŒ	Ø(+×(DÑ(DˆÕ%r   )r¨   r§   N)r,   r-   r.   r/   r0   rª   r1   r2   r   r   r¤   r¤   Á   s   † ñõEr   r¤   ).rV   rh   r^   Únumba.tests.supportr   Únumba.cuda.cuda_pathsr   rA   r   r   r   Ú
numba.corer   r	   Úpathlibr
   rF   Ú__file__ÚparentÚnumba_cuda_dirÚtest_data_dirr   r4   rD   rJ   rM   rO   rS   rY   rb   rd   rm   rw   rz   r€   r„   r‰   r�   r�   r“   r–   r™   r    r¢   Úobjectr¤   r2   r   r   Ú<module>rµ      sÞ   ðÛ 	Û Û å +Ý /ß 4Ñ 4Ý Ý (Ý Û á�h“×&Ñ&€Ø Ñ(¨6Ñ1€ô"�; ô "ô<˜|ô ò!ò:ò
>ò
Dò
Lò
Pò:ò
>ò
+ò8ò#ò
KòòNòNòNòNò,ò:òòIô	E�6õ 	Er   