
    `i                     $   S SK r S SKrS SKJrJrJrJr  S SKrS SKrS SK	r	S SK
r
S SKrS SKJr  S SKJrJrJrJrJrJrJrJr   " S S5      rS r\S:X  a;  \" 5       r\" \R6                  5      r\" \	R<                  " \R>                  S	S
95        gg)    N)ListDictUnionTuple)environ)nvmlInitnvmlSystemGetDriverVersionnvmlDeviceGetCountnvmlDeviceGetHandleByIndexnvmlDeviceGetMemoryInfonvmlDeviceGetNamenvmlShutdown	NVMLErrorc                   |    \ rS rSrSrSS jrS rS\4S jrS\4S jr	S\4S	 jr
S\4S
 jrS\4S jrS\4S jrSrg)MachineInfo   z(Class encapsulating Machine Info logic. Nc                 F   Xl         UcC  [        R                  " S[        R                  S9  [        R                  " [
        5      U l        OX l        S U l         U R                  5       U l        g ! [         a%    U R                  R                  S5        S U l         g f = f)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      i/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnxruntime_tools/transformers/MachineInfo.py__init__MachineInfo.__init__   s    >'\dkdpdpq!++H5DK K 	% $ 5 5 7D 	%KK!!"FG $D	%s   A1 1,B B c           	         U R                  5       nUU R                  5       U R                  5       [        R                  " 5       S   [        R                  " 5       U R                  5       U R                  5       U R                  5       S.nU$ )z!Get machine info in metric formatpython_version)gpucpumemorypythonosonnxruntimepytorch
tensorflow)get_gpu_info_by_nvmlget_cpu_infoget_memory_infocpuinfoplatformget_onnxruntime_infoget_pytorch_infoget_tensorflow_info)r!   gpu_infor   s      r"   r   MachineInfo.get_machine_info'   s~    ,,. $$&**,**,-=>##%446,,.224	
     returnc                 ^    [         R                  " 5       nUR                  UR                  S.$ )zGet memory info)total	available)psutilvirtual_memoryr<   r=   )r!   mems     r"   r1   MachineInfo.get_memory_info7   s#    ##%??r9   c                     [         R                  " 5       nUS   [        R                  " SS9[        R                  " SS9US   US   US   [        R
                  " 5       R                  S.$ )	zGet CPU infobrandF)logicalT	hz_actuall2_cache_sizel3_cache_size)rC   coreslogical_coreshzl2_cachel3_cache	processor)r2   r0   r>   	cpu_countr3   unamerM   )r!   cpu_infos     r"   r0   MachineInfo.get_cpu_info<   sf    '')g&%%e4#--d;;' 1 1!)33
 	
r9   c                    / nSn [        5         [        5       n[        5       n[        U5       HX  n[	        U5      n[        U5      n0 nUR                  US'   UR                  US'   [        U5      US'   UR                  U5        MZ     [        5         X!S.n	S[        ;   a  [        S   U	S'   U	$ ! [         a7  nU R                  (       d  U R                  R                  SU5         SnAgSnAff = f)	zGet GPU info using nvmlNmemory_totalmemory_availablenamez-Error fetching GPU information using nvml: %s)driver_versiondevicesCUDA_VISIBLE_DEVICEScuda_visible)r   r	   r
   ranger   r   r<   freer   appendr   r   r   r   errorr   )
r!   gpu_info_listrV   deviceCountihandleinfor7   r]   results
             r"   r/    MachineInfo.get_gpu_info_by_nvmlI   s    	J79N,.K;'3A6.v6+/::(/3yy+,#4V#< $$X. ( N %3M!W,%,-C%DF>"  	;;!!"QSXY	s   BB1 1
C2;-C--C2c                 P    SS K nUR                  SUR                  5       ;   S.$ ! [         a6  nU R                  (       d  U R
                  R                  U5         S nAg S nAf[         a7  nU R                  (       d  U R
                  R                  US5         S nAg S nAff = f)Nr   CUDAExecutionProviderversionsupport_gpuF)r,   __version__get_available_providersImportErrorr   r   r    r   )r!   r,   r]   r    s       r"   r4    MachineInfo.get_onnxruntime_infoe   s    	&226+:]:]:__   	;;%%e, 	;;%%i7	s    #& 
B%,A!!B%.-B  B%c                 ^    SS K nUR                  UR                  R                  5       S.$ ! [         a6  nU R
                  (       d  U R                  R                  U5         S nAg S nAf[         a7  nU R
                  (       d  U R                  R                  US5         S nAg S nAff = f)Nr   rg   F)	torchrj   cudais_availablerl   r   r   r    r   )r!   ro   r]   r    s       r"   r5   MachineInfo.get_pytorch_infou   s{    
	$00AXAXAZ[[ 	;;%%e, 	;;%%i7	s    *- 
B,,A((B,5-B''B,c                     SS K nUR                  R                  UR                  R                  UR                  R                  5       S.$ ! [         a6  nU R                  (       d  U R                  R                  U5         S nAg S nAf[         a6  nU R                  (       d  U R                  R                  U5         S nAg S nAff = f)Nr   )rh   git_versionri   )r.   rh   VERSIONGIT_VERSIONtestis_built_with_cudarl   r   r   r    ModuleNotFoundError)r!   tfr]   s      r"   r6   MachineInfo.get_tensorflow_info   s    	#::--!zz55!ww99; 
  	;;%%e," 	;;%%e,	s$   A	A 
C
,BC
,CC
)r   r   r   )FN)r   
__module____qualname____firstlineno____doc__r#   r   r   r1   r0   r/   r4   r5   r6   __static_attributes__ r9   r"   r   r      sY    3%  @ @

d 
d 8d  $ T r9   r   c                      [         R                  " 5       n U R                  SSSSS9  U R                  SS9  U R	                  5       nU$ )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      sL    $$&F

U<Njk
u%DKr9   __main__   )indent) r   r   typingr   r   r   r   r2   r>   jsonsysr3   r+   r   py3nvml.py3nvmlr   r	   r
   r   r   r   r   r   r   r   r   r   r   machineprintdumpsr   r   r9   r"   <module>r      s      + +    
  ` ` `| |~ zD$++&G	$**W))!
45 r9   