Ë
    ÝÍ:j·  ã                   óð   — 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Zd dl	Z	d dl
mZmZmZmZmZmZmZmZ  G d„ d«      Zd„ Zddefd„Zddefd	„Zed
k(  r  e«       Z e eej6                  «      «       yy)é    N)Úenviron)Ú	NVMLErrorÚnvmlDeviceGetCountÚnvmlDeviceGetHandleByIndexÚnvmlDeviceGetMemoryInfoÚnvmlDeviceGetNameÚnvmlInitÚnvmlShutdownÚnvmlSystemGetDriverVersionc                   óŒ   — e Zd ZdZdd„Zd„ Zdefd„Zdedede	fd	„Z
defd
„Zdefd„Zdee	   fd„Zdefd„Zdefd„Zdefd„Zy)ÚMachineInfoz'Class encapsulating Machine Info logic.Nc                 óH  — || _         |€Dt        j                  dt        j                  ¬«       t        j                  t
        «      | _        n|| _        d | _        	 | j                  «       | _        y # t        $ r% | j                  j                  d«       d | _        Y y w xY w)Nz3%(asctime)s - %(name)s - %(levelname)s: %(message)s)ÚformatÚlevelz"Exception in getting machine info.)ÚsilentÚloggingÚbasicConfigÚINFOÚ	getLoggerÚ__name__ÚloggerÚmachine_infoÚget_machine_infoÚ	ExceptionÚ	exception)Úselfr   r   s      úz/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/onnxruntime/transformers/machine_info.pyÚ__init__zMachineInfo.__init__    s‰   € ØˆŒàˆ>Ü×ÑØLÜ—l‘lõô "×+Ñ+¬HÓ5ˆD�Kà ˆDŒKà ˆÔð	%Ø $× 5Ñ 5Ó 7ˆDÕøÜò 	%Ø�K‰K×!Ñ!Ð"FÔGØ $ˆDÖð	%ús   ÁA3 Á3+B!Â B!c           
      óT  — | j                  «       }t        j                  «       }|| j                  «       | j                  «       t	        j                  «       | j                  |dg«      | j                  «       | j                  «       | j                  «       | j                  «       dœ	}|S )z!Get machine info in metric formatÚpython_version)	ÚgpuÚcpuÚmemoryÚosÚpythonÚpackagesÚonnxruntimeÚpytorchÚ
tensorflow)
Úget_gpu_info_by_nvmlÚcpuinfoÚget_cpu_infoÚget_memory_infoÚplatformÚ_try_getÚget_related_packagesÚget_onnxruntime_infoÚget_pytorch_infoÚget_tensorflow_info)r   Úgpu_infoÚcpu_infor   s       r   r   zMachineInfo.get_machine_info3   s˜   € à×,Ñ,Ó.ˆÜ×'Ñ'Ó)ˆð Ø×$Ñ$Ó&Ø×*Ñ*Ó,Ü×#Ñ#Ó%Ø—m‘m HÐ/?Ð.@ÓAØ×1Ñ1Ó3Ø×4Ñ4Ó6Ø×,Ñ,Ó.Ø×2Ñ2Ó4ñ

ˆð Ðó    Úreturnc                 ó\   — t        j                  «       }|j                  |j                  dœS )zGet memory info)ÚtotalÚ	available)ÚpsutilÚvirtual_memoryr9   r:   )r   Úmems     r   r-   zMachineInfo.get_memory_infoE   s#   € ä×#Ñ#Ó%ˆØŸ™°·±Ñ?Ð?r6   r5   Únamesc           	      ó¶   — |D ]O  }||v sŒ||   }t        |t        t        f«      r*dj                  |D �cg c]  }t	        |«      ‘Œ c}«      c S |c S  yc c}w )Nú,Ú )Ú
isinstanceÚlistÚtupleÚjoinÚstr)r   r5   r>   ÚnameÚvalueÚis         r   r/   zMachineInfo._try_getJ   s]   € Øò 	ˆDØ�xÒØ  ™�Ü˜e¤d¬E ]Ô3ØŸ8™8°UÖ$;°¤S¨¥VÒ$;Ó<Ò<Ø’ð	ð ùò %<s   µA
c           	      óP  — t        j                  «       }| j                  |ddg«      t        j                  d¬«      t        j                  d¬«      | j                  |dg«      | j                  |dg«      | j                  |dg«      t        j                  «       j                  d	œS )
zGet CPU infoÚbrandÚ	brand_rawF)ÚlogicalTÚ	hz_actualÚl2_cache_sizeÚflags)rK   ÚcoresÚlogical_coresÚhzÚl2_cacherP   Ú	processor)r+   r,   r/   r;   Ú	cpu_countr.   ÚunamerU   )r   r5   s     r   r,   zMachineInfo.get_cpu_infoS   sŒ   € ä×'Ñ'Ó)ˆð —]‘] 8¨g°{Ð-CÓDÜ×%Ñ%¨eÔ4Ü#×-Ñ-°dÔ;Ø—-‘- ¨;¨-Ó8ØŸ™ h°Ð0AÓBØ—]‘] 8¨g¨YÓ7Ü!Ÿ™Ó)×3Ñ3ñ
ð 	
r6   c                 óØ  — g }d}	 t        «        t        «       }t        «       }t        |«      D ]W  }t	        |«      }t        |«      }i }|j                  |d<   |j                  |d<   t        |«      |d<   |j                  |«       ŒY t        «        ||dœ}	dt        v rt        d   |	d<   |	S # t        $ r2}| j                  s| j                  j                  d|«       Y d}~yd}~ww xY w)	zGet GPU info using nvmlNÚmemory_totalÚmemory_availablerG   z-Error fetching GPU information using nvml: %s)Údriver_versionÚdevicesÚCUDA_VISIBLE_DEVICESÚcuda_visible)r	   r   r   Úranger   r   r9   Úfreer   Úappendr
   r   r   r   Úerrorr   )
r   Úgpu_info_listr[   ÚdeviceCountrI   ÚhandleÚinfor4   rb   Úresults
             r   r*   z MachineInfo.get_gpu_info_by_nvmla   sï   € àˆØˆð	ÜŒJÜ7Ó9ˆNÜ,Ó.ˆKÜ˜;Ó'ò /�Ü3°AÓ6�Ü.¨vÓ6�Ø�Ø+/¯:©:�˜Ñ(Ø/3¯y©y�Ð+Ñ,Ü#4°VÓ#<�˜Ñ Ø×$Ñ$ XÕ.ð/ô ŒNð %3¸}ÑMˆà!¤WÑ,Ü%,Ð-CÑ%DˆF�>Ñ"Øˆøô ò 	Ø—;’;Ø—‘×!Ñ!Ð"QÐSXÔYÜûð	ús   †BB. Â.	C)Â7(C$Ã$C)c                 óì   — h d£}i }t         j                  j                  «       D ]L  }|j                  d   j                  «       |v sŒ#|j                  ||j                  d   j                  «       <   ŒN |S )N>   úonnxruntime-gpuúonnxconverter-commonÚonnxÚnumpyÚsympyÚtorchÚprotobufr)   Úflatbuffersr'   ÚtransformersÚName)Ú	importlibÚmetadataÚdistributionsÚlowerÚversion)r   Úrelated_packagesÚrelated_packages_listÚdists       r   r0   z MachineInfo.get_related_packages}   sv   € ò
Ðð !#ÐÜ×&Ñ&×4Ñ4Ó6ò 	TˆDØ�}‰}˜VÑ$×*Ñ*Ó,Ð0@Ò@ØGKÇ|Á|Ð% d§m¡m°FÑ&;×&AÑ&AÓ&CÒDð	Tð %Ð$r6   c                 ó6  — 	 dd l }|j                  d|j                  «       v dœS # t        $ r1}| j                  s| j
                  j                  |«       Y d }~y d }~wt        $ r2}| j                  s| j
                  j                  |d«       Y d }~y d }~ww xY w)Nr   ÚCUDAExecutionProvider)rw   Úsupport_gpuF)r'   Ú__version__Úget_available_providersÚImportErrorr   r   r   r   )r   r'   rb   r   s       r   r1   z MachineInfo.get_onnxruntime_info’   s…   € ð	Ûð '×2Ñ2Ø6¸+×:]Ñ:]Ó:_Ð_ñð øô ò 	Ø—;’;Ø—‘×%Ñ% eÔ,ÜûÜò 	Ø—;’;Ø—‘×%Ñ% i°Ô7Üûð	ús    ‚"% ¥	B®'AÁBÁ&(BÂBc                 óp  — 	 dd l }|j                  |j                  j                  «       |j                  j                  dœS # t
        $ r1}| j                  s| j                  j                  |«       Y d }~y d }~wt        $ r2}| j                  s| j                  j                  |d«       Y d }~y d }~ww xY w)Nr   )rw   r}   ÚcudaF)
rn   r~   r‚   Úis_availablerw   r€   r   r   r   r   )r   rn   rb   r   s       r   r2   zMachineInfo.get_pytorch_info£   s‘   € ð	Ûð !×,Ñ,Ø$Ÿz™z×6Ñ6Ó8ØŸ™×*Ñ*ñð øô
 ò 	Ø—;’;Ø—‘×%Ñ% eÔ,ÜûÜò 	Ø—;’;Ø—‘×%Ñ% i°Ô7Üûð	ús#   ‚?A Á	B5Á'A7Á7B5Â(B0Â0B5c                 ó‚  — 	 dd l }|j                  j                  |j                  j                  |j                  j                  «       dœS # t        $ r1}| j                  s| j                  j                  |«       Y d }~y d }~wt        $ r1}| j                  s| j                  j                  |«       Y d }~y d }~ww xY w)Nr   )rw   Úgit_versionr}   )r)   rw   ÚVERSIONÚGIT_VERSIONÚtestÚis_built_with_cudar€   r   r   r   ÚModuleNotFoundError)r   Útfrb   s      r   r3   zMachineInfo.get_tensorflow_infoµ   s“   € ð	Û#ð Ÿ:™:×-Ñ-Ø!Ÿz™z×5Ñ5Ø!Ÿw™w×9Ñ9Ó;ñð øô
 ò 	Ø—;’;Ø—‘×%Ñ% eÔ,ÜûÜ"ò 	Ø—;’;Ø—‘×%Ñ% eÔ,Üûð	ús$   ‚A	A Á	B>Á'BÂB>Â'B9Â9B>)FN)r   Ú
__module__Ú__qualname__Ú__doc__r   r   Údictr-   rC   rF   r/   r,   r*   r0   r1   r2   r3   © r6   r   r   r      sƒ   „ Ù1ó%ò&ð$@ ó @ð
 ð ¨dð °só ð
˜dó 
ð dó ð8% d¨3¡ió %ð* dó ð" $ó ð$ Tô r6   r   c                  óœ   — t        j                  «       } | j                  dddd¬«       | j                  d¬«       | j	                  «       }|S )Nz--silentFÚ
store_truezDo not print error message)ÚrequiredÚactionÚhelp)r   )ÚargparseÚArgumentParserÚadd_argumentÚset_defaultsÚ
parse_args)ÚparserÚargss     r   Úparse_argumentsr�   È   sU   € Ü×$Ñ$Ó&€Fà
×ÑØØØØ)ð	 ô ð ×Ñ˜uÐÔ%à×ÑÓ€DØ€Kr6   r7   c                 óZ   — t        | «      }t        j                  |j                  d¬«      S )Né   ©Úindent)r   ÚjsonÚdumpsr   )r   Úmachines     r   r   r   ×   s#   € Ü˜&Ó!€GÜ�:‰:�g×*Ñ*°1Ô5Ð5r6   c                 ó¾   — t        | «      }|j                  }|r(|j                  «       D ��ci c]  \  }}|dv sŒ||“Œ }}}t        j                  |d¬«      S c c}}w )N)r!   r"   r#   rŸ   r    )r   r   Úitemsr¢   r£   )r   r¤   rf   ÚkeyrH   s        r   Úget_device_infor¨   Ü   sZ   € Ü˜&Ó!€GØ×Ñ€DÙØ-1¯Z©Z«\×]™z˜s E¸SÐD\Ò=\��U‘
Ð]ˆÑ]Ü�:‰:�d 1Ô%Ð%ùó ^s
   ­AºAÚ__main__)T)r–   Úimportlib.metadatars   r¢   r   r.   r$   r   r+   r;   Úpy3nvml.py3nvmlr   r   r   r   r   r	   r
   r   r   r�   rF   r   r¨   r   rœ   Úprintr   r�   r6   r   ú<module>r­      s�   ðó Û Û Û Û Ý ã Û ÷	÷ 	ó 	÷hñ hòVñ6 Só 6ñ
& Có &ð ˆzÒÙÓ€DÙ	Ñ
˜4Ÿ;™;Ó
'Õ(ð r6   