
    YfA                    '   d dl  d dlmZ d dlmZ d dlZd dlZd dlZd dlZe	Z
d ZdZe	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eZdZdZdZdZdZdZ e	Z!d Z"dZ#dZ$dZ%dZ&d	Z'd
Z(dZ)e	Z*d Z+dZ,e	Z-d Z.dZ/dZ0dZ1dZ2e	Z3d Z4dZ5dZ6dZ7dZ8dZ9d	Z:d
Z;dZ<dZ=dZ>e>Z?e	Z@d ZAdZBdZCdZDdZEd	ZFe	ZGd ZHdZIdZJdZKd	ZLe	ZMd ZNdZOdZPdZQdZRd	ZSd
ZTe	ZUdZVdZWdZXdZYdZZdZ[dZ\dZ]dZ^e	Z_d Z`dZadZbdZcdZde	Zed ZfdZgdZhdZie	Zjd ZkdZldZme	Znd ZodZpdZqe	Zrd ZsdZtdZue	Zvd ZwdZxdZydZzdZ{e	Z|d Z}dZ~dZdZdZe	Zd ZdZdZdZe	Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZe	Zd ZdZdZdZe	Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd Zd!Zd"Zd#Ze	Zd ZdZe	Zd ZdZe	Zd ZdZe	Zd ZdZdZe	Zd ZdZdZe	Zd ZdZdZe	Zd ZdZdZe	Zd ZdZdZdZdZd	Ze	Zd ZdZdZdZdZd	ZdZdZdZe	Zd ZdZe	Zd ZdZdZdZdZe	Zd ZdZe	Zd ZdZe	Zd ZdZdZdZdZd	Zd
ZdZe	Zd ZdZdZ e	Zd ZdZdZd$Zd%ZeZd&Ze	Z	d Z
dZdZdZdZd	Zd
Ze	Zd ZdZdZdZdZd	Zd
Ze	ZdZdZdZd	Zd
ZdZdZ dZ!d'Z"e	Z#d Z$dZ%dZ&dZ'dZ(e	Z)d Z*dZ+e	Z,d Z-dZ.e	Z/d(Z0d)Z1d*Z2e	Z3d Z4dZ5dZ6dZ7dZ8d	Z9d
Z:e	Z;d Z<dZ=d Z>dZ?dZ@dZAdZBdZCd+ZDd,ZEd+ZFd+ZGdZHd,ZId$ZJd+ZKd+ZLdZMdZNdZOdZPdZQdZR eSe	      d-z   ZTd-ZUd.ZVd/ZW eXd0      ZY e	d0      ZZ	 dZ[dZ\dZ]dZ^d	Z_d
Z`dZadZbdZcdZddZedZfdZgdZhdZidZjdZkdZldZmdZndZodZpdZqd Zrd!Zsd"Ztd1Zud2Zvd3Zwd$Zxd4ZydZzd5Z{d6Z|d7Z}d8Z~d9Zd:Zd;Zd%Zd<Zd=Zd>Zd?Zd@ZdAZdBZdCZdDZd&ZdEZdFZdGZdHZdIZdJZdKZdLZdMZdNZdOZdPZdQZdZdRZdSZdTZdUZdVZdWZdXZdYZdZZd[Zd\Zd]Zd^Zd_Zd`Zd+ZdaZdbZdcZddZdeZdfZdgZdhZdiZdjZdkZdlZdmZdnZdoZd,ZdpZdqZdrZdsZdtZduZdvZdwZdxZdyZdzZd{Zd|Zd}Zd~ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZdZdZdZd ZdZdZdZdZ	da
 ej                         Zd ae	Ze	Ze	Zd ZdZe	Zd ZdZdZdZdZdZeZd ZdZdZdZdZ e	Z!d Z"dZ#dZ$dZ%dZ&d	Z'e	Z(d Z)dZ*e	Z+d Z,dZ-dZ.dZ/dZ0d	Z1e	Z2d Z3dZ4e	Z5d Z6dZ7dZ8dZ9dZ:e	Z;d Z<dZ=dZ>dZ?dZ@e	ZAd ZBdZCdZD G d deE      ZFd ZGd ZH eH        d ZI eJ       ZKd ZL G d deM      ZNd ZOdÄ ZP G dĄ dŐeQ      ZR eSeR      ZT G dƄ dǐeQ      ZU G dȄ dɐeU      ZV G dʄ dːeU      ZW G d̄ d͐eU      ZX G d΄ dϐeU      ZY G dЄ dѐeU      ZZ G d҄ dӐeQ      Z[ eSe[      Z\ G dԄ dՐeU      Z] G dք dאeU      Z^ G d؄ dِeU      Z_ G dڄ dېeU      Z` G d܄ dݐeU      Za G dބ dߐeU      ZbdZc G d deU      Zd G d deQ      Ze G d deQ      Zf G d deU      Zg G d deU      Zh G d deU      Zi G d deU      Zj G d deU      Zk G d deU      Zl G d dem      Zn G d deU      Zo G d deU      Zp G d deU      Zq G d deU      Zr G d deU      Zs G d d eU      Ztd ZudZvdZwdZxdZyd	Zz G d deU      Z{ G d deU      Z| G d deU      Z} G d deU      Z~ G d	 d
eU      Z G d deU      Z G d deU      Z G d deU      Z G d deU      Z G d deU      Z G d deU      Z G d deU      Z G d deQ      Z eSe      ZdZdZdZdZdZdZd-Zd Zeez  ez  ez  ez  ez  ez  ez  ZdZdZeZdZdZdZdZdZdZd-Zd Zeez  ez  ez  ez  ez  ez  ez  ez  ez  Z G d deU      Z G d deU      Z G d d eQ      Z G d! d"eU      Z G d# d$eU      Z G d% d&eQ      Zd ZdZdZdZdZd'Z G d( d)eU      Z G d* d+eU      Z G d, d-em      Z G d. d/eU      Z G d0 d1eU      Z G d2 d3eU      Z G d4 d5eU      Z G d6 d7eU      Z G d8 d9eU      Z G d: d;eQ      Z G d< d=eU      Zd ZdZd ZdZdZdZdZd	Zd
ZdZdZdZdZ G d> d?eQ      Z G d@ dAeQ      ZÐdBZ G dC dDeU      Z G dE dFeQ      Z G dG dHeQ      Z eSeǫ      Zd ZdZdZdZdZd	Zd
ZdZdZd ZdZ G dI dJeQ      Z G dK dLeQ      ZՐdMZ G dN dOeU      Z G dP dQeQ      ZdZd ZdZdZdZ G dR dSeQ      Z G dT dUeQ      ZdZd ZdZdZdZdZdZdZdZdZd0Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZd0Z G dV dWeQ      Z G dX dYeQ      Z G dZ d[eQ      Z  eSe       Z G d\ d]eQ      Z G d^ d_eQ      Zd` Zda Zdb Zdc Zdd Zede        Z	edf        Z
dg Zdh Zedi        Zedj        Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zedw        Zedx        Zedy        Zedz        Zd{ Zd| Z d} Z!ed~        Z"ed        Z#d Z$d Z%d Z&d Z'd Z(d Z)ed        Z*ed        Z+ed        Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPd ZQd ZRddZSd ZTd ZUd ZVd ZWd ZXd ZYd ZZd Z[d Z\d Z]d Z^d Z_d Z`d Zad Zbd Zcd Zded        Zed ZfdÄ ZgdĄ Zhdń ZidƄ ZjdǄ ZkdȄ ZldɄ Zmdʄ Znd˄ Zod̄ Zpd̈́ Zqd΄ Zrdτ ZsdЄ Ztdф Zud҄ Zvdӄ ZwdԄ ZxdՄ Zydք Zz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  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ed        Zed        Zd Zd Zd Zd Zed        Zd Zd Zd Zd Zed        ZÐed         ZĐed!        ZŐed"        ZƐd# Zǐd$ ZȐd% Zɐd& Zʐd' Zːd( Z̐d) Z͐d* Zΐd+ Zϐd, ZАd- Zѐed.        ZҐd/ ZӐd0 ZԐd1 ZՐd2 Z֐d3 Zאd4 Zؐd5 Zِd6 Zڐd7 Zېd8 Zܐd9 Zݐd: Zސd; Zߐd< Zd= Zd> Zd? Zd@ ZdA ZdB ZedC        ZdD ZdE ZdF ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZddRZeZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zdd[Z e Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Z	dd Z
de Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz 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Z1dZ2dZ3dZ4dZ5dZ6d$Z7d4Z8dZ9d5Z:d6Z;d7Z<d8Z=d9Z>d%Z?d<Z@d=ZAd>ZBd?ZCd@ZDdAZEdBZFd&ZGdNZHdOZIdPZJdQZKdZLdRZMdSZNdTZOdUZPdVZQdWZRdXZSdYZTdZZUd[ZVd\ZWd]ZXd^ZYd_ZZd`Z[d+Z\daZ]dbZ^dcZ_ddZ`deZadfZbdgZcdhZddiZedjZfdkZgdlZhdmZidnZjdoZkd,ZldpZmdqZn G d dɐeU      ZV G d deQ      Zo eSeo      Zp G d deQ      Zq G d deU      Zr G d deU      ZsdZt G d deU      ZudZvd Zwd Zxd Zyd Zzd Z{d Z|d Z}dZ~d Zd Z G d deQ      Zd Ze	Zd ZdZdZdZ G d deU      Zd Zy(      )*)find_library)wrapsN                        	   
                               @                                 i     (   2   l    l     l    l    P   `      z%04X:%02X:%02X.0z%08X:%02X:%02X.0            !   "   #   $   %   &   '   )   *   +   ,   -   .   /   0   1   3   4   5   6   7   8   9   :   ;   <   =   >   ?   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~                                                                                                                                    l        c                       e Zd Z e       Zi 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ededediZd Zd Zd Zy)	NVMLErrorUninitializedzInvalid ArgumentzNot SupportedzInsufficient PermissionszAlready Initializedz	Not FoundzInsufficient SizezInsufficient External PowerzDriver Not LoadedTimeoutzInterrupt Request IssuezNVML Shared Library Not FoundzFunction Not FoundzCorrupted infoROMzGPU is lostzGPU requires restartz-The operating system has blocked the request.z,RM has detected an NVML/RM version mismatch.zInsufficient MemoryzUnknown Errorc                     | t         k(  r t         j                  j                  ||       } t        j	                  |       }||_        |S )z
        Maps value to a proper subclass of NVMLError.
        See _extractNVMLErrorsAsClasses function for more details
        )r   _valClassMappingget	Exception__new__value)typr   objs      K/var/www/highfloat_scraper/venv/lib/python3.12/site-packages/pynvml/nvml.pyr   zNVMLError.__new__  s@    
 ),,00<C$	
    c                 $   	 | j                   t        j                  vr9t        t	        | j                               t        j                  | j                   <   t        j                  | j                      S # t        $ r d| j                   z  cY S w xY w)NzNVML Error with code %d)r   r   _errcode_to_stringstrnvmlErrorStringselfs    r   __str__zNVMLError.__str__  sn    	:zz!=!==;>tzz?Z;[	,,TZZ8//

;; 	:,tzz99	:s   A1A4 4BBc                 4    | j                   |j                   k(  S N)r   )r   others     r   __eq__zNVMLError.__eq__  s    zzU[[((r   N)__name__
__module____qualname__dictr   NVML_ERROR_UNINITIALIZEDNVML_ERROR_INVALID_ARGUMENTNVML_ERROR_NOT_SUPPORTEDNVML_ERROR_NO_PERMISSIONNVML_ERROR_ALREADY_INITIALIZEDNVML_ERROR_NOT_FOUNDNVML_ERROR_INSUFFICIENT_SIZENVML_ERROR_INSUFFICIENT_POWERNVML_ERROR_DRIVER_NOT_LOADEDNVML_ERROR_TIMEOUTNVML_ERROR_IRQ_ISSUENVML_ERROR_LIBRARY_NOT_FOUNDNVML_ERROR_FUNCTION_NOT_FOUNDNVML_ERROR_CORRUPTED_INFOROMNVML_ERROR_GPU_IS_LOSTNVML_ERROR_RESET_REQUIREDNVML_ERROR_OPERATING_SYSTEM"NVML_ERROR_LIB_RM_VERSION_MISMATCHNVML_ERROR_MEMORYNVML_ERROR_UNKNOWNr   r   r   r    r   r   r   r     s   v
 
#(:
 	!
 	!(B	

 	'(=
 	
 	%(;
 	&(E
 	%(;
 		
 	(A
 	%(G
 	&(<
 	%(;
 	
  	"(>!
" 	$(W#
$ 	+,Z(=)
,	:)r   r   c                 h    | t         j                  vrt        d| z        t         j                  |    S )NznvmlErrorCode %s is not valid)r   r   
ValueError)nvmlErrorCodes    r   nvmlExceptionClassr     s2    I6668=HII%%m44r   c            	         t         j                  t           } t        |       D cg c]  }|j	                  d      s| }}|D ]  }dt        j                  |j                  dd      d      j                  dd      z   }t        | |      }d }t        |t        fd ||      i      }t        |_        t        | ||       |t        j                  |<    yc c}w )al  
    Generates a hierarchy of classes on top of NVMLError class.

    Each NVML Error gets a new NVMLError subclass. This way try,except blocks can filter appropriate
    exceptions more easily.

    NVMLError is a parent class. Each NVML_ERROR_* gets it's own subclass.
    e.g. NVML_ERROR_ALREADY_INITIALIZED will be turned into NVMLError_AlreadyInitialized
    NVML_ERROR_
NVMLError_ _c                       fd}|S )Nc                 4    t         j                  |       }|S r   )r   r   )r   r   vals     r   newz9_extractNVMLErrorsAsClasses.<locals>.gen_new.<locals>.new5  s    ''S1
r   r   )r   r   s   ` r   gen_newz,_extractNVMLErrorsAsClasses.<locals>.gen_new4  s     Jr   r   N)sysmodulesr   dir
startswithstringcapwordsreplacegetattrtyper   r   setattrr   )this_modulexnvmlErrorsNameserr_name
class_nameerr_valr   new_error_classs           r   _extractNVMLErrorsAsClassesr  $  s     ++h'K"%k"2RQall=6QqROR# >!FOOH4D4D]TV4WY\$]$e$efikm$nn
+x0	
 zI<)WWEU9VW%-"Z9.=	""7+> Ss
   CCc                 .    | t         k7  rt        |       | S r   )NVML_SUCCESSr   )rets    r   _nvmlCheckReturnr  ?  s    |nJr   c                 R   | t         v r	t         |    S t        j                          	 t        d k(  rt	        t
              	 t        t        |       t         | <   t         |    t        j                          S # t        $ r t	        t              w xY w# t        j                          w xY wr   )
_nvmlGetFunctionPointer_cachelibLoadLockacquirenvmlLibr   r   r   releaseAttributeErrorr   )names    r   _nvmlGetFunctionPointerr  F  s     ,,,T22tO455	;29'42H)$/06
 		  	;9::	; 	s   B  A4 4BB B&c                       e Zd Zd Zd Zy)nvmlFriendlyObjectc                 2    |D ]  }t        | |||           y r   )r   )r   
dictionaryr   s      r   __init__znvmlFriendlyObject.__init___  s!     	,AD!Z]+	,r   c                 6    | j                   j                         S r   )__dict__r   r   s    r   r   znvmlFriendlyObject.__str__b  s    }}$$&&r   N)r   r   r   r  r   r   r   r   r  r  ^  s    ,'r   r  c                     i }| j                   D ]8  }|d   }t        | |      }t        |t              r|j	                         n|||<   : t        |      }|S Nr   )_fields_r   
isinstancebytesdecoder  )structdr   keyr   r   s         r   nvmlStructToFriendlyObjectr"  e  s\    
A__ Gd$#-eU#;#	G
 Q
CJr   c                     |j                   D ]R  }|d   }| j                  |   }t        j                  dk\  rt	        |||j                                Ft	        |||       T |S )Nr   r   )r  r  r   version_infor   encode)r   modelr   r!  r   s        r   nvmlFriendlyObjectToStructr(  p  s_    ^^ 'dS!t#E3/E3&' Lr   c                       e Zd Zy)struct_c_nvmlUnit_tNr   r   r   r   r   r   r*  r*  |      r   r*  c                   6     e Zd ZdZi Zd Z fdZ fdZ xZS )_PrintableStructurea  
    Abstract class that produces nicer __str__ output than ctypes.Structure.
    e.g. instead of:
      >>> print str(obj)
      <class_name object at 0x7fdf82fef9e0>
    this class will print
      class_name(field_name: formatted_value, field_name: formatted_value)

    _fmt_ dictionary of <str _field_ name> -> <str format>
    e.g. class that has _field_ 'hex_value', c_uint could be formatted with
      _fmt_ = {"hex_value" : "%08X"}
    to produce nicer output.
    Default fomratting string for all fields can be set with key "<default>" like:
      _fmt_ = {"<default>" : "%d MHz"} # e.g all values are numbers in MHz.
    If not set it's assumed to be just "%s"

    Exact format of returned str from this class is subject to change in the future.
    c                 R   g }| j                   D ]i  }|d   }t        | |      }d}|| j                  v r| j                  |   }nd| j                  v r| j                  d   }|j                  d|z   ||fz         k | j                  j
                  dz   dj                  |      z   dz   S )Nr   z%s	<default>z%s: (z, ))r  r   _fmt_append	__class__r   join)r   resultr   r!  r   fmts         r   r   z_PrintableStructure.__str__  s     	9AA$CD#&ECdjj jjo

*jj-MM6C<C<78	9 ~~&&,		&0AACGGr   c                     t         t        |   |      }t        |t              r"t        |t
              r|S |j                         S |S r   )superr.  __getattribute__r  r  r   r  )r   r  resr5  s      r   r;  z$_PrintableStructure.__getattribute__  sA    '?E
 c5!#s#
::<
r   c                 n    t        |t              r|j                         }t        t        |   ||       y r   )r  r   r&  r:  r.  __setattr__)r   r  r   r5  s      r   r>  z_PrintableStructure.__setattr__  s,    eS! LLNE!44T5Ar   )	r   r   r   __doc__r3  r   r;  r>  __classcell__r5  s   @r   r.  r.    s&    $ EH
B Br   r.  c                   @    e Zd Zdedz  fdedz  fdedz  fdedz  fgZyc_nvmlUnitInfo_tr  r(   idserialfirmwareVersionNr   r   r   c_charr  r   r   r   rD  rD    9    	"	v{	6B;	FRK(	Hr   rD  c                   "    e Zd Zdedz  fdefgZy)c_nvmlLedState_tcauser)   colorN)r   r   r   rI  _nvmlLedColor_tr  r   r   r   rL  rL    s    	&3,	/"Hr   rL  c                   .    e Zd Zdedz  fdefdefdefgZy)c_nvmlPSUInfo_tstater)   currentvoltagepowerN)r   r   r   rI  c_uintr  r   r   r   rQ  rQ    s-    	&3,	F	F	&	Hr   rQ  c                       e Zd ZdefdefgZy)c_nvmlUnitFanInfo_tspeedrR  N)r   r   r   rV  _nvmlFanState_tr  r   r   r   rX  rX    s    	&	/"Hr   rX  c                   "    e Zd Zdedz  fdefgZy)c_nvmlUnitFanSpeeds_tfansr!   countN)r   r   r   rX  rV  r  r   r   r   r\  r\    s    	$r)*	&Hr   r\  c                       e Zd Zy)struct_c_nvmlDevice_tNr+  r   r   r   r`  r`    r,  r   r`  c                   b    e Zd Zdeez  fdefdefdefdefdefdefdefd	efd
efg
ZddddddZy)nvmlPciInfo_v2_tbusIddomainbusdevicepciDeviceIdpciSubSystemId	reserved0	reserved1	reserved2	reserved3z0x%04X0x%02X0x%08Xrd  re  rf  rg  rh  N)r   r   r   rI  %NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZErV  r  r3  r   r   r   rb  rb    sx    	&@@A	6		6	 
6"	f	f	f	fH  (''''Er   rb  c            	       V    e Zd Zdeez  fdefdefdefdefdefdeez  fgZdd	d	ddd
Zy)nvmlPciInfo_tbusIdLegacyrd  re  rf  rg  rh  rc  rn  rm  ro  N)	r   r   r   rI  rp  rV  "NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZEr  r3  r   r   r   rr  rr    sj     
!FFG	6		6	 
6" 
&==>H  (''''Er   rr  c                   "    e Zd Zdefdeez  fgZy)c_nvmlExcludedDeviceInfo_tpciuuidN)r   r   r   rr  rI  NVML_DEVICE_UUID_BUFFER_SIZEr  r   r   r   rv  rv  
  s    		667Hr   rv  c                       e Zd ZdefdefgZy)nvmlNvLinkUtilizationControl_tunits	pktfilterN)r   r   r   "_nvmlNvLinkUtilizationCountUnits_t%_nvmlNvLinkUtilizationCountPktTypes_tr  r   r   r   r{  r{    s    	45	;<Hr   r{  c                   *    e Zd ZdefdefdefgZddiZy)c_nvmlMemory_ttotalfreeusedr0  %d BNr   r   r   c_ulonglongr  r3  r   r   r   r  r    s-    	+		H
 &!Er   r  c                   6    e Zd ZdefdefdefdefdefgZddiZy)	c_nvmlMemory_v2_tversionr  reservedr  r  r0  r  Nr   r   r   rV  r  r  r3  r   r   r   r  r    s=    	F	+	[!		H &!Er   r  i(  c                   *    e Zd ZdefdefdefgZddiZy)c_nvmlBAR1Memory_t	bar1Totalbar1Freebar1Usedr0  r  Nr  r   r   r   r  r  *  s-    	k"	[!	[!H
 &!Er   r  c                       e Zd ZdefdefgZy)nvmlClkMonFaultInfo_tclkApiDomainclkDomainFaultMaskNr   r   r   rV  r  r   r   r   r  r  2  s    (%v.Hr   r  c                   "    e Zd ZdefdefdefgZy)nvmlClkMonStatus_tbGlobalStatusclkMonListSize
clkMonListN)r   r   r   rV  r  r  r   r   r   r  r  7  s"     &)!6*45Hr   r  c                   0    e Zd ZdefdefdefdefgZddiZy)c_nvmlProcessInfo_tpidusedGpuMemorygpuInstanceIdcomputeInstanceIdr  Nr  r   r   r   r  r  H  s6    		+&	&!	f%	H f Er   r  c                       e Zd ZdefdefgZy)c_nvmlBridgeChipInfo_tr   	fwVersionN)r   r   r   _nvmlBridgeChipType_trV  r  r   r   r   r  r  R  s    	&'	fHr   r  c                   "    e Zd Zdefdedz  fgZy)c_nvmlBridgeChipHierarchy_tbridgeCountbridgeChipInfor   N)r   r   r   rV  r  r  r   r   r   r  r  X  s    		1C78Hr   r  c                   (    e Zd ZdefdefdefdefgZy)c_nvmlEccErrorCounts_tl1Cachel2CachedeviceMemoryregisterFileNr   r   r   r  r  r   r   r   r  r  ^  s)    	K 	K 	%	%	Hr   r  c                   $    e Zd ZdefdefgZddiZy)c_nvmlUtilization_tgpumemoryr0  z%d %%N)r   r   r   rV  r  r3  r   r   r   r  r  f  s$    		6H '"Er   r  c                   "    e Zd Zdefdedz  fgZy)c_nvmlHwbcEntry_thwbcIdrG  r   N)r   r   r   rV  rI  r  r   r   r   r  r  n  s    	6	FRK(Hr   r  c                   .    e Zd ZdefdefdefdefdefgZy)c_nvmlValue_tdValuiValulValullValsllValN)	r   r   r   c_doublerV  c_ulongr  
c_longlongr  r   r   r   r  r  t  s1    		&	'	;	:Hr   r  c                       e Zd ZdefdefgZy)c_nvmlSample_t	timeStampsampleValueN)r   r   r   r  r  r  r   r   r   r  r  }  s    	k"	&Hr   r  c                       e Zd ZdefdefgZy)c_nvmlViolationTime_treferenceTimeviolationTimeNr  r   r   r   r  r    s    	+&	+&Hr   r  c                   :    e Zd ZdefdefdefdefdefdefdefgZy)	c_nvmlFieldValue_tfieldIdscopeId	timestamplatencyUsec	valueType
nvmlReturnr   N)	r   r   r   c_uint32c_int64_nvmlValueType_t_nvmlReturn_tr  r  r   r   r   r  r    sB    	H	H	g	 	&'	}%	- Hr   r  c                   4    e Zd ZdefdefdefdefdefdefgZy)%c_nvmlVgpuInstanceUtilizationSample_tvgpuInstancer  smUtilmemUtilencUtildecUtilN)r   r   r   _nvmlVgpuInstance_tr  r  r  r   r   r   r  r    s:    	,-	k"	=!	M"	M"	M"Hr   r  c            	       F    e Zd Zdefdefdeez  fdefdefdefdefdefgZy	)
$c_nvmlVgpuProcessUtilizationSample_tr  r  processNamer  r  r  r  r  N)	r   r   r   r  rV  rI  NVML_VGPU_NAME_BUFFER_SIZEr  r  r   r   r   r  r    sO    	,-		!;;<	k"	6	F	F	F	Hr   r  c                   :    e Zd ZdefdefdefdefdefdefdefgZy)	c_nvmlVgpuLicenseExpiry_tyearmonthdayhourminsecstatusNr   r   r   r  c_uint16c_uint8r  r   r   r   r  r    A    	H	H	H	H	H	H	GHr   r  c                   "    e Zd ZdefdefdefgZy)c_nvmlVgpuLicenseInfo_t
isLicensedlicenseExpirycurrentStateN)r   r   r   r  r  rV  r  r   r   r   r  r    s"    	G$	56	F#Hr   r  c            	       @    e Zd ZdefdefdefdefdefdefdefdefgZy	)
c_nvmlEncoderSession_t	sessionIdr  r  	codecTypehResolutionvResolution
averageFpsencodeLatencyNr   r   r   rV  r  r  r   r   r   r  r    sI    	f		,-	f			v	&!	Hr   r  c                   4    e Zd ZdefdefdefdefdefdefgZy) c_nvmlProcessUtilizationSample_tr  r  r  r  r  r  Nr   r   r   rV  r  r  r   r   r   r  r    s8    		k"	6	F	F	FHr   r  c                   :    e Zd ZdefdefdefdefdefdefdefgZy)	c_nvmlGridLicenseExpiry_tr  r  r  r  r  r  r  Nr  r   r   r   r  r    r  r   r  c                   @    e Zd Zdefdefdeez  fdeez  fdefdefgZy) c_nvmlGridLicensableFeature_v4_tfeatureCodefeatureStatelicenseInfoproductNamefeatureEnabledr  N)	r   r   r   _nvmlGridLicenseFeatureCode_trV  rI  NVML_GRID_LICENSE_BUFFER_SIZEr  r  r   r   r   r  r    sG    	89	6"	6$AAB	6$AAB	6"	45Hr   r  c                   (    e Zd Zdefdefdeez  fgZy)!c_nvmlGridLicensableFeatures_v4_tisGridLicenseSupportedlicensableFeaturesCountgridLicensableFeaturesN)r   r   r   c_intrV  r  #NVML_GRID_LICENSE_FEATURE_MAX_COUNTr  r   r   r   r  r    s(    	!E*	"F+	!$DGj$jkHr   r  c                   :    e Zd Zdefdefdeez  fdeez  fdefgZy) c_nvmlGridLicensableFeature_v3_tr  r  r  r  r  Nr   r   r   r	  rV  rI  r
  r  r   r   r   r  r    s>    	56	 	!>>?	!>>?	6"Hr   r  c                   (    e Zd Zdefdefdeez  fgZy)!c_nvmlGridLicensableFeatures_v3_tr  r  r  N)r   r   r   r  rV  r  r  r  r   r   r   r  r    (    	!5)	"F+	!#CFi#ijHr   r  c                   4    e Zd Zdefdefdeez  fdeez  fgZy) c_nvmlGridLicensableFeature_v2_tr  r  r  r  Nr  r   r   r   r  r    s6    	56	 	!>>?	!>>?	Hr   r  c                   (    e Zd Zdefdefdeez  fgZy)!c_nvmlGridLicensableFeatures_v2_tr  r  r  N)r   r   r   r  rV  r  r  r  r   r   r   r  r    r  r   r  c                   (    e Zd Zdefdefdeez  fgZy)c_nvmlGridLicensableFeature_tr  r  r  Nr  r   r   r   r  r    s(    	56	 	!>>?Hr   r  c                   (    e Zd Zdefdefdeez  fgZy)c_nvmlGridLicensableFeatures_tr  r  r  N)r   r   r   r  rV  r  r  r  r   r   r   r  r    s(    	!5)	"F+	!#@Cf#fgHr   r  c                       e Zd Zy)struct_c_nvmlEventSet_tNr+  r   r   r   r!  r!  #  r,  r   r!  c                   6    e Zd ZdefdefdefdefdefgZddiZy)c_nvmlEventData_trf  	eventType	eventDatar  r  rn  N)r   r   r   c_nvmlDevice_tr  rV  r  r3  r   r   r   r#  r#  S  s=    	>"	k"	k"	&!	f%H (#Er   r#  c            	       @    e Zd Zdefdefdefdefdefdefdedz  fgZy	)
c_nvmlAccountingStats_tgpuUtilizationmemoryUtilizationmaxMemoryUsagetime	startTime	isRunningr  r
   Nr  r   r   r   r(  r(  ]  sE    	6"	f%	;'		k"	f	VaZ Hr   r(  c                       e Zd ZdefdefgZy)c_nvmlVgpuVersion_t
minVersion
maxVersionNr  r   r   r   r0  r0  h  s    v&v&Hr   r0  c                   d    e Zd Zdefdefdefdeez  fdeez  fdedz  fdefd	efd
efdeez  fg
Zy)c_nvmlVgpuMetadata_tr  revisionguestInfoStateguestDriverVersionhostDriverVersionr  r   vgpuVirtualizationCapsguestVgpuVersionopaqueDataSize
opaqueDataN)	r   r   r   rV  _nvmlVgpuGuestInfoState_trI  &NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE#NVML_VGPU_METADATA_OPAQUE_DATA_SIZEr  r   r   r   r4  r4  m  sp    F#V$!#<=%v0V'VW$f/U&UVVaZ()62#V,!6*v(KKL
Hr   r4  c            
       R    e Zd Zdefdefdeez  fdefdedz  fdefdefd	eez  fgZy
)c_nvmlVgpuPgpuMetadata_tr  r5  r8  pgpuVirtualizationCapsr  r
   hostSupportedVgpuRanger;  r<  N)	r   r   r   rV  rI  r>  r0  (NVML_VGPU_PGPU_METADATA_OPAQUE_DATA_SIZEr  r   r   r   rA  rA  z  sZ    F#V$$f/U&UV)62VaZ()+>?!6*v(PPQHr   rA  c                       e Zd ZdefdefgZy)c_nvmlVgpuPgpuCompatibility_tvgpuVmCompatibilitycompatibilityLimitCodeN)r   r   r   _nvmlVgpuVmCompatibility_t%_nvmlVgpuPgpuCompatibilityLimitCode_tr  r   r   r   rF  rF    s    &(BC)+PQHr   rF     c                       e Zd ZdefdefgZy)c_nvmlVgpuSchedDataWithARR_t	avgFactor	timesliceNr  r   r   r   rM  rM        		Hr   rM  c                       e Zd ZdefgZy)c_nvmlVgpuSchedData_trO  Nr  r   r   r   rR  rR        	Hr   rR  c                       e Zd ZdefdefgZy)c_nvmlVgpuSchedulerParams_tvgpuSchedDataWithARRvgpuSchedDataN)r   r   r   rM  rR  r  r   r   r   rU  rU    s    	!=>	!67Hr   rU  c                   4    e Zd ZdefdefdefdefdefdefgZy)c_nvmlVgpuSchedulerLogEntry_tr  timeRunTotaltimeRunswRunlistIdtargetTimeSlicecumulativePreemptionTimeN)r   r   r   r  rV  r  r   r   r   rY  rY    s9    	4	4	4	/	4	#4Hr   rY  c                   :    e Zd Zdefdefdefdefdefdeez  fgZy)c_nvmlVgpuSchedulerLog_tengineIdschedulerPolicyisEnabledARRschedulerParamsentriesCount
logEntriesN)r   r   r   rV  rU  rY  !NVML_SCHEDULER_SW_MAX_LOG_ENTRIESr  r   r   r   r`  r`    sA    	F#	F#	F#	78	F#	9<]]^Hr   r`  c                   "    e Zd ZdefdefdefgZy)c_nvmlVgpuSchedulerGetState_trb  rc  rd  N)r   r   r   rV  rU  r  r   r   r   ri  ri    s"    	F#	F#	78Hr   ri  c                       e Zd ZdefdefgZy)c_nvmlVgpuSchedSetDataWithARR_trN  	frequencyNr  r   r   r   rk  rk    rP  r   rk  c                       e Zd ZdefgZy)c_nvmlVgpuSchedSetData_trO  Nr  r   r   r   rn  rn    rS  r   rn  c            	       F    e Zd Zdeez  fdefdefdefdefdefdefdefgZy	)
!c_nvmlVgpuSchedulerCapabilities_tsupportedSchedulersmaxTimesliceminTimesliceisArrModeSupportedmaxFrequencyForARRminFrequencyForARRmaxAvgFactorForARRminAvgFactorForARRN)r   r   r   rV  *NVML_SUPPORTED_VGPU_SCHEDULER_POLICY_COUNTr  r   r   r   rp  rp    sO    	)S ST	'	'	'	'	'	'	'	Hr   rp  c                   "    e Zd ZdefdefdefgZy)c_nvmlFBCStats_tsessionsCount
averageFPSaverageLatencyNr  r   r   r   r{  r{    s!     &)v&!6*Hr   r{  c                   X    e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefdefgZy)c_nvmlFBCSession_tr  r  r  displayOrdinalsessionTypesessionFlagshMaxResolutionvMaxResolutionr  r  r}  r~  Nr  r   r   r   r  r    si    	f		,-	6"		 	6"	6"			v	6"Hr   r  c                       e Zd ZdefdefgZy)c_nvmlGpuInstancePlacement_tstartsizeNr  r   r   r   r  r        &! Hr   r  c                   R    e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefgZy)c_nvmlGpuInstanceProfileInfo_trE  isP2pSupported
sliceCountinstanceCountmultiprocessorCountcopyEngineCountdecoderCountencoderCount	jpegCountofaCountmemorySizeMBNr  r   r   r   r  r    s`    v!6*v& &)&/"F+((f%V$-Hr   r  i  c                   v     e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefdefdeez  fgZ fdZ xZ	S )!c_nvmlGpuInstanceProfileInfo_v2_tr  rE  r  r  r  r  r  r  r  r  r  r  r  c                 6    t         t        |   t               y N)r  )r:  r  r  nvmlGpuInstanceProfileInfo_v2r   r5  s    r   r  z*c_nvmlGpuInstanceProfileInfo_v2_t.__init__"  s    /?He?fr   )
r   r   r   rV  r  rI  NVML_DEVICE_NAME_V2_BUFFER_SIZEr  r  r@  rA  s   @r   r  r    s    F#v!6*v& &)&/"F+((f%V$-"AABHg gr   r  c                   (    e Zd ZdefdefdefdefgZy)c_nvmlGpuInstanceInfo_trf  rE  	profileId	placementN)r   r   r   r&  rV  r  r  r   r   r   r  r  %  s)    >*vf%:;Hr   r  c                       e Zd Zy)struct_c_nvmlGpuInstance_tNr+  r   r   r   r  r  ,  r,  r   r  c                       e Zd ZdefdefgZy) c_nvmlComputeInstancePlacement_tr  r  Nr  r   r   r   r  r  =  r  r   r  c            
       F    e Zd Zdefdefdefdefdefdefdefdefd	efg	Zy
)"c_nvmlComputeInstanceProfileInfo_trE  r  r  r  sharedCopyEngineCountsharedDecoderCountsharedEncoderCountsharedJpegCountsharedOfaCountNr  r   r   r   r  r  B  sP    vv& &)&/(&1%v.%v."F+!6*	Hr   r  i  c                   j     e Zd Zdefdefdefdefdefdefdefdefd	efd
efdeez  fgZ fdZ xZS )%c_nvmlComputeInstanceProfileInfo_v2_tr  rE  r  r  r  r  r  r  r  r  r  c                 6    t         t        |   t               y r  )r:  r  r  !nvmlComputeInstanceProfileInfo_v2r  s    r   r  z.c_nvmlComputeInstanceProfileInfo_v2_t.__init__^  s    3TCLmCnr   )	r   r   r   rV  rI  r  r  r  r@  rA  s   @r   r  r  P  ss    F#vv& &)&/(&1%v.%v."F+!6*"AABHo or   r  c                   .    e Zd ZdefdefdefdefdefgZy)c_nvmlComputeInstanceInfo_trf  gpuInstancerE  r  r  N)r   r   r   r&  c_nvmlGpuInstance_trV  r  r  r   r   r   r  r  a  s2    >* 34vf%>?	Hr   r  c                   *    e Zd ZdedfdefdefdefgZy)$c_nvmlGpuDynamicPstatesUtilization_t
bIsPresentr   
percentageincThresholddecThresholdNr  r   r   r   r  r  n  s+    vq)v&((*Hr   r  c                   "    e Zd Zdefdeez  fgZy)c_nvmlGpuDynamicPstatesInfo_tflagsutilizationN)r   r   r   rV  r  NVML_MAX_GPU_UTILIZATIONSr  r   r   r   r  r  s  s!    &! DG` `acHr   r  c                   .    e Zd ZdefdefdefdefdefgZy)c_nvmlGpuThermalSensor_t
controllerdefaultMinTempdefaultMaxTempcurrentTemptargetN)r   r   r   r  r  r   r   r   r  r    s1    u%!5)!5)&5!	#Hr   r  c                   "    e Zd Zdefdeez  fgZy)c_nvmlGpuThermalSettings_tr^  sensorN)r   r   r   rV  r   NVML_MAX_THERMAL_SENSORS_PER_GPUr  r   r   r   r  r    s!    &!36VVWYHr   r  c                       e Zd Zy)struct_c_nvmlComputeInstance_tNr+  r   r   r   r  r    r,  r   r  c            
       F    e Zd Zdefdefdefdefdefdefdefdefd	efg	Zy
)c_nvmlDeviceAttributesr  r  r  r  r  r  gpuInstanceSliceCountcomputeInstanceSliceCountr  Nr  r   r   r   r  r    sQ    &/(&1%v.%v."F+!6*(&1,f5-	Hr   r  c                   .    e Zd ZdefdefdefdefdefgZy) c_nvmlRowRemapperHistogramValuesmaxhighpartiallownoneNr  r   r   r   r  r    s/     F# 	Hr   r  c                 X     t                fd       }t        j                  dk\  r|S  S )ad  
    In python 3, strings are unicode instead of bytes, and need to be converted for ctypes
    Args from caller: (1, 'string', <__main__.c_nvmlDevice_t at 0xFFFFFFFF>)
    Args passed to function: (1, b'string', <__main__.c_nvmlDevice_t at 0xFFFFFFFF)>
    ----
    Returned from function: b'returned string'
    Returned to caller: 'returned string'
    c                      | D cg c]$  }t        |t              r|j                         n|& } } | i |}t        |t              r"t        |t              r|S |j	                         S |S c c}w r   )r  r   r&  r  r  )argskwargsargr<  funcs       r   wrapperz convertStrBytes.<locals>.wrapper  so     JNN#
3 4

#=NND#F# c5!#s#
::<
 Os   )A-r$  )r   r   r%  )r  r  s   ` r   convertStrBytesr    s5     4[  4Kr   c                     t                t        d      } ||       }t        |       t        j	                          t
        dz  at        j                          y )NnvmlInitWithFlagsr   )_LoadNvmlLibraryr  r  r  r  _nvmlLib_refcountr  )r  fnr  s      r   r  r    sN    
 
!!4	5B
U)CS r   c                      t        d       y r  )r  r   r   r   nvmlInitr    s    ar   c            	         t         dk(  rt        j                          	 t         dk(  ry	 t        j                  dd dk(  r?	 t        t        j                  j                  t        j                  dd      d            a nt        d
      a t         dk(  rt        t               t        j                          yy# t        $ rG} t        t        j                  j                  t        j                  dd      d	            a Y d} ~ yd} ~ ww xY w# t        $ r} t        t               Y d} ~ d} ~ ww xY w# t        j                          w xY w)z5
    Load the library if it isn't loaded already
    Nr   winWINDIRz
C:/WindowszSystem32/nvml.dllProgramFileszC:/Program Filesz!NVIDIA Corporation/NVSMI/nvml.dllzlibnvidia-ml.so.1)r  r  r  r   platformCDLLospathr6  getenvOSErrorr  r   r  )oses    r   r  r    s    	4	"4CRa(E1M&*277<<		(L8Y[n+o&pG #'':"; tO$%AB !5 	  ' M '+277<<		.Rd8e  hK  ,L  'MGM  C$%ABBC !s^   	D/ D
  =B7 =D
 	D/ 7	D =D=D
 DD
 
	D,D'"D/ 'D,,D/ /Ec                      t        d      }  |        }t        |       t        j                          dt        k  r	t        dz  at        j                          y )NnvmlShutdownr   r   )r  r  r  r  r  r  )r  r  s     r   r  r    sN     
!	0B
$CS 	Qr   c                 B    t        d      }t        |_         ||       }|S )Nr   )r  c_char_prestype)r7  r  r  s      r   r   r      s"    	 !2	3BBJ
V*CJr   c                      t        t              } t        d      } || t        t                    }t	        |       | j
                  S )NnvmlSystemGetNVMLVersion)create_string_buffer$NVML_SYSTEM_NVML_VERSION_BUFFER_SIZEr  rV  r  r   	c_versionr  r  s      r   r  r  (  s<    $%IJI	 !;	<B
YCD
ECS??r   c                  |    t               } t        d      } |t        |             }t        |       | j                  S )NnvmlSystemGetCudaDriverVersionr  r  byrefr  r   c_cuda_versionr  r  s      r   r  r  0  s7    WN	 !A	BB
U>"
#CSr   c                  |    t               } t        d      } |t        |             }t        |       | j                  S )N!nvmlSystemGetCudaDriverVersion_v2r  r  s      r   r  r  7  s7    WN	 !D	EB
U>"
#CSr   c                     t        d      }t        d      } |t        |       |t        d            }t        |       |j                  S )Ni   nvmlSystemGetProcessName)r  r  rV  r  r   )r  c_namer  r  s       r   r  r  ?  s?    !$'F	 !;	<B
VC[&&,
/CS<<r   c                      t        t              } t        d      } || t        t                    }t	        |       | j
                  S )NnvmlSystemGetDriverVersion)r  r>  r  rV  r  r   r  s      r   r	  r	  G  s<    $%KLI	 !=	>B
YEF
GCS??r   c                  $   t        d      } d }t        d      } |t        |       d       }|t        k7  r|t        k7  rt        |      | j                  dk(  rg S t        | j                  z  } |       } |t        |       |      }t        |       |S )Nr   nvmlSystemGetHicVersion)	rV  r  r   r  r   r   r   r  r  )c_counthicsr  r  	hic_arrays        r   r  r  P  s    QiGD	 !:	;B U7^T
"C 
		,	,n 		!GMM1I;D
U7^T
"CSKr   c                  |    t               } t        d      } |t        |             }t        |       | j                  S )NnvmlUnitGetCountrV  r  r   r  r   r  r  r  s      r   r  r  h  s4    hG	 !3	4B
U7^
CS==r   c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )NnvmlUnitGetHandleByIndex)rV  c_nvmlUnit_tr  r   r  )indexc_indexunitr  r  s        r   r  r  o  s:    UmG>D	 !;	<B
WeDk
"CSKr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlUnitGetUnitInfo)rD  r  r   r  r  c_infor  r  s       r   r  r  w  s2    F	 !6	7B
T5=
!CSMr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlUnitGetLedState)rL  r  r   r  )r  c_stater  r  s       r   r  r  ~  s2    !G	 !6	7B
T5>
"CSNr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlUnitGetPsuInfo)rQ  r  r   r  r  s       r   r!  r!    s2    F	 !5	6B
T5=
!CSMr   c                     t               }t        d      } || t        |      t        |            }t        |       |j                  S )NnvmlUnitGetTemperaturer  )r  r   c_tempr  r  s        r   r#  r#    s<    XF	 !9	:B
T6$<v
/CS<<r   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlUnitGetFanSpeedInfo)r\  r  r   r  )r  c_speedsr  r  s       r   r&  r&    s2    $&H	 !:	;B
T5?
#CSOr   c                     t        d      }t        d      } || t        |      d       }|t        k(  rt        }t        |       |j                  S )Nr   nvmlUnitGetDevices)rV  r  r   r   r  r  r   )r  r  r  r  s       r   nvmlUnitGetDeviceCountr*    sH    QiG	 !5	6B
T5>4
(C++S==r   c                     t        t        |             }t        |j                  z  } |       }t	        d      } || t        |      |      }t        |       |S )Nr)  )rV  r*  r&  r   r  r   r  )r  r  device_array	c_devicesr  r  s         r   r)  r)    sR    +D12G!GMM1LI	 !5	6B
T5>9
-CSr   c                  |    t               } t        d      } |t        |             }t        |       | j                  S )NnvmlDeviceGetCount_v2r  r  s      r   nvmlDeviceGetCountr0    s4    hG	 !8	9B
U7^
CS==r   c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )NnvmlDeviceGetHandleByIndex_v2rV  r&  r  r   r  )r  r  rf  r  r  s        r   nvmlDeviceGetHandleByIndexr4    s;    UmGF	 !@	AB
WeFm
$CSMr   c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )NnvmlDeviceGetHandleBySerialr  r&  r  r   r  )rF  c_serialrf  r  r  s        r   r6  r6    s<    HF	 !>	?B
XuV}
%CSMr   c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )NnvmlDeviceGetHandleByUUIDr7  )rx  c_uuidrf  r  r  s        r   r:  r:    s;    d^FF	 !<	=B
VU6]
#CSMr   c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )N nvmlDeviceGetHandleByPciBusId_v2r7  )pciBusIdc_busIdrf  r  r  s        r   nvmlDeviceGetHandleByPciBusIdr@    s<    x GF	 !C	DB
WeFm
$CSMr   c                     t        t              }t        d      } || |t        t                    }t	        |       |j
                  S )NnvmlDeviceGetName)r  r  r  rV  r  r   )handler  r  r  s       r   rB  rB    >    !"ABF	 !4	5B
VVV$CD
ECS<<r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetBoardIdr  )rC  c_idr  r  s       r   rF  rF    s6    8D	 !7	8B
VU4[
!CS::r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetMultiGpuBoardr  )rC  
c_multiGpur  r  s       r   rI  rI    s9    J	 !=	>B
VU:&
'CSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetBrand)_nvmlBrandType_tr  r   r  r   )rC  c_typer  r  s       r   rL  rL    s7    F	 !5	6B
VU6]
#CS<<r   c                     t        t              }t        d      } || |t        t                    }t	        |       |j
                  S )NnvmlDeviceGetBoardPartNumber)r  #NVML_DEVICE_PART_NUMBER_BUFFER_SIZEr  rV  r  r   )rC  c_part_numberr  r  s       r   rP  rP    s@    ()LMM	 !?	@B
V]F+N$O
PCSr   c                     t        t              }t        d      } || |t        t                    }t	        |       |j
                  S )NnvmlDeviceGetSerial)r  NVML_DEVICE_SERIAL_BUFFER_SIZEr  rV  r  r   )rC  r8  r  r  s       r   rT  rT    s>    #$BCH	 !6	7B
VXv&DE
FCS>>r   c                     t         |z  } |       }t        d      } || |t        |      t        |            }t	        |       |S )NnvmlDeviceGetMemoryAffinityr  r  r   _nvmlAffinityScope_tr  )rC  nodeSetSizescopeaffinity_array
c_affinityr  r  s          r   rW  rW    sH     ;.N!J	 !>	?B
V[%
"35I%5P
QCSr   c                     t         |z  } |       }t        d      } || |t        |      t        |            }t	        |       |S )N#nvmlDeviceGetCpuAffinityWithinScoperX  )rC  
cpuSetSizer[  r\  r]  r  r  s          r   r_  r_    sH     :-N!J	 !F	GB
VZz!24H4O
PCSr   c                 x    t         |z  } |       }t        d      } || |t        |            }t        |       |S )NnvmlDeviceGetCpuAffinity)r  r  r   r  )rC  r`  r\  r]  r  r  s         r   rb  rb    s@     :-N!J	 !;	<B
VZz!2
3CSr   c                 @    t        d      } ||       }t        |       y )NnvmlDeviceSetCpuAffinityr  r  rC  r  r  s      r   rd  rd    s!    	 !;	<B
V*CSr   c                 @    t        d      } ||       }t        |       y )NnvmlDeviceClearCpuAffinityre  rf  s      r   rh  rh  $  s!    	 !=	>B
V*CSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetMinorNumberr  )rC  c_minor_numberr  r  s       r   rj  rj  *  s9    XN	 !;	<B
VU>*
+CSr   c                     t        t              }t        d      } || |t        t                    }t	        |       |j
                  S )NnvmlDeviceGetUUID)r  NVML_DEVICE_UUID_V2_BUFFER_SIZEr  rV  r  r   )rC  r;  r  r  s       r   rm  rm  1  rD  r   c                     t        t              }t        d      } || t        |      |t	        t                    }t        |       |j                  S )NnvmlDeviceGetInforomVersion)r  'NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZEr  _nvmlInforomObject_trV  r  r   )rC  infoRomObjectr  r  r  s        r   rp  rp  9  sJ    $%LMI	 !>	?B
V)-8F#JKMCS??r   c                     t        t              }t        d      } || |t        t                    }t	        |       |j
                  S )N nvmlDeviceGetInforomImageVersion)r  rq  r  rV  r  r   rC  r  r  r  s       r   ru  ru  C  s>    $%LMI	 !C	DB
VY'N O
PCS??r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N)nvmlDeviceGetInforomConfigurationChecksumr  )rC  
c_checksumr  r  s       r   rx  rx  L  s9    J	 !L	MB
VU:&
'CSr   c                 @    t        d      } ||       }t        |       y )NnvmlDeviceValidateInforomre  rf  s      r   r{  r{  T  s!    	 !<	=B
V*CSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetDisplayMode_nvmlEnableState_tr  r   r  r   rC  c_moder  r  s       r   r}  r}  Z  7    !F	 !;	<B
VU6]
#CS<<r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetDisplayActiver~  r  s       r   r  r  a  s7    !F	 !=	>B
VU6]
#CS<<r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPersistenceModer~  )rC  r  r  r  s       r   r  r  i  s7     "G	 !?	@B
VU7^
$CS==r   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetPciInfo_v3rr  r  r   r  )rC  r  r  r  s       r   r  r  p  s1    _F	 !:	;B
VU6]
#CSMr   c                     t        |       S r   )r  rC  s    r   nvmlDeviceGetPciInfor  w  s    "6**r   c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )NnvmlDeviceGetClockInforV  r  _nvmlClockType_tr   r  r   rC  r   c_clockr  r  s        r   r  r  z  s>    hG	 !9	:B
V%d+U7^
<CS==r   c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )NnvmlDeviceGetMaxClockInfor  r  s        r   r  r    s>    hG	 !<	=B
V%d+U7^
<CS==r   c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )NnvmlDeviceGetApplicationsClockr  r  s        r   r  r    s>    hG	 !A	BB
V%d+U7^
<CS==r   c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )N"nvmlDeviceGetMaxCustomerBoostClockr  r  s        r   r  r    s>    hG	 !E	FB
V%d+U7^
<CS==r   c                     t               }t        d      } || t        |      t        |      t	        |            }t        |       |j                  S )NnvmlDeviceGetClock)rV  r  r  _nvmlClockId_tr   r  r   )rC  r   rE  r  r  r  s         r   r  r    sE    hG	 !5	6B
V%d+^B-?w
PCS==r   c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )N%nvmlDeviceGetDefaultApplicationsClockr  r  s        r   r  r    s>    hG	 !H	IB
V%d+U7^
<CS==r   c                 f   t        d      }t        d      } || t        |      d       }|t        k(  rg S |t        k(  rjt         |j
                  z  } |       } || t        |      |      }t        |       g }t        |j
                        D ]  }|j                  ||           |S t        |      )Nr   "nvmlDeviceGetSupportedMemoryClocks
rV  r  r   r  r   r   r  ranger4  r   )rC  r  r  r  clocks_arrayc_clocksprocsis           r   r  r    s    QiG	 !E	FB
VU7^T
*C|	
-
--> w2w}}% 	&ALL!%	&  nr   c                    t        d      }t        d      } || t        |      t        |      d       }|t        k(  rg S |t        k(  rtt         |j
                  z  } |       } || t        |      t        |      |      }t        |       g }t        |j
                        D ]  }|j                  ||           |S t        |      )Nr   $nvmlDeviceGetSupportedGraphicsClocksr  )	rC  memoryClockMHzr  r  r  r  r  r  r  s	            r   r  r    s    QiG	 !G	HB
VVN+U7^T
BC|	
-
--> /wJw}}% 	&ALL!%	&  nr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetFanSpeedr  )rC  c_speedr  r  s       r   r  r    s6    hG	 !8	9B
VU7^
$CS==r   c                     t               }t        d      } || |t        |            }t        |       |j                  S )NnvmlDeviceGetFanSpeed_v2r  rC  fanr  r  r  s        r   r  r    s8    hG	 !;	<B
VS%.
)CS==r   c                     t               }t        d      } || |t        |            }t        |       |j                  S )NnvmlDeviceGetTargetFanSpeedr  r  s        r   r  r    s8    hG	 !>	?B
VS%.
)CS==r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetNumFansr  )rf  	c_numFansr  r  s       r   r  r    s7    I	 !7	8B
VU9%
&CS??r   c                 D    t        d      } || |      }t        |       |S )NnvmlDeviceSetDefaultFanSpeed_v2re  )rC  r  r  r  s       r   r  r    s&    	 !B	CB
VU
CSJr   c                 F    t        d      } || ||      }t        |       |S )NnvmlDeviceGetMinMaxFanSpeedre  )rC  minSpeedmaxSpeedr  r  s        r   r  r  	  s(    	 !>	?B
VXx
(CSJr   c                 F    t        d      } || ||      }t        |       |S )N nvmlDeviceGetFanControlPolicy_v2re  rC  r  fanControlPolicyr  r  s        r   r  r  	  s)    	 !C	DB
VS*
+CSJr   c                 X    t        d      } || |t        |            }t        |       |S )NnvmlDeviceSetFanControlPolicy)r  _nvmlFanControlPolicy_tr  r  s        r   r  r  	  s/    	 !@	AB
VS12BC
DCSJr   c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )NnvmlDeviceGetTemperature)rV  r  _nvmlTemperatureSensors_tr   r  r   )rC  r  r$  r  r  s        r   r  r  	  s>    XF	 !;	<B
V.v6f
FCS<<r   c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )N!nvmlDeviceGetTemperatureThreshold)rV  r  _nvmlTemperatureThresholds_tr   r  r   )rC  	thresholdr$  r  r  s        r   r  r  	  s>    XF	 !D	EB
V1)<eFm
LCS<<r   c                     t               }||_        t        d      } || t        |      t	        |            }t        |       y )N!nvmlDeviceSetTemperatureThreshold)rV  r   r  r  r   r  )rC  r  tempr$  r  r  s         r   r  r  !	  s>    XFFL	 !D	EB
V1)<eFm
LCSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPowerState_nvmlPstates_tr  r   r  r   rC  c_pstater  r  s       r   r  r  *	  s7    H	 !:	;B
VU8_
%CS>>r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPerformanceStater  r  s       r   r  r  1	  s7    H	 !@	AB
VU8_
%CS>>r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N nvmlDeviceGetPowerManagementModer~  )rC  
c_pcapModer  r  s       r   r  r  8	  s:    #%J	 !C	DB
VU:&
'CSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N!nvmlDeviceGetPowerManagementLimitr  rC  c_limitr  r  s       r   r  r  ?	  s6    hG	 !D	EB
VU7^
$CS==r   c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )N,nvmlDeviceGetPowerManagementLimitConstraintsr  )rC  
c_minLimit
c_maxLimitr  r  s        r   r  r  G	  sR    JJ	 !O	PB
VU:&j(9
:CSj..//r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N(nvmlDeviceGetPowerManagementDefaultLimitr  r  s       r   r  r  P	  s6    hG	 !K	LB
VU7^
$CS==r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetEnforcedPowerLimitr  r  s       r   r  r  Y	  s6    hG	 !B	CB
VU7^
$CS==r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPowerUsager  )rC  c_wattsr  r  s       r   r  r  `	  s6    hG	 !:	;B
VU7^
$CS==r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N#nvmlDeviceGetTotalEnergyConsumption)c_uint64r  r   r  r   )rC  c_millijoulesr  r  s       r   r  r  g	  s9    JM	 !F	GB
VU=)
*CSr   c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetGpuOperationMode)_nvmlGpuOperationMode_tr  r   r  r   rC  c_currStatec_pendingStater  r  s        r   r  r  o	  sT    )+K,.N	 !@	AB
VU;'~)>
?CS~3344r   c                     t        |       d   S r  r  r  s    r   $nvmlDeviceGetCurrentGpuOperationModer  x	      (033r   c                     t        |       d   S Nr   r  r  s    r   $nvmlDeviceGetPendingGpuOperationModer  |	  r  r   c                     |st               }t        d      }nt               }||_        t        d      } || t	        |            }t        |       |S )NnvmlDeviceGetMemoryInfonvmlDeviceGetMemoryInfo_v2)r  r  r  r  r   r  )rC  r  c_memoryr  r  s        r   r  r  	  sP    !#$%>?$&"$%AB
VU8_
%CSOr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetBAR1MemoryInfo)r  r  r   r  )rC  c_bar1_memoryr  r  s       r   r  r  	  s4    &(M	 !>	?B
VU=)
*CSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetComputeMode)_nvmlComputeMode_tr  r   r  r   r  s       r   r  r  	  r  r   c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  fS )N"nvmlDeviceGetCudaComputeCapabilityr  )rC  c_majorc_minorr  r  s        r   r  r  	  sL    gGgG	 !E	FB
VU7^U7^
4CSMM7==))r   c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetEccModer~  r  s        r   r  r  	  sT    $&K')N	 !7	8B
VU;'~)>
?CS~3344r   c                     t        |       d   S r  r  r  s    r   nvmlDeviceGetCurrentEccModer	  	      '**r   c                     t        |       d   S r  r  r  s    r   nvmlDeviceGetPendingEccModer  	  r
  r   c                     t               }t        d      } || t        |            }t        |       |j                  gS )NnvmlDeviceGetDefaultEccModer~  )rC  c_defaultStater  r  s       r   r  r  	  s=    ')N	 !>	?B
VU>*
+CS  !!r   c                     t               }t        d      } || t        |      t        |      t	        |            }t        |       |j                  S )NnvmlDeviceGetTotalEccErrors)r  r  _nvmlMemoryErrorType_t_nvmlEccCounterType_tr   r  r   )rC  	errorTypecounterTyper  r  r  s         r   r  r  	  sI    mG	 !>	?B
V+I6&{3U7^ECS==r   c                     t               }t        d      } || t        |      t        |      t	        |            }t        |       |S )NnvmlDeviceGetDetailedEccErrors)r  r  r  r  r   r  )rC  r  r  c_countsr  r  s         r   r  r  	  sE    %'H	 !A	BB
V+I6&{3U8_FCSOr   c           	          t               }t        d      } || t        |      t        |      t	        |      t        |            }t        |       |j                  S )NnvmlDeviceGetMemoryErrorCounter)r  r  r  r  _nvmlMemoryLocation_tr   r  r   )rC  r  r  locationTyper  r  r  s          r   r  r  	  sS    mG	 !B	CB
V#I.";/"<07^	C
 S==r   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetUtilizationRates)r  r  r   r  )rC  c_utilr  r  s       r   r  r  	  s2     "F	 !@	AB
VU6]
#CSMr   c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetEncoderUtilizationr  rC  r  c_samplingPeriodr  r  s        r   r!  r!  	  R    XFx	 !B	CB
VU6]E*:$;
<CSLL*0011r   c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetDecoderUtilizationr  r"  s        r   r&  r&  	  r$  r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPcieReplayCounterr  )rC  c_replayr  r  s       r   r(  r(  	  s6    xH	 !A	BB
VU8_
%CS>>r   c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetDriverModel)_nvmlDriverModel_tr  r   r  r   )rC  c_currModelc_pendingModelr  r  s        r   r+  r+  	  sT    $&K')N	 !;	<B
VU;'~)>
?CS~3344r   c                     t        |       d   S r  r+  r  s    r   nvmlDeviceGetCurrentDriverModelr1  	      #F+A..r   c                     t        |       d   S r  r0  r  s    r   nvmlDeviceGetPendingDriverModelr4   
  r2  r   c                     t        t              }t        d      } || |t        t                    }t	        |       |j
                  S )NnvmlDeviceGetVbiosVersion)r  %NVML_DEVICE_VBIOS_VERSION_BUFFER_SIZEr  rV  r  r   rv  s       r   r6  r6  
  s>    $%JKI	 !<	=B
VY'L M
NCS??r   c                    t        d      }t        d      } || t        |      d       }|t        k(  rg S |t        k(  r|j
                  dz  dz   |_        t        |j
                  z  } |       } || t        |      |      }t        |       g }t        |j
                        D ]E  }t        ||         }|j                  t        j
                  k(  rd |_
        |j                  |       G |S t        |      )Nr   'nvmlDeviceGetComputeRunningProcesses_v3r   r
   rV  r  r   r  r   r   r  r  r  r"  r  "NVML_VALUE_NOT_AVAILABLE_ulonglongr4  r   	rC  r  r  r  
proc_arrayc_procsr  r  r   s	            r   r9  r9  
  s    QiG	 !J	KB
VU7^T
*C|	
-
-  )A-(7==8
, w1w}}% 	A,WQZ8C!!%G%M%MM$(!LL	  nr   c                     t        |       S r   )r9  r  s    r   $nvmlDeviceGetComputeRunningProcessesr@  /
  s    26::r   c                    t        d      }t        d      } || t        |      d       }|t        k(  rg S |t        k(  r|j
                  dz  dz   |_        t        |j
                  z  } |       } || t        |      |      }t        |       g }t        |j
                        D ]E  }t        ||         }|j                  t        j
                  k(  rd |_
        |j                  |       G |S t        |      )Nr   (nvmlDeviceGetGraphicsRunningProcesses_v3r   r
   r:  r<  s	            r   rB  rB  2
  s    QiG	 !K	LB
VU7^T
*C|	
-
-  )A-(7==8
, w1w}}% 	A,WQZ8C!!%G%M%MM$(!LL	  nr   c                     t        |       S r   )rB  r  s    r   %nvmlDeviceGetGraphicsRunningProcessesrD  T
  s    3F;;r   c                     t        |       S r   )*nvmlDeviceGetMPSComputeRunningProcesses_v3r  s    r   'nvmlDeviceGetMPSComputeRunningProcessesrG  W
  s    5f==r   c                    t        d      }t        d      } || t        |      d       }|t        k(  rg S |t        k(  r|j
                  dz  dz   |_        t        |j
                  z  } |       } || t        |      |      }t        |       g }t        |j
                        D ]E  }t        ||         }|j                  t        j
                  k(  rd |_
        |j                  |       G |S t        |      )Nr   rF  r   r
   r:  r<  s	            r   rF  rF  Z
  s    QiG	 !M	NB
VU7^T
*C|	
-
-  )A-(7==8
, w1w}}% 	A,WQZ8C!!%G%M%MM$(!LL	  nr   c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )N%nvmlDeviceGetAutoBoostedClocksEnabledr~  )rC  c_isEnabledc_defaultIsEnabledr  r  s        r   rJ  rJ  |
  sW    $&K+-	 !H	IB
VU;'/A)B
CCS17788r   c                 T    t        d      } || t        |            }t        |       y )NnvmlUnitSetLedState)r  rO  r  )r  rN  r  r  s       r   rN  rN  
  s)    	 !6	7B
T?5)
*CSr   c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetPersistenceModer  r  r  rC  moder  r  s       r   rP  rP  
  s*    	 !?	@B
V'-
.CSr   c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetComputeMode)r  r   r  rR  s       r   rU  rU  
  s*    	 !;	<B
V'-
.CSr   c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetEccModerQ  rR  s       r   rW  rW  
  s*    	 !7	8B
V'-
.CSr   c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceClearEccErrorCounts)r  r  r  )rC  r  r  r  s       r   rY  rY  
  s*    	 !@	AB
V*;7
8CSr   c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetDriverModel)r  r,  r  )rC  r'  r  r  s       r   r[  r[  
  s*    	 !;	<B
V'.
/CSr   c                 T    t        d      } || t        |            }t        |       y )N%nvmlDeviceSetAutoBoostedClocksEnabledrQ  )rC  enabledr  r  s       r   r]  r]  
  s*    	 !H	IB
V'0
1CSr   c                 h    t        d      } || t        |      t        |            }t        |       y )N,nvmlDeviceSetDefaultAutoBoostedClocksEnabled)r  r  rV  r  )rC  r^  r  r  r  s        r   r`  r`  
  s0    	 !O	PB
V'0&-
@CSr   c                 h    t        d      } || t        |      t        |            }t        |       y )NnvmlDeviceSetGpuLockedClocksr  rV  r  )rC  minGpuClockMHzmaxGpuClockMHzr  r  s        r   rb  rb  
  s0    	 !?	@B
VVN+VN-C
DCSr   c                 @    t        d      } ||       }t        |       y )NnvmlDeviceResetGpuLockedClocksre  rf  s      r   rg  rg  
  s!    	 !A	BB
V*CSr   c                 h    t        d      } || t        |      t        |            }t        |       y )NnvmlDeviceSetMemoryLockedClocksrc  )rC  minMemClockMHzmaxMemClockMHzr  r  s        r   ri  ri  
  s0    	 !B	CB
VVN+VN-C
DCSr   c                 @    t        d      } ||       }t        |       y )N!nvmlDeviceResetMemoryLockedClocksre  rf  s      r   rm  rm  
  !    	 !D	EB
V*CSr   c                 .    t        d      } || |      }|S )NnvmlDeviceGetClkMonStatusr  )rC  c_clkMonInfor  r  s       r   rp  rp  
  s    	 !<	=B
V\
"CJr   c                 h    t        d      } || t        |      t        |            }t        |       y )NnvmlDeviceSetApplicationsClocksrc  )rC  rk  maxGraphicsClockMHzr  r  s        r   rt  rt  
  s1    	 !B	CB
VVN+V4G-H
ICSr   c                 @    t        d      } ||       }t        |       y )N!nvmlDeviceResetApplicationsClocksre  rf  s      r   rw  rw  
  rn  r   c                 T    t        d      } || t        |            }t        |       y )N!nvmlDeviceSetPowerManagementLimitrc  )rC  limitr  r  s       r   ry  ry  
  s(    	 !D	EB
VVE]
#CSr   c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetGpuOperationMode)r  r  r  rR  s       r   r|  r|  
  s*    	 !@	AB
V,T2
3CSr   c                  h    t        d      } t               } | t        |            }t        |       |S )NnvmlEventSetCreate)r  c_nvmlEventSet_tr   r  )r  eventSetr  s      r   r~  r~  
  s0    	 !5	6B!H
U8_
CSOr   c                 V    t        d      } || t        |      |      }t        |       y )NnvmlDeviceRegisterEvents)r  r  r  )rC  
eventTypesr  r  r  s        r   r  r  
  s+    	 !;	<B
V[,h
7CSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N nvmlDeviceGetSupportedEventTypesr  r  r   r  r   )rC  c_eventTypesr  r  s       r   r  r    s9    =L	 !C	DB
VU<(
)CSr   c                 ~    t        d      }t               } || t        |      t        |            }t	        |       |S )NnvmlEventSetWait_v2)r  r#  r   rV  r  )r  	timeoutmsr  datar  s        r   r  r  	  s9    	 !6	7BD
XuT{F9$5
6CSKr   c                     t        | |      S r   )r  )r  r  s     r   nvmlEventSetWaitr    s    x33r   c                 @    t        d      } ||       }t        |       y )NnvmlEventSetFreere  )r  r  r  s      r   r  r    s!    	 !3	4B
X,CSr   c                     t        d      }t               } || |t        |            }t        |       |j                  dk7  S )NnvmlDeviceOnSameBoardr   )r  r  r   r  r   )handle1handle2r  onSameBoardr  s        r   r  r    s@    	 !8	9B'K
Wgu[1
2CS"#r   c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )N#nvmlDeviceGetCurrPcieLinkGenerationr  rV  r   r  r   rC  r  genr  s       r   r  r  #  s6    	 !F	GB
(C
VU3Z
 CS99r   c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )N"nvmlDeviceGetMaxPcieLinkGenerationr  r  s       r   r  r  +  s6    	 !E	FB
(C
VU3Z
 CS99r   c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )NnvmlDeviceGetCurrPcieLinkWidthr  rC  r  widthr  s       r   r  r  3  s6    	 !A	BBHE
VU5\
"CS;;r   c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )NnvmlDeviceGetMaxPcieLinkWidthr  r  s       r   r  r  ;  s6    	 !@	ABHE
VU5\
"CS;;r   c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )N%nvmlDeviceGetGpuMaxPcieLinkGenerationr  r  s       r   r  r  B  s6    	 !H	IB
(C
VU3Z
 CS99r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N+nvmlDeviceGetSupportedClocksThrottleReasonsr  rC  	c_reasonsr  r  s       r   r  r  J  s7    }I	 !N	OB
VU9%
&CS??r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N)nvmlDeviceGetCurrentClocksThrottleReasonsr  r  s       r   r  r  R  s7    }I	 !L	MB
VU9%
&CS??r   c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )NnvmlDeviceGetIndexr  )rC  r  r  r  s       r   r  r  Z  s6    	 !5	6BhG
VU7^
$CS==r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetAccountingModer~  r  s       r   r  r  b  s7    !F	 !>	?B
VU6]
#CS<<r   c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetAccountingModerQ  rR  s       r   r  r  i  s*    	 !>	?B
V'-
.CSr   c                 @    t        d      } ||       }t        |       y )NnvmlDeviceClearAccountingPidsre  rf  s      r   r  r  o  s!    	 !@	AB
V*CSr   c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  t        j                  k(  rd |_        |S )NnvmlDeviceGetAccountingStats)r(  r  rV  r   r  r+  r;  r   )rC  r  statsr  r  s        r   r  r  u  sU    #%E	 !?	@B
VVC[%,
/CS B H HH#Lr   c                     t        t        |             }t        |j                  z         }t        d      } || t	        |      |      }t        |       t        t        t        |d|j                               S )NnvmlDeviceGetAccountingPidsr   )	rV  !nvmlDeviceGetAccountingBufferSizer   r  r   r  listmapint)rC  r^  pidsr  r  s        r   r  r    se    4V<=EU[[ #D	 !>	?B
VU5\4
(CSCa,-..r   c                     t               }t        d      } || t        |            }t        |       t	        |j
                        S )Nr  )rV  r  r   r  r  r   )rC  
bufferSizer  r  s       r   r  r    s>    J	 !D	EB
VU:&
'CSz  r   c                    t        |      }t        d      }t        d      } || |t        |      d       }|t        k7  r|t
        k7  rt        |      |j                  dz  dz   |_        t        |j                  z  } |       } || |t        |      |      }t        |       t        t        t        |d|j                               S )Nr   nvmlDeviceGetRetiredPagesr   r
   )_nvmlPageRetirementCause_trV  r  r   r  r   r   r   r  r  r  r  r  )rf  sourceFilterc_sourcer  r  r  
page_arrayc_pagess           r   r  r    s    ),7HQiG	 !<	=B VXuW~t
4C 
		,	,n
 MMA%)GMw}},JlG
VXuW~w
7CSC7==1233r   c                    t        |      }t        d      }t        d      } || |t        |      d       }|t        k7  r|t
        k7  rt        |      |j                  dz  dz   |_        t        |j                  z  } |       }t        |j                  z  } |       }	 || |t        |      ||	      }t        |       t        |j                        D 
cg c]  }
t        ||
         t        |	|
         d! c}
S c c}
w )Nr   nvmlDeviceGetRetiredPages_v2r   r
   )addressr  )r  rV  r  r   r  r   r   r   r  r  r  r  )rf  r  r  r  r  r  r  r  times_arrayc_timesr  s              r   r  r    s    ),7HQiG	 !?	@B VXuW~t
4C 
		,	,n
 MMA%)GMw}},JlG-KmG
VXuW~w
@CSSXY`YfYfSgia#gaj/GAJIiiis   $C<c                     t               }t        d      } || t        |            }t        |       t	        |j
                        S )N&nvmlDeviceGetRetiredPagesPendingStatus)r  r  r   r  r  r   )rf  	c_pendingr  r  s       r   r  r    s=    "$I	 !I	JB
VU9%
&CSyr   c                     t               }t        d      } || t        |      t        |            }t	        |       t        |j                        S )NnvmlDeviceGetAPIRestriction)r  r  _nvmlRestrictedAPI_tr   r  r  r   )rf  apiTypec_permissionr  r  s        r   r  r    sG    %'L	 !>	?B
V)'2E,4G
HCS|!!""r   c                 h    t        d      } || t        |      t        |            }t        |       y )NnvmlDeviceSetAPIRestriction)r  r  r  r  )rC  r  isRestrictedr  r  s        r   r  r    s2    	 !>	?B
V)'24F|4T
UCSr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetBridgeChipInfo)r  r  r   r  )rC  bridgeHierarchyr  r  s       r   r  r    s4    13O	 !>	?B
VU?+
,CSr   c           	         t        |      }t        |      }t        d      }t               }t	        d      } || ||t        |      t        |      d       }|t        k7  rt        |      |j                  t        z  }	 |	       }
 || ||t        |      t        |      |
      }t        |       |j                  |
d|j                   fS )Nr   nvmlDeviceGetSamples)_nvmlSamplingType_tr  rV  r  r  r   r  r   r   r  r  )rf  sampling_typer  c_sampling_typec_time_stampc_sample_countc_sample_value_typer  r  sampleArray	c_sampless              r   r  r    s    )-8Oy)LAYN*,	 !7	8B V_lE:M4NPUVdPegk
lC 	|n &&7KI
V_lU;N5OQVWeQfhq
rCS%%y>3G3G'HIIr   c                     t        |      }t               }t        d      } || |t        |            }t	        |       |S )NnvmlDeviceGetViolationStatus)_nvmlPerfPolicyType_tr  r  r   r  )rf  perfPolicyTypec_perfPolicy_type
c_violTimer  r  s         r   r  r    sD    -n=&(J	 !?	@B V&j(9
:CSr   c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )NnvmlDeviceGetPcieThroughput)rV  r  _nvmlPcieUtilCounter_tr   r  r   )rf  counterr  r  r  s        r   r  r    s>    XF	 !>	?B
V+G4eFm
DCS<<r   c                    t        d      }t        d      } || t        |      d       }|t        k7  rt	        |      t
        |j                  z  } |       } || t        |      |      }t        |       t        |d|j                         S )Nr   nvmlSystemGetTopologyGpuSet	rV  r  r   r  r   r&  r   r  r  )	cpuNumberr  r  r  r,  r-  s         r   r  r    s    QiG	 !>	?B Yg
-C
ln!GMM1LI
Yg	
2CS	!GMM*++r   c                     t        d      }t        d      } || |t        |      d       }|t        k7  rt	        |      t
        |j                  z  } |       } || |t        |      |      }t        |       t        |d|j                         S )Nr    nvmlDeviceGetTopologyNearestGpusr  )rf  levelr  r  r  r,  r-  s          r   r  r    s    QiG	 !C	DB VUE'ND
1C
ln "GMM1LI
VUE'NI
6CS	!GMM*++r   c                     t               }t        d      } || |t        |            }t        |       |j                  S )N#nvmlDeviceGetTopologyCommonAncestor)_nvmlGpuTopologyLevel_tr  r   r  r   )device1device2c_levelr  r  s        r   r  r    s9    %'G	 !F	GB
WguW~
.CS==r   c           	          t               }t               }t        d      } || ||t        |      t        |            }t        |       |j                  |j                  fS )N%nvmlDeviceGetNvLinkUtilizationCounterr  )rf  linkr  c_rxcounterc_txcounterr  r  s          r   r  r  &  sV    -K-K	 !H	IB
VT7E+$6k8J
KCS{0011r   c                 F    t        d      } || |||      }t        |       y )N(nvmlDeviceFreezeNvLinkUtilizationCounterre  )rf  r  r  freezer  r  s         r   r  r  .  s(    	 !K	LB
VT7F
+CSr   c                 D    t        d      } || ||      }t        |       y )N'nvmlDeviceResetNvLinkUtilizationCounterre  )rf  r  r  r  r  s        r   r  r  4  s&    	 !J	KB
VT7
#CSr   c                 Z    t        d      } || ||t        |      |      }t        |       y )N%nvmlDeviceSetNvLinkUtilizationControlr  r   r  )rf  r  r  controlresetr  r  s          r   r  r  :  s.    	 !H	IB
VT7E'NE
:CSr   c                 n    t               }t        d      } || ||t        |            }t        |       |S )N%nvmlDeviceGetNvLinkUtilizationControl)r{  r  r   r  )rf  r  r  	c_controlr  r  s         r   r	  r	  @  s8    .0I	 !H	IB
VT7E)$4
5CSr   c                     t               }t        d      } || ||t        |            }t        |       |j                  S )NnvmlDeviceGetNvLinkCapabilityr  )rf  r  
capabilityc_capResultr  r  s         r   r  r  G  s=    (K	 !@	AB
VT:u['9
:CSr   c                     t               }t        d      } || ||t        |            }t        |       |j                  S )NnvmlDeviceGetNvLinkErrorCounterr  )rf  r  r  c_resultr  r  s         r   r  r  N  s:    }H	 !B	CB
VT7E(O
4CS>>r   c                 B    t        d      } || |      }t        |       y )N"nvmlDeviceResetNvLinkErrorCountersre  )rf  r  r  r  s       r   r  r  U  s$    	 !E	FB
VT
CSr   c                 l    t               }t        d      } || |t        |            }t        |       |S )N#nvmlDeviceGetNvLinkRemotePciInfo_v2r  )rf  r  c_pcir  r  s        r    nvmlDeviceGetNvLinkRemotePciInfor  [  s3    OE	 !F	GB
VT5<
(CSLr   c                     t               }t        d      } || |t        |            }t        |       |j                  S )N#nvmlDeviceGetNvLinkRemoteDeviceType)_nvmlNvLinkDeviceType_tr  r   r  r   )rC  r  rN  r  r  s        r   r  r  b  s9    $&F	 !F	GB
VT5=
)CS<<r   c                     t               }t        d      } || |t        |            }t        |       |j                  S )NnvmlDeviceGetNvLinkStater  )rf  r  
c_isActiver  r  s        r   r  r  i  s;    J	 !;	<B
VT5,
-CSr   c                     t               }t        d      } || |t        |            }t        |       |j                  S )NnvmlDeviceGetNvLinkVersionr  )rf  r  r  r  r  s        r   r  r  p  s9    I	 !=	>B
VT5+
,CS??r   c                 T    t        d      } |t        |       |      }t        |       y )NnvmlDeviceModifyDrainStater  pointerr  )pciInfonewStater  r  s       r   r!  r!  w  s)    	 !=	>B
WWx
(CSr   c                     t               }t        d      } |t        |       t        |            }t	        |       |j
                  S )NnvmlDeviceQueryDrainState)rV  r  r#  r   r  r   )r$  
c_newStater  r  s       r   r'  r'  }  s>    J	 !<	=B
WWuZ0
1CSr   c                 R    t        d      } |t        |             }t        |       y )NnvmlDeviceRemoveGpur"  r$  r  r  s      r   r*  r*    s'    	 !6	7B
WW
CSr   c                 R    t        d      } |t        |             }t        |       y )NnvmlDeviceDiscoverGpusr"  r+  s      r   r-  r-    s'    	 !9	:B
WW
CSr   c                 2   t         t        |      z  } |       }t        d      }t        |      D ]  \  }}	 |\  ||   _        ||   _          || t        t        |            t        |            }t        |       |S # t        $ r |||   _        Y ew xY w)NnvmlDeviceGetFieldValues
r  lenr  	enumerater  r  	TypeErrorc_int32r   r  rC  fieldIds
values_arrvaluesr  r  r  r  s           r   r/  r/    s    #c(m3J\F	 !;	<B) (
7	(5<2VAYq	 1( VWS]+U6]
;CSM  	( 'F1I	(   B  BBc                 2   t         t        |      z  } |       }t        d      }t        |      D ]  \  }}	 |\  ||   _        ||   _          || t        t        |            t        |            }t        |       |S # t        $ r |||   _        Y ew xY w)NnvmlDeviceClearFieldValuesr0  r5  s           r   r;  r;    s    #c(m3J\F	 !=	>B) (
7	(5<2VAYq	 1( VWS]+U6]
;CSM  	( 'F1I	(r9  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetVirtualizationModer  )rC  c_virtualization_moder  r  s       r   r=  r=    s;    'M	 !B	CB
VU01
2CS &&&r   c                 *    t        d      } || |      S )NnvmlDeviceSetVirtualizationModerq  )rC  virtualization_moder  s      r   r@  r@    s    	 !B	CBf)**r   c                     t               }t        d      } |t        |       t        |            }t	        |       |j
                  S )NnvmlGetVgpuDriverCapabilities)rV  r  _nvmlVgpuDriverCapability_tr   r  r   )r  r  r  r  s       r   rC  rC    s?    (K	 !@	AB
(4eK6H
ICSr   c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )NnvmlDeviceGetVgpuCapabilities)rV  r  _nvmlDeviceVgpuCapability_tr   r  r   )rC  r  r  r  r  s        r   rF  rF    sA    (K	 !@	AB
V0<eK>P
QCSr   c                 f   t        d      }t        d      } || t        |      d       }|t        k(  rg S |t        k(  rjt
        |j                  z  } |       } || t        |      |      }t        |       g }t        |j                        D ]  }|j                  ||           |S t        |      )Nr   nvmlDeviceGetSupportedVgpusrV  r  r   r  r   _nvmlVgpuTypeId_tr   r  r  r4  r   rC  c_vgpu_countr  r  vgpu_type_ids_arrayc_vgpu_type_idsvgpusr  s           r   rI  rI        !9L
!"?
@B
VU<($
/C|	
-
-/,2D2DD-/ |,o>|))* 	-ALL+,	- nr   c                 f   t        d      }t        d      } || t        |      d       }|t        k(  rg S |t        k(  rjt
        |j                  z  } |       } || t        |      |      }t        |       g }t        |j                        D ]  }|j                  ||           |S t        |      )Nr   nvmlDeviceGetCreatableVgpusrJ  rL  s           r   rS  rS    rQ  r   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   #nvmlVgpuTypeGetGpuInstanceProfileIdr  )
vgpuTypeIdc_profile_idr  r  s       r   rU  rU    s;    !9L
!"G
HB
Z|,
-CSr   c                     t        t              }t        t              }t        d      } || |t	        |            }t        |       |j                  S )NnvmlVgpuTypeGetClassr  NVML_DEVICE_NAME_BUFFER_SIZErV  r  r   r  r   )rV  c_classc_buffer_sizer  r  s        r   rY  rY    sH    "#?@G78M
!"8
9B
Z%"6
7CS==r   c                     t        t              }t        t              }t        d      } || |t	        |            }t        |       |j                  S )NnvmlVgpuTypeGetNamerZ  )rV  r  r]  r  r  s        r   r_  r_    sH    !">?F78M
!"7
8B
Z}!5
6CS<<r   c                     t        d      }t        d      }t        d      } || t        |      t        |            }t        |       |j                  |j                  fS )Nr   nvmlVgpuTypeGetDeviceIDr  )rV  c_device_idc_subsystem_idr  r  s        r   ra  ra    sV     ^K ^N
!";
<B
Z{+U>-B
CCS~3344r   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuTypeGetFramebufferSizer  )rV  	c_fb_sizer  r  s       r   re  re    s9    AI
!"B
CB
Zy)
*CS??r   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuTypeGetNumDisplayHeadsr  )rV  c_num_headsr  r  s       r   rh  rh  #  s;    )K
!"B
CB
Z{+
,CSr   c                     t        d      }t        d      }t        d      } || dt        |      t        |            }t        |       |j                  |j                  fS )Nr   nvmlVgpuTypeGetResolutionr  )rV  c_xdimc_ydimr  r  s        r   rk  rk  *  sR    AYFAYF
!"=
>B
ZE&M5=
9CSLL&,,''r   c                     t        t              }t        t              }t        d      } || ||      }t	        |       |j
                  S )NnvmlVgpuTypeGetLicense)r  r
  rV  r  r  r   )rV  	c_licenser]  r  r  s        r   ro  ro  2  sC    $%BCI89M
!":
;B
ZM
2CS??r   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuTypeGetFrameRateLimitr  )rV  c_frl_configr  r  s       r   rr  rr  ;  s;    !9L
!"A
BB
Z|,
-CSr   c                     t        d      }t        d      } || |t        |            }t        |       |j                  S )Nr   nvmlVgpuTypeGetMaxInstancesr  )rC  rV  c_max_instancesr  r  s        r   ru  ru  B  s=    QiO
!"?
@B
VZ!7
8CS   r   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr    nvmlVgpuTypeGetMaxInstancesPerVmr  )rV  c_max_instances_per_vmr  r  s       r   rx  rx  I  s=    #AY
!"D
EB
Z56
7CS!'''r   c                 f   t        d      }t        d      } || t        |      d       }|t        k(  rg S |t        k(  rjt
        |j                  z  } |       } || t        |      |      }t        |       g }t        |j                        D ]  }|j                  ||           |S t        |      )Nr   nvmlDeviceGetActiveVgpus)rV  r  r   r  r   r  r   r  r  r4  r   )rC  rM  r  r  vgpu_instance_arrayc_vgpu_instancesrP  r  s           r   r{  r{  P  s    !9L
!"<
=B
VU<($
/C|	
-
-1L4F4FF.0 |,.>?|))* 	.ALL)!,-	. nr   c                     t        t              }t        t              }t        d      }t	        d      } || t        |      |t        |            }t        |       |j                  |j                  fS )Nr   nvmlVgpuInstanceGetVmID)r  ry  rV  r
  r  r   r  r   )r  c_vm_idr]  c_vm_id_typer  r  s         r   r  r  j  sb    "#?@G89M1IL
!";
<B
\5>=%:M
NCSMM<--..r   c                     t        t              }t        t              }t        d      } || t	        |      |      }t        |       |j                  S )NnvmlVgpuInstanceGetUUIDr  ry  rV  r  r   r  r   r  r;  r]  r  r  s        r   r  r  t  sG    !">?F78M
!";
<B
\5=-
8CS<<r   c                     t        t              }t        t              }t        d      } || t	        |      |      }t        |       |j                  S )NnvmlVgpuInstanceGetMdevUUIDr  r  s        r   r  r  }  sG    !">?F78M
!"?
@B
\5=-
8CS<<r   c                     t        t              }t        t              }t        d      } || t	        |      |      }t        |       |j                  S )N"nvmlVgpuInstanceGetVmDriverVersion)r  r>  rV  r  r   r  r   )r  c_driver_versionr]  r  r  s        r   r  r    sL    +,RSABM
!"F
GB
\5!12M
BCS!!!r   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr    nvmlVgpuInstanceGetLicenseStatusr  )r  c_license_statusr  r  s       r   r  r    s=    ay
!"D
EB
\5!12
3CS!!!r   c                 j    t        d      }t               } || t        |            }t        |       |S )N!nvmlVgpuInstanceGetLicenseInfo_v2)r  r  r   r  )r  r  c_license_infor  s       r   r  r    s4    
!"E
FB,.N
\50
1CSr   c                     t        |       S r   )r  )r  s    r   nvmlVgpuInstanceGetLicenseInfor    s    ,\::r   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   !nvmlVgpuInstanceGetFrameRateLimitr  )r  c_frlr  r  s       r   r  r    s8    1IE
!"E
FB
\5<
(CS;;r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlVgpuInstanceGetEccModer~  r  r  r  r  s       r   r  r    s7    !F	 !=	>B
\5=
)CS<<r   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuInstanceGetTyper  )r  c_vgpu_typer  r  s       r   r  r    s;    )K
!";
<B
\5-
.CSr   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   "nvmlVgpuInstanceGetEncoderCapacityr  )r  c_encoder_capacityr  r  s       r   r  r    s=    $Q
!"F
GB
\5!34
5CS###r   c                 *    t        d      } || |      S )N"nvmlVgpuInstanceSetEncoderCapacityrq  )r  encoder_capacityr  s      r   r  r    s    
!"F
GBl,--r   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuInstanceGetFbUsager  )r  
c_fb_usager  r  s       r   r  r    s;    J
!">
?B
\5,
-CSr   c                     t        d      }t        d      } || t        |      t        |            }t	        |       |j
                  S )Nr   nvmlVgpuTypeGetCapabilities)rV  r  _nvmlVgpuCapability_tr   r  r   )rV  r  c_cap_resultr  r  s        r   r  r    sC    !9L
!"?
@B
Z.z:E,<O
PCSr   c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr    nvmlVgpuInstanceGetGpuInstanceIdr  )r  rG  r  r  s       r   r  r    s8    !9D
!"D
EB
\5;
'CSJJr   c           	          t        t              }t        d      } || |t        t	        t                          }t        |       |j                  S )NnvmlVgpuInstanceGetGpuPciId)r  rt  r  r   rV  r  r   )r  c_vgpuPciIdr  r  s       r   r  r    sE    &'IJK	 !>	?B
\;f5W.X(Y
ZCSr   c                 v   t        d      }t        |      }t               }t        d      } || |t	        |      t	        |      d       }|t
        k(  rg S |t        k(  rR|j                  t        z  } |       } || |t	        |      t	        |      |      }t        |       |d|j                   S t        |      )Nr   nvmlDeviceGetVgpuUtilization)rV  r  r  r  r   r  r   r   r  r  r   )	rC  r  rM  r  r  r  r  r  r  s	            r   r  r    s    !9Ly)L*,
!"@
AB
V\5)<#=u\?RTX
YC|	
-
-"((+PPM	 u-@'A5CVXab<--.. nr   c                     t               }t        d      } || ||t        |            }t        |       |j                  S )NnvmlDeviceGetP2PStatus)_nvmlGpuP2PStatus_tr  r   r  r   )r  r  p2pIndexc_p2pstatusr  r  s         r   r  r    s>    %'K	 !9	:B
Wghk(:
;CSr   c                 j    t               }t        d      } || t        |            }t        |       |S )N&nvmlDeviceGetGridLicensableFeatures_v4)r  r  r   r  )rC  c_get_grid_licensable_featuresr  r  s       r   r  r    s6    %F%H"	 !I	JB
VU9:
;CS*+r   c                     t        |       S r   )r  r  s    r   #nvmlDeviceGetGridLicensableFeaturesr    s    1&99r   c                 D    t        d      } || |      }t        |       |S )NnvmlDeviceGetGspFirmwareVersionre  )rC  r  r  r  s       r   r  r  	  s&    	 !B	CB
VW
CSJr   c                 F    t        d      } || ||      }t        |       |S )NnvmlDeviceGetGspFirmwareModere  )rC  	isEnableddefaultModer  r  s        r   r  r    s(    	 !?	@B
VY
,CSJr   c                     t        d      }t        |      }t        d      } || |t        |            }t	        |       |j
                  S )Nr   nvmlDeviceGetEncoderCapacity)r  _nvmlEncoderQueryType_tr  r   r  r   )rC  encoderQueryTyper  c_encoderQuery_typer  r  s         r   r  r    sL    $Q12BC	 !?	@B
V(%0B*C
DCS###r   c                 :   t        d      }t        |      }t        d      } || |t        |      d       }|t        k(  rg S |t
        k(  rH|j                  t        z  } |       } || |t        |      |      }t        |       |d|j                   S t        |      )Nr   #nvmlDeviceGetVgpuProcessUtilization)
rV  r  r  r   r  r   r   r  r  r   )rC  r  rM  r  r  r  r  r  s           r   r  r    s    !9Ly)L
!"G
HB
V\5#6
=C|	
-
-"((+OOM	 u\':IF<--.. nr   c                    t        d      }t        d      }t        d      }t        d      } || t        |      t        |      t        |            }t        |       |j                  |j                  |j                  fS )Nr   nvmlDeviceGetEncoderStatsr  )rC  c_encoderCountc_encodeFpsc_encoderLatencyr  r  s         r   r  r  7  sq     ^Na.K"1~	 !<	=B
VU>*E+,>FV@W
XCS  +"3"35E5K5KLLr   c                 r   t        d      }t        d      } || t        |      d       }|t        k(  r{|j                  dk7  rjt
        |j                  z  } |       } || t        |      |      }t        |       g }t        |j                        D ]  }|j                  ||           |S g S t        |      )Nr   nvmlDeviceGetEncoderSessions
rV  r  r   r  r   r  r  r  r4  r   rC  c_session_countr  r  session_array
c_sessionssessionsr  s           r   r  r  @  s    QiO
!"@
AB
VU?+T
2C|!!Q&2_5J5JJM&J VU?3Z@CS!H?001 /
1./OI nr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetFBCStatsr{  r  r   r  )rC  
c_fbcStatsr  r  s       r   r  r  Z  s4    !#J	 !8	9B
VU:&
'CSr   c                 r   t        d      }t        d      } || t        |      d       }|t        k(  r{|j                  dk7  rjt
        |j                  z  } |       } || t        |      |      }t        |       g }t        |j                        D ]  }|j                  ||           |S g S t        |      )Nr   nvmlDeviceGetFBCSessions
rV  r  r   r  r   r  r  r  r4  r   r  s           r   r  r  a  s    QiO
!"<
=B
VU?+T
2C|!!Q&.1F1FFM&J VU?3Z@CS!H?001 /
1./OI nr   c                    t        d      }t        d      }t        d      }t        d      } || t        |      t        |      t        |            }t        |       |j                  |j                  |j                  fS )Nr   nvmlVgpuInstanceGetEncoderStatsr  )r  r  r  r  r  r  s         r   r  r  {  sq    #AN#AK#A
!"C
DB
\50%2DeL\F]
^CS  +"3"35E5K5KLLr   c                 r   t        d      }t        d      } || t        |      d       }|t        k(  r{|j                  dk7  rjt
        |j                  z  } |       } || t        |      |      }t        |       g }t        |j                        D ]  }|j                  ||           |S g S t        |      )Nr   "nvmlVgpuInstanceGetEncoderSessionsr  r  r  r  r  r  r  r  r  s           r   r  r    s    QiO
!"F
GB
\514
8C|!!Q&2_5J5JJM&J \5#9:FCS!H?001 /
1./OI nr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlVgpuInstanceGetFBCStatsr  )r  r  r  r  s       r   r  r    s4    !#J	 !>	?B
\5,
-CSr   c                 r   t        d      }t        d      } || t        |      d       }|t        k(  r{|j                  dk7  rjt
        |j                  z  } |       } || t        |      |      }t        |       g }t        |j                        D ]  }|j                  ||           |S g S t        |      )Nr   nvmlVgpuInstanceGetFBCSessionsr  r  s           r   r  r    s    QiO
!"B
CB
\514
8C|!!Q&.1F1FFM&J \5#9:FCS!H?001 /
1./OI nr   c                 $   t        d      }t        |      }t        d      } || d t        |      |      }|t        k(  rH|j
                  t        z  } |       } || |t        |      |      }t        |       |d|j
                   S t        |      )Nr   nvmlDeviceGetProcessUtilization)	rV  r  r  r   r   r   r  r  r   )rC  r  r  r  r  r  r  r  s           r   r  r    s    QiGy)L
!"C
DB
VT5><
8C++mm&FFM	 E'NLA7==)) nr   c                     t        d      }t               }t        d      } || t        |      t        |            }|t        k(  r) || t        |      t        |            }t        |       |S t        |      )NnvmlVgpuInstanceGetMetadatar   )r  r4  rV  r   r   r  r   )r  r  c_vgpuMetadatac_bufferSizer  s        r   r  r    su    	 !>	?B)+N!9L \50%2E
FC++u^4eL6IJ  nr   c                     t        d      }t               }t        d      } || t        |      t        |            }|t        k(  r) || t        |      t        |            }t        |       |S t        |      )NnvmlDeviceGetVgpuMetadatar   )r  rA  rV  r   r   r  r   )rC  r  c_vgpuPgpuMetadatar  r  s        r   r  r    sx    	 !<	=B13!9L VU-.l0C
DC++12E,4GH  nr   c                     t        d      }t               } |t        |       t        |      t        |            }t        |       |S )NnvmlGetVgpuCompatibility)r  rF  r   r  )vgpuMetadatapgpuMetadatar  c_vgpuPgpuCompatibilityr  s        r   r  r    sB    	 !;	<B;=
U< %"5u=T7U
VCS""r   c                 ,   t        d      }t        t              }t        d      } || t	        |      t	        |            }|t
        k(  r( || t	        |      t	        |            }t        |       nt        |      |j                  |j                  fS )NnvmlDeviceGetPgpuMetadataStringr   )	r  r  rD  rV  r   r   r  r   r   )rC  r  c_pgpuMetadatar  r  s        r   r  r    s    	 !B	CB)*RSN!9L VU>*E,,?
@C++~.l0CDn  ,"4"455r   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetVgpuSchedulerLog)r`  r  r   r  )rC  c_vgpu_sched_logr  r  s       r   r  r    s6    /1	 !@	AB
VU+,
-CSr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetVgpuSchedulerState)ri  r  r   r  )rC  c_vgpu_sched_stater  r  s       r   r  r    s6    68	 !B	CB
VU-.
/CSr   c                 j    t               }t        d      } || t        |            }t        |       |S )N&nvmlDeviceGetVgpuSchedulerCapabilities)rp  r  r   r  )rC  c_vgpu_sched_capsr  r  s       r   r  r    s6    9;	 !I	JB
VU,-
.CSr   c                 T    t        d      } |t        |             }t        |       |S )NnvmlSetVgpuVersionr  )vgpuVersionr  r  s      r   r  r    s)    	 !5	6B
U;
 CSJr   c                 h    t        d      } |t        |       t        |            }t        |       |S )NnvmlGetVgpuVersionr  )	supportedrS  r  r  s       r   r  r  "  s/    	 !5	6B
U9uW~
.CSJr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N!nvmlVgpuInstanceGetAccountingModer~  r  s       r   r  r  (  s7    !F	 !D	EB
\5=
)CS<<r   c                    t               }t        d      } || t        |      d       }|t        k(  rE|j                  t         z  } |       } || t        |      t        |            }t        |       ||fS t        |      )N!nvmlVgpuInstanceGetAccountingPids)rV  r  r   r   r   r  r   )r  
c_pidCountr  r  r  
c_pidArrays         r   r  r  /  s    J	 !D	EB
\5,d
3C++ &&/ ]
uZ0%
2CD 
## nr   c                 l    t               }t        d      } || |t        |            }t        |       |S )N"nvmlVgpuInstanceGetAccountingStats)r(  r  r   r  )r  r  c_accountingStatsr  r  s        r   r  r  <  s8    /1	 !E	FB
\3&7 8
9CSr   c                 B    t        d      } ||       }t        |       |S )N#nvmlVgpuInstanceClearAccountingPidsre  )r  r  r  s      r   r  r  C  s$    	 !F	GB
\
CSJr   c                  |    t               } t        d      } |t        |             }t        |       | j                  S )NnvmlGetExcludedDeviceCountr  r  s      r   r  r  I  s4    hG	 !=	>B
U7^
CS==r   c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )N nvmlGetExcludedDeviceInfoByIndex)rV  rv  r  r   r  )r  r  infor  r  s        r   r  r  P  s;    UmG%'D	 !C	DB
WeDk
"CSKr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetHostVgpuMode)_nvmlHostVgpuMode_tr  r   r  r   )rC  c_host_vgpu_moder  r  s       r   r  r  X  s<    *,	 !<	=B
VU+,
-CS!!!r   c                     t               }t        d      } || |t        |            }t        |       |j                  S )NnvmlDeviceSetMigModer  )rf  rS  c_activationStatusr  r  s        r   r  r  _  s=    	 !7	8B
VT5!34
5CS###r   c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetMigModer  )rf  c_currentModec_pendingModer  r  s        r   r  r  f  sR    HMHM	 !7	8B
VU=)5+?
@CS!4!455r   c                     |dk(  rt               }t        d      }n*|dk(  rt               }t        d      }nt        t               || |t        |            }t        |       |S )Nr   $nvmlDeviceGetGpuInstanceProfileInfoVr   #nvmlDeviceGetGpuInstanceProfileInfo)r  r  r  r   r   r   r  )rf  profiler  r  r  r  s         r   r!  r!  n  sa    !|24$%KL	A/1$%JK566
VWeFm
,CSMr   c                     t               }t        d      } || |t        |            }t        |       |j                  S )N)nvmlDeviceGetGpuInstanceRemainingCapacityr  )rf  r  r  r  r  s        r   r$  r$  ~  s8    hG	 !L	MB
VYg
/CS==r   c                 H    t        d      } || |||      }t        |       |S )N-nvmlDeviceGetGpuInstancePossiblePlacements_v2re  )rf  r  placementsRefcountRefr  r  s         r   *nvmlDeviceGetGpuInstancePossiblePlacementsr)    s*    	 !P	QB
VYx
8CSJr   c                 l    t               }t        d      } || |t        |            }t        |       |S )NnvmlDeviceCreateGpuInstancer  r  r   r  )rf  r  
c_instancer  r  s        r   r+  r+    s6    $&J	 !>	?B
VYj 1
2CSr   c                 n    t               }t        d      } || ||t        |            }t        |       |S )N(nvmlDeviceCreateGpuInstanceWithPlacementr,  )rf  r  r  r-  r  r  s         r   r/  r/    s8    $&J	 !K	LB
VY	5+<
=CSr   c                 B    t        d      } ||       }t        |       |S )NnvmlGpuInstanceDestroyre  )r  r  r  s      r   r1  r1    s#    	 !9	:B
[/CSJr   c                 H    t        d      } || |||      }t        |       |S )NnvmlDeviceGetGpuInstancesre  )rf  r  gpuInstancesRefr(  r  r  s         r   r3  r3    s*    	 !<	=B
VY
:CSJr   c                 l    t               }t        d      } || |t        |            }t        |       |S )NnvmlDeviceGetGpuInstanceByIdr,  )rf  r  r-  r  r  s        r   r6  r6    s6    $&J	 !?	@B
V]E*$5
6CSr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlGpuInstanceGetInfo)r  r  r   r  )r  r  r  r  s       r   r8  r8    s2    $&F	 !9	:B
[%-
(CSMr   c                     |dk(  rt               }t        d      }n*|dk(  rt               }t        d      }nt        t               || ||t        |            }t        |       |S )Nr   -nvmlGpuInstanceGetComputeInstanceProfileInfoVr   ,nvmlGpuInstanceGetComputeInstanceProfileInfo)r  r  r  r   r   r   r  )rf  r"  
engProfiler  r  r  r  s          r   r;  r;    sc    !|68$%TU	A35$%ST566
VWj%-
8CSMr   c                     t               }t        d      } || |t        |            }t        |       |j                  S )N2nvmlGpuInstanceGetComputeInstanceRemainingCapacityr  )r  r  r  r  r  s        r   r>  r>    s8    hG	 !U	VB
[)U7^
4CS==r   c                 H    t        d      } || |||      }t        |       |S )N3nvmlGpuInstanceGetComputeInstancePossiblePlacementsre  )r  r  r'  r(  r  r  s         r   r@  r@    s*    	 !V	WB
[)]H
=CSJr   c                 l    t               }t        d      } || |t        |            }t        |       |S )N$nvmlGpuInstanceCreateComputeInstancec_nvmlComputeInstance_tr  r   r  )r  r  r-  r  r  s        r   rB  rB    s6    (*J	 !G	HB
[)U:%6
7CSr   c                 n    t               }t        d      } || ||t        |            }t        |       |S )N1nvmlGpuInstanceCreateComputeInstanceWithPlacementrC  )r  r  r  r-  r  r  s         r   rF  rF    s8    (*J	 !T	UB
[)Yj0A
BCSr   c                 B    t        d      } ||       }t        |       |S )NnvmlComputeInstanceDestroyre  )computeInstancer  r  s      r   rH  rH    s$    	 !=	>B
_
CSJr   c                 H    t        d      } || |||      }t        |       |S )N"nvmlGpuInstanceGetComputeInstancesre  )r  r  computeInstancesRefr(  r  r  s         r   rK  rK    s+    	 !E	FB
[)%8(
CCSJr   c                 l    t               }t        d      } || |t        |            }t        |       |S )N%nvmlGpuInstanceGetComputeInstanceByIdrC  )r  r  r-  r  r  s        r   rN  rN    s7    (*J	 !H	IB
[+U:->
?CSr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlComputeInstanceGetInfo_v2)r  r  r   r  )rI  r  r  r  s       r   rP  rP    s2    (*F	 !@	AB
_eFm
,CSMr   c                     t        |       S r   )rP  )rI  s    r   nvmlComputeInstanceGetInforR    s    (99r   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceIsMigDeviceHandle)rV  r  r   r  )rf  c_isMigDevicer  r  s       r   rT  rT    s3    HM	 !>	?B
VU=)
*CSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetGpuInstanceIdr  )rf  c_gpuInstanceIdr  r  s       r   rW  rW    s9    hO	 !=	>B
VU?+
,CS   r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetComputeInstanceIdr  )rf  c_computeInstanceIdr  r  s       r   rZ  rZ  	  s;     (	 !A	BB
VU./
0CS$$$r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetMaxMigDeviceCountr  )rf  r  r  r  s       r   r]  r]    s6    hG	 !A	BB
VU7^
$CS==r   c                     t        |      }t               }t        d      } || |t        |            }t	        |       |S )N#nvmlDeviceGetMigDeviceHandleByIndexr3  )rf  r  r  	migDevicer  r  s         r   r_  r_    s?    UmG I	 !F	GB
VWeI.
/CSr   c                 j    t               }t        d      } || t        |            }t        |       |S )N,nvmlDeviceGetDeviceHandleFromMigDeviceHandle)r&  r  r   r  )r`  rf  r  r  s       r   rb  rb    s2    F	 !O	PB
Yf
&CSMr   c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetAttributes_v2)r  r  r   r  )rf  c_attrsr  r  s       r   rd  rd  &  s2    $&G	 !=	>B
VU7^
$CSNr   c                     t        |       S r   )rd  )rf  s    r   nvmlDeviceGetAttributesrg  -  s    %f--r   c           	      :   t        d      }t               }t               }t               }t               } || t        |      t        |      t        |      t        |            }t        |       |j                  |j                  |j                  |j                  fS )NnvmlDeviceGetRemappedRowsr  )rf  r  c_corrc_unc
c_bpending
c_bfailurer  s          r   ri  ri  0  sx    	 !<	=BXFHEJJ
VU6]E%L%
2CU:EV
WCSLL%++z'7'79I9IJJr   c                 j    t               }t        d      } || t        |            }t        |       |S )N!nvmlDeviceGetRowRemapperHistogram)r  r  r   r  )rf  c_valsr  r  s       r   ro  ro  :  s2    -/F	 !D	EB
VU6]
#CSMr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetArchitecture)_nvmlDeviceArchitecture_tr  r   r  r   )rf  archr  r  s       r   rr  rr  A  s7    $&D	 !<	=B
VU4[
!CS::r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetBusType)_nvmlBusType_tr  r   r  r   )rf  	c_busTyper  r  s       r   rv  rv  H  s8     I	 !7	8B
VU9%
&CS??r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetIrqNumr  )rf  c_irqNumr  r  s       r   rz  rz  O  s6    xH	 !6	7B
VU8_
%CS>>r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetNumGpuCoresr  )rf  
c_numCoresr  r  s       r   r}  r}  V  s9    J	 !;	<B
VU:&
'CSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPowerSource)_nvmlPowerSource_tr  r   r  r   )rf  c_powerSourcer  r  s       r   r  r  ]  s:    &(M	 !;	<B
VU=)
*CSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetMemoryBusWidthr  )rf  c_memBusWidthr  r  s       r   r  r  d  s9    HM	 !>	?B
VU=)
*CSr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPcieLinkMaxSpeed)_nvmlPcieLinkMaxSpeed_tr  r   r  r   rf  r  r  r  s       r   r  r  k  s7    %'G	 !@	AB
VU7^
$CS==r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N$nvmlDeviceGetAdaptiveClockInfoStatus)_nvmlAdaptiveClockInfoStatus_tr  r   r  r   )rf  c_adaptiveClockInfoStatusr  r  s       r   r  r  r  s<     > @	 !G	HB
VU45
6CS$***r   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPcieSpeedr  r  s       r   r  r  y  s6    hG	 !9	:B
VU7^
$CS==r   c                 D    t        d      } || |      }t        |       |S )NnvmlDeviceGetDynamicPstatesInfore  )rf  c_dynamicpstatesinfor  r  s       r   r  r    s'    	 !B	CB
V)
*CSJr   c                 F    t        d      } || ||      }t        |       |S )NnvmlDeviceSetFanSpeed_v2re  )rC  r  rY  r  r  s        r   r  r    s(    	 !;	<B
VUE
"CSJr   c                 F    t        d      } || ||      }t        |       |S )NnvmlDeviceGetThermalSettingsre  )rf  sensorindexc_thermalsettingsr  r  s        r   r  r    s)    	 !?	@B
V["3
4CSJr   c                 n    t        d      } || t        |      t        |      ||      }t        |       |S )N nvmlDeviceGetMinMaxClockOfPState)r  r  r  )rf  r   pstateminClockMHzmaxClockMHzr  r  s          r   r  r    s9    	 !C	DB
V%d+-=f-E{T_
`CSJr   c                    g }t        t              }t        t               |j                  z  }t        |j                  z  } |       }t        d      } || ||      }t        |       |D ]  }|t        k7  s|j                  |        |S )N'nvmlDeviceGetSupportedPerformanceStates)	rV  NVML_MAX_GPU_PERF_PSTATESsizeofr   r  r  r  NVML_PSTATE_UNKNOWNr4  )	rf  pstatesr  c_sizepstates_array	c_pstatesr  r  r   s	            r   r  r    s    G./GF^GMM)F #W]]2MI	 !J	KB
VY
'CS "''NN5!" Nr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetGpcClkVfOffsetr4  r  r   r  r   rf  offsetr  r  s       r   r  r    6    YF	 !>	?B
VU6]
#CS<<r   c                 Z    t        |      }t        d      } || |      }t        |       |S )NnvmlDeviceSetGpcClkVfOffsetr4  r  r  rf  r  c_offsetr  r  s        r   r  r    /    vH	 !>	?B
VX
CSJr   c                 F    t        d      } || ||      }t        |       |S )N!nvmlDeviceGetGpcClkMinMaxVfOffsetre  rf  	minOffset	maxOffsetr  r  s        r   r  r    (    	 !D	EB
VY	
*CSJr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetMemClkVfOffsetr  r  s       r   r  r    r  r   c                 Z    t        |      }t        d      } || |      }t        |       |S )NnvmlDeviceSetMemClkVfOffsetr  r  s        r   r  r    r  r   c                 F    t        d      } || ||      }t        |       |S )N!nvmlDeviceGetMemClkMinMaxVfOffsetre  r  s        r   r  r    r  r   c                   @    e Zd Zdedz  fdedz  fdedz  fdedz  fgZyrC  rH  r   r   r   rD  rD  "  rJ  r   c                       e Zd Zy)struct_c_nvmlGpmSample_tNr+  r   r   r   r  r  *  r,  r   r  c                   "    e Zd ZdefdefdefgZy)c_metricInfo_t	shortNamelongNamer  N)r   r   r   r  r  r   r   r   r  r  .  s!    	h	X	Hr   r  c                   (    e Zd ZdefdefdefdefgZy)c_nvmlGpmMetric_tmetricIdr  r   
metricInfoN)r   r   r   rV  r  r  r  r  r   r   r   r  r  5  s)    	V	}%	(	~&	Hr   r  c                   4    e Zd Zdefdefdefdefdeez  fgZy)c_nvmlGpmMetricsGet_tr  
numMetricssample1sample2metricsN)r   r   r   rV  c_nvmlGpmSample_tr  NVML_GPM_METRIC_MAXr  r   r   r   r  r  =  s:    	F	v	%&	%&	%(;;<Hr   r  c                       e Zd ZdefdefgZy)c_nvmlGpmSupport_tr  isSupportedDeviceNr  r   r   r   r  r  H  s    	F	f%Hr   r  c                 T    t        d      } |t        |             }t        |       | S )NnvmlGpmMetricsGetr  )
metricsGetr  r  s      r   r  r  R  s*    	 !4	5B
U:
CSr   c                 @    t        d      } ||       }t        |       y )NnvmlGpmSampleFreere  	gpmSampler  r  s      r   r  r  X  s!    	 !4	5B
Y-CS
r   c                  h    t               } t        d      } |t        |             }t        |       | S )NnvmlGpmSampleAlloc)r  r  r   r  r  s      r   r  r  ^  s2    !#I	 !5	6B
U9
CSr   c                 D    t        d      } || |      }t        |       |S )NnvmlGpmSampleGetre  )rf  r  r  r  s       r   r  r  e  s'    	 !3	4B
VY
CSr   c                 F    t        d      } || ||      }t        |       |S )NnvmlGpmMigSampleGetre  )rf  r  r  r  r  s        r   r  r  k  s)    	 !6	7B
V]I
.CSr   c                     t               }t        |_        t        d      } || t	        |            }t        |       |S )NnvmlGpmQueryDeviceSupport)r  NVML_GPM_SUPPORT_VERSIONr  r  r   r  )rf  
gpmSupportr  r  s       r   r  r  q  s<    #%J1J	 !<	=B
VU:&
'CSr   c                 Z    t        |      }t        d      } || |      }t        |       |S )NnvmlDeviceCcuSetStreamState)rV  r  r  )rf  rR  r  r  r  s        r   r  r    s/    UmG	 !>	?B
VW
CSJr   c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceCcuGetStreamStater  )rf  r  r  r  s       r   r  r    s6    hG	 !>	?B
VU7^
$CS==r   c                       e Zd ZdefgZy)c_nvmlNvLinkPowerThres_tlowPwrThresholdNr  r   r   r   r  r    s    	F#Hr   r  c                 x    t               }||_        t        d      } || t        |            }t	        |       |S )N*nvmlDeviceSetNvLinkDeviceLowPowerThreshold)r  r  r  r   r  )rf  l1thresholdr  r  r  s        r   r  r    s:    %'F(F	 !M	NB
VU6]
#CSJr   c                   .    e Zd Zdeez  fdefdefdefgZy)c_nvmlGpuFabricInfo_tclusterUuidr  partitionIdrR  N)	r   r   r   rI  ry  r  r  _nvmlGpuFabricState_tr  r   r   r   r  r    s0    	!==>	=!	!	'(	Hr   r  c                 D    t        d      } || |      }t        |       |S )NnvmlDeviceGetGpuFabricInfore  )rf  gpuFabricInfor  r  s       r   r  r    s&    	 !=	>B
V]
#CSJr   r   )r   (  ctypesctypes.utilr   	functoolsr   r   r  	threadingr   rV  r  NVML_FEATURE_DISABLEDNVML_FEATURE_ENABLEDrM  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_CLOUD_GAMINGNVML_BRAND_NVIDIA_VGAMINGNVML_BRAND_QUADRO_RTXNVML_BRAND_NVIDIA_RTXNVML_BRAND_NVIDIANVML_BRAND_GEFORCE_RTXNVML_BRAND_TITAN_RTXNVML_BRAND_COUNTr  #NVML_TEMPERATURE_THRESHOLD_SHUTDOWN#NVML_TEMPERATURE_THRESHOLD_SLOWDOWN"NVML_TEMPERATURE_THRESHOLD_MEM_MAX"NVML_TEMPERATURE_THRESHOLD_GPU_MAX'NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MIN(NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_CURR'NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MAX NVML_TEMPERATURE_THRESHOLD_COUNTr  NVML_TEMPERATURE_GPUNVML_TEMPERATURE_COUNTr   NVML_COMPUTEMODE_DEFAULT!NVML_COMPUTEMODE_EXCLUSIVE_THREADNVML_COMPUTEMODE_PROHIBITED"NVML_COMPUTEMODE_EXCLUSIVE_PROCESSNVML_COMPUTEMODE_COUNTr  NVML_MEMORY_LOCATION_L1_CACHENVML_MEMORY_LOCATION_L2_CACHE"NVML_MEMORY_LOCATION_DEVICE_MEMORYNVML_MEMORY_LOCATION_DRAM"NVML_MEMORY_LOCATION_REGISTER_FILE#NVML_MEMORY_LOCATION_TEXTURE_MEMORY NVML_MEMORY_LOCATION_TEXTURE_SHMNVML_MEMORY_LOCATION_CBUNVML_MEMORY_LOCATION_SRAMNVML_MEMORY_LOCATION_COUNTNVML_NVLINK_MAX_LINKSNVML_NVLINK_MAX_LANES_nvmlNvLinkErrorCounter_tNVML_NVLINK_ERROR_DL_REPLAYNVML_NVLINK_ERROR_DL_RECOVERYNVML_NVLINK_ERROR_DL_CRC_FLITNVML_NVLINK_ERROR_DL_CRC_DATANVML_NVLINK_ERROR_DL_ECC_DATANVML_NVLINK_ERROR_COUNT _nvmlNvLinkEccLaneErrorCounter_tNVML_NVLINK_ERROR_DL_ECC_LANE0NVML_NVLINK_ERROR_DL_ECC_LANE1NVML_NVLINK_ERROR_DL_ECC_LANE2NVML_NVLINK_ERROR_DL_ECC_LANE3NVML_NVLINK_ERROR_DL_ECC_COUNT_nvmlNvLinkCapability_tNVML_NVLINK_CAP_P2P_SUPPORTEDNVML_NVLINK_CAP_SYSMEM_ACCESSNVML_NVLINK_CAP_P2P_ATOMICSNVML_NVLINK_CAP_SYSMEM_ATOMICSNVML_NVLINK_CAP_SLI_BRIDGENVML_NVLINK_CAP_VALIDNVML_NVLINK_CAP_COUNTr  !NVML_NVLINK_COUNTER_PKTFILTER_NOP"NVML_NVLINK_COUNTER_PKTFILTER_READ#NVML_NVLINK_COUNTER_PKTFILTER_WRITE#NVML_NVLINK_COUNTER_PKTFILTER_RATOM$NVML_NVLINK_COUNTER_PKTFILTER_NRATOM#NVML_NVLINK_COUNTER_PKTFILTER_FLUSH&NVML_NVLINK_COUNTER_PKTFILTER_RESPDATA(NVML_NVLINK_COUNTER_PKTFILTER_RESPNODATA!NVML_NVLINK_COUNTER_PKTFILTER_ALLr~  NVML_NVLINK_COUNTER_UNIT_CYCLES NVML_NVLINK_COUNTER_UNIT_PACKETSNVML_NVLINK_COUNTER_UNIT_BYTES!NVML_NVLINK_COUNTER_UNIT_RESERVEDNVML_NVLINK_COUNTER_UNIT_COUNTr  NVML_NVLINK_DEVICE_TYPE_GPUNVML_NVLINK_DEVICE_TYPE_IBMNPUNVML_NVLINK_DEVICE_TYPE_SWITCHNVML_NVLINK_DEVICE_TYPE_UNKNOWN_nvmlEccBitType_tNVML_SINGLE_BIT_ECCNVML_DOUBLE_BIT_ECCNVML_ECC_ERROR_TYPE_COUNTr  NVML_VOLATILE_ECCNVML_AGGREGATE_ECCNVML_ECC_COUNTER_TYPE_COUNTr   NVML_MEMORY_ERROR_TYPE_CORRECTED"NVML_MEMORY_ERROR_TYPE_UNCORRECTEDNVML_MEMORY_ERROR_TYPE_COUNTr  NVML_CLOCK_GRAPHICSNVML_CLOCK_SMNVML_CLOCK_MEMNVML_CLOCK_VIDEONVML_CLOCK_COUNTr  NVML_CLOCK_ID_CURRENTNVML_CLOCK_ID_APP_CLOCK_TARGETNVML_CLOCK_ID_APP_CLOCK_DEFAULT NVML_CLOCK_ID_CUSTOMER_BOOST_MAXNVML_CLOCK_ID_COUNTr,  NVML_DRIVER_WDDMNVML_DRIVER_WDMNVML_DRIVER_MCDMr  r  NVML_PSTATE_0NVML_PSTATE_1NVML_PSTATE_2NVML_PSTATE_3NVML_PSTATE_4NVML_PSTATE_5NVML_PSTATE_6NVML_PSTATE_7NVML_PSTATE_8NVML_PSTATE_9NVML_PSTATE_10NVML_PSTATE_11NVML_PSTATE_12NVML_PSTATE_13NVML_PSTATE_14NVML_PSTATE_15r  rr  NVML_INFOROM_OEMNVML_INFOROM_ECCNVML_INFOROM_POWERNVML_INFOROM_COUNTr  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   NVML_ERROR_IN_USEr   NVML_ERROR_NO_DATA!NVML_ERROR_VGPU_ECC_NOT_SUPPORTED!NVML_ERROR_INSUFFICIENT_RESOURCESNVML_ERROR_FREQ_NOT_SUPPORTED$NVML_ERROR_ARGUMENT_VERSION_MISMATCHNVML_ERROR_DEPRECATEDr   rZ  NVML_FAN_NORMALNVML_FAN_FAILEDr  (NVML_FAN_POLICY_TEMPERATURE_CONTINOUS_SWNVML_FAN_POLICY_MANUALrO  NVML_LED_COLOR_GREENNVML_LED_COLOR_AMBERr  NVML_GOM_ALL_ONNVML_GOM_COMPUTENVML_GOM_LOW_DPr  9NVML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS/NVML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR NVML_PAGE_RETIREMENT_CAUSE_COUNTr  *NVML_RESTRICTED_API_SET_APPLICATION_CLOCKS+NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKSNVML_RESTRICTED_API_COUNTr  NVML_BRIDGE_CHIP_PLXNVML_BRIDGE_CHIP_BRO4NVML_MAX_PHYSICAL_BRIDGEr  NVML_VALUE_TYPE_DOUBLENVML_VALUE_TYPE_UNSIGNED_INTNVML_VALUE_TYPE_UNSIGNED_LONG"NVML_VALUE_TYPE_UNSIGNED_LONG_LONG NVML_VALUE_TYPE_SIGNED_LONG_LONGNVML_VALUE_TYPE_COUNTr  NVML_PERF_POLICY_POWERNVML_PERF_POLICY_THERMALNVML_PERF_POLICY_SYNC_BOOSTNVML_PERF_POLICY_BOARD_LIMIT NVML_PERF_POLICY_LOW_UTILIZATIONNVML_PERF_POLICY_RELIABILITY!NVML_PERF_POLICY_TOTAL_APP_CLOCKS"NVML_PERF_POLICY_TOTAL_BASE_CLOCKSNVML_PERF_POLICY_COUNTr  NVML_ENCODER_QUERY_H264NVML_ENCODER_QUERY_HEVC_nvmlFBCSessionType_tNVML_FBC_SESSION_TYPE_UNKNOWNNVML_FBC_SESSION_TYPE_TOSYSNVML_FBC_SESSION_TYPE_CUDANVML_FBC_SESSION_TYPE_VIDNVML_FBC_SESSION_TYPE_HWENC_nvmlDetachGpuState_tNVML_DETACH_GPU_KEEPNVML_DETACH_GPU_REMOVE_nvmlPcieLinkState_tNVML_PCIE_LINK_KEEPNVML_PCIE_LINK_SHUT_DOWNr  NVML_TOTAL_POWER_SAMPLESNVML_GPU_UTILIZATION_SAMPLESNVML_MEMORY_UTILIZATION_SAMPLESNVML_ENC_UTILIZATION_SAMPLESNVML_DEC_UTILIZATION_SAMPLESNVML_PROCESSOR_CLK_SAMPLESNVML_MEMORY_CLK_SAMPLESNVML_SAMPLINGTYPE_COUNTr  NVML_PCIE_UTIL_TX_BYTESNVML_PCIE_UTIL_RX_BYTESNVML_PCIE_UTIL_COUNTr  NVML_TOPOLOGY_INTERNALNVML_TOPOLOGY_SINGLENVML_TOPOLOGY_MULTIPLENVML_TOPOLOGY_HOSTBRIDGENVML_TOPOLOGY_NODENVML_TOPOLOGY_CPUNVML_TOPOLOGY_SYSTEM_nvmlGpuP2PCapsIndex_tNVML_P2P_CAPS_INDEX_READNVML_P2P_CAPS_INDEX_WRITENVML_P2P_CAPS_INDEX_NVLINKNVML_P2P_CAPS_INDEX_ATOMICSNVML_P2P_CAPS_INDEX_PROPNVML_P2P_CAPS_INDEX_LOOPBACKNVML_P2P_CAPS_INDEX_UNKNOWNr  NVML_P2P_STATUS_OK$NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED!NVML_P2P_STATUS_GPU_NOT_SUPPORTED*NVML_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED"NVML_P2P_STATUS_DISABLED_BY_REGKEYNVML_P2P_STATUS_NOT_SUPPORTEDNVML_P2P_STATUS_UNKNOWNrs  NVML_DEVICE_ARCH_KEPLERNVML_DEVICE_ARCH_MAXWELLNVML_DEVICE_ARCH_PASCALNVML_DEVICE_ARCH_VOLTANVML_DEVICE_ARCH_TURINGNVML_DEVICE_ARCH_AMPERENVML_DEVICE_ARCH_ADANVML_DEVICE_ARCH_HOPPERNVML_DEVICE_ARCH_UNKNOWNrw  NVML_BUS_TYPE_UNKNOWNNVML_BUS_TYPE_PCINVML_BUS_TYPE_PCIENVML_BUS_TYPE_FPCINVML_BUS_TYPE_AGPr  NVML_POWER_SOURCE_ACNVML_POWER_SOURCE_BATTERYr  +NVML_ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED*NVML_ADAPTIVE_CLOCKING_INFO_STATUS_ENABLED_nvmlClockLimitId_tNVML_CLOCK_LIMIT_ID_RANGE_STARTNVML_CLOCK_LIMIT_ID_TDPNVML_CLOCK_LIMIT_ID_UNLIMITEDr   NVML_PCIE_LINK_MAX_SPEED_INVALID!NVML_PCIE_LINK_MAX_SPEED_2500MBPS!NVML_PCIE_LINK_MAX_SPEED_5000MBPS!NVML_PCIE_LINK_MAX_SPEED_8000MBPS"NVML_PCIE_LINK_MAX_SPEED_16000MBPS"NVML_PCIE_LINK_MAX_SPEED_32000MBPS"NVML_PCIE_LINK_MAX_SPEED_64000MBPSrY  NVML_AFFINITY_SCOPE_NODENVML_AFFINITY_SCOPE_SOCKETnvmlFlagDefaultnvmlFlagForceNVML_INIT_FLAG_NO_GPUSNVML_INIT_FLAG_NO_ATTACHNVML_MAX_GPC_COUNTrq  ry  rn  r>  r  r[  r  rU  rQ  'NVML_DEVICE_GPU_PART_NUMBER_BUFFER_SIZEr7  rt  rp  r
  r  r  r  r?  rD  !NVML_DEVICE_PCI_BUS_ID_LEGACY_FMTNVML_DEVICE_PCI_BUS_ID_FMTr  r;  NVML_VALUE_NOT_AVAILABLE_uintNVML_FI_DEV_ECC_CURRENTNVML_FI_DEV_ECC_PENDINGNVML_FI_DEV_ECC_SBE_VOL_TOTALNVML_FI_DEV_ECC_DBE_VOL_TOTALNVML_FI_DEV_ECC_SBE_AGG_TOTALNVML_FI_DEV_ECC_DBE_AGG_TOTALNVML_FI_DEV_ECC_SBE_VOL_L1NVML_FI_DEV_ECC_DBE_VOL_L1NVML_FI_DEV_ECC_SBE_VOL_L2NVML_FI_DEV_ECC_DBE_VOL_L2NVML_FI_DEV_ECC_SBE_VOL_DEVNVML_FI_DEV_ECC_DBE_VOL_DEVNVML_FI_DEV_ECC_SBE_VOL_REGNVML_FI_DEV_ECC_DBE_VOL_REGNVML_FI_DEV_ECC_SBE_VOL_TEXNVML_FI_DEV_ECC_DBE_VOL_TEXNVML_FI_DEV_ECC_DBE_VOL_CBUNVML_FI_DEV_ECC_SBE_AGG_L1NVML_FI_DEV_ECC_DBE_AGG_L1NVML_FI_DEV_ECC_SBE_AGG_L2NVML_FI_DEV_ECC_DBE_AGG_L2NVML_FI_DEV_ECC_SBE_AGG_DEVNVML_FI_DEV_ECC_DBE_AGG_DEVNVML_FI_DEV_ECC_SBE_AGG_REGNVML_FI_DEV_ECC_DBE_AGG_REGNVML_FI_DEV_ECC_SBE_AGG_TEXNVML_FI_DEV_ECC_DBE_AGG_TEXNVML_FI_DEV_ECC_DBE_AGG_CBUNVML_FI_DEV_RETIRED_SBENVML_FI_DEV_RETIRED_DBENVML_FI_DEV_RETIRED_PENDING*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L5-NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_TOTAL*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L5-NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_TOTAL(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L0(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L1(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L2(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L3(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L4(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L5+NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L5-NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_TOTAL"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L0"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L1"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L2"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L3"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L4"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L5%NVML_FI_DEV_NVLINK_BANDWIDTH_C0_TOTAL"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L0"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L1"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L2"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L3"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L4"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L5%NVML_FI_DEV_NVLINK_BANDWIDTH_C1_TOTALNVML_FI_DEV_PERF_POLICY_POWERNVML_FI_DEV_PERF_POLICY_THERMAL"NVML_FI_DEV_PERF_POLICY_SYNC_BOOST#NVML_FI_DEV_PERF_POLICY_BOARD_LIMIT'NVML_FI_DEV_PERF_POLICY_LOW_UTILIZATION#NVML_FI_DEV_PERF_POLICY_RELIABILITY(NVML_FI_DEV_PERF_POLICY_TOTAL_APP_CLOCKS)NVML_FI_DEV_PERF_POLICY_TOTAL_BASE_CLOCKSNVML_FI_DEV_MEMORY_TEMP$NVML_FI_DEV_TOTAL_ENERGY_CONSUMPTION NVML_FI_DEV_NVLINK_SPEED_MBPS_L0 NVML_FI_DEV_NVLINK_SPEED_MBPS_L1 NVML_FI_DEV_NVLINK_SPEED_MBPS_L2 NVML_FI_DEV_NVLINK_SPEED_MBPS_L3 NVML_FI_DEV_NVLINK_SPEED_MBPS_L4 NVML_FI_DEV_NVLINK_SPEED_MBPS_L5$NVML_FI_DEV_NVLINK_SPEED_MBPS_COMMONNVML_FI_DEV_NVLINK_LINK_COUNTNVML_FI_DEV_RETIRED_PENDING_SBENVML_FI_DEV_RETIRED_PENDING_DBENVML_FI_DEV_PCIE_REPLAY_COUNTER(NVML_FI_DEV_PCIE_REPLAY_ROLLOVER_COUNTER*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L11*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L11(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L6(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L7(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L8(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L9)NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L10)NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L11*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L11"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L6"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L7"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L8"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L9#NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L10#NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L11"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L6"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L7"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L8"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L9#NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L10#NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L11 NVML_FI_DEV_NVLINK_SPEED_MBPS_L6 NVML_FI_DEV_NVLINK_SPEED_MBPS_L7 NVML_FI_DEV_NVLINK_SPEED_MBPS_L8 NVML_FI_DEV_NVLINK_SPEED_MBPS_L9!NVML_FI_DEV_NVLINK_SPEED_MBPS_L10!NVML_FI_DEV_NVLINK_SPEED_MBPS_L11%NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_TX%NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_RX$NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_TX$NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_RXNVML_FI_DEV_REMAPPED_CORNVML_FI_DEV_REMAPPED_UNCNVML_FI_DEV_REMAPPED_PENDINGNVML_FI_DEV_REMAPPED_FAILURE#NVML_FI_DEV_NVLINK_REMOTE_NVLINK_ID)NVML_FI_DEV_NVSWITCH_CONNECTED_LINK_COUNT*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L5*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L11-NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_TOTAL"NVML_FI_DEV_NVLINK_ERROR_DL_REPLAY$NVML_FI_DEV_NVLINK_ERROR_DL_RECOVERYNVML_FI_DEV_NVLINK_ERROR_DL_CRCNVML_FI_DEV_NVLINK_GET_SPEEDNVML_FI_DEV_NVLINK_GET_STATENVML_FI_DEV_NVLINK_GET_VERSION"NVML_FI_DEV_NVLINK_GET_POWER_STATE&NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD'NVML_FI_DEV_PCIE_L0_TO_RECOVERY_COUNTERNVML_FI_MAX!NVML_GPU_VIRTUALIZATION_MODE_NONE(NVML_GPU_VIRTUALIZATION_MODE_PASSTHROUGH!NVML_GPU_VIRTUALIZATION_MODE_VGPU&NVML_GPU_VIRTUALIZATION_MODE_HOST_VGPU&NVML_GPU_VIRTUALIZATION_MODE_HOST_VSGAr  Lockr  r  rK  r  _nvmlVgpuVmIdType_tNVML_VGPU_VM_ID_DOMAIN_IDNVML_VGPU_VM_ID_UUIDr	  &NVML_GRID_LICENSE_FEATURE_CODE_UNKNOWN#NVML_GRID_LICENSE_FEATURE_CODE_VGPU)NVML_GRID_LICENSE_FEATURE_CODE_NVIDIA_RTX+NVML_GRID_LICENSE_FEATURE_CODE_VWORKSTATION%NVML_GRID_LICENSE_FEATURE_CODE_GAMING&NVML_GRID_LICENSE_FEATURE_CODE_COMPUTEr  _nvmlGridLicenseExpiryStatus_t&NVML_GRID_LICENSE_EXPIRY_NOT_AVAILABLE NVML_GRID_LICENSE_EXPIRY_INVALIDNVML_GRID_LICENSE_EXPIRY_VALID'NVML_GRID_LICENSE_EXPIRY_NOT_APPLICABLE"NVML_GRID_LICENSE_EXPIRY_PERMANENTr  NVML_VGPU_CAP_NVLINK_P2PNVML_VGPU_CAP_GPUDIRECT"NVML_VGPU_CAP_MULTI_VGPU_EXCLUSIVENVML_VGPU_CAP_EXCLUSIVE_TYPENVML_VGPU_CAP_EXCLUSIVE_SIZENVML_VGPU_CAP_COUNTrD  -NVML_VGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPUNVML_VGPU_DRIVER_CAP_COUNTrG  *NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU5NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES2NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES*NVML_DEVICE_VGPU_CAP_READ_DEVICE_BUFFER_BW+NVML_DEVICE_VGPU_CAP_WRITE_DEVICE_BUFFER_BWNVML_DEVICE_VGPU_CAP_COUNTr=  1NVML_VGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED/NVML_VGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZEDrI  NVML_VGPU_VM_COMPATIBILITY_NONENVML_VGPU_VM_COMPATIBILITY_COLD$NVML_VGPU_VM_COMPATIBILITY_HIBERNATE NVML_VGPU_VM_COMPATIBILITY_SLEEPNVML_VGPU_VM_COMPATIBILITY_LIVErJ  "NVML_VGPU_COMPATIBILITY_LIMIT_NONE)NVML_VGPU_COMPATIBILITY_LIMIT_HOST_DRIVER*NVML_VGPU_COMPATIBILITY_LIMIT_GUEST_DRIVER!NVML_VGPU_COMPATIBILITY_LIMIT_GPU#NVML_VGPU_COMPATIBILITY_LIMIT_OTHERr  NVML_HOST_VGPU_MODE_NON_SRIOVNVML_HOST_VGPU_MODE_SRIOV"NVML_GSP_FIRMWARE_VERSION_BUF_SIZEr   r   r   r  r  r   r
  r  objectr  r"  r(  	Structurer*  POINTERr  r.  rD  rL  rQ  rX  r\  r`  r&  rb  rr  rv  r{  r  r  nvmlMemory_v2r  r  r  r  r  r  r  r  r  Unionr  r  r  r  r  r  r  NVML_GRID_LICENSE_STATE_UNKNOWN%NVML_GRID_LICENSE_STATE_UNINITIALIZED/NVML_GRID_LICENSE_STATE_UNLICENSED_UNRESTRICTED-NVML_GRID_LICENSE_STATE_UNLICENSED_RESTRICTED"NVML_GRID_LICENSE_STATE_UNLICENSED NVML_GRID_LICENSE_STATE_LICENSEDr  r  r  r  r  r  r  r  r  r  r  r  r!  r  nvmlEventTypeSingleBitEccErrornvmlEventTypeDoubleBitEccErrornvmlEventTypePStatenvmlEventTypeXidCriticalErrornvmlEventTypeClocknvmlEventTypePowerSourceChangenvmlEventMigConfigChangenvmlEventTypeNonenvmlEventTypeAllnvmlClocksThrottleReasonGpuIdle1nvmlClocksThrottleReasonApplicationsClocksSetting)nvmlClocksThrottleReasonUserDefinedClocks"nvmlClocksThrottleReasonSwPowerCap"nvmlClocksThrottleReasonHwSlowdown!nvmlClocksThrottleReasonSyncBoost)nvmlClocksThrottleReasonSwThermalSlowdown)nvmlClocksThrottleReasonHwThermalSlowdown,nvmlClocksThrottleReasonHwPowerBrakeSlowdown+nvmlClocksThrottleReasonDisplayClockSettingnvmlClocksThrottleReasonNonenvmlClocksThrottleReasonAllr#  r(  r0  r4  rA  rF  "NVML_VGPU_SCHEDULER_POLICY_UNKNOWN&NVML_VGPU_SCHEDULER_POLICY_BEST_EFFORT&NVML_VGPU_SCHEDULER_POLICY_EQUAL_SHARE&NVML_VGPU_SCHEDULER_POLICY_FIXED_SHAREry  rg  rM  rR  rU  rY  r`  ri  rk  rn  rp  r{  r  NVML_DEVICE_MIG_DISABLENVML_DEVICE_MIG_ENABLE!NVML_GPU_INSTANCE_PROFILE_1_SLICE!NVML_GPU_INSTANCE_PROFILE_2_SLICE!NVML_GPU_INSTANCE_PROFILE_3_SLICE!NVML_GPU_INSTANCE_PROFILE_4_SLICE!NVML_GPU_INSTANCE_PROFILE_7_SLICE!NVML_GPU_INSTANCE_PROFILE_8_SLICE!NVML_GPU_INSTANCE_PROFILE_6_SLICE&NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV1&NVML_GPU_INSTANCE_PROFILE_2_SLICE_REV1&NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV2NVML_GPU_INSTANCE_PROFILE_COUNTr  r  r  r  r  r  r  %NVML_COMPUTE_INSTANCE_PROFILE_1_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_2_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_3_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_4_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_7_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_8_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_6_SLICE*NVML_COMPUTE_INSTANCE_PROFILE_1_SLICE_REV1#NVML_COMPUTE_INSTANCE_PROFILE_COUNT+NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_SHARED*NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_COUNTr  r  r  r  r  r  NVML_GPU_UTILIZATION_DOMAIN_GPUNVML_GPU_UTILIZATION_DOMAIN_FBNVML_GPU_UTILIZATION_DOMAIN_VIDNVML_GPU_UTILIZATION_DOMAIN_BUSr  r  r  NVML_THERMAL_TARGET_NONENVML_THERMAL_TARGET_GPUNVML_THERMAL_TARGET_MEMORY NVML_THERMAL_TARGET_POWER_SUPPLYNVML_THERMAL_TARGET_BOARDNVML_THERMAL_TARGET_VCD_BOARDNVML_THERMAL_TARGET_VCD_INLETNVML_THERMAL_TARGET_VCD_OUTLETNVML_THERMAL_TARGET_ALLNVML_THERMAL_TARGET_UNKNOWNNVML_THERMAL_CONTROLLER_NONE$NVML_THERMAL_CONTROLLER_GPU_INTERNALNVML_THERMAL_CONTROLLER_ADM1032NVML_THERMAL_CONTROLLER_ADT7461NVML_THERMAL_CONTROLLER_MAX6649NVML_THERMAL_CONTROLLER_MAX1617NVML_THERMAL_CONTROLLER_LM99NVML_THERMAL_CONTROLLER_LM89NVML_THERMAL_CONTROLLER_LM64NVML_THERMAL_CONTROLLER_G781NVML_THERMAL_CONTROLLER_ADT7473!NVML_THERMAL_CONTROLLER_SBMAX6649 NVML_THERMAL_CONTROLLER_VBIOSEVTNVML_THERMAL_CONTROLLER_OS'NVML_THERMAL_CONTROLLER_NVSYSCON_CANOAS%NVML_THERMAL_CONTROLLER_NVSYSCON_E551 NVML_THERMAL_CONTROLLER_MAX6649R NVML_THERMAL_CONTROLLER_ADT7473SNVML_THERMAL_CONTROLLER_UNKNOWNr  r  r  rD  r  r  r  r  r  r  r  r   r  r  r  r  r	  r  r  r  r  r  r!  r#  r&  r*  r)  r0  r4  r6  r:  r@  rB  rF  rI  rL  rP  rT  rW  r_  rb  rd  rh  rj  rm  rp  ru  rx  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+  r1  r4  r6  r9  r@  rB  rD  rG  rF  rJ  rN  rP  rU  rW  rY  r[  r]  r`  rb  rg  ri  rm  rp  rt  rw  ry  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@  rC  rF  rI  rS  rU  rY  r_  ra  re  rh  rk  ro  rr  ru  rx  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/  r1  r3  r6  r8  r;  r:  r>  r@  rB  rF  rH  rK  rN  rP  rR  rT  rW  rZ  r]  r_  rb  rd  rg  ri  ro  rr  rv  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  NVML_GPM_METRIC_GRAPHICS_UTILNVML_GPM_METRIC_SM_UTILNVML_GPM_METRIC_SM_OCCUPANCYNVML_GPM_METRIC_INTEGER_UTILNVML_GPM_METRIC_ANY_TENSOR_UTIL NVML_GPM_METRIC_DFMA_TENSOR_UTIL NVML_GPM_METRIC_HMMA_TENSOR_UTIL NVML_GPM_METRIC_IMMA_TENSOR_UTILNVML_GPM_METRIC_DRAM_BW_UTILNVML_GPM_METRIC_FP64_UTILNVML_GPM_METRIC_FP32_UTILNVML_GPM_METRIC_FP16_UTILNVML_GPM_METRIC_PCIE_TX_PER_SECNVML_GPM_METRIC_PCIE_RX_PER_SECNVML_GPM_METRIC_NVDEC_0_UTILNVML_GPM_METRIC_NVDEC_1_UTILNVML_GPM_METRIC_NVDEC_2_UTILNVML_GPM_METRIC_NVDEC_3_UTILNVML_GPM_METRIC_NVDEC_4_UTILNVML_GPM_METRIC_NVDEC_5_UTILNVML_GPM_METRIC_NVDEC_6_UTILNVML_GPM_METRIC_NVDEC_7_UTILNVML_GPM_METRIC_NVJPG_0_UTILNVML_GPM_METRIC_NVJPG_1_UTILNVML_GPM_METRIC_NVJPG_2_UTILNVML_GPM_METRIC_NVJPG_3_UTILNVML_GPM_METRIC_NVJPG_4_UTILNVML_GPM_METRIC_NVJPG_5_UTILNVML_GPM_METRIC_NVJPG_6_UTILNVML_GPM_METRIC_NVJPG_7_UTILNVML_GPM_METRIC_NVOFA_0_UTIL'NVML_GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC'NVML_GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L0_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L0_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L1_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L1_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L2_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L2_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L3_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L3_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L4_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L4_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L5_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L5_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L6_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L6_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L7_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L7_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L8_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L8_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L9_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L9_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L10_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L10_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L11_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L11_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L12_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L12_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L13_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L13_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L14_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L14_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L15_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L15_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L16_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L16_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L17_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L17_TX_PER_SECr  r  r  r  r  r  NVML_GPM_METRICS_GET_VERSIONr  r  r  r  r  r  r  r  1NVML_COUNTER_COLLECTION_UNIT_STREAM_STATE_DISABLE0NVML_COUNTER_COLLECTION_UNIT_STREAM_STATE_ENABLEr  r  r  r  r  #NVML_GPU_FABRIC_STATE_NOT_SUPPORTED!NVML_GPU_FABRIC_STATE_NOT_STARTED!NVML_GPU_FABRIC_STATE_IN_PROGRESSNVML_GPU_FABRIC_STATE_COMPLETEDr  r  r   r   r   <module>r	     s  @  $  
 	       !" !" !" !"!"!" !" !" !" !" !# !# !? !# !# !# !# !# !# % +, #+, #+, "+, "+, '+, (+, '+,  "    %& %& !%& %& "%&   !  ! %& " %& "&' ##$       . "   !  !  !  !  #)  !" !" !" !" !"    !  !  !  !  !  !  ! (. %+. !+. "+. #+. #+/ $+/ #+/ &+/ (+/ !%+ "$% $%  $% $% !$%   "& "& "& "&           %&  %& "%&     #$ #$ #$ #$  #$                  '('( '( '( '( '( '( '( '( '( ') ') ') ') ') ') ') ') ') "') ') ') ') !') !') ') $') '*   +, (+,     "#"# "## <= 9<= /<=   <= *<= +<=          ! %& "#$         #$    $& !%' "       !               "#                   &             '( $$% !,- *$% "   "         &        & & !' .8 +-7 * ", ", ",   %/  %/ !%/ !%/ !%/ "%/ "%/ "          02 '/1 /1 /1 &/1 $/1 /1 /1 /1 #/1 '/1 %/1 "/1 %/2 /1 /0 #/5f~/C #/2 ( '9 !&8 %0_ " &r
 
 $% #$  $% #$ #$ #$ #$ #$ #$ #% #% #% #% #% #% #% #% #% #% #% #% #% #% #% #% #% #% #%  $& #% #%  02 */1 */1 */1 */1 */1 *02 - 02 */1 */1 */1 */1 */1 *02 - 02 (/1 (/1 (/1 (/1 (/1 (/1 + 02 */1 */1 */1 */1 */1 *02 - )+ "(* "(* "(* "(* "(* "(* % )+ "(* "(* "(* "(* "(* "(* % -/ ,. ,. ",. #,. ',. #,. (,. )   (* $ (*  ')  ')  ')  ')  ')  ') $ !#  #% "$  #% +- ( 02 */1 */1 */1 */2 +/2 + 03 */2 */2 */2 */2 +/2 + 03 (/2 (/2 (/2 (/2 )/2 ) 03 */2 */2 */2 */2 +/2 + ), "(+ "(+ "(+ "(+ #(+ # ), "(+ "(+ "(+ "(+ #(+ # (+  '*  '*  '*  '* !'* ! ), %(+ %(+ $(+ $ #& "% "% "%  '* # -0 ) 14 *03 *03 *03 *03 *03 *03 *03 *03 *03 *03 +03 +03 -03 "03 $03 03 03 03 03 "03 &03 ' ,- !+, (+, !+, &+, & inn          & ./ &./ #./ )./ +./ %./ &!( ,- &,-  ,- ,- ',- " ./ ./ ./ "./ ./ ./ $ 9: -9: $ 9: *9: 59: 29: *9: +9: " 45 145 /# *- *- *- $*-  *- (. %.1 ".1 ).1 *.1 !.8 # "# "#  &* "+)	 +)Z5
>2   !% 0' '		) 	*+2B) 2Bh* * ) - / 	I 	./* .' .!4 %8 "( ""+ " ", "I 
 "- 0 "5 0 #- #+ E ( / 	, 	,? 
+> 
	 3 	 34 23 %23 /23 -23 "23  1 
0 
': 	 3 	': (; ': (; ': (; $7 %8 	i 	23 %7 %7 %7 %7 %7 %7 %7 %7 (9*H)I*H)I +>)> +=	)=
 +I)I +H)H +C)C  0B 4F 14e )/A "/A "/A !/A )/A )/A ,/A +/A 2N2Q3R2c3d 3U3U 3U	3U
 3T3T 3\3\ 3\3\ 3_3_ 3^	3^ $+ $	1 	) 
. 	2 	I  +, "*+ &*+ &*+ & /0 *.1 !#6 / 
% $7 2 $7 &9 2 

(; 
y ,     ), !), !), !), !), !), !), !), &), &), &), 9 
Y  !+ g(; g&i 	 	89 (+ %(+ %(+ %(+ %(+ %(+ %(+ %-0 *-0 #.1 +-0 *y 

 
 %/ !o,? o")   %& %& %& %& *9 *
cI c $%  $% $% $% $%  $% $% $& $& $& $& *+ *+ $*+ *+ *+ *+ *+ *+ *+ *+ *, *, !*,  *, *, '*, %*,  *,  *, #y #Y Y	Y 	!"@A 
Y 
y 8" "D"          0                   +860544
*5++"	225//   D< D<> D94$/!4.k2 #J(, ,"2'+44     5(  !(4 / /     " "";$.   4,:$2M44M44,# 6 6$"$6 (K $ 1] -:!%.K+& +, *+ *+ *+ *+ *+  *+  *+  *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, '*, '*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, $*, %*, %*, %*, %*, %*, %*, %*, %*, %*, %*, %*, %*, %*, %*, %*, %*, * 	y 	45 Y + /   ! ,    56 145 0y 
  &' #&' !&' !&' / r   