§
    kŠtj·  ã                   ó  — 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j        ¦  «        ¦  «         dS dS )é    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dS )ÚMachineInfoz'Class encapsulating Machine Info logic.FNc                 óJ  — || _         |€?t          j        dt          j        ¬¦  «         t          j        t
          ¦  «        | _        n|| _        d | _        	 |                      ¦   «         | _        d S # t          $ r% | j         
                    d¦  «         d | _        Y d S 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      úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/transformers/machine_info.pyÚ__init__zMachineInfo.__init__    s·   € ØˆŒàˆ>ÝÔØLÝ”lðñ ô ð õ "Ô+­HÑ5Ô5ˆDŒKˆKà ˆDŒKà ˆÔð	%Ø $× 5Ò 5Ñ 7Ô 7ˆDÔÐÐøÝð 	%ð 	%ð 	%ØŒK×!Ò!Ð"FÑGÔGÐGØ $ˆDÔÐÐÐð	%øøøs   ÁA3 Á3+B"Â!B"c           
      ó�  — |                       ¦   «         }t          j        ¦   «         }||                      ¦   «         |                      ¦   «         t	          j        ¦   «         |                      |dg¦  «        |                      ¦   «         |                      ¦   «         |                      ¦   «         |  	                    ¦   «         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ÔAØ×1Ò1Ñ3Ô3Ø×4Ò4Ñ6Ô6Ø×,Ò,Ñ.Ô.Ø×2Ò2Ñ4Ô4ð

ð 

ˆð Ðó    Úreturnc                 óF   — 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 rI||         }t          |t          t          f¦  «        r!d                     d„ |D ¦   «         ¦  «        c S |c S ŒPdS )Nú,c                 ó,   — g | ]}t          |¦  «        ‘ŒS © )Ústr)Ú.0Úis     r   ú
<listcomp>z(MachineInfo._try_get.<locals>.<listcomp>O   s   € Ð$;Ð$;Ð$;°¥S¨¡V¤VÐ$;Ð$;Ð$;r6   Ú )Ú
isinstanceÚlistÚtupleÚjoin)r   r5   r>   ÚnameÚvalues        r   r/   zMachineInfo._try_getJ   sw   € Øð 	ð 	ˆDØ�xÐÐØ  œ�Ý˜e¥d­E ]Ñ3Ô3ð =ØŸ8š8Ð$;Ð$;°UÐ$;Ñ$;Ô$;Ñ<Ô<Ð<Ð<Ð<Ø���ð	  ð
 ˆrr6   c           	      ó^  — t          j        ¦   «         }|                      |ddg¦  «        t          j        d¬¦  «        t          j        d¬¦  «        |                      |dg¦  «        |                      |dg¦  «        |                      |dg¦  «        t          j        ¦   «         j        d	œS )
zGet CPU infoÚbrandÚ	brand_rawF)ÚlogicalTÚ	hz_actualÚl2_cache_sizeÚflags)rO   ÚcoresÚlogical_coresÚhzÚl2_cacherT   Ú	processor)r+   r,   r/   r;   Ú	cpu_countr.   ÚunamerY   )r   r5   s     r   r,   zMachineInfo.get_cpu_infoS   s¡   € åÔ'Ñ)Ô)ˆð —]’] 8¨g°{Ð-CÑDÔDÝÔ%¨eÐ4Ñ4Ô4Ý#Ô-°dÐ;Ñ;Ô;Ø—-’- ¨;¨-Ñ8Ô8ØŸš h°Ð0AÑBÔBØ—]’] 8¨g¨YÑ7Ô7Ý!œÑ)Ô)Ô3ð
ð 
ð 	
r6   c                 ó  — g }d}	 t          ¦   «          t          ¦   «         }t          ¦   «         }t          |¦  «        D ]]}t	          |¦  «        }t          |¦  «        }i }|j        |d<   |j        |d<   t          |¦  «        |d<   | 	                    |¦  «         Œ^t          ¦   «          n:# t          $ r-}| j        s| j                             d|¦  «         Y d}~dS d}~ww xY w||dœ}	dt          v rt          d         |	d<   |	S )	zGet GPU info using nvmlNÚmemory_totalÚmemory_availablerL   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_   ÚdeviceCountrE   ÚhandleÚinfor4   rf   Úresults
             r   r*   z MachineInfo.get_gpu_info_by_nvmla   s3  € àˆØˆð	Ý‰JŒJˆJÝ7Ñ9Ô9ˆNÝ,Ñ.Ô.ˆKÝ˜;Ñ'Ô'ð /ð /�Ý3°AÑ6Ô6�Ý.¨vÑ6Ô6�Ø�Ø+/¬:�˜Ñ(Ø/3¬y�Ð+Ñ,Ý#4°VÑ#<Ô#<�˜Ñ Ø×$Ò$ XÑ.Ô.Ð.Ð.Ý‰NŒNˆNˆNøÝð 	ð 	ð 	Ø”;ð ZØ”×!Ò!Ð"QÐSXÑYÔYÐYØ�4�4�4�4�4øøøøð	øøøð
 %3¸}ÐMÐMˆà!¥WÐ,Ð,Ý%,Ð-CÔ%DˆF�>Ñ"Øˆs   †B%B, Â,
C#Â6"CÃC#c                 óä   — h d£}i }t           j                             ¦   «         D ]J}|j        d                              ¦   «         |v r'|j        ||j        d                              ¦   «         <   ŒK|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}   s‚   € ð
ð 
ð 
Ðð !#ÐÝÔ&×4Ò4Ñ6Ô6ð 	Tð 	TˆDØŒ}˜VÔ$×*Ò*Ñ,Ô,Ð0@Ð@Ð@ØGKÄ|Ð% d¤m°FÔ&;×&AÒ&AÑ&CÔ&CÑDøà$Ð$r6   c                 ó$  — 	 dd l }|j        d|                     ¦   «         v dœS # t          $ r,}| j        s| j                             |¦  «         Y d }~d S d }~wt          $ r-}| j        s| j                             |d¦  «         Y d }~d S d }~ww xY w)Nr   ÚCUDAExecutionProvider)r{   Úsupport_gpuF)r'   Ú__version__Úget_available_providersÚImportErrorr   r   r   r   )r   r'   rf   r   s       r   r1   z MachineInfo.get_onnxruntime_info’   sÑ   € ð	ØÐÐÐð 'Ô2Ø6¸+×:]Ò:]Ñ:_Ô:_Ð_ðð ð øõ ð 	ð 	ð 	Ø”;ð -Ø”×%Ò% eÑ,Ô,Ð,Ø�4�4�4�4�4øøøøÝð 	ð 	ð 	Ø”;ð 8Ø”×%Ò% i°Ñ7Ô7Ð7Ø�4�4�4�4�4øøøøð	øøøs    ‚!$ ¤
B®!AÁBÁ""B
Â
Bc                 ó@  — 	 dd l }|j        |j                             ¦   «         |j        j        dœS # t
          $ r,}| j        s| j                             |¦  «         Y d }~d S d }~wt          $ r-}| j        s| j                             |d¦  «         Y d }~d S d }~ww xY w)Nr   )r{   r�   ÚcudaF)
rr   r‚   r†   Úis_availabler{   r„   r   r   r   r   )r   rr   rf   r   s       r   r2   zMachineInfo.get_pytorch_info£   sÓ   € ð	ØˆLˆLˆLð !Ô,Ø$œz×6Ò6Ñ8Ô8ØœÔ*ðð ð øõ
 ð 	ð 	ð 	Ø”;ð -Ø”×%Ò% eÑ,Ô,Ð,Ø�4�4�4�4�4øøøøÝð 	ð 	ð 	Ø”;ð 8Ø”×%Ò% i°Ñ7Ô7Ð7Ø�4�4�4�4�4øøøøð	øøøs    ‚/2 ²
B¼!A#Á#BÁ0"BÂBc                 óH  — 	 dd l }|j        j        |j        j        |j                             ¦   «         dœS # t          $ r,}| j        s| j         	                    |¦  «         Y d }~d S d }~wt          $ r,}| j        s| j         	                    |¦  «         Y d }~d S d }~ww xY w)Nr   )r{   Úgit_versionr�   )r)   r{   ÚVERSIONÚGIT_VERSIONÚtestÚis_built_with_cudar„   r   r   r   ÚModuleNotFoundError)r   Útfrf   s      r   r3   zMachineInfo.get_tensorflow_infoµ   sÖ   € ð	Ø#Ð#Ð#Ð#ð œ:Ô-Ø!œzÔ5Ø!œw×9Ò9Ñ;Ô;ðð ð øõ
 ð 	ð 	ð 	Ø”;ð -Ø”×%Ò% eÑ,Ô,Ð,Ø�4�4�4�4�4øøøøÝ"ð 	ð 	ð 	Ø”;ð -Ø”×%Ò% eÑ,Ô,Ð,Ø�4�4�4�4�4øøøøð	øøøs!   ‚47 ·
B!Á!A(Á(B!Á5!BÂB!)FN)r   Ú
__module__Ú__qualname__Ú__doc__r   r   Údictr-   rI   rC   r/   r,   r*   r0   r1   r2   r3   rB   r6   r   r   r      s,  € € € € € Ø1Ð1ð%ð %ð %ð %ð&ð ð ð$@ ð @ð @ð @ð @ð
 ð ¨dð °sð ð ð ð ð
˜dð 
ð 
ð 
ð 
ð dð ð ð ð ð8% d¨3¤ið %ð %ð %ð %ð* dð ð ð ð ð" $ð ð ð ð ð$ Tð ð ð ð ð ð r6   r   c                  ó²   — t          j        ¦   «         } |                      dddd¬¦  «         |                      d¬¦  «         |                      ¦   «         }|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    È   sh   € ÝÔ$Ñ&Ô&€Fà
×ÒØØØØ)ð	 ñ ô ð ð ×Ò˜uÐÑ%Ô%Ð%à×ÒÑÔ€DØ€Kr6   Tr7   c                 óV   — t          | ¦  «        }t          j        |j        d¬¦  «        S )Né   ©Úindent)r   ÚjsonÚdumpsr   )r   Úmachines     r   r   r   ×   s'   € Ý˜&Ñ!Ô!€GÝŒ:�gÔ*°1Ð5Ñ5Ô5Ð5r6   c                 óš   — t          | ¦  «        }|j        }|rd„ |                     ¦   «         D ¦   «         }t          j        |d¬¦  «        S )Nc                 ó"   — i | ]\  }}|d v ¯	||“ŒS ))r!   r"   r#   rB   )rD   ÚkeyrM   s      r   ú
<dictcomp>z#get_device_info.<locals>.<dictcomp>à   s)   € Ð]Ð]Ð]™z˜s E¸SÐD\Ð=\Ð=\��UÐ=\Ð=\Ð=\r6   r¢   r£   )r   r   Úitemsr¥   r¦   )r   r§   rj   s      r   Úget_device_infor­   Ü   sP   € Ý˜&Ñ!Ô!€GØÔ€DØð ^Ø]Ð]¨T¯ZªZ©\¬\Ð]Ñ]Ô]ˆÝŒ:�d 1Ð%Ñ%Ô%Ð%r6   Ú__main__)T)r™   Úimportlib.metadatarw   r¥   r   r.   r$   r   r+   r;   Úpy3nvml.py3nvmlr   r   r   r   r   r	   r
   r   r   r    rC   r   r­   r   rŸ   Úprintr   rB   r6   r   ú<module>r²      s…  ðð €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à €€€Ø €€€ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðhð hð hð hð hñ hô hð hðVð ð ð6ð 6 Sð 6ð 6ð 6ð 6ð
&ð & Cð &ð &ð &ð &ð ˆzÒÐØˆ?ÑÔ€DØ	€EÐ
Ð
˜4œ;Ñ
'Ô
'Ñ(Ô(Ð(Ð(Ð(ð Ðr6   