
    `if                         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S\4S	 jjr\S
:X  a   \" 5       r\" \" \R<                  5      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\S	\	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\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      j/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnxruntime_tools/transformers/machine_info.py__init__MachineInfo.__init__   s    >'\dkdpdpq!++H5DK K 	% $ 5 5 7D 	%KK!!"FG $D	%s   A1 1,B B c           
      X   U R                  5       n[        R                  " 5       nUU R                  5       U R                  5       U R	                  US/5      [
        R
                  " 5       U 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onnxruntime_toolspytorch
tensorflow)
get_gpu_info_by_nvmlcpuinfoget_cpu_infoget_memory_info_try_getplatformget_onnxruntime_infoget_onnxruntime_tools_infoget_pytorch_infoget_tensorflow_info)r!   gpu_infocpu_infor   s       r"   r   MachineInfo.get_machine_info'   s    ,,.'') $$&**,mmH/?.@A##%446!%!@!@!B,,.224

     returnc                 ^    [         R                  " 5       nUR                  UR                  S.$ )zGet memory info)total	available)psutilvirtual_memoryr@   rA   )r!   mems     r"   r3   MachineInfo.get_memory_info9   s#    ##%??r=   r;   namesc                 ,    U H  nX1;   d  M
  X   s  $    g)N  )r!   r;   rF   names       r"   r4   MachineInfo._try_get>   s    D~%  r=   c           	      L   [         R                  " 5       nU R                  USS/5      [        R                  " SS9[        R                  " SS9U R                  US/5      U R                  US/5      U R                  US/5      [
        R                  " 5       R                  S	.$ )
zGet CPU infobrand	brand_rawF)logicalT	hz_actuall2_cache_sizeflags)rM   coreslogical_coreshzl2_cacherR   	processor)r1   r2   r4   rB   	cpu_countr5   unamerW   )r!   r;   s     r"   r2   MachineInfo.get_cpu_infoD   s    '') ]]8g{-CD%%e4#--d;--;-8h0AB]]8gY7!)33
 	
r=   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_availablerJ   z-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_listr^   deviceCountihandleinfor:   re   results
             r"   r0    MachineInfo.get_gpu_info_by_nvmlR   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,   re   r    s       r"   r6    MachineInfo.get_onnxruntime_infon   s    	&226+:]:]:__   	;;%%e, 	;;%%i7	s    #& 
B%,A!!B%.-B  B%c                 ,    SS K nSUR                  0$ ! [         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   ro   F)r-   rq   rs   r   r   r    r   )r!   r-   re   r    s       r"   r7   &MachineInfo.get_onnxruntime_tools_info~   so    
	$0<<== 	;;%%e, 	;;%%i7	s     
B,AB-BBc                     SS K nUR                  UR                  R                  5       UR                  R                  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   )ro   rp   cudaF)
torchrq   rx   is_availablero   rs   r   r   r    r   )r!   ry   re   r    s       r"   r8   MachineInfo.get_pytorch_info   s    
	$00AXAXAZdidqdqdvdvww 	;;%%e, 	;;%%i7	s#   ?A 
C,A==C
-B<<C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   )ro   git_versionrp   )r/   ro   VERSIONGIT_VERSIONtestis_built_with_cudars   r   r   r    ModuleNotFoundError)r!   tfre   s      r"   r9   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   r3   r   strr4   r2   r0   r6   r7   r8   r9   __static_attributes__rI   r=   r"   r   r      s    3% $@ @
 d s 
d 
d 8d  D $ T r=   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Kr=   r>   c                 V    [        U 5      n[        R                  " UR                  SS9$ )N   )indent)r   jsondumpsr   )r   machines     r"   r   r      s#    &!G::g**155r=   __main__)T)r   r   typingr   r   r   r   r1   rB   r   sysr5   r+   r   py3nvml.py3nvmlr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   printr   rI   r=   r"   <module>r      s~      + +    
  ` ` `R Rj6S 6
 zD	
4;;
'( r=   