Ë
    ùÿæiªy  ã                   óè  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
ZmZ 	 d dlZdZ edg d¢«      Zg d¢Zg d	¢Zg d
¢Zg d¢Zg d¢Zd„ Zd„ Zd„ Zd„ Zd3d„Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d „ Z-d!„ Z.d"„ Z/d#„ Z0d$„ Z1d%„ Z2d&„ Z3d'„ Z4d3d(„Z5d)ee6e6f   fd*„Z7d+„ Z8d,„ Z9d-„ Z:d.jw                  «       Z<d/„ Z=d0„ Z>d4d1„Z?e@d2k(  r e?«        yy# eeeef$ r dZY Œ¾w xY w)5é    N)Ú
namedtuple)ÚcastÚDictTFÚ	SystemEnv)Útorch_versionÚis_debug_buildÚcuda_compiled_versionÚgcc_versionÚclang_versionÚcmake_versionÚosÚlibc_versionÚpython_versionÚpython_platformÚis_cuda_availableÚcuda_runtime_versionÚcuda_module_loadingÚnvidia_driver_versionÚnvidia_gpu_modelsÚcudnn_versionÚis_xpu_availableÚpip_versionÚpip_packagesÚconda_packagesÚhip_compiled_versionÚhip_runtime_versionÚmiopen_runtime_versionÚcaching_allocator_configÚis_xnnpack_availableÚcpu_info)ÚtorchÚnumpyÚtritonÚoptree)zcuda-cudartz
cuda-cuptizcuda-librarieszcuda-openclz
cuda-nvrtczcuda-runtimeÚcublasÚcudnnÚcufftÚcurandÚcusolverÚcusparseÚncclÚ	nvjitlinkÚnvtx)zdpcpp-cpp-rtzintel-cmplr-lib-rtzintel-cmplr-lib-urzintel-cmplr-lic-rtzintel-opencl-rtzintel-sycl-rtÚmklzonemkl-sycl-blaszonemkl-sycl-dftzonemkl-sycl-lapackzonemkl-sycl-rngzonemkl-sycl-sparsezintel-openmpÚtbbzimpi-rtz
impi-develÚonecclzoneccl-develz	intel-ptiÚumfÚtcmlib)ÚcudatoolkitÚsoumithr.   Úmagma)ÚmypyÚflake8Úonnxc                 óš  — t        | «      t        u }t        j                  | t        j                  t        j                  |¬«      }|j                  «       \  }}|j                  }t        «       dk(  rd}nt        j                  «       }|j                  |«      }|j                  |«      }||j                  «       |j                  «       fS )z%Return (return-code, stdout, stderr).)ÚstdoutÚstderrÚshellÚwin32Úoem)ÚtypeÚstrÚ
subprocessÚPopenÚPIPEÚcommunicateÚ
returncodeÚget_platformÚlocaleÚgetpreferredencodingÚdecodeÚstrip)	Úcommandr<   ÚpÚ
raw_outputÚraw_errÚrcÚencÚoutputÚerrs	            úl/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/torch/utils/collect_env.pyÚrunrT   x   s    € ä�‹MœSÐ €EÜ×ÑØœ
Ÿ™´
·±Àuô	€Að Ÿ-™-›/Ñ€J�Ø	
�‰€BÜƒ~˜Ò Ø‰ä×)Ñ)Ó+ˆØ×Ñ˜sÓ#€FØ
�.‰.˜Ó
€CØˆv�|‰|‹~˜sŸy™y›{Ð*Ð*ó    c                 ó*   —  | |«      \  }}}|dk7  ry|S )zIRun command using run_lambda; reads and returns entire output if rc is 0.r   N© ©Ú
run_lambdarK   rO   ÚoutÚ_s        rS   Úrun_and_read_allr\   ‰   s!   € á˜GÓ$�J€BˆˆQØ	ˆQ‚wØØ€JrU   c                 óz   —  | |«      \  }}}|dk7  ryt        j                  ||«      }|€y|j                  d«      S )zIRun command using run_lambda, returns the first regex match if it exists.r   Né   )ÚreÚsearchÚgroup)rY   rK   ÚregexrO   rZ   r[   Úmatchs          rS   Úrun_and_parse_first_matchrd   ‘   sB   € á˜GÓ$�J€BˆˆQØ	ˆQ‚wØÜ�I‰I�e˜SÓ!€EØ€}ØØ�;‰;�q‹>ÐrU   c                 óN   —  | |«      \  }}}|dk7  ry|j                  d«      d   S )zKRun command using run_lambda and returns first line if output is not empty.r   NÚ
)ÚsplitrX   s        rS   Úrun_and_return_first_linerh   œ   s/   € á˜GÓ$�J€BˆˆQØ	ˆQ‚wØØ�9‰9�T‹?˜1ÑÐrU   c                 ó  ‡— ‰€t         t        z   t        z   t        z   Št        j
                  j                  dd«      }t        | dj                  |«      «      }|€|S dj                  ˆfd„|j                  «       D «       «      S )NÚ	CONDA_EXEÚcondaz{} listrf   c              3   ón   •‡K  — | ]+  Š‰j                  d «      st        ˆfd„‰D «       «      r‰–— Œ- y­w)Ú#c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w©NrW   ©Ú.0ÚnameÚlines     €rS   Ú	<genexpr>z/get_conda_packages.<locals>.<genexpr>.<genexpr>¯   s   øè ø€ Ð+NÁX¸T¨D°D¬LÁXùó   ƒN)Ú
startswithÚany©rq   rs   Úpatternss    @€rS   rt   z%get_conda_packages.<locals>.<genexpr>¬   s2   ùè ø€ ð á$ˆDØ�‰˜sÔ#¬Ó+NÁXÓ+NÔ(Nô 	Ù$ùs   „15)ÚCONDA_PATTERNSÚCOMMON_PATTERNSÚNVIDIA_PATTERNSÚONEAPI_PATTERNSr   ÚenvironÚgetr\   ÚformatÚjoinÚ
splitlines)rY   ry   rk   rZ   s    `  rS   Úget_conda_packagesrƒ   ¤   sw   ø€ ØÐÜ!¤OÑ3´oÑEÌÑWˆÜ�J‰J�N‰N˜;¨Ó0€EÜ
˜: y×'7Ñ'7¸Ó'>Ó
?€CØ
€{Øˆ
à�9‰9ó à—N‘NÔ$óó ð rU   c                 ó   — t        | dd«      S )Nzgcc --versionzgcc (.*)©rd   ©rY   s    rS   Úget_gcc_versionr‡   ³   s   € Ü$ Z°À+ÓNÐNrU   c                 ó   — t        | dd«      S )Nzclang --versionzclang version (.*)r…   r†   s    rS   Úget_clang_versionr‰   ·   s   € Ü$ØÐ%Ð'<óð rU   c                 ó   — t        | dd«      S )Nzcmake --versionz
cmake (.*)r…   r†   s    rS   Úget_cmake_versionr‹   ½   s   € Ü$ ZÐ1BÀMÓRÐRrU   c                 óh   — t        «       dk(  rd}t        | |d«      S t        «       }t        | |d«      S )NÚdarwinzkextstat | grep -i cudazcom[.]nvidia[.]CUDA [(](.*?)[)]zDriver Version: (.*?) )rF   rd   Úget_nvidia_smi)rY   ÚcmdÚsmis      rS   Úget_nvidia_driver_versionr‘   Á   s@   € Üƒ~˜Ò!Ø'ˆÜ(Ø˜Ð?ó
ð 	
ô Ó
€CÜ$ Z°Ð6OÓPÐPrU   c                 ó€  — t        «       dk(  s:t        rát        t        j                  d«      rÇt        j                  j
                  �­t        r¦t        j                  j                  «       rˆt        j                  j
                  �Jt        j                  j                  d«      }t        |d«      rdj                  |j                  «      }nd}nd}t        j                  j                  d «      |z   S y t        «       }t        j                  d«      } | |d	z   «      \  }}}|dk7  ry t        j                  |d|«      S )
Nr�   Úhipr   ÚgcnArchNamez ({})ÚNoGCNArchNameOnOldPyTorchÚ z \(UUID: .+?\)z -L)rF   ÚTORCH_AVAILABLEÚhasattrr!   Úversionr“   ÚcudaÚis_availableÚget_device_propertiesr€   r”   Úget_device_namerŽ   r_   ÚcompileÚsub)rY   ÚpropÚgcnArchr�   Ú
uuid_regexrO   rZ   r[   s           rS   Úget_gpu_infor£   Ë   sð   € Üƒ~˜Ò!ÝÜ”E—M‘M 5Ô)Ü�M‰M×ÑÐ)åœuŸz™z×6Ñ6Ô8Ü�}‰}× Ñ Ð,Ü—z‘z×7Ñ7¸Ó:�Ü˜4 Ô/Ø%Ÿn™n¨T×-=Ñ-=Ó>‘Gà9‘Gà�Ü—:‘:×-Ñ-¨dÓ3°gÑ=Ð=ØÜ
Ó
€CÜ—‘Ð-Ó.€JÙ˜C %™KÓ(�J€BˆˆQØ	ˆQ‚wØä�6‰6�*˜b #Ó&Ð&rU   c                 ó   — t        | dd«      S )Nznvcc --versionzrelease .+ V(.*)r…   r†   s    rS   Úget_running_cuda_versionr¥   å   s   € Ü$ ZÐ1AÐCVÓWÐWrU   c                 ó–  — t        «       dk(  rtt        j                  j                  dd«      }t        j                  j                  dd«      }t        j                  j                  |dd«      }dj                  ||«      }nt        «       d	k(  rd
}nd} | |«      \  }}}t        |«      dk(  s
|dk7  re|dk7  r`t        j                  j                  d«      }|�>t        j                  j                  |«      rt        j                  j                  |«      S yt        «       }	|j                  d«      D ]R  }
t        j                  j                  |
«      }
t        j                  j                  |
«      sŒB|	j                  |
«       ŒT |	syt        |	«      }t        |«      dk(  r|d   S dj                  |«      }dj                  |«      S )zHReturn a list of libcudnn.so; it's hard to tell which one is being used.r=   Ú
SYSTEMROOTú
C:\WindowsÚ	CUDA_PATHz%CUDA_PATH%ÚSystem32Úwherez{} /R "{}\bin" cudnn*.dllr�   z ls /usr/local/cuda/lib/libcudnn*z7ldconfig -p | grep libcudnn | rev | cut -d" " -f1 | revr   r^   ÚCUDNN_LIBRARYNrf   z!Probably one of the following:
{})rF   r   r~   r   Úpathr�   r€   ÚlenÚisfileÚrealpathÚsetrg   ÚaddÚsorted)rY   Úsystem_rootÚ	cuda_pathÚ	where_cmdÚ	cudnn_cmdrO   rZ   r[   ÚlÚ	files_setÚfnÚfilesÚresults                rS   Úget_cudnn_versionr½   é   se  € äƒ~˜Ò Ü—j‘j—n‘n \°=ÓAˆÜ—J‘J—N‘N ;°Ó>ˆ	Ü—G‘G—L‘L ¨j¸'ÓBˆ	Ø0×7Ñ7¸	À9ÓM‰	Ü	‹˜8Ò	#ð
 7‰	àMˆ	Ù˜IÓ&�J€BˆˆQä
ˆ3ƒx�1‚}˜˜qš R¨1¢WÜ�J‰J�N‰N˜?Ó+ˆØˆ=œRŸW™WŸ^™^¨AÔ.Ü—7‘7×#Ñ# AÓ&Ð&ØÜ“€IØ�i‰i˜ŽoˆÜ�W‰W×Ñ˜bÓ!ˆÜ�7‰7�>‰>˜"ÕØ�M‰M˜"Õð ñ Øä�9Ó€EÜ
ˆ5ƒz�Q‚Ø�Q‰xˆØ�Y‰Y�uÓ€FØ/×6Ñ6°vÓ>Ð>rU   c                  ó¦  — d} t        «       dk(  rÁt        j                  j                  dd«      }t        j                  j                  dd«      }t        j                  j                  |dd| «      }t        j                  j                  |d	| «      }||g}|D ]5  }t        j                  j                  |«      sŒ#d
j                  |«      }  | S  | S )Nz
nvidia-smir=   r§   r¨   ÚPROGRAMFILESzC:\Program FileszNVIDIA CorporationÚNVSMIrª   z"{}")rF   r   r~   r   r­   r�   Úexistsr€   )r�   r´   Úprogram_files_rootÚlegacy_pathÚnew_pathÚsmisÚcandidate_smis          rS   rŽ   rŽ     s°   € à
€CÜƒ~˜Ò Ü—j‘j—n‘n \°=ÓAˆÜŸZ™ZŸ^™^¨NÐ<OÓPÐÜ—g‘g—l‘lØÐ 4°g¸só
ˆô —7‘7—<‘< ¨Z¸Ó=ˆØ˜+Ð&ˆÛ!ˆMÜ�w‰w�~‰~˜mÕ,Ø—m‘m MÓ2�ØØ€Jð	 "ð €JrU   c                  ód   — t        «       dk7  rydD ]  } t        d| › �«      \  }}}|dk(  sŒ| c S  y)NÚlinuxúN/A©ÚdpkgÚdnfÚyumÚzypperzwhich r   )rF   rT   )Úmgr_namerO   r[   s      rS   Ú_detect_linux_pkg_managerrÐ      sA   € Üƒ~˜Ò ØÛ4ˆÜ˜ ˜zÐ*Ó+‰ˆˆAˆqØ�‹7ØŠOð 5ð rU   c                 óf  — t        «       }|dk(  rydddœdddœdddœdddœd	œ}t        t        t        ||   d
   «      «      }t        ||   d   «      }|j	                  |«      }t        | |«      }|�|dk(  ryt        j                  dd|«      j                  d«      }t        |«      |k  ry||   S )NrÉ   é   zdpkg -l | grep {})Úfield_indexrK   r^   zdnf list | grep {}zyum list | grep {}zzypper info {} | grep VersionrÊ   rÓ   rK   r–   z +Ú )
rÐ   ÚintÚ_castr@   r€   r\   r_   rŸ   rg   r®   )rY   Úpkg_nameÚpkg_mgrÚgrep_versionrÓ   r�   ÚretÚlsts           rS   Úget_linux_pkg_versionrÜ   *  sà   € Ü'Ó)€GØ�%ÒØð Ø*ñ
ð
 Ø+ñ
ð
 Ø+ñ
ð
 Ø6ñ
ñ€Lô( œ5¤ l°7Ñ&;¸MÑ&JÓKÓL€KÜ�< Ñ(¨Ñ3Ó4€CØ
�*‰*�XÓ
€CÜ
˜: sÓ
+€CØ
€{�c˜R’iØÜ
�&‰&��s˜CÓ
 ×
&Ñ
& sÓ
+€CÜ
ˆ3ƒx�;ÒØØˆ{ÑÐrU   c           
      óx  — g }t        «       }|dk(  rWh d£ddhddhddhdœj                  t        «       i «      }|D ]+  }t        | |«      }|dk7  sŒ|j	                  d|› d|› �«       Œ- |d	v r}t        | d
«      }	 t        j                  |«      }t        |«      t        u r,|D ]&  }|j	                  d|d   › d|d   › d|d   › d�«       Œ( n|j	                  d|d   › d|d   › d�«       dj                  |«      S # t        $ r5}	|j	                  |«       |j	                  t        |	«      «       Y d }	~	ŒJd }	~	ww xY w)NrÈ   >   úintel-opencl-icdÚlibze1ú
level-zerozintel-openclrà   rÊ   rÉ   ú* z:	©r=   Úcygwinzåpowershell.exe "gwmi -Class Win32_PnpSignedDriver | where{$_.DeviceClass -eq \"DISPLAY\"            -and $_.Manufacturer -match \"Intel\"} | Select-Object -Property DeviceName,DriverVersion,DriverDate            | ConvertTo-Json"Ú
DeviceNameú: ÚDriverVersionú (Ú
DriverDateÚ)rf   )rF   r   rÐ   rÜ   Úappendr\   ÚjsonÚloadsr?   ÚlistÚ
ValueErrorr@   r�   )
rY   rÛ   ÚplatformÚpkgsÚpkgÚverÚtxtÚobjÚoÚes
             rS   Úget_intel_gpu_driver_versionr÷   O  sy  € Ø
€CÜ‹~€HØ�7Òòð Øðð
 Øðð
 Øðñ
÷$ ‰#Ô'Ó)¨2Ó
.ð% 	ó& ˆCÜ'¨
°CÓ8ˆCØ�e‹|Ø—
‘
˜R ˜u C¨ uÐ-Õ.ð ð Ð&Ñ&ÜØðó
ˆð	Ü—*‘*˜S“/ˆCÜ�C‹yœDÑ Û�AØ—J‘JØ˜Q˜|™_Ð-¨R°°/Ñ0BÐ/CÀ2ÀaÈÁoÐEVÐVWÐXõñ ð
 —
‘
˜R  OÑ 4Ð5°R¸¸LÑ8IÐ7JÈ!ÐLÔMð �9‰9�S‹>Ðøô ò 	Ø�J‰J�sŒOØ�J‰J”s˜1“v×Ñûð	ús   Á:A0C; Ã;	D9Ä+D4Ä4D9c                 óp  — g }t        «       }|dk(  r„t        | d«      }|re	 t        j                  |«      }|j	                  dg «      }t        |t        «      r|r|j                  d„ |D «       «       n|j                  d«       n|j                  d«       |dv r…t        | d«      }|rf	 t        j                  |«      }t        |t        «      r|r|j                  d„ |D «       «       n$|j                  d	|j	                  d
d«      › �«       n|j                  d«       dj                  |«      S # t        t        f$ r5}|j                  |«       |j                  t        |«      «       Y d }~ŒÙd }~ww xY w# t        $ r5}|j                  |«       |j                  t        |«      «       Y d }~Œ‘d }~ww xY w)NrÈ   zxpu-smi discovery -jÚdevice_listc              3   ó,   K  — | ]  }d |d   › �–— Œ y­w)rá   Údevice_nameNrW   ©rq   Údevices     rS   rt   z(get_intel_gpu_onboard.<locals>.<genexpr>Š  s   è ø€ ÐVÉ+À  F¨=Ñ$9Ð#:Ô;É+ùó   ‚rÉ   râ   zÁpowershell.exe "gwmi -Class Win32_PnpSignedDriver | where{$_.DeviceClass -eq \"DISPLAY\"            -and $_.Manufacturer -match \"Intel\"} | Select-Object -Property DeviceName | ConvertTo-Json"c              3   ó,   K  — | ]  }d |d   › �–— Œ y­w)rá   rä   NrW   rü   s     rS   rt   z(get_intel_gpu_onboard.<locals>.<genexpr>œ  s   è ø€ ÐMÉ¸v  F¨<Ñ$8Ð#9Ô:Éùrþ   rá   rä   rf   )rF   r\   rë   rì   r   Ú
isinstancerí   Úextendrê   rî   Ú	TypeErrorr@   r�   )rY   rÛ   rï   ró   rô   rù   rö   s          rS   Úget_intel_gpu_onboardr  €  sr  € Ø€CÜ‹~€HØ�7ÒÜ˜zÐ+AÓBˆÙð	#Ü—j‘j “o�Ø!Ÿg™g m°RÓ8�Ü˜k¬4Ô0±[Ø—J‘JÑVÉ+ÓVÕVà—J‘J˜uÔ%øð
 �J‰J�uÔØÐ&Ñ&ÜØðmó
ˆñ
 ð#Ü—j‘j “o�Ü˜c¤4Ô(©SØ—J‘JÑMÉÓMÕMà—J‘J  C§G¡G¨L¸%Ó$@Ð#AÐBÔCøð
 �J‰J�uÔØ�9‰9�S‹>Ðøô/ ¤	Ð*ò #Ø—
‘
˜3”Ø—
‘
œ3˜q›6×"Ñ"ûð#ûô$ ò #Ø—
‘
˜3”Ø—
‘
œ3˜q›6×"Ñ"ûð#ús1   ¡A#D0 Â)A$E7 Ä0E4Ä?+E/Å/E4Å7	F5Æ +F0Æ0F5c           	      ó  — t         rt        t        d«      syt        j                  j	                  «       }|dk(  ryt        |«      D �cg c]'  }d|› dt        j                  j                  |«      › �‘Œ) }}dj                  |«      S c c}w )NÚxpurÉ   r   z* [z] rf   )r—   r˜   r!   r  Údevice_countÚrangerœ   r�   )rY   r  ÚiÚdevicess       rS   Úget_intel_gpu_detectedr
  §  s‡   € Ý¤'¬%°Ô"7Øä—9‘9×)Ñ)Ó+€LØ�qÒØô BGÀ|ÔATóÙAT¸Aˆ#ˆaˆS�”5—9‘9×2Ñ2°1Ó5Ð6Ò7ÐATð ð ð �9‰9�WÓÐùòs   Á	,Bc           
      óì  — d\  }}}t        «       dk(  r | d«      \  }}}nùt        «       dk(  rÓ | d«      \  }}}|dk(  rÛg }	 t        j                  |«      }t        |«      t        u rP|D ]J  }|j                  d«       |j                  |j                  «       D ��cg c]  \  }}|› d|› �‘Œ c}}«       ŒL n7|j                  |j                  «       D ��cg c]  \  }}|› d|› �‘Œ c}}«       d	j                  |«      }nt        «       d
k(  r | d«      \  }}}d}
|dk(  r|}
|
S |}
|
S c c}}w c c}}w # t        $ r5}	|j                  |«       |j                  t        |	«      «       Y d }	~	Œd }	~	ww xY w)N)r   r–   r–   rÈ   Úlscpur=   zípowershell.exe "gwmi -Class Win32_Processor | Select-Object -Property Name,Manufacturer,Family,            Architecture,ProcessorType,DeviceID,CurrentClockSpeed,MaxClockSpeed,L2CacheSize,L2CacheSpeed,Revision            | ConvertTo-Json"r   z----------------------rå   rf   r�   z"sysctl -n machdep.cpu.brand_stringÚNone)rF   rë   rì   r?   rí   rê   r  Úitemsrî   r@   r�   )rY   rO   rZ   rR   rÛ   rô   rõ   ÚkÚvrö   r    s              rS   Úget_cpu_infor    sn  € Ø�L€BˆˆSÜƒ~˜Ò Ù! 'Ó*‰ˆˆC‘Ü	‹˜7Ò	"Ù!ðó
‰ˆˆC�ð
 �Š7ØˆCð
#Ü—j‘j “o�Ü˜“9¤Ñ$Û ˜ØŸ
™
Ð#;Ô<ØŸ
™
¸a¿g¹g¼iÔ#H¹i±F°Q¸ q c¨¨A¨3¢K¸iÒ#HÕIñ !ð —J‘J¸#¿)¹)¼+ÔF¹+±°°A 1 # R¨ s¢¸+ÒFÔGð —)‘)˜C“.‰CÜ	‹˜8Ò	#Ù!Ð"FÓG‰ˆˆC�Ø€HØ	ˆQ‚wØˆð €Oð ˆØ€Oùó $IùãFøÜò #Ø—
‘
˜3”Ø—
‘
œ3˜q›6×"Ñ"ûð#ús7   ÁAD5 ÂD)Â-)D5 ÃD/
Ã'D5 Ä)D5 Ä5	E3Ä>+E.Å.E3c                  ó"  — t         j                  j                  d«      ryt         j                  j                  d«      ryt         j                  j                  d«      ryt         j                  j                  d«      ryt         j                  S )NrÈ   r=   rã   r�   )Úsysrï   rv   rW   rU   rS   rF   rF   #  s`   € Ü
‡|�|×Ñ˜wÔ'ØÜ	�‰×	 Ñ	  Ô	)ØÜ	�‰×	 Ñ	  Ô	*ØÜ	�‰×	 Ñ	  Ô	*Øä�|‰|ÐrU   c                 ó   — t        | dd«      S )Nzsw_vers -productVersionz(.*)r…   r†   s    rS   Úget_mac_versionr  0  s   € Ü$ ZÐ1JÈGÓTÐTrU   c                 óÂ   — t        | d«      }	 t        j                  |«      }|d   › d|d   › d|d   › d�}|S # t        $ r}|dt	        |«      › �z  }Y d }~|S d }~ww xY w)	Nz„powershell.exe "gwmi -Class Win32_OperatingSystem | Select-Object -Property Caption,        OSArchitecture,Version | ConvertTo-Json"ÚCaptionrç   ÚVersionrÔ   ÚOSArchitectureré   rf   )r\   rë   rì   rî   r@   )rY   rÚ   rô   rö   s       rS   Úget_windows_versionr  4  s�   € Ü
Øð	2ó€Cð
Ü�j‰j˜‹oˆØ�Y‘Ð   3 y¡>Ð"2°!°CÐ8HÑ4IÐ3JÈ!ÐLˆð €Jøô ò Ø�”C˜“F�8ˆ}ÑŒØ€Jûðús   Ž)9 ¹	AÁAÁAc                 ó   — t        | dd«      S )Nzlsb_release -azDescription:\t(.*)r…   r†   s    rS   Úget_lsb_versionr  B  s   € Ü$ØÐ$Ð&;óð rU   c                 ó   — t        | dd«      S )Nzcat /etc/*-releasezPRETTY_NAME="(.*)"r…   r†   s    rS   Úcheck_release_filer  H  s   € Ü$ØÐ(Ð*?óð rU   c                 ó`  — ddl m} t        «       }|dv rt        | «      S |dk(  r%t	        | «      }|€y dj                  | |«       «      S |dk(  r_t        | «      }|�dj                  | |«       «      S t        | «      }|�dj                  | |«       «      S dj                  | |«       «      S |S )Nr   )Úmachinerâ   r�   zmacOS {} ({})rÈ   z{} ({}))rï   r   rF   r  r  r€   r  r  )rY   r   rï   r™   Údescs        rS   Úget_osr"  N  s¿   € Ý ä‹~€HàÐ&Ñ&Ü" :Ó.Ð.à�8ÒÜ! *Ó-ˆØˆ?ØØ×%Ñ% g©w«yÓ9Ð9à�7Òä˜zÓ*ˆØÐØ×#Ñ# D©'«)Ó4Ð4ô " *Ó-ˆØÐØ×#Ñ# D©'«)Ó4Ð4à×Ñ ©'«)Ó4Ð4ð €OrU   c                  ó*   — dd l } | j                  «       S ©Nr   ©rï   r%  s    rS   Úget_python_platformr&  m  s   € Ûà×ÑÓÐrU   c                  ód   — dd l } t        «       dk7  rydj                  | j                  «       «      S )Nr   rÈ   rÉ   Ú-)rï   rF   r�   Úlibc_verr%  s    rS   Úget_libc_versionr*  s  s*   € Ûäƒ~˜Ò ØØ�8‰8�H×%Ñ%Ó'Ó(Ð(rU   c                 óF  ‡— ‰€t         t        z   t        z   t        z   Št        j
                  j                  dk(  rdnd}dt        j                  d<   t        | t        j                  dddg«      }|€||fS d	j                  ˆfd
„|j                  «       D «       «      }||fS )zZReturn `pip list` output. Note: will also find conda-installed pytorch and numpy packages.é   Úpip3ÚpipÚ1ÚPIP_DISABLE_PIP_VERSION_CHECKz-mpiprí   z--format=freezerf   c              3   óN   •‡K  — | ]  Št        ˆfd „‰D «       «      sŒ‰–— Œ y­w)c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wro   rW   rp   s     €rS   rt   z-get_pip_packages.<locals>.<genexpr>.<genexpr>Œ  s   øè ø€ Ð0SÉ(À$°¸´É(ùru   N)rw   rx   s    @€rS   rt   z#get_pip_packages.<locals>.<genexpr>‹  s#   ùè ø€ ð Ù)�¬SÓ0SÉ(Ó0SÕ-SŒÑ)ùs   „%ž%)ÚPIP_PATTERNSr{   r|   r}   r  Úversion_infoÚmajorr   r~   r\   Ú
executabler�   r‚   )rY   ry   r   rZ   Úfiltered_outs    `   rS   Úget_pip_packagesr8  {  s¦   ø€ àÐÜ¤/Ñ1´OÑCÄoÑUˆä×,Ñ,×2Ñ2°aÒ7‘&¸U€Kà25„B‡J�JÐ.Ñ/ô Ø”S—^‘^ W¨fÐ6GÐHó€Cð €{Ø˜CÐÐà—9‘9ó ØŸ™Ô)óó €Lð ˜Ð$Ð$rU   Úreturnc                  ó¦   — dD � ci c]A  } t         j                  j                  | «      r | t         j                  j                  | «      “ŒC c} S c c} w )zKReturn the caching allocator configuration from environment variables.
    )ÚPYTORCH_CUDA_ALLOC_CONFÚPYTORCH_HIP_ALLOC_CONFÚPYTORCH_ALLOC_CONF)r   r~   r   )Úvars    rS   Úget_cachingallocator_configr?  ’  sQ   € ñ
óñ
ˆCô
 �:‰:�>‰>˜#Ôð 	ŒR�Z‰Z�^‰^˜CÓ Ñ ð
ñð ùò s   …AAc                  óÌ   — t         r^t        j                  j                  «       r@t        j                  j	                  «        t
        j                  j                  dd«      } | S y)NÚCUDA_MODULE_LOADINGr–   rÉ   )r—   r!   rš   r›   Úinitr   r~   r   )Úconfigs    rS   Úget_cuda_module_loading_configrD  ¡  s?   € Ýœ5Ÿ:™:×2Ñ2Ô4Ü�
‰
�‰ÔÜ—‘—‘Ð 5°rÓ:ˆØˆàrU   c                  ój   — t         r-dd l} t        | j                  j                  j
                  «      S y)Nr   rÉ   )r—   Útorch.backends.xnnpackr@   ÚbackendsÚxnnpackÚenabled)r!   s    rS   r   r   ª  s&   € ÝÛ%ä�5—>‘>×)Ñ)×1Ñ1Ó2Ð2àrU   c            
      óø  — t         } t        | «      \  }}t        �r¦t        j                  }t        t        j                  j                  «      }t        t        j                  j                  «       «      }t        j                  j                  }t        t        j                  j                  «       «      }t        j                  j                  «       rS|› d�dt        j                  j                  › d�z   dt        | «      › d�z   dt        | «      › d�z   dt        | «      › �z   }t        t        j                  d«      rt        j                  j                  €dx}x}	}
nod„ }t        j                   j#                  «       j%                  d«      } ||d	«      }	 ||d
«      }
d}t        j                  j                  }ndx}x}x}x}}dx}x}	}
t&        j                  j)                  dd«      }t+        | «      }t-        d(i d|“d|“ddj/                  |t&        j0                  j3                  «       dz   «      “dt5        «       “d|“d|“dt7        | «      “dt9        «       “dt;        | «      “dt=        | «      “dt?        | «      “d|“d|“d|	“d|
“d|“d|“d|“d tA        | «      “d!tC        «       “d"tE        | «      “d#tG        | «      “d$tI        | «      “d%tK        «       “d&tM        «       “d'tO        | «      “ŽS ))aõ  
    Collects environment information to aid in debugging.

    The returned environment information contains details on torch version, is debug build
    or not, cuda compiled version, gcc version, clang version, cmake version, operating
    system, libc version, python version, python platform, CUDA availability, CUDA
    runtime version, CUDA module loading config, GPU model and configuration, Nvidia
    driver version, cuDNN version, pip version and versions of relevant pip and
    conda packages, HIP runtime version, MIOpen runtime version,
    Caching allocator config, XNNPACK availability and CPU information.

    Returns:
        SystemEnv (namedtuple): A tuple containing various environment details
            and system information.
    rf   zXPU used to build PyTorch: zIntel GPU driver version:
zIntel GPU models onboard:
zIntel GPU models detected:
r“   rÉ   c                 ól   — | D �cg c]  }||v sŒ|j                  d d«      d   ‘Œ }}|r|d   S dS c c}w )Nr^   éÿÿÿÿr   rÉ   )Úrsplit)ÚcfgÚprefixÚsÚ_lsts       rS   Úget_version_or_naz'get_env_info.<locals>.get_version_or_naÚ  sC   € Ù7:ÓJ±s°!¸fÈºk˜Ÿ™  qÓ)¨"Ó-°s�ÐJÙ"&�t˜A‘wÐ1¨EÐ1ùò Ks   …	1�1zHIP RuntimeÚMIOpenrÔ   r   r   r   z{} ({}-bit runtime)r^   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r    rW   )(rT   r8  r—   r!   Ú__version__r@   r™   Údebugrš   r›   r  r÷   r  r
  r˜   r“   Ú_CÚ_show_configrg   r  Úreplacerƒ   r   r€   ÚmaxsizeÚ
bit_lengthr&  r¥   rD  r£   r‘   r½   r"  r*  r‡   r‰   r‹   r?  r   r  )rY   r   Úpip_list_outputÚversion_strÚdebug_mode_strÚcuda_available_strÚcuda_version_strÚxpu_available_strr   r   r   rR  rN  Úsys_versionr   s                  rS   Úget_env_inforb  ³  sD  € ô  €JÜ#3°JÓ#?Ñ €K�æÜ×'Ñ'ˆÜœUŸ]™]×0Ñ0Ó1ˆÜ ¤§¡×!8Ñ!8Ó!:Ó;ÐÜ Ÿ=™=×-Ñ-ÐÜ¤§	¡	× 6Ñ 6Ó 8Ó9ÐÜ�9‰9×!Ñ!Ô#à$Ð% RÐ(Ø/´·±×0AÑ0AÐ/BÀ"ÐEñFà/Ô0LÈZÓ0XÐ/YÐY[Ð\ñ]ð 0Ô0EÀjÓ0QÐ/RÐRTÐUñVð 1Ô1GÈ
Ó1SÐ0TÐUñ	Vð ô œŸ™ uÔ-´·±×1BÑ1BÐ1JàRWÐWÐ ÐWÐ#6Ñ9Oò2ô —(‘(×'Ñ'Ó)×/Ñ/°Ó5ˆCÙ"3°C¸Ó"GÐÙ%6°s¸HÓ%EÐ"Ø$ÐÜ#(§=¡=×#4Ñ#4Ñ àchÐhˆÐh�nÐhÐ'9ÐhÐ<LÐO`ØNSÐSÐÐSÐ2Ð5Kä—+‘+×%Ñ% d¨CÓ0€Kä'¨
Ó3€Näò Ù!ðá%ðð -×3Ñ3ØœŸ™×/Ñ/Ó1°AÑ5ô
ðô ,Ô-ðñ -ðñ /ðô 6°jÔAðô ;Ô<ðô ' zÔ2ðô 8¸
ÔCðô (¨
Ô3ðñ +ðñ 2ðñ  0ð!ñ"  6ð#ñ$  ð%ñ& %ð'ñ( &ð)ô* �*Ôð+ô, &Ô'ð-ô. $ JÔ/ð/ô0 (¨
Ô3ð1ô2 (¨
Ô3ð3ô4 "=Ô!>ð5ô6 2Ô3ð7ô8 ˜jÔ)ð9ð rU   aª  
PyTorch version: {torch_version}
Is debug build: {is_debug_build}
CUDA used to build PyTorch: {cuda_compiled_version}
ROCM used to build PyTorch: {hip_compiled_version}

OS: {os}
GCC version: {gcc_version}
Clang version: {clang_version}
CMake version: {cmake_version}
Libc version: {libc_version}

Python version: {python_version}
Python platform: {python_platform}
Is CUDA available: {is_cuda_available}
CUDA runtime version: {cuda_runtime_version}
CUDA_MODULE_LOADING set to: {cuda_module_loading}
GPU models and configuration: {nvidia_gpu_models}
Nvidia driver version: {nvidia_driver_version}
cuDNN version: {cudnn_version}
Is XPU available: {is_xpu_available}
HIP runtime version: {hip_runtime_version}
MIOpen runtime version: {miopen_runtime_version}
Is XNNPACK available: {is_xnnpack_available}
Caching allocator config: {caching_allocator_config}

CPU:
{cpu_info}

Versions of relevant libraries:
{pip_packages}
{conda_packages}
c                 ó˜  ‡
— dd„}dd„}dd„}dd„}d„ }| j                  «       Š
 || j                  «      ‰
d<   g d¢}|dgz   }t        ˆ
fd	„|D «       «      }t        r=t        j
                  j                  «       s|r|D ]  }	d
‰
|	<   Œ	 | j                  €d‰
d<    |‰
«      Š
 |‰
«      Š
 |‰
d   «      ‰
d<    |‰
d   «      ‰
d<   ‰
d   r( |‰
d   dj                  | j                  «      «      ‰
d<   ‰
d   r |‰
d   d«      ‰
d<   | j                  ‰
d<   | j                  ‰
d<   | j                  sd‰
d<   t        j                  di ‰
¤ŽS )Nc                 ó*   — | D ]  }| |   �Œ	|| |<   Œ | S ro   rW   )ÚdctÚreplacementÚkeys      rS   Úreplace_nonesz!pretty_str.<locals>.replace_nones/  s)   € ÛˆCØ�3‰xÐ#ØØ"ˆC�ŠHð ð ˆ
rU   c                 óH   — | D ]  }| |   du r|| |<   Œ| |   du sŒ|| |<   Œ | S )NTFrW   )re  ÚtrueÚfalserg  s       rS   Úreplace_boolsz!pretty_str.<locals>.replace_bools6  s=   € ÛˆCØ�3‰x˜4ÑØ��C’Ø�S‘˜UÒ"Ø ��C’ð	 ð
 ˆ
rU   c                 ót   — | j                  d«      }|D �cg c]  }||z   ‘Œ	 }}dj                  |«      S c c}w )Nrf   )rg   r�   )ÚtextÚtagÚlinesrs   Úupdated_liness        rS   Úprependzpretty_str.<locals>.prepend>  s<   € Ø—
‘
˜4Ó ˆÙ05Ó6±¨˜˜t›°ˆÐ6Ø�y‰y˜Ó'Ð'ùò 7s   –5c                 ó*   — | �t        | «      dk(  r|S | S r$  )r®   )rn  rf  s     rS   Úreplace_if_emptyz$pretty_str.<locals>.replace_if_emptyC  s   € ØÐ¤ D£	¨Q¢ØÐØˆrU   c                 óf   — | �.t        | j                  d«      «      dkD  rdj                  | «      S | S )Nrf   r^   z
{}
)r®   rg   r€   )Ústrings    rS   Úmaybe_start_on_next_linez,pretty_str.<locals>.maybe_start_on_next_lineH  s1   € àÐ¤# f§l¡l°4Ó&8Ó"9¸AÒ"=Ø—?‘? 6Ó*Ð*ØˆrU   r   )r   r   r   r   c              3   ó,   •K  — | ]  }‰|   d u –— Œ y ­wro   rW   )rq   ÚfieldÚmutable_dicts     €rS   rt   zpretty_str.<locals>.<genexpr>\  s    øè ø€ ð *Ù1D¨ˆ�UÑ˜tÔ#Ñ1Dùs   ƒzNo CUDAr  r	   r   r   z[{}] z[conda] r    r   rÉ   )zCould not collect)ÚYesÚNo)z	[prepend])zNo relevant packagesrW   )Ú_asdictr   Úallr—   r!   rš   r›   r	   r€   r   r    r   Úenv_info_fmt)Úenvinforh  rl  rr  rt  rw  Údynamic_cuda_fieldsÚall_cuda_fieldsÚall_dynamic_cuda_fields_missingry  rz  s             @rS   Ú
pretty_strr„  .  sŸ  ø€ óóó(ó
ò
ð —?‘?Ó$€Lñ )AØ×!Ñ!ó)€LÐ$Ñ%ò
Ðð
 *¨_Ð,=Ñ=€OÜ&)ó *Ù1Dó*ó 'Ð#õ 	Ü—
‘
×'Ñ'Ô)Ù+ã$ˆEØ"+ˆL˜Òð %à×(Ñ(Ð0Ø4:ˆLÐ0Ñ1ñ ! Ó.€Lñ ! Ó.€Lñ $4°LÀÑ4PÓ#Q€L�Ñ Ù%5°lÐCSÑ6TÓ%U€LÐ!Ñ"ð �NÒ#Ù'.Ø˜Ñ(¨'¯.©.¸×9LÑ9LÓ*Mó(
ˆ�^Ñ$ð Ð$Ò%Ù)0ØÐ)Ñ*¨Jó*
ˆÐ%Ñ&ð  '×/Ñ/€L�ÑØ/6×/OÑ/O€LÐ+Ñ,Ø×+Ò+Ø38ˆÐ/Ñ0Ü×ÑÑ. Ñ.Ð.rU   c                  ó(   — t        t        «       «      S )aá  
    Returns a pretty string of environment information.

    This function retrieves environment information by calling the `get_env_info` function
    and then formats the information into a human-readable string. The retrieved environment
    information is listed in the document of `get_env_info`.
    This function is used in `python collect_env.py` that should be executed when reporting a bug.

    Returns:
        str: A pretty string of the environment information.
    )r„  rb  rW   rU   rS   Úget_pretty_env_infor†  „  s   € ô ”l“nÓ%Ð%rU   c                  ó0  — t        d«       t        «       } t        | «       t        �rjt        t        d«      �rXt        t        j
                  d«      �r<t        j
                  j                  j                  }t        j                  dk(  �rt        j                  j                  |«      rãt        j                  |«      D �cg c]"  }t        j                  j                  ||«      ‘Œ$ }}t        |t        j                  j                   ¬«      }t        j                  j!                  |«      }t"        j"                  j%                  |«      j'                  d«      }dj)                  ||«      dz   }t        |t        j*                  ¬	«       y y y y y y c c}w )
Nz%Collecting environment information...ÚutilsÚ_crash_handlerrÈ   )rg  z%Y-%m-%d %H:%M:%Sz.
*** Detected a minidump at {} created on {}, zKif this is related to your bug please include it when you file a report ***)Úfile)Úprintr†  r—   r˜   r!   rˆ  r‰  ÚDEFAULT_MINIDUMP_DIRr  rï   r   r­   rÁ   Úlistdirr�   ÚmaxÚgetctimeÚdatetimeÚfromtimestampÚstrftimer€   r;   )rQ   Úminidump_dirÚdumpÚdumpsÚlatestÚctimeÚcreation_timeÚmsgs           rS   Úmainrš  “  sA  € Ü	Ð
1Ô2Ü Ó"€FÜ	ˆ&„Mö 	Ü”E˜7Õ#Ü”E—K‘KÐ!1Õ2ä—{‘{×1Ñ1×FÑFˆÜ�<‰<˜7Ó"¤r§w¡w§~¡~°lÔ'Cä=?¿Z¹ZÈÔ=UóÙ=U°T”—‘—‘˜\¨4Õ0Ð=Uð ð ô ˜¤B§G¡G×$4Ñ$4Ô5ˆFÜ—G‘G×$Ñ$ VÓ,ˆEÜ$×-Ñ-×;Ñ;¸EÓB×KÑKØ#óˆMð B×HÑHØ˜Móð `ñ`ð ô �#œCŸJ™JÖ'ð (DÐ"ð 3ð $ð 	ùòs   Ã'FÚ__main__ro   )r9  N)Ar�  rë   rG   r   r_   rA   r  Úcollectionsr   Útypingr   rÖ   r   Ú_Dictr!   r—   ÚImportErrorÚ	NameErrorÚAttributeErrorÚOSErrorr   r{   r|   r}   rz   r3  rT   r\   rd   rh   rƒ   r‡   r‰   r‹   r‘   r£   r¥   r½   rŽ   rÐ   rÜ   r÷   r  r
  r  rF   r  r  r  r  r"  r&  r*  r8  r@   r?  rD  r   rb  rJ   r  r„  r†  rš  Ú__name__rW   rU   rS   Ú<module>r¤     s~  ðó Û Û Û 	Û 	Û Û 
Ý "ß /ðÛà€Oñ
 Øòó€	ò@€ò€ò$€ò0€ò€ò+ò"òòóòOòòSòQò'ò4Xò"?òJò$ò"òJ.òb$òNòtòD
òUòòòòò>ò)ó%ð. U¨3°¨8¡_ó òòòUðp ÷@ 
�EƒGðA òFS/òl&ó(ð: ˆzÒÙ…Fð øðw 	�Y °Ð8ò Ø‚Oðús   ¬C# Ã#C1Ã0C1