
    Yfd                    `   d Z ddl ddlZddlZddlZddlm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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(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEZGdFZHdGZIdHZJdIZKdJZLdKZMdLZNdMZOdNZPdOZQdPZRdQZSdRZTdSZUdTZVdUZWdVZXdWZYdXZZdYZ[dZZ\d[Z]d\Z^d]Z_d^Z`d_Zad`ZbdaZcdbZddcZeddZfdeZgdfZhdgZidhZjdiZkdjZldkZmdlZndmZodnZpdoZqdpZrdqZsdrZtdsZudtZvduZwdvZxdwZydxZzdyZ{dzZ|d{Z}d|Z~d}Zd~ZdZdZi dede	de
dedededededededededededededei dededededededededededede de"de"de#de$de%i de%de&de&de'de'de(de)de_de`deadebdecdeddeedefdegdehi de*de,de+de-de/de0de3de4de5de6de7de8de9de:de;de<de>i de?de@de=deAdeBdeCdeDdeEdeGdeHdeIdeFdeJdeKdeLdeMdeNi dePdeQdeRdeOdeSdeTdeUdeVdeWdeYdeZde[deXde\de\de]de]i de^deidejdekdeldemdendeodepdeqderderdesdesdetdetdeui deudevdevdewdewdexdexdeyd eydezdezde{de{de|de|dede}e~eeedZi ed	ed
edededededededededededededededZ G d d      Zedk(  rd Z e        yy(  a  
nvidia_smi

Sample code that attempts to reproduce the output of nvidia-smi -q -x
For many cases the output should match.
Each query parameter is documented within nvdia-smi --help-query-gpu

From Code:
DeviceQuery()
DeviceQuery("--help")
DeviceQuery("--help-query-gpu")
DeviceQuery("pci.bus_id,memory.total,memory.free")
DeviceQuery([NVSMI_PCI_BUS_ID, NVSMI_MEMORY_TOTAL, NVSMI_MEMORY_FREE])

XmlDeviceQuery()
XmlDeviceQuery("--help")
XmlDeviceQuery("--help-query-gpu")
    )*N)Thread                        	   
                                                                         !   2   3   4   5   6   <   =   >   ?   i  i  i  F   G   P   Q   R   S   T   U   V   W   X   Z   [   \   ]   ^   _   `   a   b   d   e   f   g   h   i   j   k   l   n   o   p   q   r   s   t   u   v   x   y   z                                                                                                               	timestampdriver_versioncountnamegpu_nameserial
gpu_serialuuidgpu_uuidz
pci.bus_id
gpu_bus_idz
pci.domainzpci.busz
pci.devicezpci.device_idzpci.sub_device_idzpcie.link.gen.currentzpcie.link.gen.maxzpcie.link.width.currentzpcie.link.width.maxindexdisplay_modedisplay_activepersistence_modezaccounting.modezaccounting.buffer_sizezdriver_model.currentzdriver_model.pendingvbios_versionzinforom.imgzinforom.imagezinforom.oemzinforom.ecczinforom.pwrzinforom.powerzgom.currentzgpu_operation_mode.currentzgom.pendingzgpu_operation_mode.pendingz	fan.speedpstatez!clocks_throttle_reasons.supportedzclocks_throttle_reasons.activez clocks_throttle_reasons.gpu_idlez3clocks_throttle_reasons.applications_clocks_settingz$clocks_throttle_reasons.sw_power_capz#clocks_throttle_reasons.hw_slowdownz+clocks_throttle_reasons.hw_thermal_slowdownz/clocks_throttle_reasons.hw_power_brake_slowdownz+clocks_throttle_reasons.sw_thermal_slowdownz"clocks_throttle_reasons.sync_boostzmemory.totalzmemory.usedzmemory.freecompute_modezutilization.gpuzutilization.memoryzencoder.stats.sessionCountzencoder.stats.averageFpszencoder.stats.averageLatencyzecc.mode.currentzecc.mode.pendingz+ecc.errors.corrected.volatile.device_memoryz+ecc.errors.corrected.volatile.register_filez&ecc.errors.corrected.volatile.l1_cachez&ecc.errors.corrected.volatile.l2_cachez,ecc.errors.corrected.volatile.texture_memoryz"ecc.errors.corrected.volatile.dramz"ecc.errors.corrected.volatile.sramz!ecc.errors.corrected.volatile.cbuz#ecc.errors.corrected.volatile.totalz,ecc.errors.corrected.aggregate.device_memoryz,ecc.errors.corrected.aggregate.register_filez'ecc.errors.corrected.aggregate.l1_cachez'ecc.errors.corrected.aggregate.l2_cachez-ecc.errors.corrected.aggregate.texture_memoryz#ecc.errors.corrected.aggregate.dramz"ecc.errors.corrected.aggregate.cbuz#ecc.errors.corrected.aggregate.sramz$ecc.errors.corrected.aggregate.totalz-ecc.errors.uncorrected.volatile.device_memoryz-ecc.errors.uncorrected.volatile.register_filez(ecc.errors.uncorrected.volatile.l1_cachez(ecc.errors.uncorrected.volatile.l2_cachez.ecc.errors.uncorrected.volatile.texture_memoryz$ecc.errors.uncorrected.volatile.dramz#ecc.errors.uncorrected.volatile.cbuz$ecc.errors.uncorrected.volatile.sramz%ecc.errors.uncorrected.volatile.totalz.ecc.errors.uncorrected.aggregate.device_memoryz.ecc.errors.uncorrected.aggregate.register_filez)ecc.errors.uncorrected.aggregate.l1_cachez)ecc.errors.uncorrected.aggregate.l2_cachez/ecc.errors.uncorrected.aggregate.texture_memoryz%ecc.errors.uncorrected.aggregate.dramz$ecc.errors.uncorrected.aggregate.cbuz%ecc.errors.uncorrected.aggregate.sramz&ecc.errors.uncorrected.aggregate.totalz"retired_pages.single_bit_ecc.countzretired_pages.sbezretired_pages.double_bit.countzretired_pages.dbezretired_pages.pendingztemperature.gpuztemperature.memoryzpower.managementz
power.drawzpower.limitzenforced.power.limitzpower.default_limitzpower.min_limitzpower.max_limitzclocks.current.graphicsz	clocks.grzclocks.current.smz	clocks.smzclocks.current.memoryz
clocks.memzclocks.current.videozclocks.videozclocks.applications.graphicszclocks.applications.grzclocks.applications.memoryzclocks.applications.memz$clocks.default_applications.graphicszclocks.default_applications.grz"clocks.default_applications.memoryzclocks.default_applications.memzclocks.max.graphicszclocks.max.grzclocks.max.smzclocks.max.memoryzclocks.max.memzsupported-clockszcompute-apps)zaccounted-appsclockszmig.mode.currentzmig.mode.pendingUnknownQuadroTeslaNVSGridGeForceTitanzNVIDIA Virtual ApplicationszNVIDIA Virtual PCzNVIDIA Virtual Compute ServerzNVIDIA RTX Virtual WorkstationzNVIDIA vGamingz
Quadro RTXz
NVIDIA RTXNVIDIAzGeforce RTXz	Titan RTXc                      e Zd ZdZdZ G d d      Zed        Zedd       Zd Z	ed        Z
d Zed	        Zed
        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zedd       Zedd       Zd Zd Z d Z!y) 
nvidia_smiNc                   T    e Zd ZdZdZdZdZd
dZd Ze	d
d       Z
d Zd Zd Zd	 Zy)nvidia_smi.loop_asyncNFc                     d| _         || _        t        t        j                  j
                  | ||t        j                  j                  f      | _        | j                  j                          y )NF)targetargs)	_loop_async__abort_loop_async__callback_chainr   r   
loop_async_loop_async__loop_task_loop_async__callback_loop_async__taskstart)selftime_in_millisecondsfiltercallbacks       J/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/pynvml/smi.py__init__znvidia_smi.loop_async.__init__  so    $,"*$

(=(=(I(ISWYmou  xB  xM  xM  xX  xX  SY  Z$+
++


    c                      d| _         d | _        y NT)r   r   r   s    r   __del__znvidia_smi.loop_async.__del__  s    $,"&$
r   c                     |dz  }t         j                         }| j                         dk(  rM|j                  |      }|| _        |	 || |       t        j                  |       | j                         dk(  rLy y )Ni  F)r   getInstance
is_abortedDeviceQuery_loop_async__last_resultstimesleep)async_resultsr   r   r   delay_secondsnvsmiresultss          r   __loop_taskz!nvidia_smi.loop_async.__loop_task  sr    .5-((*%((*e3))&1g-4m*&='2jj' ((*e3r   c                 P    || _         | j                  | j                  | |       y y N)_loop_async__last_resultr   )r   results     r   
__callbackz nvidia_smi.loop_async.__callback  s+    %$
##/##D&1 0r   c                 `    d| _         | j                  | j                  j                          y y r   )r   r   joinr   s    r   cancelznvidia_smi.loop_async.cancel  s(    $,kk%kk  &r   c                     | j                   S r   )r   r   s    r   r   z nvidia_smi.loop_async.is_aborted  s    
r   c                     | j                   S r   )r   r   s    r   r   znvidia_smi.loop_async.result  s    ##
#r   r   NN)__name__
__module____qualname__r   r   r   r   r   r   staticmethodr   r   r   r   r    r   r   r   r   {  sI    mfg' 
( 
(2
!
$r   r   c                  \    t         j                  dk(  r
t                t         j                  S )z Static access method. N)r   _nvidia_smi__instancer   r   r   r   znvidia_smi.getInstance  s#     
		$	&
,"""r   c                 0    t         j                  | ||      S r   )r   r   )r   r   r   s      r   loopznvidia_smi.loop  s    ""#7JJr   c                     t         j                  dk7  rt        d      | t         _        t         j                  dk(  rt         j	                         t         _        yy)z  Virtually private constructor. Nz,This class is a singleton, use getInstance())r   r   	Exception_nvidia_smi__handles_nvidia_smi__initialize_nvmlr   s    r   r   znvidia_smi.__init__  sH    			$	&GH	H!%					% * < < >	 
&r   c                  p    t                t               } i }t        d|       D ]  }t        |      ||<    |S )z Initialize NVML bindings. r   )nvmlInitnvmlDeviceGetCountrangenvmlDeviceGetHandleByIndex)deviceCounthandlesis      r   __initialize_nvmlznvidia_smi.__initialize_nvml  s?     J$&KG1k" 3/2
3Nr   c                     t         j                  d k7  r;t         j                  | k(  r't         `d t         _        d t         _        t                y y y r   )r   r   r   nvmlShutdownr   s    r   r   znvidia_smi.__del__  sA    %J,A,AT,I! $
#
	 -J%r   c                     | j                  d      }g }|D ]3  }|j                         }|t        v s|j                  t        |          5 |S )N,)splitstripNVSMI_QUERY_GPUappend)queryString
parametersvaluesppss        r   __fromDeviceQueryStringz"nvidia_smi.__fromDeviceQueryString  sQ    $$S)jf /!wwy"O#MM/"-./
 mr   c                    d}	 t        | ||t              }|dt        j                  |      z   dz   z  }	 t        | ||t              }|dt        j                  |      z   dz   z  }	 t        | ||t              }|dt        j                  |      z   dz   z  }	 t        | ||t              }|dt        j                  |      z   d	z   z  }	 t        | ||t              }|d
t        j                  |      z   dz   z  }	 t        | ||t              }	|dt        j                  |	      z   dz   z  }	 t        | ||t              }|dt        j                  |      z   dz   z  }	 t        | ||t              }|dt        j                  |      z   dz   z  }	 t        j                  t        | ||            }
|d|
z   dz   z  }|S # t        $ r }t        j	                  |      }Y d }~d }~ww xY w# t        $ r }t        j	                  |      }Y d }~d }~ww xY w# t        $ r }t        j	                  |      }Y d }~d }~ww xY w# t        $ r }t        j	                  |      }Y d }~d }~ww xY w# t        $ r }t        j	                  |      }Y d }~d }~ww xY w# t        $ r }t        j	                  |      }	Y d }~d }~ww xY w# t        $ r }t        j	                  |      }Y d }~d }~ww xY w# t        $ r }t        j	                  |      }Y d }~d }~ww xY w# t        $ r }t        j	                  |      }
Y d }~d }~ww xY w)N z          <device_memory>z</device_memory>
z          <dram>z</dram>
z          <register_file>z</register_file>
z          <l1_cache>z</l1_cache>
z          <l2_cache>z</l2_cache>
z          <texture_memory>z</texture_memory>
z          <cbu>z</cbu>
z          <sram>z</sram>
z          <total>	</total>
)nvmlDeviceGetMemoryErrorCounter"NVML_MEMORY_LOCATION_DEVICE_MEMORY	NVMLErrorr   _nvidia_smi__handleError_nvidia_smi__toStringNVML_MEMORY_LOCATION_DRAM"NVML_MEMORY_LOCATION_REGISTER_FILENVML_MEMORY_LOCATION_L1_CACHENVML_MEMORY_LOCATION_L2_CACHE#NVML_MEMORY_LOCATION_TEXTURE_MEMORYNVML_MEMORY_LOCATION_CBUNVML_MEMORY_LOCATION_SRAMnvmlDeviceGetTotalEccErrors)handlecounterType	errorType	strResultdeviceMemoryerrregisterFilel1Cachel2CachetextureMemoryr   s              r   __xmlGetEccByTypeznvidia_smi.__xmlGetEccByType  sJ   i78K9[], .1F1F|1TTWkkki78K9RT,
 %
(=(=l(KKkYYi78K9[],
 .1F1F|1TTWkkki23FI{4QS' )J,A,A',JJ_\\i23FI{4QS' )J,A,A',JJ_\\i89&)[:]_- /*2G2G2VVYnnni78K9QS,
 $z'<'<\'JJZWWi78K9RT,
 %
(=(=l(KKkYYi0''(CFIWb(cd% &.==i  7#11#6,7  7#11#6,7  7#11#6,7  2,,S1'2  2,,S1'2  8$2237-8  7#11#6,7  7#11#6,7  0**3/%0s   F9 G% &H H= I) 9J *K K-  L 9	G"GG"%	H.H		H	H:H55H:=	I&I!!I&)	J2JJ	J>J99J>	K*
K%%K*-	L6LL	M"L==Mc                    d}i }	 t        | ||t              }||d<   	 t        | ||t
              }||d<   	 t        | ||t              }||d<   	 t        | ||t              }||d<   	 t        | ||t              }	|	|d<   	 t        | ||t              }
|
|d<   	 t        | ||t              }||d<   	 t        | ||t              }||d	<   	 t        j                  t        | ||            }||d
<   |S # t        $ r}t        j	                  |      }Y d }~d }~ww xY w# t        $ r }t        j	                  |      }Y d }~d }~ww xY w# t        $ r }t        j	                  |      }Y d }~ d }~ww xY w# t        $ r }t        j	                  |      }Y d }~4d }~ww xY w# t        $ r }t        j	                  |      }	Y d }~Hd }~ww xY w# t        $ r }t        j	                  |      }
Y d }~\d }~ww xY w# t        $ r }t        j	                  |      }Y d }~pd }~ww xY w# t        $ r }t        j	                  |      }Y d }~d }~ww xY w# t        $ r }t        j	                  |      }Y d }~d }~ww xY w)Nr   device_memorydramregister_filel1_cachel2_cachetexture_memorycbusramtotal)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   	eccByTyper   r  r  r  r  r  r   s               r   __GetEccByTypeznvidia_smi.__GetEccByType'  s   ii78K9[],
 $0i 78K9RT,
 'i78K9[],
 $0i 23FI{4QS' &i
23FI{4QS' &i
89&)[:]_- %2i !78K9QS,
 &i78K9RT,
 'i0''(CFIWb(cd% !iA  7#11#6,7  7#11#6,7  7#11#6,7  2,,S1'2  2,,S1'2  8$2237-8  7#11#6,7  7#11#6,7  0**3/%0s   C- D E E0 &F >G G4 .H   I -	D6DD	E!D<<E	E-E((E-0	F9FF	G%G  G	G1G,,G14	H=HH 	I	)II		I5I00I5c                 v   d}t         |v st        |v st        |v st        |v st        |v sxt
        |v spt
        |v sht        |v s`t        |v sXt        |v sPt        |v sHt        |v s@t        |v s8t        |v s0t        |v s(t        |v s t        |v st         |v st"        |v st$        |v r;|dz  }|t&        j)                  t&        j+                  | |t,                    z  }|dz  }t         |v st        |v st        |v st        |v st        |v sxt
        |v spt
        |v sht        |v s`t        |v sXt        |v sPt        |v sHt        |v s@t        |v s8t        |v s0t        |v s(t        |v s t        |v st         |v st"        |v st$        |v r;|dz  }|t&        j)                  t&        j+                  | |t.                    z  }|dz  }|S )Nr   z        <single_bit>
z        </single_bit>
z        <double_bit>
z        </double_bit>
)	NVSMI_ALL*NVSMI_ECC_ERROR_CORRECTED_VOLATILE_DEV_MEM*NVSMI_ECC_ERROR_CORRECTED_VOLATILE_REGFILE*NVSMI_ECC_ERROR_CORRECTED_VOLATILE_L1CACHE*NVSMI_ECC_ERROR_CORRECTED_VOLATILE_L2CACHE*NVSMI_ECC_ERROR_CORRECTED_VOLATILE_TEXTURE'NVSMI_ECC_ERROR_CORRECTED_VOLATILE_DRAM'NVSMI_ECC_ERROR_CORRECTED_VOLATILE_SRAM&NVSMI_ECC_ERROR_CORRECTED_VOLATILE_CBU(NVSMI_ECC_ERROR_CORRECTED_VOLATILE_TOTAL+NVSMI_ECC_ERROR_CORRECTED_AGGREGATE_DEV_MEM+NVSMI_ECC_ERROR_CORRECTED_AGGREGATE_REGFILE+NVSMI_ECC_ERROR_CORRECTED_AGGREGATE_L1CACHE+NVSMI_ECC_ERROR_CORRECTED_AGGREGATE_L2CACHE+NVSMI_ECC_ERROR_CORRECTED_AGGREGATE_TEXTURE(NVSMI_ECC_ERROR_CORRECTED_AGGREGATE_DRAM'NVSMI_ECC_ERROR_CORRECTED_AGGREGATE_CBU(NVSMI_ECC_ERROR_CORRECTED_AGGREGATE_SRAM)NVSMI_ECC_ERROR_CORRECTED_AGGREGATE_TOTALr   r   _nvidia_smi__xmlGetEccByType NVML_MEMORY_ERROR_TYPE_CORRECTED"NVML_MEMORY_ERROR_TYPE_UNCORRECTEDr   r   r   eccByCounters       r   __xmlGetEccByCounterznvidia_smi.__xmlGetEccByCounterq  s   l
v

4
>
4
>
4
>
4
>
4
>
4
>
1V
;
1V
;
0F
:
2f
<
5
?
5
?
5
?
5
?
5
?
2f
<
1V
;
2f
<
3v
=
2
2,
*//
0L0LVU`  cC  1D  E  E,
3
3,
v

4
>
4
>
4
>
4
>
4
>
4
>
1V
;
1V
;
0F
:
2f
<
5
?
5
?
5
?
5
?
5
?
2f
<
1V
;
2f
<
3v
=
2
2,
*//
0L0LVU`  cE  1F  G  G,
3
3,r   c                    i }t         |v st        |v st        |v st        |v st        |v sxt
        |v spt
        |v sht        |v s`t        |v sXt        |v sPt        |v sHt        |v s@t        |v s8t        |v s0t        |v s(t        |v s t        |v st         |v st"        |v st$        |v rt&        j)                  | |t*              |d<   t         |v st        |v st        |v st        |v sxt        |v spt
        |v sht        |v s`t        |v sXt        |v sPt        |v sHt        |v s@t        |v s8t        |v s0t        |v s(t        |v s t        |v st         |v st"        |v st$        |v rt&        j)                  | |t,              |d<   |S )N
single_bit
double_bit)r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r   _nvidia_smi__GetEccByTyper(  r)  r*  s       r   __GetEccByCounterznvidia_smi.__GetEccByCounter  sy   l
v

4
>
4
>
4
>
4
>
4
>
4
>
1V
;
1V
;
0F
:
2f
<
5
?
5
?
5
?
5
?
5
?
2f
<
1V
;
2f
<
3v
='1'@'@Vv'w,|
$
v

4
>
4
>
4
>
4
>
4
>
1V
;
1V
;
0F
:
2f
<
5
?
5
?
5
?
5
?
5
?
2f
<
1V
;
2f
<
3v
='1'@'@Vx'y,|
$r   c                    d}d}t         |v st        |v st        |v st        |v sxt        |v spt
        |v sht        |v s`t        |v sXt        |v sPt        |v sHt        |v s@t        |v s8t        |v s0t        |v s(t        |v s t        |v st         |v st"        |v st$        |v r=|dz  }|t&        j)                  t&        j+                  | t,        |            z  }|dz  }d}t         |v st.        |v st0        |v st2        |v sxt4        |v spt6        |v sht8        |v s`t:        |v sXt<        |v sPt>        |v sHt@        |v s@tB        |v s8tD        |v s0tF        |v s(tH        |v s tJ        |v stL        |v stN        |v stP        |v r=|dz  }|t&        j)                  t&        j+                  | tR        |            z  }|dz  }d}tU        |      dkD  r||fS d |fS )	Nr   Fz      <volatile>
z      </volatile>
Tz      <aggregate>
z      </aggregate>
r   )+r  r  r  r  r  r  r  r  r  r  ,NVSMI_ECC_ERROR_UNCORRECTED_VOLATILE_DEV_MEM,NVSMI_ECC_ERROR_UNCORRECTED_VOLATILE_REGFILE,NVSMI_ECC_ERROR_UNCORRECTED_VOLATILE_L1CACHE,NVSMI_ECC_ERROR_UNCORRECTED_VOLATILE_L2CACHE,NVSMI_ECC_ERROR_UNCORRECTED_VOLATILE_TEXTURE)NVSMI_ECC_ERROR_UNCORRECTED_VOLATILE_DRAM)NVSMI_ECC_ERROR_UNCORRECTED_VOLATILE_SRAM(NVSMI_ECC_ERROR_UNCORRECTED_VOLATILE_CBU*NVSMI_ECC_ERROR_UNCORRECTED_VOLATILE_TOTALr   r   _nvidia_smi__xmlGetEccByCounterNVML_VOLATILE_ECCr  r  r   r!  r"  r#  r%  r$  r&  -NVSMI_ECC_ERROR_UNCORRECTED_AGGREGATE_DEV_MEM-NVSMI_ECC_ERROR_UNCORRECTED_AGGREGATE_REGFILE-NVSMI_ECC_ERROR_UNCORRECTED_AGGREGATE_L1CACHE-NVSMI_ECC_ERROR_UNCORRECTED_AGGREGATE_L2CACHE-NVSMI_ECC_ERROR_UNCORRECTED_AGGREGATE_TEXTURE*NVSMI_ECC_ERROR_UNCORRECTED_AGGREGATE_DRAM*NVSMI_ECC_ERROR_UNCORRECTED_AGGREGATE_SRAM)NVSMI_ECC_ERROR_UNCORRECTED_AGGREGATE_CBU+NVSMI_ECC_ERROR_UNCORRECTED_AGGREGATE_TOTALNVML_AGGREGATE_ECClenr   r   ecc
includeEccs       r   __xmlGetEccznvidia_smi.__xmlGetEcc  s   cj
v

4
>
4
>
4
>
4
>
4
>
1V
;
1V
;
0F
:
2f
<
6&
@
6&
@
6&
@
6&
@
6&
@
3v
=
3v
=
2f
<
4
>
%
%#
&&z'F'FvO`bh'ij
j#
&
&#*
v

5
?
5
?
5
?
5
?
5
?
2f
<
2f
<
1V
;
3v
=
76
A
76
A
76
A
76
A
76
A
4
>
4
>
3v
=
5
?
&
&#
&&z'F'FvOaci'jk
k#
'
'#*HqLSJ66dJ66r   c                 2   i }d}t         |v st        |v st        |v st        |v sxt        |v spt
        |v sht        |v s`t        |v sXt        |v sPt        |v sHt        |v s@t        |v s8t        |v s0t        |v s(t        |v s t        |v st         |v st"        |v st$        |v r t&        j)                  | t*        |      |d<   d}t         |v st,        |v st.        |v st0        |v sxt2        |v spt4        |v sht6        |v s`t8        |v sXt:        |v sPt<        |v sHt>        |v s@t@        |v s8tB        |v s0tD        |v s(tF        |v s tH        |v stJ        |v stL        |v stN        |v r t&        j)                  | tP        |      |d<   d}tS        |jU                               dkD  r||fS d |fS )NFvolatileT	aggregater   )+r  r  r  r  r  r  r  r  r  r  r3  r4  r5  r6  r7  r8  r9  r:  r;  r   _nvidia_smi__GetEccByCounterr=  r  r  r   r!  r"  r#  r%  r$  r&  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  r   rI  s       r   __GetEccznvidia_smi.__GetEcc  s   cj
v

4
>
4
>
4
>
4
>
4
>
1V
;
1V
;
0F
:
2f
<
6&
@
6&
@
6&
@
6&
@
6&
@
3v
=
3v
=
2f
<
4
>&88ARTZ[#j/*
v

5
?
5
?
5
?
5
?
5
?
2f
<
2f
<
1V
;
3v
=
76
A
76
A
76
A
76
A
76
A
4
>
4
>
3v
=
5
?'99&BTV\]#k
*

%)SZ??tZ??r   c                 \   d}d }d}	 t        | |      }t        t        t        |            }|dt
        j                  |      z   dz   z  }| |dz  }|D ]  }|dd|z  z   dz   z  } |d	z  }n|d
|z   dz   z  }|dkD  r|S dS # t        $ r!}t
        j                  |      }d }Y d }~yd }~ww xY w)Nr   r   z        <retired_count>z</retired_count>
z!        <retired_page_addresses>
z           <retired_page_address>0x%016xz</retired_page_address>
z"        </retired_page_addresses>
z         <retired_page_addresses>z</retired_page_addresses>
)nvmlDeviceGetRetiredPagessummaprH  r   r   r   r   )r   causeretiredPagedByCauseerrorr   pagesr  pages           r   __xmlGetRetiredPagesByCausez&nvidia_smi.__xmlGetRetiredPagesByCause?  s    ee+FE:%c#uo&%
 69N9Nu9UUXlll		
!E
E
 yd!%G)VZJZ%Z]x%xx!y
!F
F

!Ce!KNk!k
k
$)AI 525  **3/%%s   %B 	B+
B&&B+c                 H   i }d }d}	 t        | |      }i }|'d}|D ]   }	d|	z  |dt	        |      z   <   |dz  }|dz  }" |||d<   ||d<   t        |j                               dkD  r|nd |d<   |dkD  r|S d S # t        $ r!}t        j                  |      }d }Y d }~d }~ww xY w)Nr   r   rS  retired_page_address_Errorretired_countretired_page_addresses)rT  r   r   r   strrH  r   )
r   rW  rX  rY  r   rZ  r  retiredPageAddressesiir[  s
             r   __GetRetiredPagesByCausez#nvidia_smi.__GetRetiredPagesByCauseW  s    ee+FE:%
  		" dFORVFV"#:3r7#BC!ebQhe 
	*/
w
'-2/*NQRfRmRmRoNpstNt6Jz~23$)AI 747#  **3/%%s   A7 7	B! BB!c                    d}d}ddg}t        t              D ]]  }t        |v st        |v r|dk(  st        |v s!|dk(  s'|d||   z   dz   z  }|t
        j                  | |      z  }|d	||   z   dz   z  }d
}_ t        |v st        |v r*|dz  }	 t        t        |       k(  r|dz  }n|dz  }|dz  }d
}t        |      dkD  r||fS d |fS # t        $ r"}|t
        j                  |      z  }Y d }~Cd }~ww xY w)Nr   Fmultiple_single_bit_retirementdouble_bit_retirementr   r         <>
z      </Tz      <pending_retirement>NoYesz</pending_retirement>
)r    NVML_PAGE_RETIREMENT_CAUSE_COUNTr  'NVSMI_RETIREDPAGES_SINGLE_BIT_ECC_COUNT'NVSMI_RETIREDPAGES_DOUBLE_BIT_ECC_COUNTr   &_nvidia_smi__xmlGetRetiredPagesByCauseNVSMI_RETIREDPAGES_PENDINGNVML_FEATURE_DISABLED&nvmlDeviceGetRetiredPagesPendingStatusr   r   rH  )r   r   retiredPagesincludeRetiredPagescausesidxr  s          r   __xmlGetRetiredPagesznvidia_smi.__xmlGetRetiredPagesr  s@   l!13JLf78 )#6!6&@SAX6&@SAXi&+5==ljDDVSQQlj6#;6>>l$(!) v
!;v!E
6
6,<&*PQW*XX$&,%', 3
3, $
 .2\>QQQ>QQQ  <j66s;;l<s   C 	C3C..C3c                    i }d}ddg}t        t              D ]D  }t        |v st        |v r|dk(  st        |v s!|dk(  s't
        j                  | |      |||   <   d}F t        |v st        |v r!d}	 t        t        |       k(  rd}nd	}||d
<   d}t        |j                               dkD  r||fS d |fS # t        $ r}t
        j                  |      }Y d }~Nd }~ww xY w)NFrg  rh  r   r   Tr   rk  rl  pending_retirement)r   rm  r  rn  ro  r   #_nvidia_smi__GetRetiredPagesByCauserq  rr  rs  r   r   rH  r   )r   r   rt  ru  rv  rw  rz  r  s           r   __GetRetiredPagesznvidia_smi.__GetRetiredPages  s   l!13JLf78 )#6!6&@SAX6&@SAX*4*M*MfVY*Zl6#;'$(!) v
!;v!E!
A&*PQW*XX'+$',$ 0B,+
, $
 !4!4!67!;\GZZZGZZZ  A#-#;#;C#@ As   2B4 4	C=CCc                 @    | t         k(  ry| t        k(  ry| t        k(  ryy)NzAll OnComputezLow Double Precisionr   )NVML_GOM_ALL_ONNVML_GOM_COMPUTENVML_GOM_LOW_DP)modes    r   
__toStrGOMznvidia_smi.__toStrGOM  s'    		 ##?"'r   c           	      h   t         dgt        dgt        dgt        dgt        dgt
        dgg}d}	 t        |       }t        |       }|dz  }|D ]+  \  }}|dk7  s||z  r
||z  rd	nd
}nd}|d|d|d|dz  }- |dz  }|S # t        $ r&}|dt        j                  |      z  z  }Y d }~|S d }~ww xY w)Nclocks_throttle_reason_gpu_idle*clocks_throttle_reason_user_defined_clocks2clocks_throttle_reason_applications_clocks_setting#clocks_throttle_reason_sw_power_cap"clocks_throttle_reason_hw_slowdownclocks_throttle_reason_noner   z    <clocks_throttle_reasons>
Active
Not ActiveN/Ari  >z</rj  z    </clocks_throttle_reasons>
z:    <clocks_throttle_reasons>%s</clocks_throttle_reasons>
)nvmlClocksThrottleReasonGpuIdle)nvmlClocksThrottleReasonUserDefinedClocks1nvmlClocksThrottleReasonApplicationsClocksSetting"nvmlClocksThrottleReasonSwPowerCap"nvmlClocksThrottleReasonHwSlowdownnvmlClocksThrottleReasonNone+nvmlDeviceGetSupportedClocksThrottleReasons)nvmlDeviceGetCurrentClocksThrottleReasonsr   r   r   )	r   throttleReasonsr   supportedClocksThrottleReasonsclocksThrottleReasonsmaskr   valr  s	            r   __xmlGetClocksThrottleReasonsz(nvidia_smi.__xmlGetClocksThrottleReasons  s    /:[\8:fg@Bvw1:_`1:^_+7TUo ix+VW]+^
("KF"S

8
8)- JltTFF;;(,/D(DH,c!cc4HH)J 9
9)   x
TXbXpXpqtXuv
v)xs   (B 'B 	B1B,,B1c                 v   t         dgt        dgt        dgt        dgt        dgt
        dgg}i }	 t        |       }t        |       }|D ]!  \  }}|dk7  s||z  r
||z  rdnd}nd	}|||<   # 	 t        |j                               dkD  r|S d S # t        $ r"}t        j                  |      |d
<   Y d }~Fd }~ww xY w)Nr  r  r  r  r  r  r  r  r  r_  r   )r  r  r  r  r  r  r  r  r   r   r   rH  r   )	r   r  clockThrottleReasonsr  r  r  r   r  r  s	            r   __GetClocksThrottleReasonsz%nvidia_smi.__GetClocksThrottleReasons  s     /:[\8:fg@Bvw1:_`1:^_+7TUo  I+VW]+^
("KF"S
- 3ltTFF;;(,/D(DH,c!c.1&t,3 &))=)D)D)F%G!%K!UQUU  I*4*B*B3*G
w
'Is   #B B 	B8B33B8c                 J    | j                   t        k(  ry| j                         S )Nr  )valueNVML_ERROR_NOT_SUPPORTED__str__)r  s    r   __handleErrorznvidia_smi.__handleError  s    
))/
/
r   c                 Z    t        | t              r| j                  d      S t        |       S )Nzutf-8)
isinstancebytesdecoderb  )r  s    r   
__toStringznvidia_smi.__toString  s$    
S%
 G$
$Xor   c                 xH   |t         g}nt        |t              re|dk(  s|dk(  rt        j                  j
                  S |dk(  r&t        dd      5 }|j                         cddd       S t        j                  |      }nt        |      }d}	 |dz  }|d	z  }|d
z  }t         |v st        |v r:|dt        j                  t        j                  j                               z   dz   z  }t         |v st        |v r&|dt        j                  t!                     z   dz   z  }t#               }t         |v st$        |v r|dt        j                  |      z   dz   z  }t'        d|      D ]d  }| j(                  |   }t+        |      }d}t         |v st,        |v r|d|j.                  z  z  }t         |v st0        |v rE|dt        j                  t3        |            z   dz   z  }	 t4        t7        |         }	|d|	z   dz   z  }t         |v st<        |v r	 t?        |      dk7  rdnd}|d|z   dz   z  }t         |v st@        |v r	 tC        |      dk7  rdnd}|d|z   dz   z  }t         |v stD        |v r	 tG        |      dk7  rdnd}|d|z   dz   z  }t         |v stH        |v r	 tK        |      dk7  rdnd}|d|z   d z   z  }t         |v stL        |v r*	 t        j                  tO        |            }|d!|z   d"z   z  }d}d#}t         |v stP        |v stR        |v rA	 tU        |      \  }}|tV        k(  rdnd}|tV        k(  rdnd}|d$|z   d%z   z  }|d&|z   d'z   z  }d(}|r|d)z  }||z  }|d*z  }d}d#}t         |v stX        |v r$	 t[        |      t\        k(  rd+nd,}|d-|z   d.z   z  }d(}t         |v st^        |v r	 ta        |      t\        k(  rd+nd,}|r|d1z  }||z  }|d2z  }t         |v stb        |v r*	 te        |      }|d3t        j                  |      z   d4z   z  }t         |v stf        |v r*	 ti        |      }|d5t        j                  |      z   d6z   z  }t         |v stj        |v r*	 tm        |      }|d7t        j                  |      z   d8z   z  }t         |v stn        |v r*	 tq        |      }|d9t        j                  |      z   d:z   z  }t         |v stn        |v r$	 ts        |      }|d;k(  r|d<z  }n|r|d=z  }n|d>z  }t         |v stt        |v r	 tw        |      }	 d?|z  }|d@|z   dAz   z  }d}d#}t         |v stx        |v r,	 t{        |      }|dBt        j                  |      z   dCz   z  }d(}t         |v st|        |v r1	 t        |t              }|dDt        j                  |      z   dEz   z  }d(}t         |v st        |v r1	 t        |t              }|dFt        j                  |      z   dGz   z  }d(}t         |v st        |v r1	 t        |t              } |dHt        j                  |       z   dIz   z  }d(}|r|dJz  }||z  }|dKz  }d}!d#}"t         |v st        |v r?	 t        j                  t        |            }|!dLt        j                  |      z   dMz   z  }!d(}"t         |v st        |v r?	 t        j                  t        |            }|!dNt        j                  |      z   dOz   z  }!d(}"|"r|dPz  }||!z  }|dQz  }d}#d#}$t         |v st        |v r|#dR|j                  z  z  }#d(}$t         |v st        |v r|#dS|j                  z  z  }#d(}$t         |v st        |v r|#dT|j                  z  z  }#d(}$t         |v st        |v r|#dU|j                  z  z  }#d(}$t         |v st,        |v r*|#dVt        j                  |j.                        z   dWz   z  }#d(}$t         |v st        |v r|#dX|j                  z  z  }#d(}$d}%d#}&d}'d#}(t         |v st        |v r,	 t        j                  t        |            })|'dY|)z   dZz   z  }'d(}(t         |v st        |v r,	 t        j                  t        |            })|'d[|)z   d\z   z  }'d(}(|(r|%d]z  }%|%|'z  }%|%d^z  }%d(}&d}*d#}+t         |v st        |v r/	 t        j                  t        |            d_z   },|*d`|,z   daz   z  }*d(}+t         |v st        |v r/	 t        j                  t        |            d_z   },|*db|,z   dcz   z  }*d(}+|+r|%ddz  }%|%|*z  }%|%dez  }%d(}&|&r|#dfz  }#|#|%z  }#|#dgz  }#d}-d#}.t         |v r	 t        |      }/d}0|/j                  d   j                  dk(  r|0dhz  }0n|0diz  }0|-dj|0z   dkz   z  }-|/j                  d   j                  dk(  rd;}1ndl|/j                  d   j                  z  }1|-dm|1z  z  }-d(}.|.r|#dpz  }#|#|-z  }#|#dqz  }#t         |v r,	 t        |      }2|#drt        j                  |2      z   dsz   z  }#d(}$t         |v r4	 t        |t              }3|#dtt        j                  |3      z   duz   dvz   z  }#d(}$t         |v r4	 t        |t              }4|#dwt        j                  |4      z   duz   dxz   z  }#d(}$|$r|dyz  }||#z  }|dzz  }t         |v st        |v r-	 t        j                  t        |            d{z   }5|d||5z   d}z   z  }t         |v st        |v r	 t        |      }6d~|6z  }7|d|7z   dz   z  }t         |v sPt        |v sHt        |v s@t        |v s8t        |v s0t        |v s(t        |v s t        |v st        |v st        |v st        |v r|t        j                  |      z  }d}8d#}9t         |v st        |v st        |v st        |v rd(}9	 t        |      }:t        j                  |:j                  dz  dz        dz   };t        j                  |:j                  dz  dz        dz   }<t        j                  |:j                  dz  dz  |:j                  dz  dz  z
        dz   }=t         |v st        |v r|8d|;z   dz   z  }8t         |v st        |v r|8d|<z   dz   z  }8t         |v st        |v r|8d|=z   dz   z  }8|9r|dz  }||8z  }|dz  }t         |v st        |v r	 t        |      }:t        j                  |:j                  dz  dz        dz   };t        j                  |:j                  dz  dz        dz   }<t        j                  |:j                  dz  dz  |:j                  dz  dz  z
        dz   }=|dz  }|d|;z   dz   z  }|d|<z   dz   z  }|d|=z   dz   z  }|dz  }t         |v st        |v rL	 t        |      }|t        k(  rd}?n)|t         k(  rd}?n|t        k(  rd}?n|t        k(  rd}?nd}?|d|?z   dz   z  }d}@d#}At         |v st        |v s	t        |v r	 t        |      }Bt        j                  |Bj                        d{z   }Ct        j                  |Bj                        d{z   }Dt         |v s	t        |v r@dCz   dz   z  }@t         |v s	t        |v r@dDz   dz   z  }@d(}At         |v s	t        |v r5	 t        |      \  }E}Ft        j                  |E      d{z   }G@dGz   dz   z  }@d(}At         |v s	t        |v r5	 t        |      \  }E}Ft        j                  |E      d{z   }H@dHz   dz   z  }@d(}AAr|dz  }|@z  }|dz  }t         |v st        |v s	t        |v rk	 t        |      \  }}|dk7  rdnd}I|dk7  rdnd}Jd}Kt         |v s	t        |v rKdIz   dz   z  }Kt         |v s	t        |v rKdJz   dz   z  }K|dz  }|Kz  }|dz  }t        j                  ||      \  }L}M|Mr|dz  }|Lz  }|dz  }t        j!                  ||      \  }N}O|Or|dz  }|Nz  }|dz  }d}Pd#}Qt         |v s	t"        |v r	 t        j                  t%        |t&                    dz   }RPdRz   dz   z  }P	 t        j                  t)        |t*                    dz   }RPdRz   dz   z  }Pd(}Q	 t        j                  t)        |t,                    dz   }RPdRz   dz   z  }Pd(}QQr|dz  }|Pz    |dz  }d}Sd#}Tt         |v s	t.        |v r#	 t1        |      }U|Udk7  rdnd;}VSdVz   dz   z  }Sd(}Tt         |v s	t2        |v r"	 t5        |      dz  }Wd|Wz  }XSdXz   dz   z  }Sd(}Tt         |v s	t6        |v r"	 t9        |      dz  }Yd|Yz  }ZSdZz   dz   z  }Sd(}Tt         |v s	t:        |v r"	 t=        |      dz  }Yd|Yz  }ZSdZz   dz   z  }Sd(}Tt         |v s	t>        |v r"	 tA        |      dz  }[d|[z  }\Sd\z   dz   z  }Sd(}Tt         |v stB        |v s	tD        |v r]	 tG        |      }Yd|Yd   dz  z  }]d|Yd   dz  z  }^t         |v s	tB        |v rSd]z   dz   z  }St         |v s	tD        |v rSd^z   dz   z  }Sd(}TTr9|dz  }	 dt        j                  t        |            z   }6|d|6z  z  }|Sz  }|dz  }d}_d#}`t         |v s	tH        |v r6	 t        j                  tK        |tL                    dz   }a_daz   dz   z  }_d(}`t         |v s	tH        |v r6	 t        j                  tK        |tN                    dz   }b_dbz   dz   z  }_d(}`t         |v s	tP        |v r6	 t        j                  tK        |tR                    dz   }c_dcz   dz   z  }_d(}``r|dz  }|_z  }|dz  }d}dd#}et         |v s	tT        |v r6	 t        j                  tW        |tL                    dz   }addaz   dz   z  }dd(}et         |v s	tX        |v r6	 t        j                  tW        |tR                    dz   }cddcz   dz   z  }dd(}eer|dz  }|dz  }|dz  }d}fd#}gt         |v s	tZ        |v r6	 t        j                  t]        |tL                    dz   }afdaz   dz   z  }fd(}gt         |v s	t^        |v r6	 t        j                  t]        |tR                    dz   }cfdcz   dz   z  }fd(}ggr|dz  }|fz  }|dz  }d}hd#}it         |v s	t`        |v r6	 t        j                  tc        |tL                    dz   }ahdaz   dz   z  }hd(}it         |v s	td        |v r6	 t        j                  tc        |tN                    dz   }bhdbz   dz   z  }hd(}it         |v s	tf        |v r6	 t        j                  tc        |tR                    dz   }chdcz   dz   z  }hd(}iir|dz  }|hz  }|dz  }t         |v s	th        |v rN|dz  }	 tk        |      \  }j}k|jtl        k(  rd}lnd}lktl        k(  rd}mnd}m|dlz   dz   z  }|dmz   dz   z  }|dz  }t         |v s	tp        |v rN	 ts        |      }n|dz  }|nD ]2  }o|dz  }|d|oz  z  }	 tu        |o      }_|_D ]
  }p|d|pz  z  } 	 |dz  }4 |dz  }t         |v s	tv        |v r	 ty        |      }q|dz  }|qD ]  }r	 t        j                  t{        rj|                              }s|dz  }|drj|                  z  z  }|dsz   dz   z  }|rj                  dk(  rd;}cndrj                  dz  dz  z  }c|dcz   dz   z  }|dz  } |dz  }t         |v s	t        |v r	 t        |      }t|dz  }|tD ]  }u	 t        |u      }vd|vj                  z  }wd|vj                  z  }x|vj                  dk(  rd;}yndvj                  dz  dz  z  }ydvj                  z  }zd|vj                  z  }{|dz  }|duz  z  }|dwz   dz   z  }|dxz   dz   z  }|dyz   dz   z  }|dzz   dz   z  }|d{z   dz   z  }|dz  } |dz  }t        |      dkD  sT|dz  }||z  }|dz  }g |dz  }|S # 1 sw Y   PxY w# t8        $ r }
t        j;                  |
      }	Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r"}
t        j;                  |
      }|}Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r-}
t        j;                  |
      }|d/|z   d0z   z  }d(}Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
yd}
~
ww xY w#  |}Y xY w# t8        $ r }
t        j;                  |
      }Y d}
~
~d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
id}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
Td}
~
ww xY w# t8        $ r }
t        j;                  |
      } Y d}
~
?d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      })Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      })Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      },Y d}
~
|d}
~
ww xY w# t8        $ r }
t        j;                  |
      },Y d}
~
id}
~
ww xY w# t8        $ rG}
|-djt        j;                  |
      z   dkz   z  }-|-dnt        j;                  |
      z   doz   z  }-Y d}
~
d}
~
ww xY w# t8        $ r)}
|#drt        j;                  |
      z   dsz   z  }#Y d}
~
d}
~
ww xY w# t8        $ r)}
|#dtt        j;                  |
      z   dvz   z  }#Y d}
~
d}
~
ww xY w# t8        $ r)}
|#dwt        j;                  |
      z   dxz   z  }#Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }5Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }7Y d}
~
d}
~
ww xY w# t8        $ r&}
t        j;                  |
      }>|>};|>}<|>}=Y d}
~
d}
~
ww xY w# t8        $ r&}
t        j;                  |
      }>|>};|>}<|>}=Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }?Y d}
~
d}
~
ww xY w# t8        $ r$}
t        j;                  |
      }>|>}C|>}DY d}
~
Ld}
~
ww xY w# t8        $ r"}
t        j;                  |
      }>|>}GY d}
~
d}
~
ww xY w# t8        $ r"}
t        j;                  |
      }>|>}HY d}
~
d}
~
ww xY w# t8        $ r$}
t        j;                  |
      }>|>}I|>}JY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }RY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }RY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }RY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }VY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }XY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }ZY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }ZY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }\Y d}
~
d}
~
ww xY w# t8        $ r$}
t        j;                  |
      }>|>}]|>}^Y d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }6Y d}
~
xd}
~
ww xY w# t8        $ r }
t        j;                  |
      }aY d}
~
Td}
~
ww xY w# t8        $ r }
t        j;                  |
      }bY d}
~
9d}
~
ww xY w# t8        $ r }
t        j;                  |
      }cY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }aY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }cY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }aY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }cY d}
~
d}
~
ww xY w# t8        $ r }
t        j;                  |
      }aY d}
~
Xd}
~
ww xY w# t8        $ r }
t        j;                  |
      }bY d}
~
=d}
~
ww xY w# t8        $ r }
t        j;                  |
      }cY d}
~
"d}
~
ww xY w# tn        $ r d;}ld;}mY t8        $ r5}
t        j;                  |
      }lt        j;                  |
      }mY d}
~
d}
~
ww xY w# t8        $ r&}
|dt        j;                  |
      z  z  }Y d}
~
d}
~
ww xY w# t8        $ r)}
|dt        j;                  |
      z   dz   z  }Y d}
~
d}
~
ww xY w# t8        $ r;}
|
j~                  t        k(  rY d}
~
t        j;                  |
      }sY d}
~
d}
~
ww xY w# t8        $ r)}
|dt        j;                  |
      z   dz   z  }Y d}
~
d}
~
ww xY w# t8        $ rE}
|
j~                  t        k(  rY d}
~
t        j;                  |
      }
|
}w|
}x|
}y|
}z|
}{Y d}
~
vd}
~
ww xY w# t8        $ r+}
|d t        j;                  |
      z   dz   z  }Y d}
~
]d}
~
ww xY w# t8        $ r'}
|d|
j                         z   dz   z  }Y d}
~
|S d}
~
ww xY w(  a  
      Provides a Python interface to GPU management and monitoring functions.

      This is a wrapper around the NVML library.
      For information about the NVML library, see the NVML developer page
      http://developer.nvidia.com/nvidia-management-library-nvml

      Examples:
      ---------------------------------------------------------------------------
      For all elements as in XML format.  Similiar to nvisia-smi -q -x

      $ XmlDeviceQuery()

      ---------------------------------------------------------------------------
      For XML of filtered elements by string name.
      Similiar ot nvidia-smi --query-gpu=pci.bus_id,memory.total,memory.free
      See help_query_gpu.txt or XmlDeviceQuery("--help-query-gpu") for available filter elements

      $ XmlDeviceQuery("pci.bus_id,memory.total,memory.free")

      ---------------------------------------------------------------------------
      For XML of filtered elements by enumeration value.
      See help_query_gpu.txt or XmlDeviceQuery("--help_query_gpu") for available filter elements

      $ XmlDeviceQuery([NVSMI_PCI_BUS_ID, NVSMI_MEMORY_TOTAL, NVSMI_MEMORY_FREE])

      N--help-h--help-query-gpuhelp_query_gpu.txtrr   z<?xml version="1.0" ?>
z7<!DOCTYPE nvidia_smi_log SYSTEM "nvsmi_device_v4.dtd">
z<nvidia_smi>
z  <timestamp>z</timestamp>
z  <driver_version>z</driver_version>
z	  <count>z	</count>
r   z  <id>%s</id>
z    <product_name>z</product_name>
z    <product_brand>z</product_brand>
EnabledDisabledz    <display_mode>z</display_mode>
z    <display_active>z</display_active>
z    <persistence_mode>z</persistence_mode>
z    <accounting_mode>z</accounting_mode>
z!    <accounting_mode_buffer_size>z</accounting_mode_buffer_size>
Fz      <current_mm>z</current_mm>
z      <pending_mm>z</pending_mm>
Tz    <mig_mode>
z    </mig_mode>
WDDMTCCz      <current_dm>z</current_dm>
z      <pending_dm>z</pending_dm>
z    <driver_model>
z    </driver_model>
z    <serial>z
</serial>
z
    <uuid>z</uuid>
z    <minor_number>z</minor_number>
z    <vbios_version>z</vbios_version>
r  z)    <multigpu_board>N/A</multigpu_board>
z)    <multigpu_board>Yes</multigpu_board>
z(    <multigpu_board>No</multigpu_board>
0x%xz    <board_id>z</board_id>
z      <img_version>z</img_version>
z      <oem_object>z</oem_object>
z      <ecc_object>z</ecc_object>
z      <pwr_object>z</pwr_object>
z    <inforom_version>
z    </inforom_version>
z      <current_gom>z</current_gom>
z      <pending_gom>z</pending_gom>
z    <gpu_operation_mode>
z    </gpu_operation_mode>
z      <pci_bus>%02X</pci_bus>
z$      <pci_device>%02X</pci_device>
z$      <pci_domain>%04X</pci_domain>
z*      <pci_device_id>%08X</pci_device_id>
z      <pci_bus_id>z</pci_bus_id>
z2      <pci_sub_system_id>%08X</pci_sub_system_id>
z          <max_link_gen>z</max_link_gen>
z          <current_link_gen>z</current_link_gen>
z        <pcie_gen>
z        </pcie_gen>
xz          <max_link_width>z</max_link_width>
z          <current_link_width>z</current_link_width>
z        <link_widths>
z        </link_widths>
z      <pci_gpu_link_info>
z      </pci_gpu_link_info>
PLXBR04z        <bridge_chip_type>z</bridge_chip_type>
%08Xz,        <bridge_chip_fw>%s</bridge_chip_fw>
z        <bridge_chip_fw>z</bridge_chip_fw>
z      <pci_bridge_chip>
z      </pci_bridge_chip>
z      <replay_counter>z</replay_counter>z      <tx_util>z KB/sz
</tx_util>z      <rx_util>z
</rx_util>z
    <pci>
z    </pci>
z %z    <fan_speed>z</fan_speed>
P%sz    <performance_state>z</performance_state>
   z MiBz      <total>r   z      <used>z</used>
z      <free>z</free>
z    <fb_memory_usage>
z    </fb_memory_usage>
z    <bar1_memory_usage>
z    </bar1_memory_usage>
DefaultExclusive Thread
ProhibitedExclusive_Processr   z    <compute_mode>z</compute_mode>
z      <gpu_util>z</gpu_util>
z      <memory_util>z</memory_util>
z      <encoder_util>z</encoder_util>
z      <decoder_util>z</decoder_util>
z    <utilization>
z    </utilization>
z      <current_ecc>z</current_ecc>
z      <pending_ecc>z</pending_ecc>
z    <ecc_mode>
z    </ecc_mode>
z    <ecc_errors>
z    </ecc_errors>
z    <retired_pages>
z    </retired_pages>
z Cz      <gpu_temp>z</gpu_temp>
z      <gpu_temp_max_threshold>z</gpu_temp_max_threshold>
z      <gpu_temp_slow_threshold>z</gpu_temp_slow_threshold>
z    <temperature>
z    </temperature>
	Supportedz      <power_management>z</power_management>
     @@z%.2f Wz      <power_draw>z</power_draw>
z      <power_limit>z</power_limit>
z      <default_power_limit>z</default_power_limit>
z      <enforced_power_limit>z</enforced_power_limit>
r   z      <min_power_limit>z</min_power_limit>
z      <max_power_limit>z</max_power_limit>
z    <power_readings>
Pz$      <power_state>%s</power_state>
z    </power_readings>
z MHzz      <graphics_clock>z</graphics_clock>
z      <sm_clock>z</sm_clock>
z      <mem_clock>z</mem_clock>
z    <clocks>
z    </clocks>
z    <applications_clocks>
z    </applications_clocks>
z"    <default_applications_clocks>
z#    </default_applications_clocks>
z    <max_clocks>
z    </max_clocks>
z    <clock_policy>
OffOnz      <auto_boost>z</auto_boost>
z      <auto_boost_default>z</auto_boost_default>
z    </clock_policy>
z    <supported_clocks>
z      <supported_mem_clock>
z        <value>%d MHz</value>
zD        <supported_graphics_clock>%d MHz</supported_graphics_clock>
z@        <supported_graphics_clock>%s</supported_graphics_clock>
z      </supported_mem_clock>
z    </supported_clocks>
z    <supported_clocks>z</supported_clocks>
z    <processes>
z    <process_info>
z      <pid>%d</pid>
z      <process_name>z</process_name>
%d MiBz      <used_memory>z</used_memory>
z    </process_info>
z    </processes>
z    <processes>z</processes>
z    <accounted_processes>
%d %%%d ms%dz    <accounted_process_info>
z      <max_memory_usage>z</max_memory_usage>
z      <time>z</time>
z      <is_running>z</is_running>
z    </accounted_process_info>
z    </accounted_processes>
z    <accounted_processes>z</accounted_processes>
z  <gpu>z	  </gpu>
z</nvidia_smi>
nvidia_smi.py: 
)r  r  rb  r   XmlDeviceQuery__doc__openread"_nvidia_smi__fromDeviceQueryStringlistNVSMI_TIMESTAMPr   datetimedatetodayNVSMI_DRIVER_VERSIONnvmlSystemGetDriverVersionr   NVSMI_COUNTr   r   nvmlDeviceGetPciInfoNVSMI_PCI_BUS_IDbusId
NVSMI_NAMEnvmlDeviceGetNameNVSMI_BRAND_NAMESnvmlDeviceGetBrandr   r   NVSMI_DISPLAY_MODEnvmlDeviceGetDisplayModeNVSMI_DISPLAY_ACTIVEnvmlDeviceGetDisplayActiveNVSMI_PERSISTENCE_MODEnvmlDeviceGetPersistenceModeNVSMI_ACCT_MODEnvmlDeviceGetAccountingModeNVSMI_ACCT_BUFFER_SIZE!nvmlDeviceGetAccountingBufferSizeNVSMI_MIG_MODE_CURRENTNVSMI_MIG_MODE_PENDINGnvmlDeviceGetMigModeNVML_DEVICE_MIG_ENABLENVSMI_DRIVER_MODEL_CURnvmlDeviceGetCurrentDriverModelNVML_DRIVER_WDDMNVSMI_DRIVER_MODEL_PENDINGnvmlDeviceGetPendingDriverModelNVSMI_SERIALNUMBERnvmlDeviceGetSerial
NVSMI_UUIDnvmlDeviceGetUUIDNVSMI_INDEXnvmlDeviceGetMinorNumberNVSMI_VBIOS_VERnvmlDeviceGetVbiosVersionnvmlDeviceGetMultiGpuBoardNVSMI_BOARD_IDnvmlDeviceGetBoardIdNVSMI_INFOROM_IMG nvmlDeviceGetInforomImageVersionNVSMI_INFOROM_OEMnvmlDeviceGetInforomVersionNVML_INFOROM_OEMNVSMI_INFOROM_ECCNVML_INFOROM_ECCNVSMI_INFOROM_PWRNVML_INFOROM_POWERNVSMI_GOM_CUR_nvidia_smi__toStrGOM$nvmlDeviceGetCurrentGpuOperationModeNVSMI_GOM_PENDING$nvmlDeviceGetPendingGpuOperationModeNVSMI_PCI_BUSbusNVSMI_PCI_DEVICEdeviceNVSMI_PCI_DOMAINdomainNVSMI_PCI_DEVICE_IDpciDeviceIdNVSMI_PCI_SUBDEVICE_IDpciSubSystemIdNVSMI_PCI_LINK_GEN_MAX"nvmlDeviceGetMaxPcieLinkGenerationNVSMI_PCI_LINK_GEN_CUR#nvmlDeviceGetCurrPcieLinkGenerationNVSMI_PCI_LINK_WIDTH_MAXnvmlDeviceGetMaxPcieLinkWidthNVSMI_PCI_LINK_WIDTH_CURnvmlDeviceGetCurrPcieLinkWidthnvmlDeviceGetBridgeChipInfobridgeChipInfotype	fwVersionnvmlDeviceGetPcieReplayCounternvmlDeviceGetPcieThroughputNVML_PCIE_UTIL_TX_BYTESNVML_PCIE_UTIL_RX_BYTESNVSMI_FAN_SPEEDnvmlDeviceGetFanSpeedNVSMI_PSTATEnvmlDeviceGetPowerState&NVSMI_CLOCK_THROTTLE_REASONS_SUPPORTED#NVSMI_CLOCK_THROTTLE_REASONS_ACTIVE!NVSMI_CLOCK_THROTTLE_REASONS_IDLE(NVSMI_CLOCK_THROTTLE_REASONS_APP_SETTING'NVSMI_CLOCK_THROTTLE_REASONS_SW_PWR_CAP(NVSMI_CLOCK_THROTTLE_REASONS_HW_SLOWDOWN0NVSMI_CLOCK_THROTTLE_REASONS_HW_THERMAL_SLOWDOWN2NVSMI_CLOCK_THROTTLE_REASONS_HW_PWR_BRAKE_SLOWDOWN0NVSMI_CLOCK_THROTTLE_REASONS_SW_THERMAL_SLOWDOWN'NVSMI_CLOCK_THROTTLE_REASONS_SYNC_BOOST(_nvidia_smi__xmlGetClocksThrottleReasonsNVSMI_MEMORY_TOTALNVSMI_MEMORY_USEDNVSMI_MEMORY_FREEnvmlDeviceGetMemoryInfor  usedNVSMI_MEMORY_BAR1nvmlDeviceGetBAR1MemoryInfo	bar1Totalbar1UsedNVSMI_COMPUTE_MODEnvmlDeviceGetComputeModeNVML_COMPUTEMODE_DEFAULT!NVML_COMPUTEMODE_EXCLUSIVE_THREADNVML_COMPUTEMODE_PROHIBITED"NVML_COMPUTEMODE_EXCLUSIVE_PROCESSNVSMI_UTILIZATION_GPUNVSMI_UTILIZATION_MEMnvmlDeviceGetUtilizationRatesgpumemoryNVSMI_UTILIZATION_ENCODERnvmlDeviceGetEncoderUtilizationNVSMI_UTILIZATION_DECODERnvmlDeviceGetDecoderUtilizationNVSMI_ECC_MODE_CURNVSMI_ECC_MODE_PENDINGnvmlDeviceGetEccMode_nvidia_smi__xmlGetEcc_nvidia_smi__xmlGetRetiredPagesNVSMI_TEMPERATURE_GPUnvmlDeviceGetTemperatureNVML_TEMPERATURE_GPU!nvmlDeviceGetTemperatureThreshold#NVML_TEMPERATURE_THRESHOLD_SHUTDOWN#NVML_TEMPERATURE_THRESHOLD_SLOWDOWNNVSMI_POWER_MGMT nvmlDeviceGetPowerManagementModeNVSMI_POWER_DRAWnvmlDeviceGetPowerUsageNVSMI_POWER_LIMIT!nvmlDeviceGetPowerManagementLimitNVSMI_POWER_LIMIT_DEFAULT(nvmlDeviceGetPowerManagementDefaultLimitNVSMI_POWER_LIMIT_ENFORCEDnvmlDeviceGetEnforcedPowerLimitNVSMI_POWER_LIMIT_MINNVSMI_POWER_LIMIT_MAX,nvmlDeviceGetPowerManagementLimitConstraintsNVSMI_CLOCKS_GRAPHICS_CURnvmlDeviceGetClockInfoNVML_CLOCK_GRAPHICSNVML_CLOCK_SMNVSMI_CLOCKS_MEMORY_CURNVML_CLOCK_MEMNVSMI_CLOCKS_APPL_GRAPHICSnvmlDeviceGetApplicationsClockNVSMI_CLOCKS_APPL_MEMORY"NVSMI_CLOCKS_APPL_GRAPHICS_DEFAULT%nvmlDeviceGetDefaultApplicationsClock NVSMI_CLOCKS_APPL_MEMORY_DEFAULTNVSMI_CLOCKS_GRAPHICS_MAXnvmlDeviceGetMaxClockInfoNVSMI_CLOCKS_SM_MAXNVSMI_CLOCKS_MEMORY_MAXNVSMI_CLOCKS_POLICY%nvmlDeviceGetAutoBoostedClocksEnabledrr  NVMLError_NotSupportedNVSMI_CLOCKS_SUPPORTED"nvmlDeviceGetSupportedMemoryClocks$nvmlDeviceGetSupportedGraphicsClocksNVSMI_COMPUTE_APPS$nvmlDeviceGetComputeRunningProcessesnvmlSystemGetProcessNamepidr  NVML_ERROR_NOT_FOUNDusedGpuMemoryNVSMI_ACCOUNTED_APPSnvmlDeviceGetAccountingPidsnvmlDeviceGetAccountingStatsgpuUtilizationmemoryUtilizationmaxMemoryUsager   	isRunningrH  r  )|r   r   finr   r   r   r   pciInfogpuInfo	brandNamer  stater  
bufferSizemigModeincludeMigModecurrentpendingdriverModelincludeDriverModelr   r   minor_numbervbiosmultiGpuBoolboardIdhexBIDinforomVersionincludeInforomimgoemrJ  pwrgpuOperationMode
includeGOMpci
includePcipciGpuLinkInfoincludeLinkInfopciGen
includeGengenpciLinkWidthsincludeLinkWidthswidthpciBridgeChipincludeBridgeChipbridgeHierarchybridge_typestrFwVersionreplaytx_bytesrx_bytesfan	perfStateperfStateStrfbMemoryUsageincludeMemoryUsagememInfo	mem_totalmem_usedmem_freerY  modeStrutilizationincludeUtilizationutilgpu_utilmem_utilutil_intssizeencoder_utildecoder_utilcurr_strpend_streccMode	eccErrorsincludeEccErrorsrt  ru  temperatureincludeTemperaturetemppower_readingsincludePowerReadingspowMan	powManStrpowDraw
powDrawStrpowLimitpowLimitStrenforcedPowLimitenforcedPowLimitStrpowLimitStrMinpowLimitStrMaxr   includeClocksgraphicssmmemapplicationClocksincludeAppClocksdefaultApplicationClocksincludeDefaultAppClocks	maxClocksincludeMaxClocksboostedStateboostedDefaultStateautoBoostStrautoBoostDefaultStr	memClocksmcprocsr   r   pidsr|  statsr  r  r  r   
is_runnings|                                                                                                                               r   r  znvidia_smi.XmlDeviceQuery   se)   < .;&vs# fn..666,,,c2 $c$ $ "99&Af<&iP@
1
1)
Q
Q)
'
')6!_%>?Z-B-B8==CVCVCX-YY\llli6!%9V%C/*2G2GHbHd2eeh}}}i*,+6![F%:;)>)>{)KKlZZiK( },a~~a(f,V4ggv%)9V)C.>>'v%v)=1J4I4IJ[\bJc4ddgzzz'@"34Fv4N"Oi
 2Y>AUUU'v%);v)E<-Ef-MQR-RyYce 1E9<OOO'v%)=)G<-G-OST-Ty[ee 3e;>SSS'v%)?6)I;+G+OST+TY[ed 5<?VVV'v%F)B;+Fv+NRS+SYZdd 4t;>TTT'v%)?6)IA#-#8#89Z[a9b#cj @:MPrrr'g$nv%(F2(F2(+?+G(w-48N-N	T^g-48N-N	T^g 1G;>OOO'1G;>OOO'#'.//'W$'00'k#( v%)?6)I>+J6+RVf+fmrg !5!?BS!SS+'+$v%)Cv)M.)H)PTd)dfkpG $33'[('44'v%);v)E=26:f ^j.C.CF.KKm[['v%v)=;.v6d \J,A,A$,GG+UU'v%)>C%=f%El 1J4I4I,4WWZmmm'v%F)B<7?e 2Z5J5J55QQThhh'v%F)BD%?%Gl "U*!WWg#!WWg!VVgv%6)A> 4V <g'%/f -6HH'!n$nv%):f)D:<VDc !$9J<Q<QRU<V$VYk$kk.#'.v%):f)D:7@PQc !$8:;P;PQT;U$UXi$ii.#'.v%):f)D:7@PQc !$8:;P;PQT;U$UXi$ii.#'.v%):f)D:7@RSc !$8:;P;PQT;U$UXi$ii.#'.66'^+'77'!# jv%&)@> * 5 56Z[a6b cg #&;j>S>ST[>\&\_q&qq"#*v%):f)D> * 5 56Z[a6b cg #&;j>S>ST[>\&\_q&qq"#*99'--'::'c jv%&)@:W[[HH##*v%)9V)C@7>>QQ##*v%)9V)C@7>>QQ##*v%)<)FF'J]J]^^##*v%)9V)C-
0E0Egmm0TTWhhh##*v%)?6)INRYRhRhii##*!n %of jv%)?6)I:&112TU[2\]c 6<?RRR&#*v%)?6)I:&112UV\2]^c :S@CZZZ&#* $::. F*. $;;.$(/ m"'v%)AV)K<(334QRX4YZ]``e  #?%#GJ_#__-&*#v%)AV)K<(334RSY4Z[^aae  #Ce#KNg#gg-&*#" $==. M1. $>>.$(/ 66#'#77# !m"'v%z(CF(Ko$&k(77:??1D%.+%/+#'Ck'QTk'kkm(77:DDI).,)/?3Q3QRS3T3^3^)_,#'VZf'ggm '+#"44#&#55#v%l=fEf5
8M8Mf8UUXkkkc  $*v%^!<VE\!]h.1F1Fx1PPSZZ]iiic  $*v%^!<VE\!]h.1F1Fx1PPSZZ]iiic  $*]*'S.'^+'v%F)B:&112G2OPSWWc .47GGG'v%)?C"9&"Ai%*Y%6l 6EH```'v%8FB5?3v=:fD9VC:fDBfLDNBfL9VCZEEfMM' m#( v%$.#v-#v-'+$	' 7 ?g","7"78Lt8S"TW]"]i!+!6!6w||d7JT7Q!RU[![h!+!6!6w}}t7Kd7RU\UaUadhUhkoUo7o!psy!yh  6)-?6-I#'B\'QQm6)->&-H#~'@;'NNm6)->&-H#~'@;'NNm#66']*'77'v%):f)D	' ;F Cg","7"78I8ID8PSW8W"X[a"ai!+!6!6w7G7G$7NQU7U!VY_!_h!+!6!6w7H7H47ORV7VY`YiYilpYpswYw7w!x  |B  "Bh 88'_y8<GG'^h6DD'^h6DD'99'v%);v)E>5f=d!99$-'#DD$6'#>>$0'#EE$7'$-' 1G;>QQQ'k#( v%'61'61':6Bd!+!6!6txx!@4!Gh!+!6!6t{{!Cd!Jh  6)-Bf-L!%7(%B_%TTk6)-Bf-L!%:X%EHZ%ZZk'+$v%)Bf)L+*I&*Q'x%/%:%:8%Dt%Kl
 !7,!FI\!\\+'+$v%)Bf)L+*I&*Q'x%/%:%:8%Dt%Kl
 !7,!FI\!\\+'+$#22'[('33'v%$.(F2'+?+G(w/6!|*h/6!|*h '6)-?6-I!6!ADV!VVg6)-Cv-M!6!ADV!VVg//'W$'00'+5+A+A&&+Q(i(!11'Y&'22'3=3R3RSY[a3b/l/$44'\)'55'k#( v%)>&)H;'223KFTh3ijmqqd !3d!:_!LL+;'223TU[  ^A  4B  C  FJ  Jd !AD!HKh!hh+'+$;'223TU[  ^A  4B  C  FJ  Jd !BT!ILj!jj+'+$#22'K'33'!n%*"v%)9V)C@?Gf171+%i !$>$JMd$dd.)-&v%)9V)CA!8!@6!Ig#+g#5j !$8:$EHY$YY.)-&v%):f)DB"CF"Kf"Th$,x$7k !$9K$GJ\$\\.)-&v%)Bf)LB"J6"RU["[h$,x$7k !$AK$ORl$ll.)-&v%)Cv)MJ*I&*QTZ*Z&,47G,G) !$BEX$X[v$vv.)-&v%'61'61-!Mf!Uh'/8A;3G'Hn'/8A;3G'Hn
  6)-Bf-L$(AN(RUk(kkn6)-Bf-L$(AN(RUk(kkn)-&%55'@"%
(=(=>UV\>](^"^i DyPP'^+'66'f#mf$(AV(K?!+!6!67MfVi7j!knt!th 4h>AVVV&"&-f$(AV(K9%001GP]1^_bhhb .3oEE&"&-f$(?6(I:&112HQ_2`adjjc /#58HHH&"&---'V#'..'"$!&f$(Bf(L?!+!6!67UV\^q7r!sv|!|h $'?'ILa'aa#%)"f$(@F(J:&112PQWYg2hilrrc $':S'@CS'SS#%)"!::'..';;')+&(-%f$(Jf(T?!+!6!67\]cex7y!z  ~D  "Dh +.F.PSh.hh*,0)f$(HF(R:&112WX^`n2opsyyc +.AC.GJZ.ZZ*,0)(BB'55'CC'i!&f$(AV(K?!+!6!67PQWYl7m!nqw!wh 7(BEZZZ)%)"f$(;v(E9%001J6S`1abekkb 1B6HH)%)"f$(?6(I:&112KFTb2cdgmmc 2S8;KKK)%)"!11'Y&'22'v%)<)F33':_`f:g7l$7%)>>).,)-,,0EE05-04- 1L@CTTT'9<OORkkk'44'v%)?6)It"DV"Li!;;g( 	F!!%DD'!%F%JJ'M'KFTU'Vf'- y!")-twx-x"x'y "%EE'	F !<<g v%);v)EfB6Je!44g$ =!G%/%:%:;STUTYTY;Z%[d "%;;'!%<quu%DD'!%;d%BEX%XX'oo5$)c$,$0F0M$Nc!%:S%@CU%UU'!%<<''=* !55g v%)=)G%z8@d!>>g!% G#/&B63&Oe/69M9M/Mn29E<S<S2S/"'"6"6$">38.3;u?S?SVZ?Z]a?a3b.%,uzz%9d+/%//+Aj "%EE'!%<s%BB'!%7.%H?%ZZ'!%:=N%NQc%cc'!%?.%PRi%ii'!^d%:[%HH'!%9J%FIZ%ZZ'!%FF';G> !??g Wqy()w&)|+){},~ (
()
 u$ $L # @",":":3"?i@ # <(66s;e< # <(66s;e< # ;'55c:d; # ;'55c:d; # A#-#;#;C#@jA # ( * 8 8 =g 'g($ # > * 8 8 =g> ! .(66s;G#7'#ADU#UUK)-&. # =)77<f= # ;'55c:d; # C%/%=%=c%BlC # <(66s;e< # D%/%=%=c%BlD # > * 8 8 =g>
'&f # :&44S9c: # :&44S9c: # :&44S9c: # :&44S9c:  # > * 8 8 =g> # > * 8 8 =g>\ # :&44S9c: # :&44S9c:$ # <(66s;e< # <(66s;e<H # z#'CjF^F^_bFc'cf}'}}m#'AJD\D\]`Da'ady'yymz # l5
8P8PQT8UUXkkkcl # ^.1I1I#1NNQ]]]c^ # ^.1I1I#1NNQ]]]c^ # :&44S9c: # C%/%=%=c%BlC< # '(66s;e"'i!&h!&h	'0 # '(66s;e"'i!&h!&h	'2 # > * 8 8 =g> # '(66s;e!&h!&h'" # +(66s;e%*l+ # +(66s;e%*l+( # '(66s;e!&h!&h'B # ;'55c:d; # ;'55c:d; # ;'55c:d;$ # @",":":3"?i@ # A#-#;#;C#@jA # B$.$<$<S$AkB # B$.$<$<S$AkB # J,6,D,DS,I)J # -(66s;e',n',n- # @",":":3"?i@ # ?!+!9!9#!>h? # 9%33C8b9 # :&44S9c: # ?!+!9!9#!>h? # :&44S9c:  # ?!+!9!9#!>h? # :&44S9c: # ?!+!9!9#!>h? # 9%33C8b9 # :&44S9c:0 0 2%*l,1)" %/%=%=c%Bl,6,D,DS,I)( "+ M%)loy  pH  pH  IL  pM  *M  MgM
 # t!9J<T<TUX<Y!Y\s!ssgt "+ G"%))/C"C"*)3)A)A#)F$G& # f!2Z5M5Mc5R!RUe!eegf& "+ 	/"%))/C"C"*$.$<$<S$Ac/2n25//2n%(d+.j	/* # z!<z?W?WX[?\!\_y!yygz  @
(3;;=84?
?)@sv  A_EBP	 A_-BP	 	A`
BP	 7A`6	BP	 %Aa"7BP	 Ab%BP	 Ab:'BP	 (Ac&/=BP	 -AdBP	 !Ae 7!BP	 Ae9$.BP	 Af%.BP	 Ag.BP	 Ag=.BP	 Ah)(BP	 5AiAjBP	 &Aj10BP	 "Aj720BP	 #Ak#30BP	 $Al4ABP	 :Al;0BP	 	Am''D;BP	 #AnBP	 An?=4BP	 2!Ao+BP	 1!Ap=BP	 BAqBP	 .)Ar
BP	 "1As
BP	 1At #BP	 3!At5BP	 0Au! B!BP	 "BAv8A2BP	 +BAv?;BP	 =A Aw1=)BP	 'AAx9ABP	 'Ay,BP	 'Ay;28BP	 +!Az)B4BP	 (A{)BP	 5(A|@BP	 @+(A|1A3BP	 BA}BBP	 B;A~	CBP	 C.A~5DBP	 D!A!D5BP	 EB@E('BP	 F"B@9F2ABP	 G4!BA)H'BP	 H=(BBI%BP	 J(BCJ,BP	 K(BC-K33BP	 L'(BDMBP	 M.(BEN3BP	 O
(BE1O2BP	 P(BFP93BP	 Q-(BG	RBP	 R4(BG5SBP	 S;(BH!T#4BP	 U-BIV,BP	 V2#BKWBJW2BKW?BP	 XBMX(*BLYA#BMZ5BP	 [BO[A6BN]ABO^$BP	 ^5BP	 _A__	A`_'A`_<BP	 `A``BP	 `
	A`3`A`.`(BP	 `.A`3`3BP	 `6	Aa`?AaaBP	 aAaaBP	 a"	Aba+Abb BP	 bAbbBP	 b	Ab7bAb2b,BP	 b2Ab7b7BP	 b:	Ac#cAccBP	 cAc#c#BP	 c&	Adc/AddBP	 dAddBP	 d	Ad=dAd8d2BP	 d8Ad=d=BP	 e 	Ae6e	"Ae1e+BP	 e1Ae6e6BP	 e9	Af"fAffBP	 fAf"f"BP	 f%	Agf.Ag	gBP	 g	AggBP	 g	Ag:gAg5g/BP	 g5Ag:g:BP	 g=	Ah&hAh!hBP	 h!Ah&h&BP	 h)	Aih2AiiBP	 iAiiBP	 i	Ai>iAi9i3BP	 i9Ai>i>BP	 jAjjBP	 j	Aj4jAj/j)BP	 j/Aj4j4BP	 j7	Ak k AkkBP	 kAk k BP	 k#	Alk,AllBP	 lAllBP	 l	Al8lAl3l-BP	 l3Al8l8BP	 l;	Am$mAmmBP	 mAm$m$BP	 m'	Anm0AnnBP	 nAnnBP	 n	An<nAn7n1BP	 n7An<n<BP	 n?	Ao(oAo#oBP	 o#Ao(o(BP	 o+	Apo4App	BP	 pAppBP	 p	Aq p Ap;p5BP	 p;Aq q BP	 q	Arq<ArrBP	 rArrBP	 r	AsrAsr=BP	 sAssBP	 s	As=sAs8s2BP	 s8As=s=BP	 t 	At2t	At-t'BP	 t-At2t2BP	 t5	Aut>AuuBP	 uAuuBP	 u!	Av
u*Avu?BP	 vAv
v
BP	 v	Av<vAv7v1BP	 v7Av<v<BP	 v?	Aw.wAw)w#BP	 w)Aw.w.BP	 w1	Axw:AxxBP	 xAxxBP	 x	Ay
x&Ayx?BP	 yAy
y
BP	 y	Ay8yAy3y-BP	 y3Ay8y8BP	 y;	Az&zAz!zBP	 z!Az&z&BP	 z)	A{z2A{{BP	 {A{{BP	 {	A|{"A{={7BP	 {=A||BP	 |	A|.|A|)|#BP	 |)A|.|.BP	 |1	A}|:A}}BP	 }A}}BP	 }	A~}&A~};BP	 ~A~~BP	 ~		A~2~A~-~'BP	 ~-A~2~2BP	 ~5	A~>ABP	 ABP	 !	B@
*B@?BP	 @B@
@
BP	 @	B@6@B@1@+BP	 @1B@6@6BP	 @9	BA&ABA!ABP	 A!BA&A&BP	 A)	BBA2BBBBP	 BBBBBP	 B	BB>BBB9B3BP	 B9BB>B>BP	 C	BC*C
BC%CBP	 C%BC*C*BP	 C-	BDC6BDDBP	 DBDDBP	 D	BED"BD=D7BP	 D=BEEBP	 E	BE.EBE)E#BP	 E)BE.E.BP	 E1	BFE:BFFBP	 FBFFBP	 F	BGF&BGF;BP	 GBGGBP	 G		BG2GBG-G'BP	 G-BG2G2BP	 G5	BHG>BHHBP	 HBHHBP	 H!	BI
H*BIH?BP	 IBI
I
BP	 IBJIBP	 IBJI&*BJJBP	 JBJJBP	 J	BKJ'BKKBKKBKKBKK	BLKBK=K7BP	 K=BLLBP	 L	BM	LBML#BML)BML>BMMBM	M	BMM	BM>MBM9M3BP	 M9BM>M>BP	 N	BON
BO
NBON%BO
OBOO
BOOBOO	BPO BPO;BP	 PBPPBP	 P		BP9PBP4P4BP9c                 ?   |t         g}nt        |t              re|dk(  s|dk(  rt        j                  j
                  S |dk(  r&t        dd      5 }|j                         cddd       S t        j                  |      }nt        |      }i }g }	 t         |v st        |v r4t        j                  t        j                  j                               |d<   t         |v st        |v r t        j                  t!                     |d<   t#               }t         |v st$        |v r||d	<   t'        d
|      D ]U  }i }| j(                  |   }t+        |      }	t         |v st,        |v r"t        j                  |	j.                        |d<   t         |v st0        |v r9t        j                  t3        |            |d<   	 t4        t7        |         }
|
|d<   t         |v st<        |v r	 t?        |      d
k7  rdnd}||d<   t         |v st@        |v r	 tC        |      d
k7  rdnd}||d<   t         |v stD        |v r	 tG        |      d
k7  rdnd}||d<   i }d}t         |v stH        |v stJ        |v r1	 tM        |      \  }}|tN        k(  rdnd|d<   |tN        k(  rdnd|d<   d}|r||d<   t         |v stP        |v r	 tS        |      d
k7  rdnd}||d<   t         |v stT        |v r$	 t        j                  tW        |            }||d<   i }d}t         |v stX        |v r	 t[        |      t\        k(  rdnd}||d<   d}t         |v st^        |v r	 ta        |      t\        k(  rdnd}||d<   d}|r||d<   t         |v stb        |v r$	 te        |      }t        j                  |      |d<   t         |v stf        |v r$	 ti        |      }t        j                  |      |d <   t         |v stj        |v r$	 tm        |      }t        j                  |      |d!<   t         |v stn        |v r$	 tq        |      }t        j                  |      |d"<   t         |v stn        |v r$	 ts        |      }|d#k(  rd#|d$<   n|rd%|d$<   nd&|d$<   t         |v stt        |v r	 tw        |      }	 d'|z  }||d(<   i }d}t         |v stx        |v r&	 t{        |      }t        j                  |      |d)<   d}t         |v st|        |v r+	 t        |t              }t        j                  |      |d*<   d}t         |v st        |v r+	 t        |t              } t        j                  |       |d+<   d}t         |v st        |v r+	 t        |t              }!t        j                  |!      |d,<   d}|r||d-<   i }"d}#t         |v st        |v r9	 t        j                  t        |            }t        j                  |      |"d.<   d}#t         |v st        |v r9	 t        j                  t        |            }t        j                  |      |"d/<   d}#|#r|"|d0<   i }$d}%t         |v st        |v rd1|	j                  z  |$d2<   d}%t         |v st        |v rd1|	j                  z  |$d3<   d}%t         |v st        |v rd4|	j                  z  |$d5<   d}%t         |v st        |v rd6|	j                  z  |$d7<   d}%t         |v st,        |v r$t        j                  |	j.                        |$d8<   d}%t         |v st        |v rd6|	j                  z  |$d9<   d}%i }&d}'i }(d})t         |v st        |v r&	 t        j                  t        |            }*|*|(d:<   d})t         |v st        |v r&	 t        j                  t        |            }*|*|(d;<   d})|)r|(|&d<<   d}'i }+d},t         |v st        |v r)	 t        j                  t        |            d=z   }-|-|+d><   d},t         |v st        |v r)	 t        j                  t        |            d=z   }-|-|+d?<   d},|,r|+|&d@<   d}'|'r|&|$dA<   d}%i }.d}/t         |v r	 t        |      }0dB}1|0j                  d
   j                  d
k(  r|1dCz  }1n|1dDz  }1|1|.dE<   |0j                  d
   j                  d
k(  rd#}2nd6|0j                  d
   j                  z  }2t        j                  |2      |.dF<   d}/|/r|.|$dG<   d}%t         |v r&	 t        |      }3t        j                  |3      |$dH<   d}%t         |v r	 t        |t              }4|4|$dI<   dJ|$dK<   d}%t         |v r	 t        |t              }5|5|$dL<   dJ|$dM<   d}%|%r|$|dN<   t         |v st        |v r	 t        |      }6|6|dO<   dP|dQ<   t         |v st        |v r	 t        |      }7dR|7z  }8|8|dS<   t         |v sPt        |v sHt        |v s@t        |v s8t        |v s0t        |v s(t        |v s t        |v st        |v st        |v st        |v rt        j                  |      |dT<   i }9d}:t         |v st        |v st        |v st        |v rd}:	 t        |      };|;j                  dUz  dUz  }<|;j                  dUz  dUz  }=|;j                  dUz  dUz  |;j                  dUz  dUz  z
  }>t         |v st        |v r|<|9dV<   t         |v st        |v r|=|9dW<   t         |v st        |v r|>|9dX<   |:r
dY|9dZ<   |9|d[<   t         |v st        |v rp	 t        |      };|;j                  dUz  dUz  }<|;j                  dUz  dUz  }=|;j                  dUz  dUz  |;j                  dUz  dUz  z
  }>i }@|<|@dV<   |=|@dW<   |>|@dX<   dY|@dZ<   |@|d\<   t         |v st        |v rF	 t        |      }|t        k(  rd]}An)|t         k(  rd^}An|t        k(  rd_}An|t        k(  rd`}Anda}AA|db<   i }Bd}Ct         |v st        |v s	t        |v rU	 t        |      }D|Dj                  }E|Dj                  }Ft         |v s	t        |v rEBdc<   t         |v s	t        |v rFBdd<   d}Ct         |v s	t        |v r	 t        |      \  }G}H|G}IIBde<   d}Ct         |v s	t        |v r	 t        |      \  }G}H|G}JJBdf<   d}CCr
dPBdZ<   |B|dg<   t         |v st        |v s	t        |v rU	 t        |      \  }}|d
k7  rdnd}K|d
k7  rdnd}Li }Mt         |v s	t        |v rKMdh<   t         |v s	t        |v rLMdi<   M|dj<   t        j                  ||      \  }N}O|OrN|dk<   t        j!                  ||      \  }P}Q|QrP|dl<   i }Rd}St         |v s	t"        |v rN	 t%        |t&              }TTRdm<   d}S	 t)        |t*              }TTRdn<   d}S	 t)        |t,              }TTRdo<   d}SSr
dpRdZ<   |R|dq<   i }Ud}Vt         |v s	t.        |v r	 t1        |      }W|Wd
k7  rdrnd#}XXUds<   d}Vt         |v s	t2        |v r	 t5        |      dtz  }Y|Y}ZZUdu<   d}Vt         |v s	t6        |v r	 t9        |      dtz  }[|[}\\Udv<   d}Vt         |v s	t:        |v r	 t=        |      dtz  }[|[}\\Udw<   d}Vt         |v s	t>        |v r	 tA        |      dtz  }]|]}^^Udx<   d}Vt         |v stB        |v s	tD        |v rK	 tG        |      }[|[d
   dtz  }_|[dy   dtz  }`t         |v s	tB        |v r_Udz<   t         |v s	tD        |v r`Ud{<   d}VVr1	 d|t        j                  t        |            z   }7|7Ud}<   d~|UdZ<   |U|d<   i }ad}bt         |v s	tH        |v r	 tK        |tL              }ccad<   d}bt         |v s	tH        |v r	 tK        |tN              }ddad<   d}bt         |v s	tP        |v r	 tK        |tR              }eead<   d}bbr
dadZ<   |a|d<   i }fd}gt         |v s	tT        |v r	 tW        |tL              }ccfd<   d}gt         |v s	tX        |v r	 tW        |tR              }eefd<   d}ggr
dfdZ<   |f|d<   i }hd}it         |v s	tZ        |v r	 t]        |tL              }cchd<   d}it         |v s	t^        |v r	 t]        |tR              }eehd<   d}iir
dhdZ<   |h|d<   i }jd}kt         |v s	t`        |v r	 tc        |tL              }ccjd<   d}kt         |v s	td        |v r	 tc        |tN              }ddjd<   d}kt         |v s	tf        |v r	 tc        |tR              }eejd<   d}kkr
djdZ<   |j|d<   t         |v s	th        |v r?i }l	 tk        |      \  }m}n|mtl        k(  rd}ond}ontl        k(  rd}pnd}pold<   p|ld<   |l|d<   t         |v s	tp        |v rzg }q	 ts        |      }r|rD ]O  }si }t|s|td<   d|tdZ<   g }u	 tu        |s      }a|aD ]  }vujw                  |v        	 utd<   qjw                  |t       Q 	 ty        q      d
kD  rqnd|d<   t         |v s	tz        |v rg }w	 t}        |      }x|xD ]  }y	 t        j                  t        yj                              }zi }{yj                  |{d<   z|{d<   |yj                  dk(  rd
}ent        yj                  dUz  dUz        }ee{d<   dY|{dZ<   wjw                  |{        	 ty        w      d
kD  rwnd|d<   t         |v s	t        |v r	 t        |      }|g }}||D ]  }~	 t        |~      }d|j                  z  }d|j                  z  }|j                  dk(  rd#}ndj                  dUz  dUz  z  }dj                  z  }d|j                  z  }i }d~z  |d<   |dc<   |dd<   |d<   |d<   |d<   }jw                  |        ty        }      d
kD  r}nd|d<   ty        |      d
kD  sD|jw                  |       X ty        |      d
kD  r||d<   |S # 1 sw Y   xY w# t8        $ r }t        j;                  |      }
Y d}~
d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r"}t        j;                  |      }|}Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w#  |}Y xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~d}~ww xY w# t8        $ r }t        j;                  |      } Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }!Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }Y d}~vd}~ww xY w# t8        $ r }t        j;                  |      }Y d}~Yd}~ww xY w# t8        $ r }t        j;                  |      }*Y d}~Ad}~ww xY w# t8        $ r }t        j;                  |      }*Y d}~7d}~ww xY w# t8        $ r }t        j;                  |      }-Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }-Y d}~d}~ww xY w# t8        $ r;}t        j;                  |      |.dE<   t        j;                  |      |.dF<   Y d}~d}~ww xY w# t8        $ r#}t        j;                  |      |$dH<   Y d}~d}~ww xY w# t8        $ r#}t        j;                  |      |$dI<   Y d}~d}~ww xY w# t8        $ r#}t        j;                  |      |$dL<   Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }6Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }8Y d}~d}~ww xY w# t8        $ r&}t        j;                  |      }?|?}<|?}=|?}>Y d}~d}~ww xY w# t8        $ r&}t        j;                  |      }?|?}<|?}=|?}>Y d}~}d}~ww xY w# t8        $ r }t        j;                  |      }AY d}~=d}~ww xY w# t8        $ r$}t        j;                  |      }?|?}E|?}FY d}~#d}~ww xY w# t8        $ r"}t        j;                  |      }?|?}IY d}~ d}~ww xY w# t8        $ r"}t        j;                  |      }?|?}JY d}~d}~ww xY w# t8        $ r$}t        j;                  |      }?|?}K|?}LY d}~d}~ww xY w# t8        $ r }t        j;                  |      }TY d}~td}~ww xY w# t8        $ r }t        j;                  |      }TY d}~d}~ww xY w# t8        $ r }t        j;                  |      }TY d}~d}~ww xY w# t8        $ r }t        j;                  |      }XY d}~d}~ww xY w# t8        $ r }t        j;                  |      }ZY d}~d}~ww xY w# t8        $ r }t        j;                  |      }\Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }\Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }^Y d}~d}~ww xY w# t8        $ r$}t        j;                  |      }?|?}_|?}`Y d}~d}~ww xY w# t8        $ r }t        j;                  |      }7Y d}~Zd}~ww xY w# t8        $ r }t        j;                  |      }cY d}~Od}~ww xY w# t8        $ r }t        j;                  |      }dY d}~Pd}~ww xY w# t8        $ r }t        j;                  |      }eY d}~Qd}~ww xY w# t8        $ r }t        j;                  |      }cY d}~Bd}~ww xY w# t8        $ r }t        j;                  |      }eY d}~Cd}~ww xY w# t8        $ r }t        j;                  |      }cY d}~4d}~ww xY w# t8        $ r }t        j;                  |      }eY d}~5d}~ww xY w# t8        $ r }t        j;                  |      }cY d}~&d}~ww xY w# t8        $ r }t        j;                  |      }dY d}~'d}~ww xY w# t8        $ r }t        j;                  |      }eY d}~(d}~ww xY w# tn        $ r d#}od#}pY t8        $ r5}t        j;                  |      }ot        j;                  |      }pY d}~%d}~ww xY w# t8        $ r }t        j;                  |      }uY d}~d}~ww xY w# t8        $ r#}t        j;                  |      qd<   Y d}~d}~ww xY w# t8        $ r;}|j                  t        k(  rY d}~t        j;                  |      }zY d}~d}~ww xY w# t8        $ r }t        j;                  |      }wY d}~d}~ww xY w# t8        $ rE}|j                  t        k(  rY d}~t        j;                  |      }|}|}|}|}|}Y d}~Bd}~ww xY w# t8        $ r#}t        j;                  |      |d<   Y d}~$d}~ww xY w# t8        $ r,}t        d|j                         z   dz          Y d}~|S d}~ww xY w)a  
      Provides a Python interface to GPU management and monitoring functions.

      This is a wrapper around the NVML library.
      For information about the NVML library, see the NVML developer page
      http://developer.nvidia.com/nvidia-management-library-nvml

      Examples:
      ---------------------------------------------------------------------------
      For all elements as a list of dictionaries.  Similiar to nvisia-smi -q -x

      $ DeviceQuery()

      ---------------------------------------------------------------------------
      For a list of filtered dictionary elements by string name.
      Similiar ot nvidia-smi --query-gpu=pci.bus_id,memory.total,memory.free
      See help_query_gpu.txt or DeviceQuery("--help_query_gpu") for available filter elements

      $ DeviceQuery("pci.bus_id,memory.total,memory.free")

      ---------------------------------------------------------------------------
      For a list of filtered dictionary elements by enumeration value.
      See help_query_gpu.txt or DeviceQuery("--help-query-gpu") for available filter elements

      $ DeviceQuery([NVSMI_PCI_BUS_ID, NVSMI_MEMORY_TOTAL, NVSMI_MEMORY_FREE])

      Nr  r  r  r  r  r~   r   r   r   idproduct_nameproduct_brandr  r  r   r   r   F
current_mm
pending_mmTmig_modeaccounting_modeaccounting_mode_buffer_sizer  r  
current_dm
pending_dmdriver_modelr   r   r  r   r  multigpu_boardrl  rk  r  board_idimg_version
oem_object
ecc_object
pwr_objectinforom_versioncurrent_gompending_gomgpu_operation_modez%02Xpci_bus
pci_devicez%04X
pci_domainr  pci_device_id
pci_bus_idpci_sub_system_idmax_link_gencurrent_link_genpcie_genr  max_link_widthcurrent_link_widthlink_widthspci_gpu_link_infor   r  r  bridge_chip_typebridge_chip_fwpci_bridge_chipreplay_countertx_utilzKB/stx_util_unitrx_utilrx_util_unitr  	fan_speed%fan_speed_unitr  performance_stateclocks_throttler  r  r7  freeMiBunitfb_memory_usagebar1_memory_usager  r  r  r  r   r   r  memory_utilr  r  r  current_eccpending_eccecc_mode
ecc_errorsretired_pagesgpu_tempgpu_temp_max_thresholdgpu_temp_slow_thresholdCr  r  power_managementr  
power_drawpower_limitdefault_power_limitenforced_power_limitr   min_power_limitmax_power_limitr  power_stateWr  graphics_clocksm_clock	mem_clockMHzr   applications_clocksdefault_applications_clocks
max_clocksr  r  
auto_boostauto_boost_defaultclock_policyr  supported_graphics_clockr_  supported_clocksr|  process_nameused_memory	processesr  r  r  r  max_memory_usager   r  accounted_processesrE  r  r  )r  r  rb  r   r   r  r  r  r  r  r  r   r  r  r  r  r  r   r  r   r   r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  %_nvidia_smi__GetClocksThrottleReasonsr3  r4  r5  r6  r  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  _nvidia_smi__GetEcc_nvidia_smi__GetRetiredPagesrP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  rr  ru  rv  rw  rx  r   rH  ry  rz  r{  r|  r  r}  r~  intr  r  r  r  r  r  r   r  printr  )r   r   r  nvidia_smi_results
dictResultr   r   
gpuResultsr   r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  rJ  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rY  bar1MemoryUsager  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rt  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  clockPolicyr  r  r  r  supportedClocksr  r  supportMemClocksupportedGraphicsClocksr  rB  r  r   r   processInfor  accountProcessr|  r  r  r  r  r   r  accountProcessInfos                                                                                                                                         r   r   znvidia_smi.DeviceQuery  s"   < .;&vs# fn++333,,,c2 $c$ $ "99&Af<&jC<6!_%>.8.C.CHMMDWDWDY.Z -6!%9V%C3=3H3HIcIe3f !12*,+6![F%:*5 )K( s0aj~~a(f,V4gv%)9V)C#-#8#8#G*T"v%v)=-7-B-BCTU[C\-]*^,@"34Fv4N"Oi /8*_- v%);v)E<-Ef-MQR-RyYce .3*^,v%)=)G<-G-OST-Ty[ee 05*-.v%)?6)I;+G+OST+TY[ed 26*/0g$nv%(F2(F2(+?+G(w 8?BX7X)^h','7>BX7X)^h','#'.+2*Z( v%F)B;+Fv+NRS+SYZdd 15*./v%)?6)IA#-#8#89Z[a9b#cj =G*:;k#( v%)?6)I>+J6+RVf+fmrg -4+l+'+$v%)Cv)M>+J6+RVf+fmrg /6+l+'+$#/:*^,v%);v)E=26:f *4)>)>v)F*X&v%v)=;.v6d (2'<'<T'B*V$v%)>C%=f%El 0:/D/D\/R*^,v%F)B<7?e 1;0E0Ee0L*_-v%F)BF'A&'I #e+7<
#34$7<
#347;
#34v%6)A> 4V <g'%/f ,2*Z(!n$nv%):f)D:<VDc 3=2G2G2L./#'.v%):f)D:7@PQc 2<1F1Fs1K..#'.v%):f)D:7@PQc 2<1F1Fs1K..#'.v%):f)D:7@RSc 2<1F1Fs1K..#'.2@*./!# jv%&)@> * 5 56Z[a6b cg 5?4I4I'4R"=1#*v%):f)D> * 5 56Z[a6b cg 5?4I4I'4R"=1#*5E*12c jv%&)@#)GKK#7#i.#*v%)9V)C&,w~~&=#l##*v%)9V)C&,w~~&=#l##*v%)<)F)/73F3F)G#o&#*v%)9V)C&0&;&;GMM&J#l##*v%)?6)I-3w7M7M-N#)*#*!n %of jv%)?6)I:&112TU[2\]c ,/&(#*v%)?6)I:&112UV\2]^c 03&+,#*/5.,$(/ m"'v%)AV)K<(334QRX4YZ]``e 5:- 01&*#v%)AV)K<(334RSY4Z[^aae 9>- 45&*#"2?./$(/ -;#)*#* m"'v%V(CF(Ko$&k(77:??1D%.+%/+:Em$67(77:DDI).,)/?3Q3QRS3T3^3^)_,8B8M8Ml8[m$45
 '+#"+8#'(#*v%L=fEf.8.C.CF.Kc*+  $*v%E!<VE\!]h'/c)n,2c.)  $*v%E!<VE\!]h'/c)n,2c.)  $*%(*U#v%F)B:1&9c ,/*[)03*-.v%)?C"9&"Ai%*Y%6l 4@*01 v%8FB5?3v=:fD9VC:fDBfLDNBfL9VC1;1V1VW]1^*./ m#( v%$.#v-#v-'+$	' 7 ?g")--$"6"=i!(!4t!;h!(!5!<w||d?RUY?Y!Yh  6)-?6-I-6mG,6)->&-H,4mF+6)->&-H,4mF+#(--'2?*./v%):f)D	' ;F Cg")"3"3d":T"Ai!(!1!1D!84!?h!(!2!2T!9D!@7CSCSVZCZ]aCa!ah %'/+4/'**2/&)*2/&)*//&)4C*01v%);v)E>5f=d!99$-'#DD$6'#>>$0'#EE$7'$-' 07*^,k#( v%'61'61':6Bd!%h!%h  6)-Bf-L08k*-6)-Bf-L3;k-0'+$v%)Bf)L+*I&*Q'x%-l
 1=+n-'+$v%)Bf)L+*I&*Q'x%-l
 1=+n-'+$#(++f%.9*]+v%$.(F2'+?+G(w/6!|*h/6!|*h '6)-?6-I/7gm,6)-Cv-M/7gm,+2*Z( .8-@-@-P(i(!-6*\*2<2N2NvW]2^/l/$0<*_-k#( v%)>&)H;5f>RSd -1+j)'+$;>vGjkd ;?+67'+$;>vGjkd <@+78'+$#(++f%.9*]+!n%*"v%)9V)C@?Gf171+%i 8A.!34)-&v%)9V)CA 7 ?& Hg#*j 2<..)-&v%):f)DB"CF"Kf"Th$,k 3>./)-&v%)Bf)LB"J6"RU["[h$,k ;F.!67)-&v%)Cv)MJ*I&*QTZ*Z&,<) <O.!78)-&v%'61'61-!Mf!Uh'/{V';n'/{V';n  6)-Bf-L:Hn%676)-Bf-L:Hn%67)-&%@"%
(=(=>UV\>](^"^i 3<./+..(1?*-.f#mf$(AV(K?!7@S!Th .6&)*"&-f$(AV(K91&-Hb (*&$"&-f$(?6(I:26>Jc ),&%"&-#(&.)/*X&"$!&f$(Bf(L?!?H[!\h 9A#$45%)"f$(@F(J::6>Rc 47#K0%)"!.3#F+6G*23)+&(-%f$(Jf(T?!FvOb!ch @H*+;<,0)f$(HF(R:A&.Yc ;>*;7,0)(5:*62>V*:;i!&f$(AV(K?!:6CV!Wh 19),-%)"f$(;v(E94V]Kb +-)J'%)"f$(?6(I:5fnMc ,/)K(%)"!&+)F#-6*\*v%)<)F "+J:_`f:g7l$7%)>>).,)-,,0EE05-04- /;+l+6I+23/:*^,v%)?6)I$&/O"DV"Li( D!,./78/)449/&1461V'KFTU'Vf'- D!"9"@"@"CD
 I`/*DE)00/CD* GJ/FZ]^F^?dh*/0v%);v)E )@B6Je  % :!G%/%:%:;STUTYTY;Z%[d )++/0uu+e,8<+n5oo5$%c$'$(>(E$Fc7:+m405+f-#**K9':2 :=Y!9KIQU*[)v%)=)G(X8@d')n!% F#/&B63&Oe/69M9M/Mn29E<S<S2S/"'"6"6$">38.3;u?S?SVZ?Z]a?a3b.%,uzz%9d+/%//+Aj 02,6:Sj,U3;I,Z8>O,];CQ,-?@7;,V4=G,\:(//1CE=F@ MPP^L_bcLc.imj!67 j/A%##J/gs0j *o!(2 '
  ]$ $B # @",":":3"?i@ # <(66s;e< # <(66s;e< # ;'55c:d; # ( * 8 8 =g 'g( # ;'55c:d; # A#-#;#;C#@jA # > * 8 8 =g> # > * 8 8 =g> # =)77<f= # ;'55c:d; # C%/%=%=c%BlC # <(66s;e< $ F'1'?'?'DF # > * 8 8 =g>
'&f # :&44S9c: # :&44S9c: # :&44S9c: # :&44S9c: # > * 8 8 =g> # > * 8 8 =g>X # :&44S9c: # :&44S9c:  # <(66s;e< # <(66s;e<@ # V:D:R:RSV:Wm$678B8P8PQT8Um$45V # L.8.F.Fs.Kc*+L # E'1'?'?'Dc)nE # E'1'?'?'Dc)nE # :&44S9c: # C%/%=%=c%BlC> # '(66s;e"'i!&h!&h	'2 # '(66s;e"'i!&h!&h	'4 # > * 8 8 =g> # '(66s;e!&h!&h'" # +(66s;e%*l+ # +(66s;e%*l+$ # '(66s;e!&h!&h': # ;'55c:d; # ;'55c:d; # ;'55c:d;  # @",":":3"?i@ # A#-#;#;C#@jA # B$.$<$<S$AkB # B$.$<$<S$AkB # J,6,D,DS,I)J # -(66s;e',n',n- # @",":":3"?i@ # ?!+!9!9#!>h? # 9%33C8b9 # :&44S9c: # ?!+!9!9#!>h? # :&44S9c: # ?!+!9!9#!>h? # :&44S9c: # ?!+!9!9#!>h? # 9%33C8b9 # :&44S9c:. 0 2%*l,1)" J%/%=%=c%Bl,6,D,DS,I)J. "+ V8B8P8PQT8U5V # O1;1I1I#1Nog.O "+ G"%))/C"C"*)3)A)A#)F$G& # @",":":3"?i@, "+ 	/"%))/C"C"*$.$<$<S$Ac/2n25//2n%(d+.j	/. # X:D:R:RSV:Wj!67X  <
"S[[]2T9
;
;<sV  AND"A~ 3AN+A~ AO-A~ APA~ +AP/=!A~ AQ-9A~ 'AR	9A~ AR5-A~ AS!A~ 5ATA~ *AT95(A~ AU%)(A~ AV(A~ AV=(A~ :AW)(A~ .AX:AY?A~ AY$*A~ AY7*A~ 
AZ#*A~ A[5A~ A[;)*A~ A\'2D%A~ A]6A~ A]?,$A~ !A^+2A~ 
!A_+%A~ BA`A~ 1#Aa

A~ Aa99
A~ Ab(A~ 8AcA~ Ad.BA~ 
AAd/AA~ :AAe!+A~ :A Af:#A~ &Af??A~ Ag/A~ .Ah?-A~ -!AiB
A~ Ai;+A~ 3Aj'A~ Ak(A~ Ak?A~ 6Al+A~  Am1A~ 
AnA~ 4An/!A~ 'Ao0A~ 4!Ap$A~ :Ap7A~ %Aq#7A~ Ar"(A~ Ar;A~ 6As'(A~ 1At@A~ @At?@.(A~ AAu+A)A~ BAvBA~ B-AwB?&A~ C&-Aw/D"A~ D6Ay,E&Ay E<Ay,F*A~ GA{"G*AzG=A%A{"I"(A~ JA}JA6A|LAA}M"A~ M3)A~ NAN(N+	AON4AOO	A~ OAOOA~ O	AP O AO;O5A~ O;AP P A~ P	AP,PAP'P!A~ P'AP,P,A~ P/	AQP8AQQA~ QAQQA~ Q	ARQ$ARQ;A~ RARRA~ R		AR2RAR-R'A~ R-AR2R2A~ R5	ASR>ASSA~ SASSA~ S!	AT
S*ATS?A~ TAT
T
A~ T	AT6TAT1T+A~ T1AT6T6A~ T9	AU"UAUUA~ UAU"U"A~ U%	AVU.AV	VA~ V	AVVA~ V	AV:VAV5V/A~ V5AV:V:A~ V=	AW&WAW!WA~ W!AW&W&A~ W)	AXW2AXXA~ XAXXA~ X	AX>XAX9X3A~ X9AX>X>A~ YAYYA~ Y	AY4YAY/Y)A~ Y/AY4Y4A~ Y7	AZ Z AZZA~ ZAZ Z A~ Z#	A[Z,A[[A~ [A[[A~ [	A[8[A[3[-A~ [3A[8[8A~ [;	A\$\A\\A~ \A\$\$A~ \'	A]\0A]]A~ ]A]]A~ ]	A]<]A]7]1A~ ]7A]<]<A~ ]?	A^(^A^#^A~ ^#A^(^(A~ ^+	A_^4A__	A~ _A__A~ _	A` _ A_;_5A~ _;A` ` A~ `	Aa`0Aa`<A~ aAaaA~ a
	Aa6aAa1a+A~ a1Aa6a6A~ a9	Ab%bAb bA~ b Ab%b%A~ b(	Acb1Acc	A~ cAccA~ c	Ad c Ac;c5A~ c;Ad d A~ d	Ad,dAd'd!A~ d'Ad,d,A~ d/	Aed8AeeA~ eAeeA~ e!	Afe*AffA~ fAffA~ f	Af<fAf7f1A~ f7Af<f<A~ f?	Ag,gAg'g!A~ g'Ag,g,A~ g/	Ahg8AhhA~ hAhhA~ h	Aih&Aih=A~ iAiiA~ i	Ai8iAi3i-A~ i3Ai8i8A~ i;	Aj$jAjjA~ jAj$j$A~ j'	Akj0AkkA~ kAkkA~ k	Ak<kAk7k1A~ k7Ak<k<A~ k?	Al(lAl#lA~ l#Al(l(A~ l+	Aml4Amm	A~ mAmmA~ m	An m Am;m5A~ m;An n A~ n	An,nAn'n!A~ n'An,n,A~ n/	Aon8AooA~ oAooA~ o	Apo$Apo=A~ pAppA~ p	Ap4pAp/p)A~ p/Ap4p4A~ p7	Aq q AqqA~ qAq q A~ q#	Arq,ArrA~ rArrA~ r	Ar8rAr3r-A~ r3Ar8r8A~ r;	As$sAssA~ sAs$s$A~ s'	Ats0AttA~ tAttA~ t	At<tAt7t1A~ t7At<t<A~ t?	Au(uAu#uA~ u#Au(u(A~ u+	Avu4Avv	A~ vAvvA~ v	Aw v Av;v5A~ v;Aw w A~ w	Aw,wAw'w!A~ w'Aw,w,A~ w/Ax=w=A~ x Ax=x*Ax8x2A~ x8Ax=x=A~ y 	Ay)y	Ay$yAy,y$Ay)y)Ay,y,	Azy5AzzA~ zAzzA~ z	A{z$A{z9A{"z?A{{A{"{A{{A{"{"	A|{+A|| A~ |A||A~ |	A}|A}|,A}|2A}}A}}A}}A}}	A~}(A~~ A~ ~A~~A~ ~	A~!A~>~>Ac           
         d}	 |j                         D ]  \  }}t        |t        j                        rMt	        |j                               dkD  r#|||dz  }|| j                  |d|z         z  }_|||dddz  }mt        |      t        u rkt        |d   t        j                        rNt        dt	        |            D ]5  }|d|||d	z   t	        |      fz  z  }|| j                  ||   d|z         z  }7 |||dt        |      dz  } 	 |S # t        $ r}|d
t        |      z   z  }Y d }~|S d }~ww xY w)Nr   r   z:
  : Noner  %s%s: [%d of %d]
r   z	
[Error] )itemsr  collectionsMappingrH  r   _nvidia_smi__to_str_dictionaryr  r  r   rb  r   )r   r  indent
strResultskeyr  r   es           r   __to_str_dictionaryznvidia_smi.__to_str_dictionaryt  sK   j. Dgc#C!4!45&* $<<j D$<$<S$v+$NNj F3v$FFjI%Js1v{?R?R,S 3s8, Qa %9F3!CPSH;U$UUj D$<$<SVDK$PPjQ fS#c(CC
D"   .
s1v-
-*.s   DD 	D>"D99D>c           
      (   d}d}|j                         D ]z  \  }}t        |      t        u rNt        dt	        |            D ]5  }|d|||dz   t	        |      fz  z  }|| j                  ||   d|z         z  }7 e|||dt        |      dz  }| |S )Nr   rV  r   rY  r   rW  r  )rZ  r  r  r   rH  r]  rb  )r   r   r_  r^  r`  r  r   s          r   __to_strznvidia_smi.__to_str  s    jf]]_ B'#c#Y$Qs3x( M!!5sAaCC7Q QQ* 8 8QV LL*M F3CAAjB r   c                 J    t        |      t        u r|S | j                  |      S r   )r  rb  _nvidia_smi__to_str)r   r   s     r   formatznvidia_smi.format  s"    	g#	.]]7##r   r   r   )"r   r   r   r   r   r   r   r   r   r   r   r   r  r'  r0  r<  rP  rN  rF  rp  r{  rO  rG  r  r2  rE  r   r   classmethodr  r   r]  rf  rg  r   r   r   r   r   w  s   *),$ ,$\ # # K K?     E EN G GR 2 2h . .` 37 37j /@ /@b 6 6. 8 84 R R8 [ [4    : V V<     } }~ q  q f,$r   r   __main__c                  t   d} d }t        dt        t        j                              D ];  }t        j                  |   }|j	                         dk(  rd} ,|j	                         }= t
        j                         }| r|j                  |      }n|j                  |      }t        |j                  |             y )NFr   xmlT)r   rH  sysargvlowerr   r   r  r   rI  rg  )as_xmlquery_gpu_argsr   vr   r   s         r   mainrr    s    qSXX' 	+AA	U"!"	+ &&(**>:G''7Gell7#$r   )r  pynvml.nvmlr  r[  r   	threadingr   r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r&  r3  r5  r4  r<  r8  rB  rC  rG  rI   NVSMI_ENCODER_STATS_SESSIONCOUNTNVSMI_ENCODER_STATS_AVG_EPSNVSMI_ENCODER_STATS_AVG_LATENCYrK  rL  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r&  r#  r$  r%  r3  r4  r5  r6  r7  r;  r8  r:  r9  r>  r?  r@  rA  rB  rF  rC  rE  rD  rn  ro  rq  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  rP  NVSMI_TEMPERATURE_MEMORYrV  rX  rZ  r^  r\  r`  ra  rc  NVSMI_CLOCKS_SM_CURrg  NVSMI_CLOCKS_VIDEO_CURri  rk  rl  rn  ro  rq  rr  ry  r  rs  rv  r  r  r   NVML_BRAND_UNKNOWNNVML_BRAND_QUADRONVML_BRAND_TESLANVML_BRAND_NVSNVML_BRAND_GRIDNVML_BRAND_GEFORCENVML_BRAND_TITANNVML_BRAND_NVIDIA_VAPPSNVML_BRAND_NVIDIA_VPCNVML_BRAND_NVIDIA_VCSNVML_BRAND_NVIDIA_VWSNVML_BRAND_NVIDIA_VGAMINGNVML_BRAND_QUADRO_RTXNVML_BRAND_NVIDIA_RTXNVML_BRAND_NVIDIANVML_BRAND_GEFORCE_RTXNVML_BRAND_TITAN_RTXr  r   r   rr  r   r   r   <module>r     sC  :&      	 
 
                             #&  ! "%   -/ *-/ *-/ *-/ *-/ *-/ (-/ '-/ '-/ &.0 +.0 +.0 +.0 +.0 +.0 ).0 (.0 '.0 (/2 ,/2 ,/2 ,/2 ,/2 ,/2 */2 )/2 (/2 )03 -03 -03 -03 -03 -03 +03 *03 )03 **- '*- '  ), &&) #$' !+. (*- '+. (36 058 236 0*- '                 %( "#&           M/M+M kM Z	M
 M !M %M ZM M #M #M #M M #M )M  0!M" 4#M$ 0%M&  8'M( 4)M* k+M, '-M. +/M0 /1M2 3M4 55M6 37M8 79M: o;M< %=M> '?M@ %AMB %CMD %EMF 'GMH MIMJ !=KML %MMN !#4OMP /QMR |SMT (*PUMV %'JWMX ')JYMZ :<d[M\ +-T]M^ *,T_M` 24daMb 68jcMd 24deMf )+RgMh 'iMj %kMl %mMn 'oMp -qMr 0sMt !#CuMv !<wMx #%DyMz +{M| /}M~ 24^M@ 24^AMB -/YCMD -/YEMF 35_GMH )+RIMJ )+RKML (*PMMN *,TOMP 35`QMR 35`SMT .0[UMV .0[WMX 46aYMZ *,T[M\ )+R]M^ *,T_M` +-VaMb 46bcMd 46beMf /1]gMh /1]iMj 57ckMl +.WmMn *,ToMp +-VqMr ,.XsMt 57duMv 57dwMx 02_yMz 02_{M| 68e}M~ ,/YM@ +-VAMB ,.XCMD -/ZEMF )+RGMH AIMJ %'NKML AMMN 8OMP -QMR 3SMT )UMV #WMX %YMZ 7[M\ 5]M^ -_M` -aMb  9cMd +eMf -gMh %iMj 5kMl *mMn 3oMp +qMr #%?sMt 9uMv !#;wMx  8yMz +-O{M| %'I}M~ )+KM@ &(HAMB 5CMD /EMF )GMH )IMJ 1KML .MMN /OMP 'QMR ,"//YM^'9 &8%7 $5 %6	
 (9 &7 -/L +/B +/N +/O /1A + + ' ,  *! 2e($ e($PQ z%( 	F+ r   