ó
    „ñ:i+  ã                   óØ   • 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	  \" S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g)é    N)Ú
namedtuple©ÚIS_WIN32)Úfind_libÚ	find_fileÚ_env_path_tupleÚbyÚinfoc                 ó*   • U  H  u  pUc  M
  X4s  $    g)z¯Find valid path from *options*, which is a list of 2-tuple of
(name, path).  Return first pair where *path* is not None.
If no valid path is found, return ('<unknown>', None)
)z	<unknown>N© )Úoptionsr	   Údatas      ÚX/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/cuda/cuda_paths.pyÚ_find_valid_pathr      s"   € ó
 ‰ˆØÓØ�8ŠOñ ð !ó    c                  óœ   • S[        5       4S[        5       4S[        SS5      4S[        SS5      4S[	        5       4/n [        U 5      u  pX4$ )NúConda environmentú"Conda environment (NVIDIA package)Ú	CUDA_HOMEÚnvvmÚ	libdeviceÚSystemzDebian package)Úget_conda_ctkÚget_nvidia_libdevice_ctkÚget_cuda_homeÚget_system_ctkÚget_debian_pkg_libdevicer   ©r   r	   Úlibdirs      r   Ú_get_libdevice_path_decisionr       s_   € à	œm›oÐ.Ø	-Ô/GÓ/IÐJØ	”m F¨KÓ8Ð9Ø	”> &¨+Ó6Ð7Ø	Ô3Ó5Ð6ð€Gô " 'Ó*�J€BØˆ:Ðr   c                  ó   • [         (       a  gg)N)r   Úbin)r   Úlib64r   r   r   r   Ú_nvvm_lib_dirr$   %   s   € ß‚xØàr   c                  ó–   • S[        5       4S[        5       4S[        [        5       6 4S[	        [        5       6 4/n [        U 5      u  pX4$ ©Nr   r   r   r   )r   Úget_nvidia_nvvm_ctkr   r$   r   r   )r   r	   Úpaths      r   Ú_get_nvvm_path_decisionr)   ,   sR   € à	œm›oÐ.Ø	-Ô/BÓ/DÐEØ	”m¤]£_Ð5Ð6Ø	”>¤=£?Ð3Ð4ð	€Gô   Ó(�H€BØˆ8€Or   c                  óˆ   • [        5       u  pSn[        [        R                  " U5      U5      n[	        US S9n[        X5      $ )Nzlibdevice(\.\d+)*\.bc$)Údefault)r    r   ÚreÚcompileÚmaxr   )r	   r   ÚpatÚ
candidatesÚouts        r   Ú_get_libdevice_pathsr2   7   s<   € Ü-Ó/�J€Bà
#€CÜœ2Ÿ:š: c›?¨FÓ3€Jä
ˆj $Ñ
'€CÜ˜2Ó#Ð#r   c                  ó   • [         (       a  gg)Nr"   r#   r   r   r   r   Ú_cudalib_pathr4   A   s   € ß‚xØàr   c                  ó   • [         (       a  gg)N)ÚlibÚx64)r#   r   r   r   r   Ú_cuda_home_static_cudalib_pathr8   H   s   € ß‚xØàr   c                  ó¢   • S[        5       4S[        5       4S[        [        5       5      4S[	        [        5       5      4/n [        U 5      u  pX4$ r&   )r   Úget_nvidia_cudalib_ctkr   r4   r   r   r   s      r   Ú_get_cudalib_dir_path_decisionr;   O   sS   € à	œm›oÐ.Ø	-Ô/EÓ/GÐHØ	”m¤M£OÓ4Ð5Ø	”>¤-£/Ó2Ð3ð	€Gô " 'Ó*�J€BØˆ:Ðr   c                  óœ   • S[        5       4S[        5       4S[        [        5       6 4S[	        [        5       5      4/n [        U 5      u  pX4$ r&   )r   Úget_nvidia_static_cudalib_ctkr   r8   r   r4   r   r   s      r   Ú%_get_static_cudalib_dir_path_decisionr>   Z   sU   € à	œm›oÐ.Ø	-Ô/LÓ/NÐOØ	”mÔ%CÓ%EÐFÐGØ	”>¤-£/Ó2Ð3ð	€Gô " 'Ó*�J€BØˆ:Ðr   c                  ó0   • [        5       u  p[        X5      $ ©N)r;   r   ©r	   r   s     r   Ú_get_cudalib_dirrB   e   s   € Ü/Ó1�J€BÜ˜2Ó&Ð&r   c                  ó0   • [        5       u  p[        X5      $ r@   )r>   r   rA   s     r   Ú_get_static_cudalib_dirrD   j   s   € Ü6Ó8�J€BÜ˜2Ó&Ð&r   c                  óÜ   • [         R                  R                  S5      (       aH  Sn[        R                  R                  U5      (       a!  [        R                  R                  " U/U Q76 $ gg)zJReturn path to system-wide cudatoolkit; or, None if it doesn't exist.
    Úlinuxz/usr/local/cudaN)ÚsysÚplatformÚ
startswithÚosr(   ÚexistsÚjoin)ÚsubdirsÚbases     r   r   r   o   sU   € ô ‡|�|×Ñ˜w×'Ñ'ð !ˆÜ�7‰7�>‰>˜$×ÑÜ—7‘7—<’< Ð/ wÒ/Ð/ð  ð	 (r   c                  ó  • [         R                  R                  [         R                  R                  [        R
                  S5      5      n U (       d  g[        S5      nU(       d  g[         R                  R                  [        U5      5      $ )úMReturn path to directory containing the shared libraries of cudatoolkit.
    ú
conda-metaNr   )	rJ   r(   rK   rL   rG   Úprefixr   Údirnamer.   )Úis_conda_envÚpathss     r   r   r   {   sV   € ô —7‘7—>‘>¤"§'¡'§,¡,¬s¯z©z¸<Ó"HÓI€LÞØä�VÓ€EÞØä�7‰7�?‰?œ3˜u›:Ó&Ð&r   c                  ó  • [         R                  R                  [         R                  R                  [        R
                  S5      5      n U (       d  g[         R                  R                  [        R
                  S[        5       5      n[         R                  R                  U5      (       a$  [         R                  R                  U5      (       d�  [         R                  R                  [        R
                  SS[        5       5      n[         R                  R                  U5      (       a$  [         R                  R                  U5      (       d  g[        SUS9nU(       d  g[         R                  R                  [        U5      5      $ )zAReturn path to directory containing the NVVM shared library.
    rQ   Nr   ÚLibrary)r   )rJ   r(   rK   rL   rG   rR   r4   Úisdirr   rS   r.   )rT   r   rU   s      r   r'   r'   ‰   sã   € ô —7‘7—>‘>¤"§'¡'§,¡,¬s¯z©z¸<Ó"HÓI€LÞØô �W‰W�\‰\œ#Ÿ*™* f¬m«oÓ>€FÜ�7‰7�>‰>˜&×!Ñ!¬¯©¯©°v×)>Ñ)>ä—‘—‘œcŸj™j¨)°V¼]»_ÓMˆÜ�w‰w�~‰~˜f×%Ñ%¬R¯W©W¯]©]¸6×-BÑ-Bð ä�V FÑ+€EÞØä�7‰7�?‰?œ3˜u›:Ó&Ð&r   c                  ó¤   • [        5       n U (       d  g[        R                  R                  U 5      n[        R                  R	                  US5      $ )z?Return path to directory containing the libdevice library.
    Nr   )r'   rJ   r(   rS   rL   )Únvvm_ctkÚnvvm_dirs     r   r   r   ¤   s9   € ô #Ó$€HÞØÜ�w‰w�‰˜xÓ(€HÜ�7‰7�<‰<˜ +Ó.Ð.r   c                  óú   • [        5       n U (       d  g[        R                  R                  [        R                  R                  U 5      5      n[        (       a  SOSn[        R                  R                  X5      $ )rP   Nr"   r6   )r'   rJ   r(   rS   r   rL   )rZ   Úenv_dirÚsubdirs      r   r:   r:   ®   sO   € ô #Ó$€HÞØÜ�g‰g�o‰oœbŸg™gŸo™o¨hÓ7Ó8€Gß’h‰U E€FÜ�7‰7�<‰<˜Ó(Ð(r   c                  ó  • [        5       n U (       d  g[        (       a	  SU ;  a  SnOSn[        R                  R	                  [        R                  R	                  U 5      5      n[        R                  R
                  " U/UQ76 $ )zMReturn path to directory containing the static libraries of cudatoolkit.
    NrW   )ÚLibr7   )r6   )r'   r   rJ   r(   rS   rL   )rZ   Údirsr]   s      r   r=   r=   ¹   sa   € ô #Ó$€HÞØç‚x�Y hÓ.à‰ð ˆä�g‰g�o‰oœbŸg™gŸo™o¨hÓ7Ó8€GÜ�7‰7�<Š<˜Ð' $Ò'Ð'r   c                  óÎ   • [         R                  R                  S5      nUc  [         R                  R                  S5      nUb!  [         R                  R                  " U/U Q76 $ g)zeGet paths of CUDA_HOME.
If *subdirs* are the subdirectory name to be appended in the resulting
path.
r   NÚ	CUDA_PATH)rJ   ÚenvironÚgetr(   rL   )rM   Ú	cuda_homes     r   r   r   Ë   sQ   € ô
 —
‘
—‘˜{Ó+€IØÑä—J‘J—N‘N ;Ó/ˆ	ØÑÜ�w‰w�|Š|˜IÐ0¨Ò0Ð0ð r   c                  óp   • [        5       u  p[        SU5      nU(       a  [        U5      OS n[        X5      $ )Nr   )r)   r   r.   r   )r	   r(   r0   s      r   Ú_get_nvvm_pathrh   Ø   s0   € Ü&Ó(�H€BÜ˜& $Ó'€JÞ(Œ3ˆzŒ?¨d€DÜ˜2Ó$Ð$r   c                  ó´   • [        [        S5      (       a  [        R                  $ [        5       [	        5       [        5       [        5       S.n U [        l        U $ )a$  Returns a dictionary mapping component names to a 2-tuple
of (source_variable, info).

The returned dictionary will have the following keys and infos:
- "nvvm": file_path
- "libdevice": List[Tuple[arch, file_path]]
- "cudalib_dir": directory_path

Note: The result of the function is cached.
Ú_cached_result)r   r   Úcudalib_dirÚstatic_cudalib_dir)ÚhasattrÚget_cuda_pathsrj   rh   r2   rB   rD   )Úds    r   rn   rn   ß   sN   € ô Œ~Ð/×0Ñ0Ü×,Ñ,Ð,ô #Ó$Ü-Ó/Ü+Ó-Ü"9Ó";ñ	
ˆð )*ŒÔ%Øˆr   c                  óT   • Sn [         R                  R                  U 5      (       d  gU $ )zQ
Return the Debian NVIDIA Maintainers-packaged libdevice location, if it
exists.
z&/usr/lib/nvidia-cuda-toolkit/libdeviceN)rJ   r(   rK   )Úpkg_libdevice_locations    r   r   r   ú   s(   € ð
 FÐÜ�7‰7�>‰>Ð0×1Ñ1ØØ!Ð!r   ) rG   r,   rJ   Úcollectionsr   Únumba.core.configr   Únumba.misc.findlibr   r   r   r   r    r$   r)   r2   r4   r8   r;   r>   rB   rD   r   r   r'   r   r:   r=   r   rh   rn   r   r   r   r   Ú<module>ru      s“   ðÛ 
Û 	Û 	Ý "å &ß 2ñ Ð.°°v°Ó?€ò	!ò	òòò$òòòòò'ò
'ò
	0ò'ò'ò6/ò)ò(ò$
1ò%òó6"r   