
    bi                     B   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)dZ*e	Z+d Z,dZ-e	Z.d Z/dZ0dZ1dZ2dZ3e	Z4d Z5dZ6dZ7dZ8dZ9dZ:d	Z;d
Z<dZ=dZ>dZ?e?Z@e	ZAd ZBdZCdZDdZEdZFd	ZGe	ZHd ZIdZJdZKdZLd	ZMe	ZNd ZOdZPdZQdZRdZSd	ZTd
ZUe	ZVdZWdZXdZYdZZdZ[dZ\dZ]dZ^dZ_e	Z`d ZadZbdZcdZddZee	Zfd ZgdZhdZidZje	Zkd ZldZmdZne	Zod ZpdZqdZre	Zsd ZtdZudZve	Zwd ZxdZydZzdZ{dZ|e	Z}d Z~dZd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Ze	Zd 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#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	Zd
ZdZe	Zd ZdZdZdZdZd	Zd
ZdZe	Zd ZdZdZdZdZd	ZdZdZdZe	Zd ZdZdZdZe	Zd ZdZdZdZdZe	Z d Zd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e	Zd ZdZd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(e(Z)dZ*dZ+dZ,d	Z-d
Z.e	Z/dZ0dZ1dZ2d	Z3d
Z4dZ5dZ6dZ7dZ8dZ9d+Z:e	Z;d Z<dZ=dZ>dZ?dZ@e	ZAd ZBdZCdZDe	ZEd ZFdZGe	ZHd,ZId-ZJd.ZKe	ZLd ZMdZNdZOdZPdZQd	ZRd
ZSe	ZTdZUdZVdZWdZXdZYdZZdZ[dZ\e	Z]d Z^dZ_e	Z`d ZadZbdZcdZddZed ZfdZgdZhdZidZjdZkd/Zld0Zmd/Znd/ZodZpd0Zqd'Zrd/Zsd/ZtdZudZvdZwdZxdZydZz e{e	      d1z   Z|d1Z}dZ~d2Zd3Zd4Z ed5      Z e	d5      Z	 d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'Zd6ZdZd7Zd8Zd9Zd:Zd;Zd<Zd=Zd(Zd>Zd?Zd@ZdAZdBZdCZdDZdEZdFZd)ZdGZdHZdIZdJZdKZdLZdMZdNZdOZdPZdQZdRZdSZdZdTZdUZdVZdWZdXZdYZdZZd[Zd\Zd]Zd^Zd_Zd`ZdaZdbZd/ZdcZddZdeZdfZdgZdhZdiZdjZdkZdlZdmZdnZdoZdpZdqZd0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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Z0dZ1dZ2dZ3dZ4dZ5dZ6dÐZ7dĐZ8dŐZ9dƐZ: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ZTdZUdZVdZWdZXdZYdZZd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Zsd ZtdZudZvdZwdZxdZydZzdZ{dZ|d	Z}d
Z~eΐZeАZdZdZdZdZdZd1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 Zd ZdZdZd ZdZd ZdZd ZdZdZdZdZda ejL                         Zd ae	Ze	Ze	Zd ZdZe	Zd ZdZdZdZdZdZeZd*Zd!Zd"Zd#Zd$Ze	Zd ZdZdZdZdZd	Ze	Zd ZdZdZe	Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZe	Zd ZdZe	Zd ZdZdZdZdZe	Zd ZdZdZdZd%Ze	Zd ZdZe	Zd ZdZe	Zd ZdZe	Zd ZdZdZdZdZe	Zd ZdZd ZdZd ZdZdZe	Zd ZdZe	Zd)ZdTZ dZ G d& d'e      Z G d( d)e      Zd* Zd+ Z e        d, Z e       Z	d- Z
 G d. d/e      Zd0 Zd1 Z G d2 d3e      Z ee      Z G d4 d5e      Z G d6 d7e      Z G d8 d9e      Zd:Z G d; d<e      Z G d= d>e      Z G d? d@e      Z G dA dBe      Z G dC dDe      Z ee      Z G dE dFe      ZdGZ G dH dIe      Z G dJ dKe      Z  G dL dMe      Z!dNZ" G dO dPe      Z# G dQ dRe      Z$ G dS dTe      Z% G dU dVe      Z&dWZ' G dX dYe      Z( G dZ d[e      Z)dZ* G d\ d]e      Z+ G d^ d_e      Z,e,Z-e-Z.e	Z/d Z0dZ1dZ2 G d` dae      Z3 G db dce      Z4e4Z5ddZ6 G de dfe      Z7 G dg dhe      Z8 G di dje      Z9 G dk dle      Z: G dm dne      Z; G do dpe<      Z= G dq dre      Z> G ds dte      Z? G du dve      Z@dZAdwZB G dx dye      ZCdzZD G d{ d|e      ZEdzZF G d} d~e      ZG G d de      ZHd:ZI G d de      ZJd:ZK G d de      ZLddZMd ZNdZO G d de      ZPdZQ G d de      ZRdZS G d de      ZT G d de      ZU G d de      ZVdZW G d de      ZX G d de      ZY G d de      ZZddZ[ G d de      Z\dZ] G d de      Z^d Z_dZ`dZadZbdZcd	Zd G d de      Ze G d de      Zf G d de      Zg G d de      Zh G d de      ZiddZj G d de      Zk G d de      Zl G d de      Zm G d de      Zn G d de      Zo G d de      Zp G d de      Zq G d de      Zr G d de      Zs G d de      Ztd:Zud>ZvdZwd ZxdZydZz G d de<      Z{dZ| G d de      Z} G d de      Z~ ee~      ZdZdZdZdZdZdZd1ZdZdZd2ZdÐZdĐZdŐZdƐZd Zeez  ez  ez  ez  ez  ez  ez  ez  ez  ez  ez  ez  ez  ez  ZdZdZeZdZdZdZdZdZdZd1Zd Zeez  ez  ez  ez  ez  ez  ez  ez  ez  ZdZdZeZdZdZdZdZdZdZd1Zd Zeez  ez  ez  ez  ez  ez  ez  ez  ez  Z G dǄ dȐe      Z G dɄ dʐe      Z ee      ZdZdZdZdZ G d˄ d̐e      ZdZ G d̈́ dΐe      ZddZ G dτ dАe      Z G dф dҐe      ZdZ G dӄ dԐe      ZdՄ Zdք Zdׄ Zd؄ Zdل Zdڄ Zdۄ Zd܄ Z G d݄ dސe      Z G d߄ de      Z G d de      Z G d de      Z G d de      Zd ZdZdZdZdZdؐZd ZdZdZdZ G d de      Z G d de      Z G d de<      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de<      Z G d de      Z G d de      Z G d de      ZِdZ G d d e      ZېdzZ G d de      ZݐdZ G d de      ZߐddZ G d de      ZddZ G d de      Zd	Z G d
 de      ZdZ G d de      Z G d de      Zd ZdZd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZ G d de      Z G d de      ZdZ G d de      Z  G d de      Z G d de      Z ee      Zd ZdZdZdZdZd	Z	d
Z
dZdZd ZdZ G d de      Z G d de      ZdZ G d  d!e      Z G d" d#e      ZdZd ZdZdZdZ G d$ d%e      Z G d& d'e      ZdZd ZdZdZdZdZ dZ!dZ"dZ#dZ$d5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Z7d5Z8 G d( d)e      Z9 G d* d+e      Z:e	Z;d Z<dZ=dZ>dZ?e	Z@dZAdZBdZCdZDeBeCz  eDz  ZE G d, d-e      ZFdZGd. ZH G d/ d0e      ZI eeI      ZJ G d1 d2e      ZK G d3 d4e      ZLdÐZMd5ZNdZOdĐZPdÐZQd ZRdZS G d6 d7e      ZTd8ZU G d9 d:e      ZV G d; d<e      ZW G d= d>e      ZX G d? d@e      ZY G dA dBe      ZZ G dC dDe      Z[dZ\ G dE dFe      Z]dZ^dG Z_dH Z`dI ZadJ ZbdK ZcdL Zde_dM        Zee_dN        ZfdO ZgdP Zhe_dQ        Zie_dR        ZjdS ZkdT ZldU ZmdV ZndW ZodX ZpdY ZqdZ Zrd[ Zsd\ Ztd] Zud^ Zvd_ Zwe_d`        Zxe_da        Zye_db        Zze_dc        Z{e_dd        Z| G de dfe      Z}dgZ~e_dh        Z G di dje      ZdgZe_dk        Zdl Zdm Zdn Zdo Zdp Ze_dq        Ze_dr        Z e	       fdsZdt Zdu Zdv Zdw Zdx Zdy Zdz 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d Zd Zd Zd Zd Zd Zd Zd Z G d de      ZdzZd Zd Zd Zd Z e	        e	       fdZ e	       fdZd Z G d de      ZdzZd Zef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Đd0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ِdÄ ZڐdĄ Zېe`dń        ZܐdƄ Zݐ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dՄ Zdք Zdׄ Zd؄ Zdل Z e+       f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-d Z.d Z/d1dZ0d!dZ1d Z2d Z3d Z4d Z5d Z6d  Z7e_d!        Z8e_d"        Z9d# Z:d$ Z;d% Z<d& Z=e_d'        Z>d( Z?d) Z@d* ZAd+ ZBd, ZCd- ZDd. ZEd/ ZFe_d0        ZGe_d1        ZHe_d2        ZIe_d3        ZJd4 ZKd5 ZLd6 ZMd7 ZNd8 ZOd9 ZPd: ZQd; ZRd< ZSd= ZTd> ZUe_d?        ZVd@ ZWdA ZXdB ZYdC ZZdD Z[d0dEZ\ e	        e	       fdFZ]dG Z^dH Z_dI Z`dJ ZadK ZbdL ZcdM ZddN ZedO ZfdP ZgdQ ZhdR ZidS ZjdT ZkdU ZldV Zme_dW        ZndX ZodY ZpdZ Zqd[ Zrd\ Zsd2d]Ztd^ Zud_ Zvd` Zwda Zxdb Zydc Zzdd Z{de Z|df Z}dg Z~dh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zd"dpZeZdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zd"dyZe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 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z e       fdZd Z e:       fdZ e	        e	       fdZ G d de      ZddZd Zd Zd Zd Zd Z e        e       fdZd Zd Z e        e       f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 ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZd'Zd6ZdZd7Zd8Zd9Zd:Zd;Zd(Zd>Zd?Zd@ZdAZdBZdCZdDZd)ZdGZdPZdQZdRZdSZdZdTZdUZdVZdWZdXZdYZdZZd[Zd\Zd]Zd^Zd_Zd`ZdaZdbZd/Zdc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d0Zdr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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Z7dZ8dZ9dZ: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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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ѐ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 G d݄ d7e      Z G dބ dߐe      Z ee      Z G d de      Z G d de      Z G d de      ZdZ G d de      ZdZd Zd Zd Zd Zd Zd Zd Zd Zd ZdZdZdZd+ZeZ G d de      Zd ZdZe	Zd ZdZdZdZ G d de      Zd ZdZdZd ZdZd ZdZdZdZdZd ZdZdZdZdZd ZdZdZd
ZdZdZ G d de      Zd Zd Zd ZdZdZdZdZd	Zd Zd Ze	Zd ZdZdZ G d de      ZÐdZĐefd Z G d de      ZƐdZǐd ZdZɐd:Z G d de      Zːd Z G d d	e      Z G d
 de      ZΐdZϐdZАd Z G d de      ZdZd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZ G d de      ZdZ G d de      ZdZ G d de      ZdZ G d de      Zd Zd Zd Zd Zd  Zd! Zd" Zd:Z G d# d$e      Zd% Zd& Zd' Zd( Zd	Zd+Zd ZdZdZdZd:Z G d) d*e      Z ddZ G d+ d,e      Zd- Zd. Zd/ Zy(3      )*)find_librarywrapsN                        	   
                               @                                          i     (   2   )r   l    l     l    l    P   `      i   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   {   |   }   ~                                                                                                                                                                                                                                                                                                                                                                                                i  i  i  i  i  i  i  i  i	  i
  i  i  i  i  i  i  i  i  )r   )r   r	   )r
   l        c                       e Zd Zy)NVMLLibraryMismatchErrorN__name__
__module____qualname__     A/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/pynvml.pyr
  r
        r  r
  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      r  r  zNVMLError.__new__  s@    
 ),,00<C$	
r  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)r  r  r  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  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  nvmlExceptionClassrB    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>.new  s    ''S1
r  r  )rJ  rK  s   ` r  gen_newz,_extractNVMLErrorsAsClasses.<locals>.gen_new  s     Jr  r  N)sysmodulesr  dir
startswithstringcapwordsreplacegetattrtyper  r  setattrr  )this_modulexnvmlErrorsNameserr_name
class_nameerr_valrL  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  _nvmlCheckReturnrb  !  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+  rT  releaseAttributeErrorr7  )names    r  _nvmlGetFunctionPointerrk  (  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'  )rV  )r$  
dictionaryrX  s      r  __init__znvmlFriendlyObject.__init__A  s!     	,AD!Z]+	,r  c                 6    | j                   j                         S r'  )__dict__r%  r#  s    r  r%  znvmlFriendlyObject.__str__D  s    }}$$&&r  N)r  r  r  rp  r%  r  r  r  rm  rm  @  s    ,'r  rm  c                     i }| j                   D ]8  }|d   }t        | |      }t        |t              r|j	                         n|||<   : t        |      }|S Nr   )_fields_rT  
isinstancebytesdecoderm  )structdrX  keyr  r  s         r  nvmlStructToFriendlyObjectr|  G  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  )ru  rr  rM  version_inforV  encode)r  modelrX  r{  r  s        r  nvmlFriendlyObjectToStructr  R  s_    ^^ 'dS!t#E3/E3&' Lr  c                       e Zd Zy)struct_c_nvmlUnit_tNr  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, ))ru  rT  _fmt_append	__class__r  join)r$  resultrX  r{  r  fmts         r  r%  z_PrintableStructure.__str__v  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__rv  rw  r!  rx  )r$  rj  resr  s      r  r  z$_PrintableStructure.__getattribute__  sA    '?E
 c5!#s#
::<
r  c                 n    t        |t              r|j                         }t        t        |   ||       y r'  )rv  r!  r  r  r  __setattr__)r$  rj  r  r  s      r  r  z_PrintableStructure.__setattr__  s,    eS! LLNE!44T5Ar  )	r  r  r  __doc__r  r%  r  r  __classcell__r  s   @r  r  r  b  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_trj  r,   idserialfirmwareVersionNr  r  r  c_charru  r  r  r  r  r    9    	"	v{	6B;	FRK(	Hr  r  c                       e Zd ZdefgZy)c_nvmlC2cModeInfo_v1_tisC2cEnabledNr  r  r  c_uintru  r  r  r  r  r    s    	 Hr  r  i  c                   "    e Zd Zdedz  fdefgZy)c_nvmlLedState_tcauser-   colorN)r  r  r  r  _nvmlLedColor_tru  r  r  r  r  r    s    	&3,	/"Hr  r  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  r  r  ru  r  r  r  r  r    s-    	&3,	F	F	&	Hr  r  c                       e Zd ZdefdefgZy)c_nvmlUnitFanInfo_tspeedr  N)r  r  r  r  _nvmlFanState_tru  r  r  r  r  r    s    	&	/"Hr  r  c                   "    e Zd Zdedz  fdefgZy)c_nvmlUnitFanSpeeds_tfansr"   countN)r  r  r  r  r  ru  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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d
d
dddddddZy)nvmlPciInfoExt_v1_tversiondomainbusdevicepciDeviceIdpciSubSystemId	baseClasssubClassbusId0x%04X0x%02X0x%08Xz0x%01X)r  r  r  r  r  r  r  r  N)r  r  r  r  r  "NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZEru  r  r  r  r  r  r    sw    	F	6		6		6"	f	V	&==>
H  ('''''''	Er  r  i@  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_tr  r  r  r  r  r  	reserved0	reserved1	reserved2	reserved3r  r  r  r  r  r  r  r  N)r  r  r  r  %NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZEr  ru  r  r  r  r  r  r    sx    	&@@A	6		6	 
6"	f	f	f	fH  (''''Er  r  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busIdLegacyr  r  r  r  r  r  r  r  r  N)	r  r  r  r  r  r  r  ru  r  r  r  r  r  r    sj     
!FFG	6		6	 
6" 
&==>H  (''''Er  r  c                   "    e Zd Zdefdeez  fgZy)!c_nvmlSystemDriverBranchInfo_v1_tr  branchN)r  r  r  r  r  &NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZEru  r  r  r  r  r    s    	F	6BBCHr  r  iT  c                   "    e Zd Zdefdeez  fgZy)c_nvmlExcludedDeviceInfo_tpciuuidN)r  r  r  r  r  NVML_DEVICE_UUID_BUFFER_SIZEru  r  r  r  r  r    s    		667Hr  r  c                       e Zd ZdefdefgZy)nvmlNvLinkUtilizationControl_tunits	pktfilterN)r  r  r  "_nvmlNvLinkUtilizationCountUnits_t%_nvmlNvLinkUtilizationCountPktTypes_tru  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usedr  %d BNr  r  r  c_ulonglongru  r  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_tr  r  reservedr  r  r  r  Nr  r  r  r  r  ru  r  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bar1Usedr  r  Nr  r  r  r  r  r  4  s-    	k"	[!	[!H
 &!Er  r  c                       e Zd ZdefdefgZy)nvmlClkMonFaultInfo_tclkApiDomainclkDomainFaultMaskNr  r  r  r  r  r  <  s    (%v.Hr  r  c                   (    e Zd Zdefdefdeez  fgZy)nvmlClkMonStatus_tbGlobalStatusclkMonListSize
clkMonListN)r  r  r  r  r  MAX_CLK_DOMAINSru  r  r  r  r  r  C  s'     &)!6*4FG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_v2_tpidusedGpuMemorygpuInstanceIdcomputeInstanceIdr  Nr  r  r  r  r  r  T  s4    		+&	&!	f%	H f%Er  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_nvmlProcessDetail_v1_tr  r  r  r  usedGpuCcProtectedMemoryNr  r  r  r  r  ru  r  r  r  r  r  f  s0    		+&	&!	f%	#[1Hr  r  c                   <    e Zd Zdefdefdefd ee      fgZddiZy)c_nvmlProcessDetailList_v1_tr  modenumProcArrayEntries	procArrayr  N)	r  r  r  r  _nvmlProcessMode_tPOINTERr  ru  r  r  r  r  r  r  o  s<    	F	#$	'	g678	H #F+Er  r  i  c                       e Zd ZdefdefgZy)c_nvmlBridgeChipInfo_trU  	fwVersionN)r  r  r  _nvmlBridgeChipType_tr  ru  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  r  r  ru  r  r  r  r  r    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  ru  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memoryr  z%d %%N)r  r  r  r  ru  r  r  r  r  r!  r!    s$    		6H '"Er  r!  c                   "    e Zd Zdefdedz  fgZy)c_nvmlHwbcEntry_thwbcIdr  r   N)r  r  r  r  r  ru  r  r  r  r%  r%    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defde	fgZ
y)	c_nvmlValue_tdValuiValulValullValsllValsiValusValN)r  r  r  c_doubler  c_ulongr  
c_longlongc_intc_ushortru  r  r  r  r(  r(    sA    		&	'	;	:	%	(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(  ru  r  r  r  r6  r6    s    	k"	&Hr  r6  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(  ru  r  r  r  r>  r>    sB    	H	H	g	 	&'	}%	- Hr  r>  i  c                   :     e Zd Zdefdeez  fdefgZ fdZ xZS )!c_nvmlNvlinkSupportedBwModes_v1_tr  bwModestotalBwModesc                 6    t         t        |   t               y N)r  )r  rJ  rp  nvmlNvlinkSupportedBwModes_v1r$  r  s    r  rp  z*c_nvmlNvlinkSupportedBwModes_v1_t.__init__      /?He?fr  )	r  r  r  r  c_uint8$NVML_NVLINK_TOTAL_SUPPORTED_BW_MODESru  rp  r  r  s   @r  rJ  rJ    s4    	F	GBBC	!Hg gr  rJ  i  c                   4     e Zd ZdefdefdefgZ fdZ xZS )c_nvmlNvlinkGetBwMode_v1_tr  bIsBestbwModec                 6    t         t        |   t               y rN  )r  rU  rp  nvmlNvlinkGetBwMode_v1rP  s    r  rp  z#c_nvmlNvlinkGetBwMode_v1_t.__init__      ($8AW8Xr  r  r  r  r  rR  ru  rp  r  r  s   @r  rU  rU    s.    	F	F	7HY Yr  rU  c                   4     e Zd ZdefdefdefgZ fdZ xZS )c_nvmlNvlinkSetBwMode_v1_tr  bSetBestrW  c                 6    t         t        |   t               y rN  )r  r]  rp  nvmlNvlinkSetBwMode_v1rP  s    r  rp  z#c_nvmlNvlinkSetBwMode_v1_t.__init__  rZ  r  r[  r  s   @r  r]  r]    s.    	F	V	7HY Yr  r]  c                       e Zd ZdefdefgZy) c_nvmlVgpuHeterogeneousMode_v1_tr  r  Nr  r  r  r  rb  rb    s    	F	Hr  rb  c                       e Zd ZdefdefgZy)c_nvmlVgpuPlacementId_v1_tr  placementIdNr  r  r  r  rd  rd    s    	F	Hr  rd  c                   4    e Zd Zdefdefdefd ee      fgZy)c_nvmlVgpuPlacementList_v1_tr  r  placementSizeplacementIdsNr  r  r  r  r  ru  r  r  r  rg  rg    s-    	F	&	&!	)	Hr  rg  c                   :    e Zd Zdefdefdefd ee      fdefgZy)c_nvmlVgpuPlacementList_v2_tr  rh  r  ri  r  Nrj  r  r  r  rl  rl     s5    	F	&!	&	)	Hr  rl  i   c                       e Zd ZdefdefgZy)c_nvmlVgpuTypeBar1Info_v1_tr  bar1SizeNr	  r  r  r  rn  rn    s    	F	[!Hr  rn  i  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vgpuInstancer7  smUtilmemUtilencUtildecUtilN)r  r  r  _nvmlVgpuInstance_tr  r(  ru  r  r  r  rq  rq    s:    	,-	k"	=!	M"	M"	M"Hr  rq  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_nvmlVgpuInstanceUtilizationInfo_v1_tr7  rr  rs  rt  ru  rv  jpgUtilofaUtilN)r  r  r  r  rw  r(  ru  r  r  r  ry  ry    sJ    	k"	,-	=!	M"	M"	M"	M"	M"	Hr  ry  c                   :    e Zd Zdefdefdefdefd ee      fgZy)'c_nvmlVgpuInstancesUtilizationInfo_v1_tr  sampleValTypevgpuInstanceCountlastSeenTimeStampvgpuUtilArrayN)	r  r  r  r  rG  r  r  ry  ru  r  r  r  r}  r}  )  s8    	F	*+	f%	k*	'"HIJHr  r}  i   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_trr  r  processNamer7  rs  rt  ru  rv  N)	r  r  r  rw  r  r  NVML_VGPU_NAME_BUFFER_SIZEr  ru  r  r  r  r  r  4  sO    	,-		!;;<	k"	6	F	F	F	Hr  r  c                   R    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y)%c_nvmlVgpuProcessUtilizationInfo_v1_tr  r7  rr  r  rs  rt  ru  rv  rz  r{  N)	r  r  r  r  r  r  rw  r  ru  r  r  r  r  r  @  s_    	!;;<	k"	,-		6	F	F	F	F	FHr  r  c                   4    e Zd Zdefdefdefd ee      fgZy)'c_nvmlVgpuProcessesUtilizationInfo_v1_tr  vgpuProcessCountr  vgpuProcUtilArrayN)r  r  r  r  r  r  r  ru  r  r  r  r  r  N  s/    	F	V$	k*	g&KLM	Hr  r  c                       e Zd ZdefdefgZy)nvmlVgpuRuntimeState_v1_tr  sizeNr	  r  r  r  r  r  X  s    	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  rE  c_uint16rR  ru  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  rR  r  r  ru  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  rr  	codecTypehResolutionvResolution
averageFpsencodeLatencyNr  r  r  r  rw  ru  r  r  r  r  r  y  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  r7  rs  rt  ru  rv  Nr	  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defgZy	)
!c_nvmlProcessUtilizationInfo_v1_tr7  r  rs  rt  ru  rv  rz  r{  Nr  r  r  r  r  ru  r  r  r  r  r    sH    	k"		6	F	F	F	F	F	Hr  r  c                   4    e Zd Zdefdefdefd ee      fgZy)#c_nvmlProcessesUtilizationInfo_v1_tr  processSamplesCountr  procUtilArrayN)r  r  r  r  r  r  r  ru  r  r  r  r  r    s/    	F	'	k*	'"CDE	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_tr  r  NVML_GRID_LICENSE_BUFFER_SIZEr  ru  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  r3  r  r  #NVML_GRID_LICENSE_FEATURE_MAX_COUNTru  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  r  r  r  ru  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  r3  r  r  r  ru  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  r3  r  r  r  ru  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  r3  r  r  r  ru  r  r  r  r  r    s(    	!5)	"F+	!#@Cf#fgHr  r  c                       e Zd ZdefdefgZy)c_nvmlMarginTemperature_v1_tr  marginTemperatureN)r  r  r  r  r3  ru  r  r  r  r  r    s    	F	e$Hr  r  c                   (    e Zd Zdeez  fdeez  fgZy)c_nvmlUUIDValue_tr!  rw  N)r  r  r  r  NVML_DEVICE_UUID_ASCII_LENc_ubyteNVML_DEVICE_UUID_BINARY_LENru  r  r  r  r  r    s%    	&556	'778Hr  r  i4  c                   4     e Zd ZdefdefdefgZ fdZ xZS )c_nvmlUUID_tr  rU  r  c                 6    t         t        |   t               y rN  )r  r  rp  nvmlUUID_v1rP  s    r  rp  zc_nvmlUUID_t.__init__  s    lD*;*?r  )r  r  r  r  r  ru  rp  r  r  s   @r  r  r    s/    	F		#$H@ @r  r  c                       e Zd Zy)struct_c_nvmlEventSet_tNr  r  r  r  r  r    r  r  r  i      i   i    i @  i   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_tr  	eventType	eventDatar  r  r  N)r  r  r  c_nvmlDevice_tr  r  ru  r  r  r  r  r  r  f  s=    	>"	k"	k"	&!	f%H (#Er  r  c                       e Zd Zy)struct_c_nvmlSystemEventSet_tNr  r  r  r  r  r  p  r  r  r  c                   .     e Zd ZdefdefgZ fdZ xZS )&c_nvmlSystemEventSetCreateRequest_v1_tr  setc                 6    t         t        |   t               y rN  )r  r  rp  "nvmlSystemEventSetCreateRequest_v1rP  s    r  rp  z/c_nvmlSystemEventSetCreateRequest_v1_t.__init__  s    4dDMoDpr  r  r  r  r  c_nvmlSystemEventSet_tru  rp  r  r  s   @r  r  r  z  s'    	F	&'H
q qr  r  c                   .     e Zd ZdefdefgZ fdZ xZS )$c_nvmlSystemEventSetFreeRequest_v1_tr  r  c                 6    t         t        |   t               y rN  )r  r  rp   nvmlSystemEventSetFreeRequest_v1rP  s    r  rp  z-c_nvmlSystemEventSetFreeRequest_v1_t.__init__      2DBKkBlr  r  r  s   @r  r  r    s'    	F	&'H
m mr  r  c                   4     e Zd ZdefdefdefgZ fdZ xZS )%c_nvmlSystemRegisterEventRequest_v1_tr  
eventTypesr  c                 6    t         t        |   t               y rN  )r  r  rp  !nvmlSystemRegisterEventRequest_v1rP  s    r  rp  z.c_nvmlSystemRegisterEventRequest_v1_t.__init__      3TCLmCnr  )	r  r  r  r  r  r  ru  rp  r  r  s   @r  r  r    s/    	F	{#	&'Ho or  r  c                   $    e Zd ZdefdefgZddiZy)c_nvmlSystemEventData_v1_tr  gpuIdr  N)r  r  r  r  r  ru  r  r  r  r  r  r    s%    	k"	&H (#Er  r  c                   R     e Zd Zdefdefdefd ee      fdefdefgZ fdZ xZ	S )$c_nvmlSystemEventSetWaitRequest_v1_tr  	timeoutmsr  datadataSizenumEventc                 6    t         t        |   t               y rN  )r  r  rp   nvmlSystemEventSetWaitRequest_v1rP  s    r  rp  z-c_nvmlSystemEventSetWaitRequest_v1_t.__init__  r  r  )
r  r  r  r  r  r  r  ru  rp  r  r  s   @r  r  r    sM    	F	f	&'	345	V	VHm mr  r  c                 @    t        d      } ||       }t        |       y)zx
    C API binding for c_nvmlSystemEventSetFree
    :param req: reference of c_nvmlSystemEventSetCreateRequest_v1_t
    nvmlSystemEventSetCreateNrk  rb  reqfnra  s      r  c_nvmlSystemEventSetCreater
         
 
!!;	<B
S'CSr  c                 @    t        d      } ||       }t        |       y)zv
    C API binding for c_nvmlSystemEventSetFree
    :param req: reference of c_nvmlSystemEventSetFreeRequest_v1_t
    nvmlSystemEventSetFreeNr  r  s      r  c_nvmlSystemEventSetFreer    s     
 
!!9	:B
S'CSr  c                 @    t        d      } ||       }t        |       y)zw
    C API binding for nvmlSystemRegisterEvents
    :param req: reference of c_nvmlSystemRegisterEventRequest_v1_t
    nvmlSystemRegisterEventsNr  r  s      r  c_nvmlSystemRegisterEventsr    r  r  c                 V    t        d      } ||       }|t        k(  r|S t        |       y)zt
    C API binding for nvmlSystemEventSetWait
    :param req: reference of c_nvmlSystemEventSetWaitRequest_v1_t
    nvmlSystemEventSetWaitN)rk  r4  rb  r  s      r  c_nvmlSystemEventSetWaitr    s.    
 
!!9	:B
S'C
  
Sr  c                     | t         k7  rt        t              t               }| |_        d|_        t        t        |             |j
                  st        t              |j
                  S )z
    Create an NVML system event set.
    :param version: The version of the request.
    :return: A ctypes pointer to the created c_nvmlSystemEventSet_t structure.
    N)	r  r  $NVML_ERROR_ARGUMENT_VERSION_MISMATCHr  r  r  r
  byrefr=  )r  r  s     r  r  r    s[     44<== 1
2CCKCGuSz* 77)**77Nr  c                     | t         k7  rt        t              t               }| |_        ||_        t        t        |             y)z
    Free an NVML system event set.
    :param version: The version of the request.
    :param setHandle: A ctypes pointer to a c_nvmlSystemEventSet_t structure.
    N)r  r  r  r  r  r  r  r  )r  	setHandler  s      r  r  r    s;     22<==
.
0CCKCGU3Z(r  c                     | t         k7  rt        t              t               }| |_        ||_        ||_        t        t        |             y)z
    Register events for an NVML system event set.
    :param version: The version of the request.
    :param eventTypes: A bitmask of event types to register.
    :param setHandle: A ctypes pointer to a c_nvmlSystemEventSet_t structure.
    N)	r  r  r  r  r  r  r  r  r  )r  r  r  r  s       r  r  r    sB     33<==
/
1CCKCNCGuSz*r  c                 b   | t         k7  rt        t              t               }| |_        ||_        ||_        ||_        ||_        t        t        |            }|t        k(  rg S g }t        |j                        D ]0  }|j                  ||   j                  ||   j                   d       2 |S )a  
    Wait for events in an NVML system event set.
    :param version: The version of the request.
    :param setHandle: A ctypes pointer to a c_nvmlSystemEventSet_t structure.
    :param timeoutMs: Timeout in milliseconds.
    :param eventData: A ctypes array of c_nvmlSystemEventData_v1_t for event data.
    :param eventDataSize: Number of c_nvmlSystemEventData_v1_t in evenData array..
    :return: A list of dictionaries containing event data.
    )r  r  )r  r  r  r  r  r  r  r  r   r  r  r4  ranger  r  r  r  )	r  r  	timeoutMsr  eventDataSizer  ra  eventsis	            r  r  r    s     22<==
.
0CCKCMCGCH CL
"5:
.C
  	 F3<<  "1//q\''
 	
 Mr  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"  1  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  r*  r*  <  s    v&v&Hr  r*  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  r  _nvmlVgpuGuestInfoState_tr  r  #NVML_VGPU_METADATA_OPAQUE_DATA_SIZEru  r  r  r  r.  r.  A  sp    F#V$!#<=%v0V'VW$f/U&UVVaZ()62#V,!6*v(KKL
Hr  r.  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  r/  r2  pgpuVirtualizationCapsr  r   hostSupportedVgpuRanger5  r6  N)	r  r  r  r  r  r  r*  (NVML_VGPU_PGPU_METADATA_OPAQUE_DATA_SIZEru  r  r  r  r:  r:  N  sZ    F#V$$f/U&UV)62VaZ()+>?!6*v(PPQHr  r:  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_tru  r  r  r  r?  r?  Y  s    &(BC)+PQHr  r?  c                       e Zd ZdefdefgZy)c_nvmlVgpuSchedDataWithARR_t	avgFactor	timesliceNr  r  r  r  rE  rE  o      		Hr  rE  c                       e Zd ZdefgZy)c_nvmlVgpuSchedData_trG  Nr  r  r  r  rJ  rJ  u      	Hr  rJ  c                       e Zd ZdefdefgZy)c_nvmlVgpuSchedulerParams_tvgpuSchedDataWithARRvgpuSchedDataN)r  r  r  rE  rJ  ru  r  r  r  rM  rM  z  s    	!=>	!67Hr  rM  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_trA  timeRunTotaltimeRunswRunlistIdtargetTimeSlicecumulativePreemptionTimeNr  r  r  r  rQ  rQ    s9    	4	4	4	/	4	#4Hr  rQ  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arrModeschedulerParamsentriesCount
logEntriesNr  r  r  r  rM  rQ  !NVML_SCHEDULER_SW_MAX_LOG_ENTRIESru  r  r  r  rX  rX    sA    	F#	F#	F#	78	F#	9<]]^Hr  rX  c                   "    e Zd ZdefdefdefgZy)c_nvmlVgpuSchedulerGetState_trZ  r[  r\  Nr  r  r  r  rM  ru  r  r  r  rb  rb    s"    	F#	F#	78Hr  rb  c                       e Zd ZdefdefgZy)c_nvmlVgpuSchedSetDataWithARR_trF  	frequencyNr  r  r  r  re  re    rH  r  re  c                       e Zd ZdefgZy)c_nvmlVgpuSchedSetData_trG  Nr  r  r  r  rh  rh    rK  r  rh  c                       e Zd ZdefdefgZy)c_nvmlVgpuSchedulerSetParams_trN  rO  N)r  r  r  re  rh  ru  r  r  r  rj  rj    s    	!@A	!9:Hr  rj  c                   "    e Zd ZdefdefdefgZy)c_nvmlVgpuSchedulerSetState_trZ  enableARRModer\  Nr  r  r  r  rj  ru  r  r  r  rl  rl    s"    	F#	F#	:;Hr  rl  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  r  *NVML_SUPPORTED_VGPU_SCHEDULER_POLICY_COUNTru  r  r  r  rp  rp    sO    	)S ST	'	'	'	'	'	'	'	Hr  rp  c                   .    e Zd Zdefdefd ee      fgZy)c_nvmlVgpuTypeIdInfo_v1_tr  	vgpuCountvgpuTypeIdsNrj  r  r  r  r{  r{    s%    	F	f	(Hr  r{  c                   "    e Zd ZdefdefdefgZy)c_nvmlVgpuTypeMaxInstance_v1_tr  
vgpuTypeIdmaxInstancePerGINr  r  r  r  r  r    s!    	F	v	V$Hr  r  c                   .    e Zd Zdefdefd ee      fgZy)!c_nvmlActiveVgpuInstanceInfo_v1_tr  r|  vgpuInstancesNrj  r  r  r  r  r    s%    	F	f	'&/*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_nvmlVgpuSchedulerState_v1_tr  rY  rZ  rm  r\  Nrn  r  r  r  r  r    s2    	F	V	F#	&!	:;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_nvmlVgpuSchedulerStateInfo_v1_tr  rY  rZ  r[  r\  Nrc  r  r  r  r  r    s2    	F#	F#	F#	F#	78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ez  fgZy)	c_nvmlVgpuSchedulerLogInfo_v1_tr  rY  rZ  r[  r\  r]  r^  Nr_  r  r  r  r  r    sI    	F#	F#	F#	F#	78	F#	9<]]^Hr  r  i% c                   :    e Zd Zdefdefdefd ee      fdefgZy)%c_nvmlVgpuCreatablePlacementInfo_v1_tr  r  r  ri  rh  Nrj  r  r  r  r  r    s5    	F	v	&	)	&!Hr  r  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  rr  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startr  Nr  r  r  r  r  r  4	      &! 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_tr  isP2pSupported
sliceCountinstanceCountmultiprocessorCountcopyEngineCountdecoderCountencoderCount	jpegCountofaCountmemorySizeMBNr	  r  r  r  r  r  9	  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  r  r  r  r  r  r  r  r  r  r  r  rj  c                 6    t         t        |   t               y rN  )r  r  rp  nvmlGpuInstanceProfileInfo_v2rP  s    r  rp  z*c_nvmlGpuInstanceProfileInfo_v2_t.__init__Y	  rQ  r  )
r  r  r  r  r  r  NVML_DEVICE_NAME_V2_BUFFER_SIZEru  rp  r  r  s   @r  r  r  I	  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_tr  r  	profileId	placementN)r  r  r  r  r  r  ru  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  c	  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  t	  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_tr  r  r  r  sharedCopyEngineCountsharedDecoderCountsharedEncoderCountsharedJpegCountsharedOfaCountNr  r  r  r  r  r  y	  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  r  r  r  r  r  r  r  r  r  rj  c                 6    t         t        |   t               y rN  )r  r  rp  !nvmlComputeInstanceProfileInfo_v2rP  s    r  rp  z.c_nvmlComputeInstanceProfileInfo_v2_t.__init__	  r  r  )	r  r  r  r  r  r  ru  rp  r  r  s   @r  r  r  	  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_tr  gpuInstancer  r  r  N)r  r  r  r  c_nvmlGpuInstance_tr  r  ru  r  r  r  r  r  	  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  	  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  r  r  NVML_MAX_GPU_UTILIZATIONSru  r  r  r  r  r  	  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  r3  ru  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  r  r   NVML_MAX_THERMAL_SENSORS_PER_GPUru  r  r  r  r  r  	  s!    &!36VVWYHr  r  c                   (    e Zd ZdefdefdefdefgZy)c_nvmlCoolerInfo_tr  indexcoolerControlTypecoolerTargetN)r  r  r  r  _nvmlCoolerControl_t_nvmlCoolerTarget_tru  r  r  r  r  r  	  s+    F#&!$&:;!45Hr  r  c                     t               }t        |_        d|_        t	        d      } || t        |            }t        |       |j                  |j                  gS )Nr   nvmlDeviceGetCoolerInfo)	r  nvmlCoolerInfo_v1r  r  rk  r  rb  r  r  )handlec_coolerInfor	  ra  s       r  r  r  	  sU    %'L,LL	 !:	;B
VU<(
)CS**L,E,EFFr  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  i   c                   "    e Zd ZdefdefdefgZy)c_nvmlConfComputeSystemState_tenvironment	ccFeaturedevToolsModeNr  r  r  r  r  r  
  s!    'f%(Hr  r  i  c                   @     e Zd ZdefdefdefdefdefgZ fdZ xZS )$c_nvmlSystemConfComputeSettings_v1_tr  r  r  r  multiGpuModec                 6    t         t        |   t               y rN  )r  r  rp   nvmlSystemConfComputeSettings_v1rP  s    r  rp  z-c_nvmlSystemConfComputeSettings_v1_t.__init__'
  r  r  r  r  r  r  ru  rp  r  r  s   @r  r  r   
  s>    F#'f%((	Hm mr  r  c                       e Zd ZdefdefgZy)c_nvmlConfComputeSystemCaps_tcpuCapsgpusCapsNr  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_nvmlConfComputeMemSizeInfo_tprotectedMemSizeKibunprotectedMemSizeKibNr  r  r  r  r  r  /
  s    &4(+6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_nvmlConfComputeGpuCertificate_tcertChainSizeattestationCertChainSize	certChainattestationCertChainN)r  r  r  r  rR  NVML_GPU_CERT_CHAIN_SIZE$NVML_GPU_ATTESTATION_CERT_CHAIN_SIZEru  r  r  r  r  r  4
  s5     &)+V4g(@@A'3W)WXHr  r  c                   F    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ez  fgZy)'c_nvmlConfComputeGpuAttestationReport_tisCecAttestationReportPresentattestationReportSizececAttestationReportSizenonceattestationReportcecAttestationReportN)	r  r  r  r  rR  NVML_CC_GPU_CEC_NONCE_SIZE#NVML_CC_GPU_ATTESTATION_REPORT_SIZE'NVML_CC_GPU_CEC_ATTESTATION_REPORT_SIZEru  r  r  r  r  r  ;
  sK    0&9(&1+V4'$>>?$g0S&ST'3Z)Z[Hr  r  c                       e Zd ZdefdefgZy).c_nvmlConfComputeSetKeyRotationThresholdInfo_tr  maxAttackerAdvantageNr  r  r  r  r1  ru  r  r  r  r  r  D
  s    F#'1Hr  r  c                       e Zd ZdefdefgZy).c_nvmlConfComputeGetKeyRotationThresholdInfo_tr  attackerAdvantageNr  r  r  r  r  r  J
  s    F#$g.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'  )rv  r!  r  rw  rx  )argskwargsargr  funcs       r  wrapperz convertStrBytes.<locals>.wrapperZ
  so     JNN#
3 4

#=NND#F# c5!#s#
::<
 Os   )A-r  )r   rM  r~  r&  r'  s   ` r  convertStrBytesr)  Q
  s5     4[  4Kr  c                 .     t                fd       }|S )Nc                  f    	  | i |S # t         $ r t        dj                  z   dz         w xY w)NzUnversioned function called and the pyNVML version does not match the NVML lib version. Either use matching pyNVML and NVML lib versions or use a versioned function such as _v2)NVMLError_FunctionNotFoundr
  r  )r#  r$  r&  s     r  r'  z'throwOnVersionMismatch.<locals>.wrapperm
  s_    	h((() 	h* ,O RVQ^Q^,_ bg,g h h	hs    %0r   r(  s   ` r  throwOnVersionMismatchr.  l
  s"    
4[h h Nr  c                     t                t        d      } ||       }t        |       t        j	                          t
        dz  at        j                          y )NnvmlInitWithFlagsr   )_LoadNvmlLibraryrk  rb  re  rf  _nvmlLib_refcountrh  )r  r	  ra  s      r  r0  r0  y
  sN    
 
!!4	5B
U)CS r  c                      t        d       y rt  )r0  r  r  r  nvmlInitr4  
  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)rg  re  rf  rM  platformCDLLospathr  getenvOSErrorrb  r6  rh  )oses    r  r1  r1  
  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   )rk  rb  re  rf  r2  rh  )r	  ra  s     r  rA  rA  
  sN     
!	0B
$CS 	Qr  c                 B    t        d      }t        |_         ||       }|S )Nr"  )rk  c_char_prestype)r  r	  ra  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_SIZErk  r  rb  r  	c_versionr	  ra  s      r  rF  rF  
  s<    $%IJI	 !;	<B
YCD
ECS??r  c                  |    t               } t        d      } |t        |             }t        |       | j                  S )NnvmlSystemGetCudaDriverVersionr3  rk  r  rb  r  c_cuda_versionr	  ra  s      r  rL  rL  
  s7    WN	 !A	BB
U>"
#CSr  c                  |    t               } t        d      } |t        |             }t        |       | j                  S )N!nvmlSystemGetCudaDriverVersion_v2rM  rN  s      r  rQ  rQ  
  s7    WN	 !D	EB
U>"
#CSr  c                     t        d      }t        d      } |t        |       |t        d            }t        |       |j                  S )Nr  nvmlSystemGetProcessName)rG  rk  r  rb  r  )r  c_namer	  ra  s       r  rS  rS  
  s?    !$'F	 !;	<B
VC[&&,
/CS<<r  c                      t        t              } t        d      } || t        t                    }t	        |       | j
                  S )NnvmlSystemGetDriverVersion)rG  r  rk  r  rb  r  rI  s      r  rV  rV  
  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)	r  rk  r  r`  r1  r  r  r%  rb  )c_counthicsr	  ra  	hic_arrays        r  rX  rX  
  s    QiGD	 !:	;B U7^T
"C 
		,	,n 		!GMM1I;D
U7^T
"CSKr  c                      t        d      } t        | _        t        d      } |t	        |       t        t                    }t        |       | S )Nr   nvmlSystemGetDriverBranch)r  SystemDriverBranchInfo_v1r  rk  r  r  r  rb  )c_branchInfor	  ra  s      r  r]  r]    sD    4Q7L4L
!"=
>B
U< &)O"P
QCSr  c                  |    t               } t        d      } |t        |             }t        |       | j                  S )NnvmlUnitGetCountr  rk  r  rb  r  rY  r	  ra  s      r  ra  ra    s4    hG	 !3	4B
U7^
CS==r  c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )NnvmlUnitGetHandleByIndex)r  c_nvmlUnit_trk  r  rb  )r  c_indexunitr	  ra  s        r  re  re    s:    UmG>D	 !;	<B
WeDk
"CSKr  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlUnitGetUnitInfo)r  rk  r  rb  rh  c_infor	  ra  s       r  rj  rj     s2    F	 !6	7B
T5=
!CSMr  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlUnitGetLedState)r  rk  r  rb  )rh  c_stater	  ra  s       r  rn  rn  '  s2    !G	 !6	7B
T5>
"CSNr  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlUnitGetPsuInfo)r  rk  r  rb  rk  s       r  rq  rq  .  s2    F	 !5	6B
T5=
!CSMr  c                     t               }t        d      } || t        |      t        |            }t        |       |j                  S )NnvmlUnitGetTemperaturerb  )rh  rU  c_tempr	  ra  s        r  rs  rs  5  s<    XF	 !9	:B
T6$<v
/CS<<r  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlUnitGetFanSpeedInfo)r  rk  r  rb  )rh  c_speedsr	  ra  s       r  rv  rv  <  s2    $&H	 !:	;B
T5?
#CSOr  c                     t        d      }t        d      } || t        |      d       }|t        k(  rt        }t        |       |j                  S )Nr   nvmlUnitGetDevices)r  rk  r  r1  r`  rb  r  )rh  rY  r	  ra  s       r  nvmlUnitGetDeviceCountrz  D  sH    QiG	 !5	6B
T5>4
(C++S==r  c                     t        t        |             }t        |j                  z  } |       }t	        d      } || t        |      |      }t        |       |S )Nry  )r  rz  r  r  rk  r  rb  )rh  rY  device_array	c_devicesr	  ra  s         r  ry  ry  N  sR    +D12G!GMM1LI	 !5	6B
T5>9
-CSr  c                  |    t               } t        d      } |t        |             }t        |       | j                  S )NnvmlDeviceGetCount_v2rb  rc  s      r  nvmlDeviceGetCountr  X  s4    hG	 !8	9B
U7^
CS==r  c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )NnvmlDeviceGetHandleByIndex_v2r  r  rk  r  rb  )r  rg  r  r	  ra  s        r  nvmlDeviceGetHandleByIndexr  _  s;    UmGF	 !@	AB
WeFm
$CSMr  c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )NnvmlDeviceGetHandleBySerialrC  r  rk  r  rb  )r  c_serialr  r	  ra  s        r  r  r  g  s<    HF	 !>	?B
XuV}
%CSMr  c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )NnvmlDeviceGetHandleByUUIDr  )r  c_uuidr  r	  ra  s        r  r  r  p  s;    d^FF	 !<	=B
VU6]
#CSMr  c                 0   t               }||_        |t        k(  r| |j                  _        n.|t
        k(  r%t        |j                  j                  | t               t               }t        d      } |t        |      t        |            }t        |       |S )NnvmlDeviceGetHandleByUUIDV)r  rU  NVML_UUID_TYPE_ASCIIr  r!  NVML_UUID_TYPE_BINARYmemmoverw  r  r  rk  r  rb  )r  rU  r  r  r	  ra  s         r  r  r  y  sy    ^FFK##	&	&""D*EFF	 !=	>B
U6]E&M
*CSMr  c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )N nvmlDeviceGetHandleByPciBusId_v2r  )pciBusIdc_busIdr  r	  ra  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)rG  r  rk  r  rb  r  )r  rT  r	  ra  s       r  r  r    >    !"ABF	 !4	5B
VVV$CD
ECS<<r  c                   "    e Zd Zdefdeez  fgZy)c_nvmlDevicePerfModes_v1_tr  r!  Nr  r  r  r  r  NVML_PERF_MODES_BUFFER_SIZEru  r  r  r  r  r        	F	445Hr  r  i c                     t               }t        |_        t        d      } || t	        |            }t        |       |j                  S )NnvmlDeviceGetPerformanceModes)r  nvmlDevicePerfModes_v1r  rk  r  rb  r!  )r  	perfModesr	  ra  s       r  r  r    s@    *,I.I	 !@	AB
VU9%
&CS==r  c                   "    e Zd Zdefdeez  fgZy)"c_nvmlDeviceCurrentClockFreqs_v1_tr  r!  Nr  r  r  r  r  r    r  r  r  c                     t               }t        |_        t        d      } || t	        |            }t        |       |j                  S )NnvmlDeviceGetCurrentClockFreqs)r  nvmlDeviceCurrentClockFreqs_v1r  rk  r  rb  r!  )r  currentClockFreqsr	  ra  s       r  r  r    sE    :< >	 !A	BB
VU,-
.CS   r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetBoardIdrb  )r  c_idr	  ra  s       r  r  r    s6    8D	 !7	8B
VU4[
!CS::r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetMultiGpuBoardrb  )r  
c_multiGpur	  ra  s       r  r  r    s9    J	 !=	>B
VU:&
'CSr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetBrand)_nvmlBrandType_trk  r  rb  r  )r  c_typer	  ra  s       r  r  r    s7    F	 !5	6B
VU6]
#CS<<r  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetC2cModeInfoV)r  rk  r  rb  r  rl  r	  ra  s       r  nvmlDeviceGetC2cModeInfoV1r    s2    #%F	 !<	=B
VU6]
#CSMr  c                     t        |       S r'  )r  r  s    r  r  r        %f--r  c                     t        t              }t        d      } || |t        t                    }t	        |       |j
                  S )NnvmlDeviceGetBoardPartNumber)rG  #NVML_DEVICE_PART_NUMBER_BUFFER_SIZErk  r  rb  r  )r  c_part_numberr	  ra  s       r  r  r    s@    ()LMM	 !?	@B
V]F+N$O
PCSr  c                     t        t              }t        d      } || |t        t                    }t	        |       |j
                  S )NnvmlDeviceGetSerial)rG  NVML_DEVICE_SERIAL_BUFFER_SIZErk  r  rb  r  )r  r  r	  ra  s       r  r  r    s>    #$BCH	 !6	7B
VXv&DE
FCS>>r  c                     t        |      t        u}|r|n
t        |      }t        d      } || |      }|r|S t	        |       |j
                  S )NnvmlDeviceGetModuleId)rU  r  r  rk  rb  r  )r  moduleIdisReferencemoduleIdRefr	  ra  s         r  r  r    sN    x..K)(uXK	 !8	9B
V[
!C
~~r  c                     t         |z  } |       }t        d      } || |t        |      t        |            }t	        |       |S )NnvmlDeviceGetMemoryAffinityr  rk  r  _nvmlAffinityScope_trb  )r  nodeSetSizescopeaffinity_array
c_affinityr	  ra  s          r  r  r    sH     ;.N!J	 !>	?B
V[%
"35I%5P
QCSr  c                     t         |z  } |       }t        d      } || |t        |      t        |            }t	        |       |S )N#nvmlDeviceGetCpuAffinityWithinScoper  )r  
cpuSetSizer  r  r  r	  ra  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  rk  r  rb  )r  r  r  r  r	  ra  s         r  r  r    s@     :-N!J	 !;	<B
VZz!2
3CSr  c                 @    t        d      } ||       }t        |       y )NnvmlDeviceSetCpuAffinityr  r  r	  ra  s      r  r  r    s!    	 !;	<B
V*CSr  c                 @    t        d      } ||       }t        |       y )NnvmlDeviceClearCpuAffinityr  r  s      r  r  r    s!    	 !=	>B
V*CSr  c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )NnvmlDeviceGetNumaNodeIdrk  r3  r  rb  r  )r  r	  nodera  s       r  r  r    s6    	 !:	;B7D
VU4[
!CS::r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetMinorNumberrb  )r  c_minor_numberr	  ra  s       r  r  r    s9    XN	 !;	<B
VU>*
+CSr  c                     t        t              }t        d      } || |t        t                    }t	        |       |j
                  S )NnvmlDeviceGetUUID)rG  NVML_DEVICE_UUID_V2_BUFFER_SIZErk  r  rb  r  )r  r  r	  ra  s       r  r  r  &  r  r  c                     t        t              }t        d      } || t        |      |t	        t                    }t        |       |j                  S )NnvmlDeviceGetInforomVersion)rG  'NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZErk  _nvmlInforomObject_tr  rb  r  )r  infoRomObjectrJ  r	  ra  s        r  r  r  .  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)rG  r  rk  r  rb  r  r  rJ  r	  ra  s       r  r  r  8  s>    $%LMI	 !C	DB
VY'N O
PCS??r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N)nvmlDeviceGetInforomConfigurationChecksumrb  )r  
c_checksumr	  ra  s       r  r  r  A  s9    J	 !L	MB
VU:&
'CSr  c                 @    t        d      } ||       }t        |       y )NnvmlDeviceValidateInforomr  r  s      r  r  r  I  s!    	 !<	=B
V*CSr  c                     t               }t               }t        d      } || t        |      t        |            }t	        |       |j
                  |j
                  gS )NnvmlDeviceGetLastBBXFlushTime)r  r1  rk  r  rb  r  )r  c_timestampc_durationUsr	  ra  s        r  r  r  O  sR    -K9L	 !@	AB
VU;'|)<
=CS|1122r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetDisplayMode_nvmlEnableState_trk  r  rb  r  r  c_moder	  ra  s       r  r  r  W  7    !F	 !;	<B
VU6]
#CS<<r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetDisplayActiver  r  s       r  r  r  ^  s7    !F	 !=	>B
VU6]
#CS<<r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPersistenceModer  )r  ro  r	  ra  s       r  r  r  f  s7     "G	 !?	@B
VU7^
$CS==r  c                 B    t        d      } || |      }t        |       y )NnvmlDeviceGetPciInfoExtr  r  s       r  r  r  m  s$    	 !:	;B
VV
CSr  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetPciInfo_v3r  rk  r  rb  r  s       r  r   r   s  s1    _F	 !:	;B
VU6]
#CSMr  c                     t        |       S r'  )r   r  s    r  nvmlDeviceGetPciInfor  z  s    "6**r  c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )NnvmlDeviceGetClockInfor  rk  _nvmlClockType_tr  rb  r  r  rU  c_clockr	  ra  s        r  r  r  }  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)r  rk  r  _nvmlClockId_tr  rb  r  )r  rU  r  r	  r	  ra  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
r  rk  r  r`  r1  r  rb  r  r  r  )r  rY  r	  ra  clocks_arrayc_clocksprocsr   s           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  )	r  memoryClockMHzrY  r	  ra  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nvmlDeviceGetFanSpeedrb  )r  c_speedr	  ra  s       r  r  r    s6    hG	 !8	9B
VU7^
$CS==r  c                     t               }t        d      } || |t        |            }t        |       |j                  S )NnvmlDeviceGetFanSpeed_v2rb  r  fanr   r	  ra  s        r  r"  r"    s8    hG	 !;	<B
VS%.
)CS==r  c                   "    e Zd ZdefdefdefgZy)c_nvmlFanSpeedInfo_tr  r$  r  Nr  r  r  r  r&  r&    s     	F		&Hr  r&  c                     t               }d|_        t        |_        t	        d      } || t        |            }t        |       |j                  S )Nr   nvmlDeviceGetFanSpeedRPM)r&  r$  nvmlFanSpeedInfo_v1r  rk  r  rb  r  )r  
c_fanSpeedr	  ra  s       r  r(  r(    sI    %'JJN,J	 !;	<B
VU:&
'CSr  c                     t               }t        d      } || |t        |            }t        |       |j                  S )NnvmlDeviceGetTargetFanSpeedrb  r#  s        r  r,  r,    s8    hG	 !>	?B
VS%.
)CS==r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetNumFansrb  )r  	c_numFansr	  ra  s       r  r.  r.  	  s7    I	 !7	8B
VU9%
&CS??r  c                 L    t        d      } || |      }t        |       t        S )NnvmlDeviceSetDefaultFanSpeed_v2rk  rb  r`  )r  r  r	  ra  s       r  r1  r1    s'    	 !B	CB
VU
CSr  c                    t        |      t        uxs t        |      t        u}|r|n
t        |      }|r|n
t        |      }t        d      } || ||      }t	        |       |rt
        S |j                  |j                  gS )NnvmlDeviceGetMinMaxFanSpeedrU  r  r  rk  rb  r`  r  )r  minSpeedmaxSpeedr  minSpeedRefmaxSpeedRefr	  ra  s           r  r4  r4    ss    >/RT(^65QK)(uXK)(uXK	 !>	?B
V[+
.CS&<LX^^X^^,LLr  c                     t        |      t        u}|r|n
t        |      }t        d      } || ||      }t	        |       |rt
        S |j                  S )N nvmlDeviceGetFanControlPolicy_v2r5  )r  r$  fanControlPolicyr  fanControlPolicyRefr	  ra  s          r  r;  r;    sY    '(6K.9*uEU?V	 !C	DB
VS-
.CS&<B,<,B,BBr  c                 `    t        d      } || |t        |            }t        |       t        S )NnvmlDeviceSetFanControlPolicy)rk  _nvmlFanControlPolicy_trb  r`  )r  r$  r<  r	  ra  s        r  r?  r?  '  s0    	 !@	AB
VS12BC
DCSr  c                   "    e Zd ZdefdefdefgZy)c_nvmlTemperature_v1_tr  
sensorTypetemperatureN)r  r  r  r  _nvmlTemperatureSensors_tr3  ru  r  r  r  rB  rB  -  s"    	F	01	Hr  rB  c                     t               }t        |_        t        |      |_        t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetTemperatureV)	rB  nvmlTemperature_v1r  rE  rC  rk  r  rb  rD  r  r  rt  r	  ra  s        r  nvmlDeviceGetTemperatureV1rJ  5  sM    #%F'FN1&9F	 !<	=B
VU6]
#CSr  c                 J    |t         k(  rt        | |      S t        t              r'  )rH  rJ  r  r  )r  r  r  s      r  rG  rG  >  s$    $$)&&99<==r  c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )NnvmlDeviceGetTemperature)r  rk  rE  r  rb  r  rI  s        r  rM  rM  E  s>    XF	 !;	<B
V.v6f
FCS<<r  c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )N!nvmlDeviceGetTemperatureThreshold)r  rk  _nvmlTemperatureThresholds_tr  rb  r  )r  	thresholdrt  r	  ra  s        r  rO  rO  L  s>    XF	 !D	EB
V1)<eFm
LCS<<r  c                     t               }||_        t        d      } || t        |      t	        |            }t        |       y )N!nvmlDeviceSetTemperatureThreshold)r  r  rk  rP  r  rb  )r  rQ  temprt  r	  ra  s         r  rS  rS  S  s>    XFFL	 !D	EB
V1)<eFm
LCSr  c                     t               }t        |_        t        d      } || t	        |            }t        |       |j                  S )NnvmlDeviceGetMarginTemperature)r  nvmlMarginTemperature_v1r  rk  r  rb  r  )r  c_marginTempInfor	  ra  s       r  rV  rV  [  sE    357	 !A	BB
VU+,
-CS---r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPowerState_nvmlPstates_trk  r  rb  r  r  c_pstater	  ra  s       r  rZ  rZ  d  s7    H	 !:	;B
VU8_
%CS>>r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPerformanceStater[  r]  s       r  r`  r`  k  s7    H	 !@	AB
VU8_
%CS>>r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N nvmlDeviceGetPowerManagementModer  )r  
c_pcapModer	  ra  s       r  rb  rb  r  s:    #%J	 !C	DB
VU:&
'CSr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N!nvmlDeviceGetPowerManagementLimitrb  r  c_limitr	  ra  s       r  re  re  y  s6    hG	 !D	EB
VU7^
$CS==r  c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )N,nvmlDeviceGetPowerManagementLimitConstraintsrb  )r  
c_minLimit
c_maxLimitr	  ra  s        r  ri  ri    sR    JJ	 !O	PB
VU:&j(9
:CSj..//r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N(nvmlDeviceGetPowerManagementDefaultLimitrb  rf  s       r  rm  rm    s6    hG	 !K	LB
VU7^
$CS==r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetEnforcedPowerLimitrb  rf  s       r  ro  ro    s6    hG	 !B	CB
VU7^
$CS==r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPowerUsagerb  )r  c_wattsr	  ra  s       r  rq  rq    s6    hG	 !:	;B
VU7^
$CS==r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N#nvmlDeviceGetTotalEnergyConsumption)c_uint64rk  r  rb  r  )r  c_millijoulesr	  ra  s       r  rt  rt    s9    JM	 !F	GB
VU=)
*CSr  c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetGpuOperationMode)_nvmlGpuOperationMode_trk  r  rb  r  r  c_currStatec_pendingStater	  ra  s        r  rx  rx    sT    )+K,.N	 !@	AB
VU;'~)>
?CS~3344r  c                     t        |       d   S rt  rx  r  s    r  $nvmlDeviceGetCurrentGpuOperationModer        (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  rk  r  r  r  rb  )r  r  c_memoryr	  ra  s        r  r  r    sP    !#$%>?$&"$%AB
VU8_
%CSOr  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetBAR1MemoryInfo)r  rk  r  rb  )r  c_bar1_memoryr	  ra  s       r  r  r    s4    &(M	 !>	?B
VU=)
*CSr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetComputeMode)_nvmlComputeMode_trk  r  rb  r  r  s       r  r  r    r  r  c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  fS )N"nvmlDeviceGetCudaComputeCapabilityrM  )r  c_majorc_minorr	  ra  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  rz  s        r  r  r    sT    $&K')N	 !7	8B
VU;'~)>
?CS~3344r  c                     t        |       d   S rt  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  )r  c_defaultStater	  ra  s       r  r  r    s=    ')N	 !>	?B
VU>*
+CS  !!r  c                     t               }t        d      } || t        |      t        |      t	        |            }t        |       |j                  S )NnvmlDeviceGetTotalEccErrors)r  rk  _nvmlMemoryErrorType_t_nvmlEccCounterType_tr  rb  r  )r  	errorTypecounterTyperY  r	  ra  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  rk  r  r  r  rb  )r  r  r  c_countsr	  ra  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  rk  r  r  _nvmlMemoryLocation_tr  rb  r  )r  r  r  locationTyperY  r	  ra  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!  rk  r  rb  )r  c_utilr	  ra  s       r  r  r    s2     "F	 !@	AB
VU6]
#CSMr  c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetEncoderUtilizationrb  r  r  c_samplingPeriodr	  ra  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nvmlDeviceGetDecoderUtilizationrb  r  s        r  r  r    r  r  c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetJpgUtilizationrb  r  s        r  r  r  &  R    XFx	 !>	?B
VU6]E*:$;
<CSLL*0011r  c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetOfaUtilizationrb  r  s        r  r  r  .  r  r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPcieReplayCounterrb  )r  c_replayr	  ra  s       r  r  r  6  s6    xH	 !A	BB
VU8_
%CS>>r  c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetDriverModel)_nvmlDriverModel_trk  r  rb  r  )r  c_currModelc_pendingModelr	  ra  s        r  r  r  =  sT    $&K')N	 !;	<B
VU;'~)>
?CS~3344r  c                     t        |       d   S rt  r  r  s    r  nvmlDeviceGetCurrentDriverModelr  F      #F+A..r  c                     t        |       d   S r  r  r  s    r  nvmlDeviceGetPendingDriverModelr  J  r  r  c                     t        t              }t        d      } || |t        t                    }t	        |       |j
                  S )NnvmlDeviceGetVbiosVersion)rG  %NVML_DEVICE_VBIOS_VERSION_BUFFER_SIZErk  r  rb  r  r  s       r  r  r  N  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_v2r   r   r  rk  r  r`  r1  r  r  rb  r  r|  r  "NVML_VALUE_NOT_AVAILABLE_ulonglongr  r  	r  rY  r	  ra  
proc_arrayc_procsr  r   r  s	            r  r  r  W  s    QiG	 !J	KB
VU7^T
*C|	
-
-  )A-+gmm;
,w1w}}% 	A,WQZ8C!!%G%M%MM$(!LL	  n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   r  rk  r  r`  r1  r  c_nvmlProcessInfo_v3_trb  r  r|  r  r  r  r  r  s	            r  r  r  v  s    QiG	 !J	KB
VU7^T
*C|	
-
-  )A-+gmm;
, w1w}}% 	A,WQZ8C!!%G%M%MM$(!LL	  nr  c                     t        |       S r'  )r  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_v2r   r   r  r  s	            r  r  r    s    QiG	 !K	LB
VU7^T
*C|	
-
-  )A-+gmm;
,w1w}}% 	A,WQZ8C!!%G%M%MM$(!LL	  n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  r  r    s    QiG	 !K	LB
VU7^T
*C|	
-
-  )A-+gmm;
, w1w}}% 	A,WQZ8C!!%G%M%MM$(!LL	  nr  c                     t        |       S r'  )r  r  s    r  %nvmlDeviceGetGraphicsRunningProcessesr    s    3F;;r  c                     t        |       S r'  )*nvmlDeviceGetMPSComputeRunningProcesses_v3r  s    r  'nvmlDeviceGetMPSComputeRunningProcessesr    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   *nvmlDeviceGetMPSComputeRunningProcesses_v2r   r   r  r  s	            r  r  r        QiG	 !M	NB
VU7^T
*C|	
-
-  )A-+gmm;
, w1w}}% 	A,WQZ8C!!%G%M%MM$(!LL	  n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   r  r   r   r  r  s	            r  r  r    r  r  c                 \   t               }||_        ||_        t        d      } || t	        |            }|t
        k(  rg S |t        k(  rt        |j                  z  }t         |       t        t                    |_         || t	        |            }t        |       g }t        |j                        D ]j  }|j                  |   }	|	j                  t        j                   k(  rd |	_        |	j"                  t        j                   k(  rd |	_        |j%                  |	       l |S t'        |      )N%nvmlDeviceGetRunningProcessDetailList)c_nvmlProcessDetailList_tr  r  rk  r  r`  r1  r  r  castr  r  rb  r  r  r  r  r  r  r  )
r  r  r  c_processDetailListr	  ra  r  r  r   r  s
             r  r  r  (  s    35")#	 !H	IB VU./
0C|	
-
-*-@-T-TT(,g['BZ:[(\% 234*>>? 	A%//2C!!%G%M%MM$(!,,0R0X0XX/3,LL	  nr  c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )N%nvmlDeviceGetAutoBoostedClocksEnabledr  )r  c_isEnabledc_defaultIsEnabledr	  ra  s        r  r  r  K  sW    $&K+-	 !H	IB
VU;'/A)B
CCS17788r  c                 T    t        d      } || t        |            }t        |       y )NnvmlUnitSetLedState)rk  r  rb  )rh  r  r	  ra  s       r  r  r  U  s)    	 !6	7B
T?5)
*CSr  c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetPersistenceModerk  r  rb  r  r  r	  ra  s       r  r  r  [  s*    	 !?	@B
V'-
.CSr  c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetComputeMode)rk  r  rb  r  s       r  r  r  a  s*    	 !;	<B
V'-
.CSr  c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetEccModer  r  s       r  r  r  g  s*    	 !7	8B
V'-
.CSr  c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceClearEccErrorCounts)rk  r  rb  )r  r  r	  ra  s       r  r  r  m  s*    	 !@	AB
V*;7
8CSr  c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetDriverModel)rk  r  rb  )r  r  r	  ra  s       r  r  r  s  s*    	 !;	<B
V'.
/CSr  c                 T    t        d      } || t        |            }t        |       y )N%nvmlDeviceSetAutoBoostedClocksEnabledr  )r  enabledr	  ra  s       r  r  r  y  s*    	 !H	IB
V'0
1CSr  c                 h    t        d      } || t        |      t        |            }t        |       y )N,nvmlDeviceSetDefaultAutoBoostedClocksEnabled)rk  r  r  rb  )r  r  r  r	  ra  s        r  r  r    s0    	 !O	PB
V'0&-
@CSr  c                 h    t        d      } || t        |      t        |            }t        |       y )NnvmlDeviceSetGpuLockedClocksrk  r  rb  )r  minGpuClockMHzmaxGpuClockMHzr	  ra  s        r  r  r    s0    	 !?	@B
VVN+VN-C
DCSr  c                 @    t        d      } ||       }t        |       y )NnvmlDeviceResetGpuLockedClocksr  r  s      r  r  r    s!    	 !A	BB
V*CSr  c                 h    t        d      } || t        |      t        |            }t        |       y )NnvmlDeviceSetMemoryLockedClocksr  )r  minMemClockMHzmaxMemClockMHzr	  ra  s        r  r  r    s0    	 !B	CB
VVN+VN-C
DCSr  c                 @    t        d      } ||       }t        |       y )N!nvmlDeviceResetMemoryLockedClocksr  r  s      r  r  r    !    	 !D	EB
V*CSr  c                     t        |      t        u}|r|n
t        |      }t        d      } || |      }t	        |       |rt
        S |S )NnvmlDeviceGetClkMonStatus)rU  r  r  rk  rb  r`  )r  c_clkMonInfor  c_clkMonInfoRefr	  ra  s         r  r  r    sL    |$,>>K&1lu\7JO	 !<	=B
V_
%CS&<8L8r  c                 h    t        d      } || t        |      t        |            }t        |       y )NnvmlDeviceSetApplicationsClocksr  )r  r
  maxGraphicsClockMHzr	  ra  s        r  r  r    s1    	 !B	CB
VVN+V4G-H
ICSr  c                 @    t        d      } ||       }t        |       y )N!nvmlDeviceResetApplicationsClocksr  r  s      r  r  r    r  r  c                 T    t        d      } || t        |            }t        |       y )N!nvmlDeviceSetPowerManagementLimitr  )r  limitr	  ra  s       r  r  r    s(    	 !D	EB
VVE]
#CSr  c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetGpuOperationMode)rk  ry  rb  r  s       r  r  r    s*    	 !@	AB
V,T2
3CSr  c                  h    t        d      } t               } | t        |            }t        |       |S )NnvmlEventSetCreate)rk  c_nvmlEventSet_tr  rb  )r	  eventSetra  s      r  r  r    s0    	 !5	6B!H
U8_
CSOr  c                 V    t        d      } || t        |      |      }t        |       y )NnvmlDeviceRegisterEvents)rk  r  rb  )r  r  r  r	  ra  s        r  r!  r!    s+    	 !;	<B
V[,h
7CSr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N nvmlDeviceGetSupportedEventTypesr  rk  r  rb  r  )r  c_eventTypesr	  ra  s       r  r#  r#    s9    =L	 !C	DB
VU<(
)CSr  c                 ~    t        d      }t               } || t        |      t        |            }t	        |       |S )NnvmlEventSetWait_v2)rk  r  r  r  rb  )r  r  r	  r  ra  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nvmlEventSetFreer  )r  r	  ra  s      r  r+  r+    s!    	 !3	4B
X,CSr  c                     t        d      }t               } || |t        |            }t        |       |j                  dk7  S )NnvmlDeviceOnSameBoardr   r  )handle1handle2r	  onSameBoardra  s        r  r-  r-    s@    	 !8	9B'K
Wgu[1
2CS"#r  c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )N#nvmlDeviceGetCurrPcieLinkGenerationrk  r  r  rb  r  r  r	  genra  s       r  r2  r2    s6    	 !F	GB
(C
VU3Z
 CS99r  c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )N"nvmlDeviceGetMaxPcieLinkGenerationr3  r4  s       r  r7  r7    s6    	 !E	FB
(C
VU3Z
 CS99r  c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )NnvmlDeviceGetCurrPcieLinkWidthr3  r  r	  widthra  s       r  r9  r9    s6    	 !A	BBHE
VU5\
"CS;;r  c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )NnvmlDeviceGetMaxPcieLinkWidthr3  r:  s       r  r=  r=    s6    	 !@	ABHE
VU5\
"CS;;r  c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )N%nvmlDeviceGetGpuMaxPcieLinkGenerationr3  r4  s       r  r?  r?    s6    	 !H	IB
(C
VU3Z
 CS99r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N+nvmlDeviceGetSupportedClocksThrottleReasonsr$  r  	c_reasonsr	  ra  s       r  rA  rA    s7    }I	 !N	OB
VU9%
&CS??r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N(nvmlDeviceGetSupportedClocksEventReasonsr$  rB  s       r  rE  rE  #  s7    }I	 !K	LB
VU9%
&CS??r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N)nvmlDeviceGetCurrentClocksThrottleReasonsr$  rB  s       r  rG  rG  +  s7    }I	 !L	MB
VU9%
&CS??r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N&nvmlDeviceGetCurrentClocksEventReasonsr$  rB  s       r  rI  rI  2  s7    }I	 !I	JB
VU9%
&CS??r  c                 ~    t        d      }t               } || t        |            }t        |       |j                  S )NnvmlDeviceGetIndexr3  )r  r	  rg  ra  s       r  rK  rK  :  s6    	 !5	6BhG
VU7^
$CS==r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetAccountingModer  r  s       r  rM  rM  B  s7    !F	 !>	?B
VU6]
#CS<<r  c                 T    t        d      } || t        |            }t        |       y )NnvmlDeviceSetAccountingModer  r  s       r  rO  rO  I  s*    	 !>	?B
V'-
.CSr  c                 @    t        d      } ||       }t        |       y )NnvmlDeviceClearAccountingPidsr  r  s      r  rQ  rQ  O  s!    	 !@	AB
V*CSr  c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  t        j                  k(  rd |_        |S )NnvmlDeviceGetAccountingStats)r"  rk  r  r  rb  r%  r  r  )r  r  statsr	  ra  s        r  rS  rS  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   )	r  !nvmlDeviceGetAccountingBufferSizer  rk  r  rb  listmapint)r  r  pidsr	  ra  s        r  rV  rV  _  se    4V<=EU[[ #D	 !>	?B
VU5\4
(CSCa,-..r  c                     t               }t        d      } || t        |            }t        |       t	        |j
                        S )NrW  )r  rk  r  rb  rZ  r  )r  
bufferSizer	  ra  s       r  rW  rW  g  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_tr  rk  r  r`  r1  r  r  r  rb  rX  rY  rZ  )r  sourceFilterc_sourcerY  r	  ra  
page_arrayc_pagess           r  r_  r_  n  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   )addressrA  )r`  r  rk  r  r`  r1  r  r  r  rb  r  rZ  )r  ra  rb  rY  r	  ra  rc  rd  times_arrayc_timesr   s              r  rf  rf    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  rk  r  rb  rZ  r  )r  	c_pendingr	  ra  s       r  rk  rk    s=    "$I	 !I	JB
VU9%
&CSyr  c                     t               }t        d      } || t        |      t        |            }t	        |       t        |j                        S )NnvmlDeviceGetAPIRestriction)r  rk  _nvmlRestrictedAPI_tr  rb  rZ  r  )r  apiTypec_permissionr	  ra  s        r  rn  rn    sG    %'L	 !>	?B
V)'2E,4G
HCS|!!""r  c                 h    t        d      } || t        |      t        |            }t        |       y )NnvmlDeviceSetAPIRestriction)rk  ro  r  rb  )r  rp  isRestrictedr	  ra  s        r  rs  rs    s2    	 !>	?B
V)'24F|4T
UCSr  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetBridgeChipInfo)r  rk  r  rb  )r  bridgeHierarchyr	  ra  s       r  rv  rv    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  r  rG  rk  r  r`  r  r  r6  rb  )r  sampling_typer7  c_sampling_typec_time_stampc_sample_countc_sample_value_typer	  ra  sampleArray	c_sampless              r  ry  ry    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:  rk  r  rb  )r  perfPolicyTypec_perfPolicy_type
c_violTimer	  ra  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)r  rk  _nvmlPcieUtilCounter_tr  rb  r  )r  counterr  r	  ra  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	r  rk  r  r`  r  r  r  rb  rX  )	cpuNumberrY  r	  ra  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  )r  levelrY  r	  ra  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_trk  r  rb  r  )device1device2c_levelr	  ra  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$  )r  linkr  c_rxcounterc_txcounterr	  ra  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(nvmlDeviceFreezeNvLinkUtilizationCounterr  )r  r  r  freezer	  ra  s         r  r  r    s(    	 !K	LB
VT7F
+CSr  c                 D    t        d      } || ||      }t        |       y )N'nvmlDeviceResetNvLinkUtilizationCounterr  )r  r  r  r	  ra  s        r  r  r    s&    	 !J	KB
VT7
#CSr  c                 Z    t        d      } || ||t        |      |      }t        |       y )N%nvmlDeviceSetNvLinkUtilizationControlrk  r  rb  )r  r  r  controlresetr	  ra  s          r  r  r    s.    	 !H	IB
VT7E'NE
:CSr  c                 n    t               }t        d      } || ||t        |            }t        |       |S )N%nvmlDeviceGetNvLinkUtilizationControl)r  rk  r  rb  )r  r  r  	c_controlr	  ra  s         r  r  r     s8    .0I	 !H	IB
VT7E)$4
5CSr  c                     t               }t        d      } || ||t        |            }t        |       |j                  S )NnvmlDeviceGetNvLinkCapabilityrb  )r  r  
capabilityc_capResultr	  ra  s         r  r  r  '  s=    (K	 !@	AB
VT:u['9
:CSr  c                     t               }t        d      } || ||t        |            }t        |       |j                  S )NnvmlDeviceGetNvLinkErrorCounterr$  )r  r  r  c_resultr	  ra  s         r  r  r  .  s:    }H	 !B	CB
VT7E(O
4CS>>r  c                 B    t        d      } || |      }t        |       y )N"nvmlDeviceResetNvLinkErrorCountersr  )r  r  r	  ra  s       r  r  r  5  s$    	 !E	FB
VT
CSr  c                 l    t               }t        d      } || |t        |            }t        |       |S )N#nvmlDeviceGetNvLinkRemotePciInfo_v2r  )r  r  c_pcir	  ra  s        r   nvmlDeviceGetNvLinkRemotePciInfor  ;  s3    OE	 !F	GB
VT5<
(CSLr  c                     t               }t        d      } || |t        |            }t        |       |j                  S )N#nvmlDeviceGetNvLinkRemoteDeviceType)_nvmlNvLinkDeviceType_trk  r  rb  r  )r  r  r  r	  ra  s        r  r  r  B  s9    $&F	 !F	GB
VT5=
)CS<<r  c                     t               }t        d      } || |t        |            }t        |       |j                  S )NnvmlDeviceGetNvLinkStaterb  )r  r  
c_isActiver	  ra  s        r  r  r  I  s;    J	 !;	<B
VT5,
-CSr  c                     t               }t        d      } || |t        |            }t        |       |j                  S )NnvmlDeviceGetNvLinkVersionrb  )r  r  rJ  r	  ra  s        r  r  r  P  s9    I	 !=	>B
VT5+
,CS??r  c                 T    t        d      } |t        |       |      }t        |       y )NnvmlDeviceModifyDrainStaterk  pointerrb  )pciInfonewStater	  ra  s       r  r  r  W  s)    	 !=	>B
WWx
(CSr  c                     t               }t        d      } |t        |       t        |            }t	        |       |j
                  S )NnvmlDeviceQueryDrainState)r  rk  r  r  rb  r  )r  
c_newStater	  ra  s       r  r  r  ]  s>    J	 !<	=B
WWuZ0
1CSr  c                 R    t        d      } |t        |             }t        |       y )NnvmlDeviceRemoveGpur  r  r	  ra  s      r  r  r  d  s'    	 !6	7B
WW
CSr  c                 R    t        d      } |t        |             }t        |       y )NnvmlDeviceDiscoverGpusr  r  s      r  r  r  j  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>  lenrk  	enumerater?  r@  	TypeErrorc_int32r  rb  r  fieldIds
values_arrvaluesr	  r   r?  ra  s           r  r  r  p  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nvmlDeviceClearFieldValuesr  r  s           r  r  r    s    #c(m3J\F	 !=	>B) (
7	(5<2VAYq	 1( VWS]+U6]
;CSM  	( 'F1I	(r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetVirtualizationModer$  )r  c_virtualization_moder	  ra  s       r  r  r    s;    'M	 !B	CB
VU01
2CS &&&r  c                 *    t        d      } || |      S )NnvmlDeviceSetVirtualizationModerk  )r  virtualization_moder	  s      r  r  r    s    	 !B	CBf)**r  c                     t        d      }t        |_        t        d      } || t	        |            }t        |       |j                  S )Nr   "nvmlDeviceGetVgpuHeterogeneousModerb  VgpuHeterogeneousMode_v1r  rk  r  rb  r  )r  c_vgpuHeterogeneousModer	  ra  s       r  r  r    sG    >qA&>#	 !E	FB
VU23
4CS"'''r  c                     t        d      }t        |_        ||_        t	        d      } || t        |            }t        |       t        S )Nr   "nvmlDeviceSetVgpuHeterogeneousModerb  r  r  r  rk  r  rb  r`  )r  heterogeneous_moder  r	  ra  s        r  r  r    sJ    >qA&>##5 	 !E	FB
VU23
4CSr  c                     t        d      }t        |_        t        d      } || t	        |            }t        |       |j                  S )Nr   nvmlVgpuInstanceGetPlacementId)rd  VgpuPlacementId_v1r  rk  r  rb  re  )rr  c_placementr	  ra  s       r  r  r    sD    ,Q/K,K	 !A	BB
\5-
.CS"""r  c                    t        d      }t        d      } || |t        |            }t        |       |dk(  r.t	               }t
        |_        |j                  |_        ||_	        n*|dk(  rt               }t        |_        nt        t              t         |j                  z  } |       |_        t        d      } || |t        |            }t        |       |S )Nr   nvmlVgpuTypeGetMaxInstancesr   r   (nvmlDeviceGetVgpuTypeSupportedPlacements)r  rk  r  rb  rl  VgpuPlacementList_v2r  r  r  r  rg  VgpuPlacementList_v1r  r  ri  )	r  r  r  r  c_max_instancesr	  ra  c_vgpu_placementsc_placementss	            r  r  r    s    QiO
!"?
@B
VZ!7
8CS!|8:$8!"1"7"7!%	A8:$8!<==O111L%1^"
!"L
MB
VZ'8!9
:CSr  c                    t        d      }t        d      } || |t        |            }t        |       |dk(  r't	               }t
        |_        |j                  |_        n|dk(  rt               }t        |_        t         |j                  z  } |       _        t        d      } || |t        |            }t        |       |S )Nr   r  r   r   (nvmlDeviceGetVgpuTypeCreatablePlacements)r  rk  r  rb  rl  r  r  r  r  rg  r  ri  )r  r  r  r  r	  ra  r  r  s           r  r  r    s    QiO
!"?
@B
VZ!7
8CS!|8:$8!"1"7"7	A8:$8!O111L%1^"
!"L
MB
VZ'8!9
:CSr  c                     t               }t        d      } |t        |       t        |            }t	        |       |j
                  S )NnvmlGetVgpuDriverCapabilities)r  rk  _nvmlVgpuDriverCapability_tr  rb  r  )r  r  r	  ra  s       r  r  r    s?    (K	 !@	AB
(4eK6H
ICSr  c                     t               }t        d      } || t        |      t        |            }t	        |       |j
                  S )NnvmlDeviceGetVgpuCapabilities)r  rk  _nvmlDeviceVgpuCapability_tr  rb  r  )r  r  r  r	  ra  s        r  r  r    sA    (K	 !@	AB
V0<eK>P
QCSr  c                 `    t        d      } || t        |      |      }t        |       t        S )NnvmlDeviceSetVgpuCapabilities)rk  r  rb  r`  )r  r  r  r	  ra  s        r  r  r    s/    	 !@	AB
V0<e
DC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r  rk  r  r`  r1  _nvmlVgpuTypeId_tr  rb  r  r  r  r  c_vgpu_countr	  ra  vgpu_type_ids_arrayc_vgpu_type_idsvgpusr   s           r  r  r        !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   nvmlDeviceGetCreatableVgpusr  r  s           r  r  r    r  r  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   #nvmlVgpuTypeGetGpuInstanceProfileIdrb  )r  c_profile_idr	  ra  s       r  r  r  '  s;    !9L
!"G
HB
Z|,
-CSr  c                     t        t              }t        t              }t        d      } || |t	        |            }t        |       |j                  S )NnvmlVgpuTypeGetClassrG  NVML_DEVICE_NAME_BUFFER_SIZEr  rk  r  rb  r  )r  c_classc_buffer_sizer	  ra  s        r  r  r  .  sH    "#?@G78M
!"8
9B
Z%"6
7CS==r  c                     t        t              }t        t              }t        d      } || |t	        |            }t        |       |j                  S )NnvmlVgpuTypeGetNamer  )r  rT  r  r	  ra  s        r  r  r  7  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$  )r  c_device_idc_subsystem_idr	  ra  s        r  r  r  @  sV     ^K ^N
!";
<B
Z{+U>-B
CCS~3344r  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuTypeGetFramebufferSizer$  )r  	c_fb_sizer	  ra  s       r  r  r  H  s9    AI
!"B
CB
Zy)
*CS??r  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuTypeGetNumDisplayHeadsrb  )r  c_num_headsr	  ra  s       r  r!  r!  O  s;    )K
!"B
CB
Z{+
,CSr  c                     t        d      }t        d      }t        d      } || dt        |      t        |            }t        |       |j                  |j                  fS )Nr   nvmlVgpuTypeGetResolutionrb  )r  c_xdimc_ydimr	  ra  s        r  r$  r$  V  sR    AYFAYF
!"=
>B
ZE&M5=
9CSLL&,,''r  c                     t        t              }t        t              }t        d      } || ||      }t	        |       |j
                  S )NnvmlVgpuTypeGetLicense)rG  r  r  rk  rb  r  )r  	c_licenser  r	  ra  s        r  r(  r(  ^  sC    $%BCI89M
!":
;B
ZM
2CS??r  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuTypeGetFrameRateLimitrb  )r  c_frl_configr	  ra  s       r  r+  r+  g  s;    !9L
!"A
BB
Z|,
-CSr  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuTypeGetGspHeapSizerb  )r  
c_gsp_heapr	  ra  s       r  r.  r.  n  s;    J
!">
?B
Zz*
+CSr  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuTypeGetFbReservationrb  )r  c_fb_reservationr	  ra  s       r  r1  r1  u  s=    ay
!"@
AB
Z/0
1CS!!!r  c                     t               }t        |_        t        d      } || t	        |            }t        |       |S )N#nvmlVgpuInstanceGetRuntimeStateSize)r  VgpuRuntimeState_v1r  rk  r  rb  )rr  c_runtime_stater	  ra  s       r  r4  r4  |  s<    /1O1O
!"G
HB
\51
2CSr  c                     t        d      }t        d      } || |t        |            }t        |       |j                  S )Nr   r  rb  )r  r  r  r	  ra  s        r  r  r    s=    QiO
!"?
@B
VZ!7
8CS   r  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr    nvmlVgpuTypeGetMaxInstancesPerVmrb  )r  c_max_instances_per_vmr	  ra  s       r  r9  r9    s=    #AY
!"D
EB
Z56
7CS!'''r  c                     t        d      }t        |_        t        d      } || t	        |            }t        |       |S )Nr   nvmlVgpuTypeGetBAR1Info)rn  VgpuTypeBar1Info_v1r  rk  r  rb  )r  
c_bar1Infor	  ra  s       r  r<  r<    s>    ,Q/J,J
!";
<B
Zz*
+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   nvmlDeviceGetActiveVgpus)r  rk  r  r`  r1  rw  r  rb  r  r  r  )r  r  r	  ra  vgpu_instance_arrayc_vgpu_instancesr
  r   s           r  r@  r@    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)rG  r  r  r  rk  r  rb  r  )rr  c_vm_idr  c_vm_id_typer	  ra  s         r  rD  rD    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rG  r  r  rk  r  rb  r  rr  r  r  r	  ra  s        r  rH  rH    sG    !">?F78M
!";
<B
\5=-
8CS<<r  c                     t        t              }t        t              }t        d      } || t	        |      |      }t        |       |j                  S )NnvmlVgpuInstanceGetMdevUUIDrI  rJ  s        r  rL  rL    sG    !">?F78M
!"?
@B
\5=-
8CS<<r  c                     t        t              }t        t              }t        d      } || t	        |      |      }t        |       |j                  S )N"nvmlVgpuInstanceGetVmDriverVersion)rG  r  r  rk  r  rb  r  )rr  c_driver_versionr  r	  ra  s        r  rN  rN    sL    +,RSABM
!"F
GB
\5!12M
BCS!!!r  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr    nvmlVgpuInstanceGetLicenseStatusrb  )rr  c_license_statusr	  ra  s       r  rQ  rQ    s=    ay
!"D
EB
\5!12
3CS!!!r  c                 j    t        d      }t               } || t        |            }t        |       |S )N!nvmlVgpuInstanceGetLicenseInfo_v2)rk  r  r  rb  )rr  r	  c_license_infora  s       r  rT  rT    s4    
!"E
FB,.N
\50
1CSr  c                     t        |       S r'  )rT  )rr  s    r  nvmlVgpuInstanceGetLicenseInforW    s    ,\::r  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   !nvmlVgpuInstanceGetFrameRateLimitrb  )rr  c_frlr	  ra  s       r  rY  rY    s8    1IE
!"E
FB
\5<
(CS;;r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlVgpuInstanceGetEccModer  rr  r  r	  ra  s       r  r\  r\    s7    !F	 !=	>B
\5=
)CS<<r  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuInstanceGetTyperb  )rr  c_vgpu_typer	  ra  s       r  r_  r_    s;    )K
!";
<B
\5-
.CSr  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   "nvmlVgpuInstanceGetEncoderCapacityr$  )rr  c_encoder_capacityr	  ra  s       r  rb  rb    s=    $Q
!"F
GB
\5!34
5CS###r  c                 *    t        d      } || |      S )N"nvmlVgpuInstanceSetEncoderCapacityr  )rr  encoder_capacityr	  s      r  re  re    s    
!"F
GBl,--r  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr   nvmlVgpuInstanceGetFbUsagerb  )rr  
c_fb_usager	  ra  s       r  rh  rh  
  s;    J
!">
?B
\5,
-CSr  c                     t        d      }t        d      } || t        |      t        |            }t	        |       |j
                  S )Nr   nvmlVgpuTypeGetCapabilities)r  rk  _nvmlVgpuCapability_tr  rb  r  )r  r  c_cap_resultr	  ra  s        r  rk  rk    sC    !9L
!"?
@B
Z.z:E,<O
PCSr  c                     t        d      }t        d      } || t        |            }t        |       |j                  S )Nr    nvmlVgpuInstanceGetGpuInstanceIdrb  )rr  r  r	  ra  s       r  ro  ro    s8    !9D
!"D
EB
\5;
'CSJJr  c           	          t        t              }t        d      } || |t        t	        t                          }t        |       |j                  S )NnvmlVgpuInstanceGetGpuPciId)rG  r  rk  r  r  rb  r  )rr  c_vgpuPciIdr	  ra  s       r  rq  rq    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)r  r  rG  rk  r  r`  r1  r  rq  rb  r  )	r  r7  r  r}  r  r	  ra  r  r  s	            r  rt  rt  '  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	               |_        t        d      |_        ||_        t        d      } || t        |            }|t        k(  rg S |t        k(  rM|j                  t        z  } |       }||_         || t        |            }t        |       |d|j                   S t!        |      )Nr   )nvmlDeviceGetVgpuInstancesUtilizationInfo)r  r}  VgpuInstancesUtilizationInfo_v1r  rG  r~  r  r  r  rk  r  r`  r1  ry  r  rb  r  )r  r7  r}  c_vgpuUtilInfor	  ra  r  r  s           r  rv  rv  A  s    y)L<Q?N<N#3#5N '-ayN$'3N$
!"M
NB
VU>*
+C|	
-
-$669__M	'0$ ~./>;;<< nr  c                     t               }t        d      } || ||t        |            }t        |       |j                  S )NnvmlDeviceGetP2PStatus)_nvmlGpuP2PStatus_trk  r  rb  r  )r  r  p2pIndexc_p2pstatusr	  ra  s         r  rz  rz  _  s>    %'K	 !9	:B
Wghk(:
;CSr  c                 j    t               }t        d      } || t        |            }t        |       |S )N&nvmlDeviceGetGridLicensableFeatures_v4)r  rk  r  rb  )r  c_get_grid_licensable_featuresr	  ra  s       r  r  r  f  s6    %F%H"	 !I	JB
VU9:
;CS*+r  c                     t        |       S r'  )r  r  s    r  #nvmlDeviceGetGridLicensableFeaturesr  n  s    1&99r  c                     |d u}|st        t        z         }t        d      } || |      }t        |       |rt        S |j
                  S )NnvmlDeviceGetGspFirmwareVersion)r  "NVML_GSP_FIRMWARE_VERSION_BUF_SIZErk  rb  r`  r  )r  r  isUserDefinedr	  ra  s        r  r  r  q  sM    4'M>>A	 !B	CB
VW
CS(<;gmm;r  c                     t        |      t        u}|r|n
t        |      }|r|n
t        |      }t        d      } || ||      }t	        |       |rt
        S |j                  |j                  gS )NnvmlDeviceGetGspFirmwareModer5  )r  	isEnableddefaultModer  isEnabledRefdefaultModeRefr	  ra  s           r  r  r  z  si    y//K +9y1AL$/[U;5GN	 !?	@B
V\>
2CS&<PY__k>O>O,PPr  c                     t        d      }t        |      }t        d      } || |t        |            }t	        |       |j
                  S )Nr   nvmlDeviceGetEncoderCapacity)r  _nvmlEncoderQueryType_trk  r  rb  r  )r  encoderQueryTyperc  c_encoderQuery_typer	  ra  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)
r  r  rk  r  r`  r1  r  r  rb  r  )r  r7  r  r}  r	  ra  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        |      }t        d      }t        |_        t	        d      |_        ||_        t        d      } || t        |            }|t        k(  rg S |t        k(  rM|j
                  t        z  } |       }||_         || t        |            }t        |       |d|j
                   S t        |      )Nr   )nvmlDeviceGetVgpuProcessesUtilizationInfo)r  r  VgpuProcessesUtilizationInfo_v1r  r  r  r  rk  r  r`  r1  r  r  rb  r  )r  r7  r}  c_vgpuProcUtilInfor	  ra  r  r  s           r  r  r    s    y)L@C!@*0)'+7(
!"M
NB
VU-.
/C|	
-
-(99<aaM	/8, 123->>?? nr  c                    t        d      }t        d      }t        d      }t        d      } || t        |      t        |      t        |            }t        |       |j                  |j                  |j                  fS )Nr   nvmlDeviceGetEncoderStatsr$  )r  c_encoderCountc_encodeFpsc_encoderLatencyr	  ra  s         r  r  r    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
r  rk  r  r`  r  r  rb  r  r  r  r  c_session_countr	  ra  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  rk  r  rb  )r  
c_fbcStatsr	  ra  s       r  r  r    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
r  rk  r  r`  r  r  rb  r  r  r  r  s           r  r  r    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$  )rr  r  r  r  r	  ra  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  rr  r  r	  ra  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  )rr  r  r	  ra  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  0  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)	r  r  rk  r  r1  r  r  rb  r  )r  r7  rY  r}  r	  ra  r  r  s           r  r  r  J  s    QiGy)L
!"C
DB
VT5><
8C++mm&FFM	 E'NLA7==)) nr  c                 n   t        |      }t        d      }t        |_        t	        d      |_        ||_        t        d      } || t        |            }|t        k(  rM|j
                  t        z  } |       }||_         || t        |            }t        |       |d|j
                   S t        |      )Nr   %nvmlDeviceGetProcessesUtilizationInfo)r  r  ProcessesUtilizationInfo_v1r  r  r  r  rk  r  r1  r  r  rb  r  )r  r7  r}  c_processesUtilInfor	  ra  r  r  s           r  r  r  `  s    y)L=a@"=.4Qi+,8)
!"I
JB
VU./
0C++)==@aaM	,5) 234.BBCC nr  c                     t        d      }t               }t        d      } || t        |      t        |            }|t        k(  r) || t        |      t        |            }t        |       |S t        |      )NnvmlVgpuInstanceGetMetadatar   )rk  r.  r  r  r1  rb  r  )rr  r	  c_vgpuMetadatac_bufferSizera  s        r  r  r  z  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   )rk  r:  r  r  r1  rb  r  )r  r	  c_vgpuPgpuMetadatar  ra  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)rk  r?  r  rb  )vgpuMetadatapgpuMetadatar	  c_vgpuPgpuCompatibilityra  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   )	rk  rG  r=  r  r  r1  rb  r  r  )r  r	  c_pgpuMetadatar  ra  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)rX  rk  r  rb  )r  c_vgpu_sched_logr	  ra  s       r  r  r    s6    /1	 !@	AB
VU+,
-CSr  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetVgpuSchedulerState)rb  rk  r  rb  )r  c_vgpu_sched_stater	  ra  s       r  r  r    s6    68	 !B	CB
VU-.
/CSr  c                 j    t               }t        d      } || t        |            }t        |       |S )N&nvmlDeviceGetVgpuSchedulerCapabilities)rp  rk  r  rb  )r  c_vgpu_sched_capsr	  ra  s       r  r  r    s6    9;	 !I	JB
VU,-
.CSr  c                 ^    t        d      } || t        |            }t        |       t        S )NnvmlDeviceSetVgpuSchedulerStaterk  r  rb  r`  )r  sched_stater	  ra  s       r  r  r    s,    	 !B	CB
VU;'
(CSr  c                 \    t        d      } |t        |             }t        |       t        S )NnvmlSetVgpuVersionr  )vgpuVersionr	  ra  s      r  r  r    s*    	 !5	6B
U;
 CSr  c                    | d uxs |d u}|st               } t               }t        d      } |t        |       t        |            }t        |       |rt        S | j
                  | j                  f|j
                  |j                  fgS )NnvmlGetVgpuVersion)r*  rk  r  rb  r`  r+  r,  )	supportedr  r  r	  ra  s        r  r  r    s    d*Dt0CM')	%'	 !5	6B
U9uW~
.CS(< E	0D0D090D0D0F070B0B070B0B0D/E Er  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)r  rk  r  r1  r  rb  r  )rr  
c_pidCountr	  ra  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"  rk  r  rb  )rr  r  c_accountingStatsr	  ra  s        r  r  r    s8    /1	 !E	FB
\3&7 8
9CSr  c                 J    t        d      } ||       }t        |       t        S )N#nvmlVgpuInstanceClearAccountingPidsr2  )rr  r	  ra  s      r  r  r    s%    	 !F	GB
\
CSr  c                    d|_         t        d      } || t        |            }|t        k(  r|S |t        k(  r>t
        |j                   z  } |       |_         || t        |            }t        |       |S t        |      )Nr    nvmlGpuInstanceGetCreatableVgpus)	r|  rk  r  r`  r1  r  r}  rb  r  )r  c_vgpusr	  ra  r  s        r  r  r    s~    G
!"D
EB
[%.
)C|
-
-/'2C2CC13eGn-nr  c                     t               }t        |_        | |_        t	        d      } |t        |            }t        |       |j                  S )N)nvmlVgpuTypeGetMaxInstancesPerGpuInstance)r  nvmlVgpuTypeMaxInstance_v1r  r  rk  r  rb  r  )r  r  r	  ra  s       r  r  r    sH    46O8O!+O
!"M
NB
U?#
$CS+++r  c                    t        d      |_        t        d      } || t        |            }|t        k(  r|S |t
        k(  r>t        |j                  z  } |       |_         || t        |            }t        |       |S t        |      )Nr   nvmlGpuInstanceGetActiveVgpus)
r  r|  rk  r  r`  r1  rw  r  rb  r  )r  c_vgpu_instance_infor	  ra  rA  s        r  r  r    s    %+AY"
!"A
BB
[% 45
6C|##
-
-14H4R4RR-@-B* e$89:##nr  c                 V    t        d      } || t        |            }t        |       |S )N$nvmlGpuInstanceSetVgpuSchedulerStater  )r  r  r	  ra  s       r  r  r  +  s+    	 !G	HB
[%,
-CSJr  c                 V    t        d      } || t        |            }t        |       |S )N$nvmlGpuInstanceGetVgpuSchedulerStater  )r  c_vgpu_sched_state_infor	  ra  s       r  r  r  1  s-    	 !G	HB
[% 78
9CS""r  c                 V    t        d      } || t        |            }t        |       |S )N"nvmlGpuInstanceGetVgpuSchedulerLogr  )r  c_vgpu_sched_log_infor	  ra  s       r  r  r  7  s-    	 !E	FB
[% 56
7CS  r  c                 P   t               }t        |_        |j                  |_        t	        d      } |t        |            }t        |       |j                  |_        t        |j                  z  } |       |_
        t	        d      } || t        |            }t        |       |S )Nr  -nvmlGpuInstanceGetVgpuTypeCreatablePlacements)r  r  r  r  rk  r  rb  r  r  r  ri  )r  r  r  r	  ra  r  s         r  r  r  =  s    46O8O!2!=!=O
!"M
NB
U?#
$CS->>O<<<L%1^"
!"Q
RB
[% 12
3CSr  c                     t        d      }t        |_        t        d      } || t	        |            }t        |       |j                  S )Nr   'nvmlGpuInstanceGetVgpuHeterogeneousModer  )r  r  r	  ra  s       r  r  r  N  sG    >qA&>#	 !J	KB
[% 78
9CS"'''r  c                     t        d      }t        |_        ||_        t	        d      } || t        |            }t        |       t        S )Nr   'nvmlGpuInstanceSetVgpuHeterogeneousModer  )r  r  r  r	  ra  s        r  r  r  V  sJ    >qA&>##5 	 !J	KB
[% 78
9CSr  c                  |    t               } t        d      } |t        |             }t        |       | j                  S )NnvmlGetExcludedDeviceCountrb  rc  s      r  r   r   _  s4    hG	 !=	>B
U7^
CS==r  c                     t        |       }t               }t        d      } ||t        |            }t	        |       |S )N nvmlGetExcludedDeviceInfoByIndex)r  r  rk  r  rb  )r  rg  infor	  ra  s        r  r  r  f  s;    UmG%'D	 !C	DB
WeDk
"CSKr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetHostVgpuMode)_nvmlHostVgpuMode_trk  r  rb  r  )r  c_host_vgpu_moder	  ra  s       r  r  r  n  s<    *,	 !<	=B
VU+,
-CS!!!r  c                     t               }t        d      } || |t        |            }t        |       |j                  S )NnvmlDeviceSetMigModerb  )r  r  c_activationStatusr	  ra  s        r  r	  r	  u  s=    	 !7	8B
VT5!34
5CS###r  c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetMigModerb  )r  c_currentModec_pendingModer	  ra  s        r  r  r  |  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  rk  r  r  r7  r  rb  )r  profiler  rl  r	  ra  s         r  r  r    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)nvmlDeviceGetGpuInstanceRemainingCapacityrb  )r  r  rY  r	  ra  s        r  r  r    s8    hG	 !L	MB
VYg
/CS==r  c                 P    t        d      } || |||      }t        |       t        S )N-nvmlDeviceGetGpuInstancePossiblePlacements_v2r2  )r  r  placementsRefcountRefr	  ra  s         r  *nvmlDeviceGetGpuInstancePossiblePlacementsr    s+    	 !P	QB
VYx
8CSr  c                 l    t               }t        d      } || |t        |            }t        |       |S )NnvmlDeviceCreateGpuInstancer  rk  r  rb  )r  r  
c_instancer	  ra  s        r  r  r    s6    $&J	 !>	?B
VYj 1
2CSr  c                 n    t               }t        d      } || ||t        |            }t        |       |S )N(nvmlDeviceCreateGpuInstanceWithPlacementr  )r  r  r  r  r	  ra  s         r  r  r    s8    $&J	 !K	LB
VY	5+<
=CSr  c                 J    t        d      } ||       }t        |       t        S )NnvmlGpuInstanceDestroyr2  )r  r	  ra  s      r  r!  r!    s$    	 !9	:B
[/CSr  c                 P    t        d      } || |||      }t        |       t        S )NnvmlDeviceGetGpuInstancesr2  )r  r  gpuInstancesRefr  r	  ra  s         r  r#  r#    s+    	 !<	=B
VY
:CSr  c                 l    t               }t        d      } || |t        |            }t        |       |S )NnvmlDeviceGetGpuInstanceByIdr  )r  r  r  r	  ra  s        r  r&  r&    s6    $&J	 !?	@B
V]E*$5
6CSr  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlGpuInstanceGetInfo)r  rk  r  rb  )r  rl  r	  ra  s       r  r(  r(    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  rk  r  r  r7  r  rb  )r  r  
engProfiler  rl  r	  ra  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 )N2nvmlGpuInstanceGetComputeInstanceRemainingCapacityrb  )r  r  rY  r	  ra  s        r  r.  r.    s8    hG	 !U	VB
[)U7^
4CS==r  c                 P    t        d      } || |||      }t        |       t        S )N3nvmlGpuInstanceGetComputeInstancePossiblePlacementsr2  )r  r  r  r  r	  ra  s         r  r0  r0    s+    	 !V	WB
[)]H
=CSr  c                 l    t               }t        d      } || |t        |            }t        |       |S )N$nvmlGpuInstanceCreateComputeInstancec_nvmlComputeInstance_trk  r  rb  )r  r  r  r	  ra  s        r  r2  r2    s6    (*J	 !G	HB
[)U:%6
7CSr  c                 n    t               }t        d      } || ||t        |            }t        |       |S )N1nvmlGpuInstanceCreateComputeInstanceWithPlacementr3  )r  r  r  r  r	  ra  s         r  r6  r6    s8    (*J	 !T	UB
[)Yj0A
BCSr  c                 J    t        d      } ||       }t        |       t        S )NnvmlComputeInstanceDestroyr2  )computeInstancer	  ra  s      r  r8  r8    s%    	 !=	>B
_
CSr  c                 P    t        d      } || |||      }t        |       t        S )N"nvmlGpuInstanceGetComputeInstancesr2  )r  r  computeInstancesRefr  r	  ra  s         r  r;  r;    s,    	 !E	FB
[)%8(
CCSr  c                 l    t               }t        d      } || |t        |            }t        |       |S )N%nvmlGpuInstanceGetComputeInstanceByIdr3  )r  r  r  r	  ra  s        r  r>  r>     s7    (*J	 !H	IB
[+U:->
?CSr  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlComputeInstanceGetInfo_v2)r  rk  r  rb  )r9  rl  r	  ra  s       r  r@  r@    s2    (*F	 !@	AB
_eFm
,CSMr  c                     t        |       S r'  )r@  )r9  s    r  nvmlComputeInstanceGetInforB    s    (99r  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceIsMigDeviceHandle)r  rk  r  rb  )r  c_isMigDevicer	  ra  s       r  rD  rD    s3    HM	 !>	?B
VU=)
*CSr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetGpuInstanceIdrb  )r  c_gpuInstanceIdr	  ra  s       r  rG  rG    s9    hO	 !=	>B
VU?+
,CS   r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetComputeInstanceIdrb  )r  c_computeInstanceIdr	  ra  s       r  rJ  rJ    s;     (	 !A	BB
VU./
0CS$$$r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetMaxMigDeviceCountrb  )r  rY  r	  ra  s       r  rM  rM  &  6    hG	 !A	BB
VU7^
$CS==r  c                     t        |      }t               }t        d      } || |t        |            }t	        |       |S )N#nvmlDeviceGetMigDeviceHandleByIndexr  )r  r  rg  	migDevicer	  ra  s         r  rP  rP  -  s?    UmG I	 !F	GB
VWeI.
/CSr  c                 j    t               }t        d      } || t        |            }t        |       |S )N,nvmlDeviceGetDeviceHandleFromMigDeviceHandle)r  rk  r  rb  )rQ  r  r	  ra  s       r  rS  rS  5  s2    F	 !O	PB
Yf
&CSMr  c                 j    t               }t        d      } || t        |            }t        |       |S )NnvmlDeviceGetAttributes_v2)r  rk  r  rb  )r  c_attrsr	  ra  s       r  rU  rU  <  s2    $&G	 !=	>B
VU7^
$CSNr  c                     t        |       S r'  )rU  )r  s    r  nvmlDeviceGetAttributesrX  C  r  r  c           	      :   t        d      }t               }t               }t               }t               } || t        |      t        |      t        |      t        |            }t        |       |j                  |j                  |j                  |j                  fS )NnvmlDeviceGetRemappedRowsr3  )r  r	  c_corrc_unc
c_bpending
c_bfailurera  s          r  rZ  rZ  F  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  rk  r  rb  )r  c_valsr	  ra  s       r  r`  r`  P  s2    -/F	 !D	EB
VU6]
#CSMr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetArchitecture)_nvmlDeviceArchitecture_trk  r  rb  r  )r  archr	  ra  s       r  rc  rc  W  s7    $&D	 !<	=B
VU4[
!CS::r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetBusType)_nvmlBusType_trk  r  rb  r  )r  	c_busTyper	  ra  s       r  rg  rg  ^  s8     I	 !7	8B
VU9%
&CS??r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetIrqNumrb  )r  c_irqNumr	  ra  s       r  rk  rk  e  s6    xH	 !6	7B
VU8_
%CS>>r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetNumGpuCoresrb  )r  
c_numCoresr	  ra  s       r  rn  rn  l  s9    J	 !;	<B
VU:&
'CSr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPowerSource)_nvmlPowerSource_trk  r  rb  r  )r  c_powerSourcer	  ra  s       r  rq  rq  s  s:    &(M	 !;	<B
VU=)
*CSr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetMemoryBusWidthrb  )r  c_memBusWidthr	  ra  s       r  ru  ru  z  s9    HM	 !>	?B
VU=)
*CSr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPcieLinkMaxSpeed)_nvmlPcieLinkMaxSpeed_trk  r  rb  r  r  r   r	  ra  s       r  rx  rx    s7    %'G	 !@	AB
VU7^
$CS==r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )N$nvmlDeviceGetAdaptiveClockInfoStatus)_nvmlAdaptiveClockInfoStatus_trk  r  rb  r  )r  c_adaptiveClockInfoStatusr	  ra  s       r  r|  r|    s<     > @	 !G	HB
VU45
6CS$***r  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetPcieSpeedrb  rz  s       r  r  r    s6    hG	 !9	:B
VU7^
$CS==r  c                     t        |      t        u}|r|n
t        |      }t        d      } || |      }t	        |       |rt
        S |S )NnvmlDeviceGetDynamicPstatesInfo)rU  r  r  rk  rb  r`  )r  c_dynamicpstatesinfor  dynamicpstatesinfoRefr	  ra  s         r  r  r    sR    +,4QQK4?0UK_E`	 !B	CB
V*
+CS&<@,@@r  c                 N    t        d      } || ||      }t        |       t        S )NnvmlDeviceSetFanSpeed_v2r2  )r  r  r  r	  ra  s        r  r  r    s)    	 !;	<B
VUE
"CSr  c                     t        |      t        u}|r|n
t        |      }t        d      } || ||      }t	        |       |rt
        S |j                  d d  S )NnvmlDeviceGetThermalSettings)rU  r  r  rk  rb  r`  r  )r  sensorindexc_thermalsettingsr  thermalsettingsRefr	  ra  s          r  r  r    s_    ()1KKK.9*uEV?W	 !?	@B
V["4
5CS&<G,=,D,DQ,GGr  c                 .   t        |      t        uxs t        |      t        u}|r|n
t        |      }|r|n
t        |      }t        d      } || t	        |      t	        |      ||      }	t        |	       |rt        S |j                  |j                  fS )N nvmlDeviceGetMinMaxClockOfPState)rU  r  r  rk  r  rb  r`  r  )
r  	clockTypepstateminClockMHzmaxClockMHzr  minClockMHzRefmaxClockMHzRefr	  ra  s
             r  r  r    s    $F2X[8IQW8WK$/[U;5GN$/[U;5GN	 !C	DB
V%i02B62JN\j
kCS&<R[->->@Q@Q,RRr  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_nvmlClockOffset_tr  rU  r  clockOffsetMHzminClockOffsetMHzmaxClockOffsetMHzN)r  r  r  r  r  r\  r3  ru  r  r  r  r  r    s:    	F	!"	>"	5!	e$	e$Hr  r  c                 6    t        d      } || |      }t        S )NnvmlDeviceGetClockOffsetsrk  r`  r  r  r	  ra  s       r  r  r        	 !<	=B
VT
Cr  c                 6    t        d      } || |      }t        S )NnvmlDeviceSetClockOffsetsr  r  s       r  r  r    r  r  c                    g }t        t              }t        t               |j                  z  }t        |j                  z  } |       }t        d      } || ||      }t        |       |D ]  }|t        k7  s|j                  |        |S )N'nvmlDeviceGetSupportedPerformanceStates)	r  NVML_MAX_GPU_PERF_PSTATESsizeofr  r\  rk  rb  NVML_PSTATE_UNKNOWNr  )	r  pstatesrY  c_sizepstates_array	c_pstatesr	  ra  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r  rk  r  rb  r  r  offsetr	  ra  s       r  r  r    6    YF	 !>	?B
VU6]
#CS<<r  c                 b    t        |      }t        d      } || |      }t        |       t        S )NnvmlDeviceSetGpcClkVfOffsetr  rk  rb  r`  r  r  c_offsetr	  ra  s        r  r  r    0    vH	 !>	?B
VX
CSr  c                    t        |      t        uxs t        |      t        u}|r|n
t        |      }|r|n
t        |      }t        d      } || ||      }t	        |       |rt
        S |j                  |j                  fS )N!nvmlDeviceGetGpcClkMinMaxVfOffsetrU  r3  r  rk  rb  r`  r  r  	minOffset	maxOffsetr  minOffsetRefmaxOffsetRefr	  ra  s           r  r  r    su    	?%/RT)_E5QK +9y1AL +9y1AL	 !D	EB
V\<
0CS&<NY__ioo,NNr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlDeviceGetMemClkVfOffsetr  r  s       r  r  r    r  r  c                 b    t        |      }t        d      } || |      }t        |       t        S )NnvmlDeviceSetMemClkVfOffsetr  r  s        r  r  r    r  r  c                    t        |      t        uxs t        |      t        u}|r|n
t        |      }|r|n
t        |      }t        d      } || ||      }t	        |       |rt
        S |j                  |j                  fS )N!nvmlDeviceGetMemClkMinMaxVfOffsetr  r  s           r  r  r    su    	?%/RT)_E5QK +9y1AL +9y1AL	 !D	EB
V\<
0CS&<NY__ioo,NNr  c                 `    t        |       }t        d      } ||      }t        |       t        S )N&nvmlSystemSetConfComputeGpusReadyStater  rk  rb  r`  )r  ro  r	  ra  s       r  r  r    s-    UmG	 !I	JB
W+CSr  c                  |    t               } t        d      } |t        |             }t        |       | j                  S )N&nvmlSystemGetConfComputeGpusReadyStaterb  ro  r	  ra  s      r  r  r    s4    hG	 !I	JB
U7^
CS==r  c                  h    t               } t        d      } |t        |             }t        |       | S )N$nvmlSystemGetConfComputeCapabilities)r   rk  r  rb  )c_ccSysCapsr	  ra  s      r  r  r    s2    /1K	 !G	HB
U;
 CSr  c                  h    t               } t        d      } |t        |             }t        |       | S )NnvmlSystemGetConfComputeState)r  rk  r  rb  r  s      r  r  r  #  s0    ,.G	 !@	AB
U7^
CSNr  c                 (    t        d      } ||       S )N nvmlSystemGetConfComputeSettingsr  )settingsr	  s     r  r  r  *  s    	 !C	DBh<r  c                 L    t        d      } || |      }t        |       t        S )N*nvmlDeviceSetConfComputeUnprotectedMemSizer2  r  c_ccMemSizer	  ra  s       r  r  r  .  s'    	 !M	NB
V[
!CSr  c                 j    t               }t        d      } || t        |            }t        |       |S )N#nvmlDeviceGetConfComputeMemSizeInfo)r  rk  r  rb  r  s       r  r  r  4  s4    02K	 !F	GB
VU;'
(CSr  c                 j    t               }t        d      } || t        |            }t        |       |S )N,nvmlDeviceGetConfComputeProtectedMemoryUsage)r  rk  r  rb  )r  r  r	  ra  s       r  r  r  ;  s2    H	 !O	PB
VU8_
%CSOr  c                 j    t               }t        d      } || t        |            }t        |       |S )N&nvmlDeviceGetConfComputeGpuCertificate)r  rk  r  rb  )r  c_certr	  ra  s       r  r  r  B  s2    .0F	 !I	JB
VU6]
#CSMr  c                     t               }t        t        |      z  | }t        |d|       t	        d      } || t        |            }t        |       |S )Nr  ,nvmlDeviceGetConfComputeGpuAttestationReport)r  rR  r  rV  rk  r  rb  )r  c_noncec_attestReportc_nonce_arrr	  ra  s         r  r  r  I  sS    <>NS\)W6KNG[1	 !O	PB
VU>*
+CSr  c                     t        d      }t        |_        | |_        t	        d      } |t        |            }t        |       t        S )Nr   0nvmlSystemSetConfComputeKeyRotationThresholdInfo)r  )ConfComputeSetKeyRotationThresholdInfo_v1r  r  rk  r  rb  r`  )max_atk_advc_keyRotationThrInfor	  ra  s       r  r  r  R  sH    I!L#L 0;-	 !S	TB
U'(
)CSr  c                      t        d      } t        | _        t        d      } |t	        |             }t        |       | S )Nr   0nvmlSystemGetConfComputeKeyRotationThresholdInfo)r  )ConfComputeGetKeyRotationThresholdInfo_v1r  rk  r  rb  )r  r	  ra  s      r  r  r  [  s?    I!L#L 	 !S	TB
U'(
)CS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   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r  r  r  r  r  r  r  !  r  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longNamerh  N)r  r  r  rC  ru  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metricIdrD  r  
metricInfoN)r  r  r  r  rH  r0  r  ru  r  r  r  r  r  4  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  r  c_nvmlGpmSample_tr  NVML_GPM_METRIC_MAXru  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  G  s    	F	f%Hr  r  c                 T    t        d      } |t        |             }t        |       | S )NnvmlGpmMetricsGetr  )
metricsGetr	  ra  s      r  r 	  r 	  Q  s*    	 !4	5B
U:
CSr  c                 @    t        d      } ||       }t        |       y )NnvmlGpmSampleFreer  	gpmSampler	  ra  s      r  r	  r	  W  s!    	 !4	5B
Y-CS
r  c                  h    t               } t        d      } |t        |             }t        |       | S )NnvmlGpmSampleAlloc)r  rk  r  rb  r	  s      r  r	  r	  ]  s2    !#I	 !5	6B
U9
CSr  c                 D    t        d      } || |      }t        |       |S )NnvmlGpmSampleGetr  )r  r	  r	  ra  s       r  r		  r		  d  s'    	 !3	4B
VY
CSr  c                 F    t        d      } || ||      }t        |       |S )NnvmlGpmMigSampleGetr  )r  r  r	  r	  ra  s        r  r	  r	  j  s)    	 !6	7B
V]I
.CSr  c                     t               }t        |_        t        d      } || t	        |            }t        |       |S )NnvmlGpmQueryDeviceSupport)r  NVML_GPM_SUPPORT_VERSIONr  rk  r  rb  )r  
gpmSupportr	  ra  s       r  r	  r	  p  s<    #%J1J	 !<	=B
VU:&
'CSr  c                 b    t        |      }t        d      } || |      }t        |       t        S )NnvmlGpmSetStreamingEnabledr  )r  r  ro  r	  ra  s        r  r	  r	  x  s0    UmG	 !=	>B
VW
CSr  c                 ~    t               }t        d      } || t        |            }t        |       |j                  S )NnvmlGpmQueryIfStreamingEnabledrb  )r  ro  r	  ra  s       r  r	  r	    rN  r  i  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                     t               }||_        t        d      } || t        |            }t	        |       t
        S )N*nvmlDeviceSetNvLinkDeviceLowPowerThreshold)r	  r	  rk  r  rb  r`  )r  l1thresholdrl  r	  ra  s        r  r	  r	    s;    %'F(F	 !M	NB
VU6]
#CSr  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  cliqueIdr  N)	r  r  r  r  r  rH  rE  _nvmlGpuFabricState_tru  r  r  r  r	  r	    s0    	!==>	=!	X	'(	Hr  r	  i$  c                   L     e Zd Zdefdeez  fdefdefdefdefgZ	 fdZ
 xZS )c_nvmlGpuFabricInfoV_tr  r	  r  r	  r  
healthMaskc                 6    t         t        |   t               y rN  )r  r 	  rp  nvmlGpuFabricInfo_v2rP  s    r  rp  zc_nvmlGpuFabricInfoV_t.__init__  s    $d4=Q4Rr  )r  r  r  r  r  NVML_GPU_FABRIC_UUID_LENrH  rE  r	  ru  rp  r  r  s   @r  r 	  r 	    sM    	F	!99:	=!	X	'(	x HS Sr  r 	  c                 L    t        d      } || |      }t        |       t        S )NnvmlDeviceGetGpuFabricInfor2  r  gpuFabricInfor	  ra  s       r  r&	  r&	    s'    	 !=	>B
V]
#CSr  c                 L    t        d      } || |      }t        |       t        S )NnvmlDeviceGetGpuFabricInfoVr2  r'	  s       r  r*	  r*	    s'    	 !>	?B
V]
#CSr  c                 J    t        d      } ||       }t        |       t        S )NnvmlSystemSetNvlinkBwModer2  r  r	  ra  s      r  r,	  r,	    s$    	 !<	=B
T(CSr  c                  |    t               } t        d      } |t        |             }t        |       | j                  S )NnvmlSystemGetNvlinkBwModerb  r-	  s      r  r/	  r/	    s3    8D	 !<	=B
U4[/CS::r  c                   *    e Zd ZdefdefdefgZddiZy)c_nvmlPowerValue_v2_tr  
powerScopepowerValueMwr  r  N)r  r  r  r  _nvmlPowerScopeType_tru  r  r  r  r  r1	  r1	    s.    	F	,-	 H
 &!Er  r1	  i  c                     t        |      }t               }t        |      |_        ||_        t        |      |_        t        d      } || t        |            }t        S )N$nvmlDeviceSetPowerManagementLimit_v2)	r4	  r1	  r  r  r2	  r3	  rk  r  r`  )r  r2	  
powerLimitr  c_powerScopec_powerValuer	  ra  s           r  r6	  r6	    sW    (4L(*L!'?L*L &z 2L	 !G	HB
VU<(
)Cr  c                   p     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fgZ fdZ xZS )c_nvmlEccSramErrorStatus_v1_tr  aggregateUncParityaggregateUncSecDedaggregateCorvolatileUncParityvolatileUncSecDedvolatileCoraggregateUncBucketL2aggregateUncBucketSmaggregateUncBucketPcieaggregateUncBucketMcuaggregateUncBucketOtherbThresholdExceededc                 6    t         t        |   t               y rN  )r  r;	  rp  nvmlEccSramErrorStatus_v1rP  s    r  rp  z&c_nvmlEccSramErrorStatus_v1_t.__init__!      +T;D];^r  )r  r  r  r  r  ru  rp  r  r  s   @r  r;	  r;	    s~    	F	{+	{+	%	k*	k*	$	-	-	!;/	 +.	"K0	v&H _ _r  r;	  ih  c                 L    t        d      } || |      }t        |       t        S )NnvmlDeviceGetSramEccErrorStatusr2  )r  r  r	  ra  s       r  rL	  rL	  %  s'    	 !B	CB
VV
CSr  c                   .     e Zd ZdefdefgZ fdZ xZS )c_nvmlDeviceCapabilities_v1_tr  capMaskc                 6    t         t        |   t               y rN  )r  rN	  rp  nvmlDeviceCapabilities_v1rP  s    r  rp  z&c_nvmlDeviceCapabilities_v1_t.__init__4  rJ	  r  r  r  s   @r  rN	  rN	  .  s&    	F	FH
_ _r  rN	  c                 *    t        d      } || |      S )NnvmlDeviceGetCapabilitiesr  )r  capsr	  s      r  rS	  rS	  8  s    	 !<	=Bfdr  c            	       ^     e Zd Zdefdedz  fdedz  fdefdefdefdefd	efgZ fd
Z xZS )c_nvmlPlatformInfo_v1_tr  ibGuidr   rackGuidchassisPhysicalSlotNumbercomputeSlotIndex	nodeIndexpeerTyper  c                 6    t         t        |   t               y rN  )r  rV	  rp  nvmlPlatformInfo_v1rP  s    r  rp  z c_nvmlPlatformInfo_v1_t.__init__H      %t5>Q5Rr  r  r  r  r  r  ru  rp  r  r  s   @r  rV	  rV	  <  s^    	F	6B;	Vb[!	$f-	V$	f	V	V	HS Sr  rV	  c            	       ^     e Zd Zdefdedz  fdedz  fdefdefdefdefd	efgZ fd
Z xZS )c_nvmlPlatformInfo_v2_tr  rW	  r   chassisSerialNumber
slotNumber	trayIndexhostIdr\	  r  c                 6    t         t        |   t               y rN  )r  rb	  rp  nvmlPlatformInfo_v2rP  s    r  rp  z c_nvmlPlatformInfo_v2_t.__init__W  r_	  r  r`	  r  s   @r  rb	  rb	  K  s^    	F	6B;	,	v	f	6	V	V	HS Sr  rb	  i,  i,  c                 L    t        d      } || |      }t        |       t        S )NnvmlDeviceGetPlatformInfor2  )r  platformInfor	  ra  s       r  rj	  rj	  ]  s'    	 !<	=B
V\
"CSr  c                       e Zd Zdedz  fgZy)c_nvmlMask255_tmaskr   Nr  r  r  r  rm	  rm	  c  s    	!Hr  rm	  c                   :     e Zd ZdefdefdefdefgZ fdZ xZS )#c_nvmlWorkloadPowerProfileInfo_v1_tr  r  priorityconflictingmaskc                 6    t         t        |   t               y rN  )r  rp	  rp  nvmlWorkloadPowerProfileInfo_v1rP  s    r  rp  z,c_nvmlWorkloadPowerProfileInfo_v1_t.__init__  s    14AJiAjr  r  r  r  r  rm	  ru  rp  r  r  s   @r  rp	  rp	  {  s6    	F	f	V	O,	Hk kr  rp	  i+ c                   :     e Zd Zdefdefdeez  fgZ fdZ xZ	S )+c_nvmlWorkloadPowerProfileProfilesInfo_v1_tr  perfProfilesMaskperfProfilec                 6    t         t        |   t               y rN  )r  rw	  rp  'nvmlWorkloadPowerProfileProfilesInfo_v1rP  s    r  rp  z4c_nvmlWorkloadPowerProfileProfilesInfo_v1_t.__init__  s    94IRyIzr  )
r  r  r  r  rm	  rp	   NVML_WORKLOAD_POWER_MAX_PROFILESru  rp  r  r  s   @r  rw	  rw	    s5    	F	_-	;>^^_H{ {r  rw	  id  c                   :     e Zd ZdefdefdefdefgZ fdZ xZS ).c_nvmlWorkloadPowerProfileCurrentProfiles_v1_tr  rx	  requestedProfilesMaskenforcedProfilesMaskc                 6    t         t        |   t               y rN  )r  r~	  rp  *nvmlWorkloadPowerProfileCurrentProfiles_v1rP  s    r  rp  z7c_nvmlWorkloadPowerProfileCurrentProfiles_v1_t.__init__  s    <dLUL  	Ar  ru	  r  s   @r  r~	  r~	    s6    	F	_-	 /2	1	HA Ar  r~	  i$  c                   .     e Zd ZdefdefgZ fdZ xZS )0c_nvmlWorkloadPowerProfileRequestedProfiles_v1_tr  r	  c                 6    t         t        |   t               y rN  )r  r	  rp  ,nvmlWorkloadPowerProfileRequestedProfiles_v1rP  s    r  rp  z9c_nvmlWorkloadPowerProfileRequestedProfiles_v1_t.__init__  s    >N  XDN  	Er  ru	  r  s   @r  r	  r	    s&    	F	 /2H
E Er  r	  c                 L    t        d      } || |      }t        |       t        S )N-nvmlDeviceWorkloadPowerProfileGetProfilesInfor2  )r  profilesInfor	  ra  s       r  r	  r	    s'    	 !P	QB
V\
"CSr  c                 L    t        d      } || |      }t        |       t        S )N0nvmlDeviceWorkloadPowerProfileGetCurrentProfilesr2  )r  currentProfilesr	  ra  s       r  r	  r	    s'    	 !S	TB
V_
%CSr  c                 L    t        d      } || |      }t        |       t        S )N2nvmlDeviceWorkloadPowerProfileSetRequestedProfilesr2  r  requestedProfilesr	  ra  s       r  r	  r	    s(    	 !U	VB
V&
'CSr  c                 L    t        d      } || |      }t        |       t        S )N4nvmlDeviceWorkloadPowerProfileClearRequestedProfilesr2  r	  s       r  r	  r	    s(    	 !W	XB
V&
'CSr  c                 L    t        d      } || |      }t        |       t        S )N#nvmlDeviceGetNvlinkSupportedBwModesr2  )r  supportedBwModesr	  ra  s       r  r	  r	    s(    	 !F	GB
V%
&CSr  c                 L    t        d      } || |      }t        |       t        S )NnvmlDeviceGetNvlinkBwModer2  )r  	getBwModer	  ra  s       r  r	  r	    '    	 !<	=B
VY
CSr  c                 L    t        d      } || |      }t        |       t        S )NnvmlDeviceSetNvlinkBwModer2  )r  	setBwModer	  ra  s       r  r	  r	    r	  r  c                   .     e Zd ZdefdefgZ fdZ xZS )c_nvmlDramEncryptionInfo_tr  encryptionStatec                 6    t         t        |   t               y rN  )r  r	  rp  nvmlDramEncryptionInfo_v1rP  s    r  rp  z#c_nvmlDramEncryptionInfo_t.__init__  s    ($8AZ8[r  )r  r  r  r  r  ru  rp  r  r  s   @r  r	  r	    s'    	F	/0H
\ \r  r	  c                     t               }t               }t        d      } || t        |      t        |            }t        |       |j                  |j                  gS )NnvmlDeviceGetDramEncryptionMode)r	  rk  r  rb  r	  rz  s        r  r	  r	    sT    ,.K/1N	 !B	CB
VU;'~)>
?CS'')G)GHHr  c                     t        |       d   S rt  r	  r  s    r  &nvmlDeviceGetCurrentDramEncryptionModer	        *62155r  c                     t        |       d   S r  r	  r  s    r  &nvmlDeviceGetPendingDramEncryptionModer	    r	  r  c                 v    t        d      }t               }||_         || t        |            }t	        |       y )NnvmlDeviceSetDramEncryptionMode)rk  r	  r	  r  rb  )r  r  r	  c_dramEncryptionModera  s        r  r	  r	    s<    	 !B	CB57+/(
VU/0
1CSr  c                   .     e Zd ZdefdefgZ fdZ xZS )c_nvmlPowerSmoothingState_v1_tr  r  c                 6    t         t        |   t               y rN  )r  r	  rp  nvmlPowerSmoothingState_v1rP  s    r  rp  z'c_nvmlPowerSmoothingState_v1_t.__init__  s    ,d<E_<`r  r  r  s   @r  r	  r	    s&    	F	&H
a ar  r	  c                   :     e Zd ZdefdefdefdefgZ fdZ xZS ) c_nvmlPowerSmoothingProfile_v1_tr  r  paramIdr  c                 6    t         t        |   t               y rN  )r  r	  rp  nvmlPowerSmoothingProfile_v1rP  s    r  rp  z)c_nvmlPowerSmoothingProfile_v1_t.__init__  s    .>Gc>dr  )r  r  r  r  r0  ru  rp  r  r  s   @r  r	  r	    s6    	F	f	F	(	He er  r	  c                 B    t        d      } || |      }t        |       y )N-nvmlDevicePowerSmoothingActivatePresetProfiler  r  r  r	  ra  s       r  r	  r	    s!    	 !P	QB
VW
CSr  c                 B    t        d      } || |      }t        |       y )N0nvmlDevicePowerSmoothingUpdatePresetProfileParamr  r	  s       r  r	  r	    s!    	 !S	TB
VW
CSr  c                 B    t        d      } || |      }t        |       y )N nvmlDevicePowerSmoothingSetStater  )r  r  r	  ra  s       r  r	  r	    s!    	 !C	DB
VU
CSr  r'  )r   r   )NN(  ctypesctypes.utilr   	functoolsr   rM  r;  	threadingrQ  r  r  NVML_FEATURE_DISABLEDNVML_FEATURE_ENABLEDr  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_COUNTrP  #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_GPS_CURR NVML_TEMPERATURE_THRESHOLD_COUNTrE  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  r  NVML_INFOROM_OEMNVML_INFOROM_ECCNVML_INFOROM_POWERNVML_INFOROM_DENNVML_INFOROM_COUNTrH  r`  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  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_SUPPORTEDr  NVML_ERROR_DEPRECATEDNVML_ERROR_NOT_READYNVML_ERROR_GPU_NOT_FOUNDNVML_ERROR_INVALID_STATEr>  r  NVML_FAN_NORMALNVML_FAN_FAILEDr@  (NVML_FAN_POLICY_TEMPERATURE_CONTINOUS_SWNVML_FAN_POLICY_MANUALr  NVML_LED_COLOR_GREENNVML_LED_COLOR_AMBERry  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_COUNTro  *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_BRIDGErG  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_SIGNED_INTNVML_VALUE_TYPE_UNSIGNED_SHORTNVML_VALUE_TYPE_COUNT_nvmlNvlinkVersion_tNVML_NVLINK_VERSION_INVALIDNVML_NVLINK_VERSION_1_0NVML_NVLINK_VERSION_2_0NVML_NVLINK_VERSION_2_2NVML_NVLINK_VERSION_3_0NVML_NVLINK_VERSION_3_1NVML_NVLINK_VERSION_4_0NVML_NVLINK_VERSION_5_0r  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NVML_ENCODER_QUERY_AV1NVML_ENCODER_QUERY_UNKNOWN_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_DOWNrz  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_MODULE_POWER_SAMPLESNVML_JPG_UTILIZATION_SAMPLESNVML_OFA_UTILIZATION_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_PCINVML_P2P_CAPS_INDEX_UNKNOWNr{  NVML_P2P_STATUS_OK$NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED%NVML_P2P_STATUS_CHIPSET_NOT_SUPPORTED!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_UNKNOWNrd  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_BLACKWELLNVML_DEVICE_ARCH_T23XNVML_DEVICE_ARCH_UNKNOWNrh  NVML_BUS_TYPE_UNKNOWNNVML_BUS_TYPE_PCINVML_BUS_TYPE_PCIENVML_BUS_TYPE_FPCINVML_BUS_TYPE_AGPrr  NVML_POWER_SOURCE_ACNVML_POWER_SOURCE_BATTERYNVML_POWER_SOURCE_UNDERSIZEDr}  +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_UNLIMITEDry   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_64000MBPS_nvmlPcieAtomicsCapability_t NVML_PCIE_ATOMICS_CAP_FETCHADD32 NVML_PCIE_ATOMICS_CAP_FETCHADD64NVML_PCIE_ATOMICS_CAP_SWAP32NVML_PCIE_ATOMICS_CAP_SWAP64NVML_PCIE_ATOMICS_CAP_CAS32NVML_PCIE_ATOMICS_CAP_CAS64NVML_PCIE_ATOMICS_CAP_CAS128NVML_PCIE_ATOMICS_OPS_MAXr  NVML_AFFINITY_SCOPE_NODENVML_AFFINITY_SCOPE_SOCKET_nvmlDeviceGpuRecoveryAction_tNVML_GPU_RECOVERY_ACTION_NONE"NVML_GPU_RECOVERY_ACTION_GPU_RESET$NVML_GPU_RECOVERY_ACTION_NODE_REBOOT"NVML_GPU_RECOVERY_ACTION_DRAIN_P2P(NVML_GPU_RECOVERY_ACTION_DRAIN_AND_RESETnvmlFlagDefaultnvmlFlagForceNVML_INIT_FLAG_NO_GPUSNVML_INIT_FLAG_NO_ATTACHNVML_MAX_GPC_COUNTr  r  r  r  rH  r  r  r  r  'NVML_DEVICE_GPU_PART_NUMBER_BUFFER_SIZEr  r  r  r  r  r  r  r8  r=  +NVML_DEVICE_GPU_FRU_PART_NUMBER_BUFFER_SIZEr  !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_DEV_C2C_LINK_COUNTNVML_FI_DEV_C2C_LINK_GET_STATUSNVML_FI_DEV_C2C_LINK_GET_MAX_BW)NVML_FI_DEV_PCIE_COUNT_CORRECTABLE_ERRORS$NVML_FI_DEV_PCIE_COUNT_NAKS_RECEIVED%NVML_FI_DEV_PCIE_COUNT_RECEIVER_ERRORNVML_FI_DEV_PCIE_COUNT_BAD_TLP NVML_FI_DEV_PCIE_COUNT_NAKS_SENTNVML_FI_DEV_PCIE_COUNT_BAD_DLLP&NVML_FI_DEV_PCIE_COUNT_NON_FATAL_ERROR"NVML_FI_DEV_PCIE_COUNT_FATAL_ERROR&NVML_FI_DEV_PCIE_COUNT_UNSUPPORTED_REQ!NVML_FI_DEV_PCIE_COUNT_LCRC_ERROR!NVML_FI_DEV_PCIE_COUNT_LANE_ERROR&NVML_FI_DEV_IS_RESETLESS_MIG_SUPPORTEDNVML_FI_DEV_POWER_AVERAGENVML_FI_DEV_POWER_INSTANTNVML_FI_DEV_POWER_MIN_LIMITNVML_FI_DEV_POWER_MAX_LIMITNVML_FI_DEV_POWER_DEFAULT_LIMITNVML_FI_DEV_POWER_CURRENT_LIMITNVML_FI_DEV_ENERGY!NVML_FI_DEV_POWER_REQUESTED_LIMIT'NVML_FI_DEV_TEMPERATURE_SHUTDOWN_TLIMIT'NVML_FI_DEV_TEMPERATURE_SLOWDOWN_TLIMIT&NVML_FI_DEV_TEMPERATURE_MEM_MAX_TLIMIT&NVML_FI_DEV_TEMPERATURE_GPU_MAX_TLIMITNVML_FI_DEV_PCIE_COUNT_TX_BYTESNVML_FI_DEV_PCIE_COUNT_RX_BYTES5NVML_FI_DEV_IS_MIG_MODE_INDEPENDENT_MIG_QUERY_CAPABLE*NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX%NVML_FI_DEV_NVLINK_COUNT_XMIT_PACKETS#NVML_FI_DEV_NVLINK_COUNT_XMIT_BYTES$NVML_FI_DEV_NVLINK_COUNT_RCV_PACKETS"NVML_FI_DEV_NVLINK_COUNT_RCV_BYTES%NVML_FI_DEV_NVLINK_COUNT_VL15_DROPPED0NVML_FI_DEV_NVLINK_COUNT_MALFORMED_PACKET_ERRORS.NVML_FI_DEV_NVLINK_COUNT_BUFFER_OVERRUN_ERRORS#NVML_FI_DEV_NVLINK_COUNT_RCV_ERRORS*NVML_FI_DEV_NVLINK_COUNT_RCV_REMOTE_ERRORS+NVML_FI_DEV_NVLINK_COUNT_RCV_GENERAL_ERRORS4NVML_FI_DEV_NVLINK_COUNT_LOCAL_LINK_INTEGRITY_ERRORS&NVML_FI_DEV_NVLINK_COUNT_XMIT_DISCARDS8NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_SUCCESSFUL_EVENTS4NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_FAILED_EVENTS-NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_EVENTS&NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE0&NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE1 NVML_FI_DEV_NVLINK_COUNT_RAW_BER)NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_ERRORS&NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_BER&NVML_FI_DEV_NVLINK_COUNT_SYMBOL_ERRORS#NVML_FI_DEV_NVLINK_COUNT_SYMBOL_BER*NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MIN,NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS0NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_SUPPORTEDNVML_FI_DEV_RESET_STATUS"NVML_FI_DEV_DRAIN_AND_RESET_STATUS&NVML_FI_DEV_PCIE_OUTBOUND_ATOMICS_MASK%NVML_FI_DEV_PCIE_INBOUND_ATOMICS_MASK#NVML_FI_DEV_GET_GPU_RECOVERY_ACTIONNVML_FI_DEV_C2C_LINK_ERROR_INTR!NVML_FI_DEV_C2C_LINK_ERROR_REPLAY%NVML_FI_DEV_C2C_LINK_ERROR_REPLAY_B2B NVML_FI_DEV_C2C_LINK_POWER_STATE&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_0&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_1&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_2&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_3&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_4&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_5&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_6&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_7&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_8&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_9'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_10'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_11'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_12'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_13'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_14'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_15,NVML_FI_DEV_CLOCKS_EVENT_REASON_SW_POWER_CAP*NVML_FI_DEV_CLOCKS_EVENT_REASON_SYNC_BOOST1NVML_FI_DEV_CLOCKS_EVENT_REASON_SW_THERM_SLOWDOWN1NVML_FI_DEV_CLOCKS_EVENT_REASON_HW_THERM_SLOWDOWN7NVML_FI_DEV_CLOCKS_EVENT_REASON_HW_POWER_BRAKE_SLOWDOWN%NVML_FI_DEV_POWER_SYNC_BALANCING_FREQ#NVML_FI_DEV_POWER_SYNC_BALANCING_AFNVML_FI_PWR_SMOOTHING_ENABLEDNVML_FI_PWR_SMOOTHING_PRIV_LVL+NVML_FI_PWR_SMOOTHING_IMM_RAMP_DOWN_ENABLED&NVML_FI_PWR_SMOOTHING_APPLIED_TMP_CEIL'NVML_FI_PWR_SMOOTHING_APPLIED_TMP_FLOOR3NVML_FI_PWR_SMOOTHING_MAX_PERCENT_TMP_FLOOR_SETTING3NVML_FI_PWR_SMOOTHING_MIN_PERCENT_TMP_FLOOR_SETTING=NVML_FI_PWR_SMOOTHING_HW_CIRCUITRY_PERCENT_LIFETIME_REMAINING-NVML_FI_PWR_SMOOTHING_MAX_NUM_PRESET_PROFILES/NVML_FI_PWR_SMOOTHING_PROFILE_PERCENT_TMP_FLOOR*NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_UP_RATE,NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_RATE0NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_HYST_VAL+NVML_FI_PWR_SMOOTHING_ACTIVE_PRESET_PROFILE6NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PERCENT_TMP_FLOOR1NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_UP_RATE3NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_RATE7NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_HYST_VALNVML_FI_MAXNVML_NVLINK_STATE_INACTIVENVML_NVLINK_STATE_ACTIVENVML_NVLINK_STATE_SLEEP*NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_100US)NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_50USNVML_C2C_POWER_STATE_FULL_POWERNVML_C2C_POWER_STATE_LOW_POWER!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_VSGArg  Lockre  r2  r  rw  _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_COMPUTErR  _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_PERMANENTrl  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_COUNTr  -NVML_VGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPU NVML_VGPU_DRIVER_CAP_WARM_UPDATENVML_VGPU_DRIVER_CAP_COUNTr  *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_DEVICE_STREAMING%NVML_DEVICE_VGPU_CAP_MINI_QUARTER_GPU-NVML_DEVICE_VGPU_CAP_COMPUTE_MEDIA_ENGINE_GPU NVML_DEVICE_VGPU_CAP_WARM_UPDATE+NVML_DEVICE_VGPU_CAP_HOMOGENEOUS_PLACEMENTS.NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_SUPPORTED,NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_ENABLEDNVML_DEVICE_VGPU_CAP_COUNTr7  1NVML_VGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED/NVML_VGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZEDrB  NVML_VGPU_VM_COMPATIBILITY_NONENVML_VGPU_VM_COMPATIBILITY_COLD$NVML_VGPU_VM_COMPATIBILITY_HIBERNATE NVML_VGPU_VM_COMPATIBILITY_SLEEPNVML_VGPU_VM_COMPATIBILITY_LIVErC  "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 _nvmlConfComputeGpusReadyState_t'NVML_CC_ACCEPTING_CLIENT_REQUESTS_FALSE&NVML_CC_ACCEPTING_CLIENT_REQUESTS_TRUE_nvmlConfComputeGpuCaps_t"NVML_CC_SYSTEM_GPUS_CC_NOT_CAPABLENVML_CC_SYSTEM_GPUS_CC_CAPABLE_nvmlConfComputeCpuCaps_tNVML_CC_SYSTEM_CPU_CAPS_NONENVML_CC_SYSTEM_CPU_CAPS_AMD_SEV!NVML_CC_SYSTEM_CPU_CAPS_INTEL_TDX#NVML_CC_SYSTEM_CPU_CAPS_AMD_SEV_SNP$NVML_CC_SYSTEM_CPU_CAPS_AMD_SNP_VTOM_nvmlConfComputeDevToolsMode_t NVML_CC_SYSTEM_DEVTOOLS_MODE_OFFNVML_CC_SYSTEM_DEVTOOLS_MODE_ONNVML_CC_SYSTEM_MULTIGPU_NONE&NVML_CC_SYSTEM_MULTIGPU_PROTECTED_PCIE&NVML_CC_SYSTEM_ENVIRONMENT_UNAVAILABLENVML_CC_SYSTEM_ENVIRONMENT_SIMNVML_CC_SYSTEM_ENVIRONMENT_PROD_nvmlConfComputeCcFeature_tNVML_CC_SYSTEM_FEATURE_DISABLEDNVML_CC_SYSTEM_FEATURE_ENABLED0_nvmlConfComputeCcKeyRotationThreshAttackerAdv_t2NVML_CC_KEY_ROTATION_THRESH_ATTACKER_ADVANTAGE_MIN2NVML_CC_KEY_ROTATION_THRESH_ATTACKER_ADVANTAGE_MAXr  r  r
  r  rB  r^  rb  r*  rd  rk  objectrm  r|  r  	Structurer  r  rf  r  r  r  nvmlC2cModeInfo_v1r  r  r  r  r  r  r  nvmlPciInfoExt_v1r  r  r  r^  r  r  r  r  nvmlMemory_v2r  r  r  r  r  r  c_nvmlProcessInfo_tr  NVML_PROCESS_MODE_COMPUTENVML_PROCESS_MODE_GRAPHICSNVML_PROCESS_MODE_MPSr  r  r  nvmlProcessDetailList_v1r  r  r  r!  r%  Unionr(  r6  r:  r>  rS  rO  rJ  rY  rU  r`  r]  rb  r  rd  r  rg  r  !NVML_VGPU_PGPU_HETEROGENEOUS_MODENVML_VGPU_PGPU_HOMOGENEOUS_MODErl  r  rn  r=  rq  ry  r}  rw  r  r  r  r  r  r5  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  r  r  rW  r  r  NVML_UUID_TYPE_NONEr  r  r  r  r  r  r  nvmlEventTypeSingleBitEccErrornvmlEventTypeDoubleBitEccErrornvmlEventTypePStatenvmlEventTypeXidCriticalErrornvmlEventTypeClocknvmlEventTypePowerSourceChangenvmlEventMigConfigChange#nvmlEventTypeSingleBitEccErrorStorm nvmlEventTypeDramRetirementEvent"nvmlEventTypeDramRetirementFailure nvmlEventTypeNonFatalPoisonErrornvmlEventTypeFatalPoisonError nvmlEventTypeGpuUnavailableErrornvmlEventTypeGpuRecoveryActionnvmlEventTypeNonenvmlEventTypeAllnvmlClocksEventReasonGpuIdle.nvmlClocksEventReasonApplicationsClocksSetting&nvmlClocksEventReasonUserDefinedClocksnvmlClocksEventReasonSwPowerCapnvmlClocksEventReasonHwSlowdownnvmlClocksEventReasonSyncBoost&nvmlClocksEventReasonSwThermalSlowdown&nvmlClocksEventReasonHwThermalSlowdown)nvmlClocksEventReasonHwPowerBrakeSlowdown(nvmlClocksEventReasonDisplayClockSettingnvmlClocksEventReasonNonenvmlClocksEventReasonAllnvmlClocksThrottleReasonGpuIdle1nvmlClocksThrottleReasonApplicationsClocksSetting)nvmlClocksThrottleReasonUserDefinedClocks"nvmlClocksThrottleReasonSwPowerCap"nvmlClocksThrottleReasonHwSlowdown!nvmlClocksThrottleReasonSyncBoost)nvmlClocksThrottleReasonSwThermalSlowdown)nvmlClocksThrottleReasonHwThermalSlowdown,nvmlClocksThrottleReasonHwPowerBrakeSlowdown+nvmlClocksThrottleReasonDisplayClockSettingnvmlClocksThrottleReasonNonenvmlClocksThrottleReasonAllr  r  r  "nvmlSystemEventTypeGpuDriverUnbind nvmlSystemEventTypeGpuDriverBindnvmlSystemEventTypeCountr  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r"  r*  r.  r:  r?  "NVML_VGPU_SCHEDULER_POLICY_UNKNOWN&NVML_VGPU_SCHEDULER_POLICY_BEST_EFFORT&NVML_VGPU_SCHEDULER_POLICY_EQUAL_SHARE&NVML_VGPU_SCHEDULER_POLICY_FIXED_SHAREry  r`  NVML_VGPU_SCHEDULER_ARR_DEFAULTNVML_VGPU_SCHEDULER_ARR_DISABLENVML_VGPU_SCHEDULER_ARR_ENABLE(NVML_VGPU_SCHEDULER_ENGINE_TYPE_GRAPHICSrE  rJ  rM  rQ  rX  rb  re  rh  rj  rl  rp  r{  nvmlVgpuTypeIdInfo_v1r  r  r  nvmlActiveVgpuInstanceInfo_v1r  nvmlVgpuSchedulerState_v1r  nvmlVgpuSchedulerStateInfo_v1r  nvmlVgpuSchedulerLogInfo_v1r  !nvmlVgpuCreatablePlacementInfo_v1r  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_1_SLICE_GFX%NVML_GPU_INSTANCE_PROFILE_2_SLICE_GFX%NVML_GPU_INSTANCE_PROFILE_4_SLICE_GFX'NVML_GPU_INSTANCE_PROFILE_1_SLICE_NO_ME'NVML_GPU_INSTANCE_PROFILE_2_SLICE_NO_ME(NVML_GPU_INSTANCE_PROFILE_1_SLICE_ALL_ME(NVML_GPU_INSTANCE_PROFILE_2_SLICE_ALL_ME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  NVML_THERMAL_COOLER_SIGNAL_NONE!NVML_THERMAL_COOLER_SIGNAL_TOGGLE#NVML_THERMAL_COOLER_SIGNAL_VARIABLE NVML_THERMAL_COOLER_SIGNAL_COUNTr  NVML_THERMAL_COOLER_TARGET_NONENVML_THERMAL_COOLER_TARGET_GPU!NVML_THERMAL_COOLER_TARGET_MEMORY'NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY&NVML_THERMAL_COOLER_TARGET_GPU_RELATEDr  r  r  r  r4  r  r  r  r  r  r  r  *NVML_CC_CEC_ATTESTATION_REPORT_NOT_PRESENT&NVML_CC_CEC_ATTESTATION_REPORT_PRESENTr  r  r  r   r  r  r  r  r  r  r  r)  r.  r0  r4  r1  rA  r"  rF  rL  rQ  rS  rV  rX  r]  ra  re  rj  rn  rq  rs  rv  rz  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,  r.  r1  r4  r;  r?  rB  rH  rJ  rG  rM  rO  rS  rV  rZ  r`  rb  re  ri  rm  ro  rq  rt  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-  r2  r7  r9  r=  r?  rA  rE  rG  rI  rK  rM  rO  rQ  rS  rV  rW  r_  rf  rk  rn  rs  rv  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.  r1  r4  r  r9  r<  r@  rD  rH  rL  rN  rQ  rT  rW  rY  r\  r_  rb  re  rh  rk  ro  rq  rt  rv  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r  r  r  r  r!  r#  r&  r(  r+  r*  r.  r0  r2  r6  r8  r;  r>  r@  rB  rD  rG  rJ  rM  rP  rS  rU  rX  rZ  r`  rc  rg  rk  rn  rq  ru  rx  r|  r  r  r  r  r  r  nvmlClockOffset_v1r  r  r  r  r  r3  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_NVOFA_1_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_SEC$NVML_GPM_METRIC_C2C_TOTAL_TX_PER_SEC$NVML_GPM_METRIC_C2C_TOTAL_RX_PER_SEC#NVML_GPM_METRIC_C2C_DATA_TX_PER_SEC#NVML_GPM_METRIC_C2C_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK0_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK0_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK0_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK0_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK1_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK1_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK1_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK1_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK2_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK2_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK2_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK2_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK3_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK3_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK3_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK3_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK4_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK4_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK4_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK4_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK5_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK5_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK5_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK5_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK6_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK6_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK6_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK6_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK7_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK7_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK7_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK7_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK8_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK8_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK8_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK8_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK9_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK9_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK9_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK9_DATA_RX_PER_SEC+NVML_GPM_METRIC_C2C_LINK10_TOTAL_TX_PER_SEC+NVML_GPM_METRIC_C2C_LINK10_TOTAL_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK10_DATA_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK10_DATA_RX_PER_SEC+NVML_GPM_METRIC_C2C_LINK11_TOTAL_TX_PER_SEC+NVML_GPM_METRIC_C2C_LINK11_TOTAL_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK11_DATA_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK11_DATA_RX_PER_SEC+NVML_GPM_METRIC_C2C_LINK12_TOTAL_TX_PER_SEC+NVML_GPM_METRIC_C2C_LINK12_TOTAL_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK12_DATA_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK12_DATA_RX_PER_SEC+NVML_GPM_METRIC_C2C_LINK13_TOTAL_TX_PER_SEC+NVML_GPM_METRIC_C2C_LINK13_TOTAL_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK13_DATA_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK13_DATA_RX_PER_SEC!NVML_GPM_METRIC_HOSTMEM_CACHE_HIT"NVML_GPM_METRIC_HOSTMEM_CACHE_MISS!NVML_GPM_METRIC_PEERMEM_CACHE_HIT"NVML_GPM_METRIC_PEERMEM_CACHE_MISSNVML_GPM_METRIC_DRAM_CACHE_HITNVML_GPM_METRIC_DRAM_CACHE_MISSNVML_GPM_METRIC_NVENC_0_UTILNVML_GPM_METRIC_NVENC_1_UTILNVML_GPM_METRIC_NVENC_2_UTILNVML_GPM_METRIC_NVENC_3_UTIL(NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR0_CTXSW_REQUESTS(NVML_GPM_METRIC_GR0_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR0_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR1_CTXSW_REQUESTS(NVML_GPM_METRIC_GR1_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR1_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR2_CTXSW_REQUESTS(NVML_GPM_METRIC_GR2_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR2_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR3_CTXSW_REQUESTS(NVML_GPM_METRIC_GR3_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR3_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR4_CTXSW_REQUESTS(NVML_GPM_METRIC_GR4_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR4_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR5_CTXSW_REQUESTS(NVML_GPM_METRIC_GR5_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR5_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR6_CTXSW_REQUESTS(NVML_GPM_METRIC_GR6_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR6_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR7_CTXSW_REQUESTS(NVML_GPM_METRIC_GR7_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR7_CTXSW_ACTIVE_PCTr  r  r  r  r  r  NVML_GPM_METRICS_GET_VERSIONr  r	  r 	  r	  r	  r		  r	  r	  r	  r	  "NVML_NVLINK_POWER_STATE_HIGH_SPEEDNVML_NVLINK_POWER_STATE_LOW#NVML_NVLINK_LOW_POWER_THRESHOLD_MIN#NVML_NVLINK_LOW_POWER_THRESHOLD_MAX%NVML_NVLINK_LOW_POWER_THRESHOLD_RESET'NVML_NVLINK_LOW_POWER_THRESHOLD_DEFAULTr	  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	  5NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_NOT_SUPPORTED,NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_TRUE-NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_FALSE-NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_DEGRADED_BW-NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW8NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_NOT_SUPPORTED/NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_TRUE0NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_FALSE0NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_RECOVERY0NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_RECOVERY9NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_NOT_SUPPORTED0NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_TRUE1NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_FALSE1NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_UNHEALTHY1NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_UNHEALTHYANVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_NOT_SUPPORTED8NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_TRUE9NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_FALSE9NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ACCESS_TIMEOUT_RECOVERY9NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ACCESS_TIMEOUT_RECOVERYr#	  r 	  r&	  r*	  NVML_GPU_NVLINK_BW_MODE_FULLNVML_GPU_NVLINK_BW_MODE_OFFNVML_GPU_NVLINK_BW_MODE_MINNVML_GPU_NVLINK_BW_MODE_HALF NVML_GPU_NVLINK_BW_MODE_3QUARTERNVML_GPU_NVLINK_BW_MODE_COUNTr,	  r/	  r4	  NVML_POWER_SCOPE_GPUNVML_POWER_SCOPE_MODULENVML_POWER_SCOPE_MEMORYr1	  nvmlPowerValue_v2r6	  r;	  rI	  rL	  NVML_DEV_CAP_EGMrQ	  rN	  rS	  rV	  rb	  r^	  rh	  rj	  rm	  r|	  NVML_POWER_PROFILE_MAX_PNVML_POWER_PROFILE_MAX_QNVML_POWER_PROFILE_COMPUTENVML_POWER_PROFILE_MEMORY_BOUNDNVML_POWER_PROFILE_NETWORKNVML_POWER_PROFILE_BALANCED NVML_POWER_PROFILE_LLM_INFERENCENVML_POWER_PROFILE_LLM_TRAININGNVML_POWER_PROFILE_RBMNVML_POWER_PROFILE_DCPCIENVML_POWER_PROFILE_HMMA_SPARSENVML_POWER_PROFILE_HMMA_DENSE NVML_POWER_PROFILE_SYNC_BALANCEDNVML_POWER_PROFILE_HPCNVML_POWER_PROFILE_MIGNVML_POWER_PROFILE_MAXrt	  rp	  r{	  rw	  r	  r~	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  %NVML_POWER_SMOOTHING_MAX_NUM_PROFILES+NVML_POWER_SMOOTHING_ADMIN_OVERRIDE_NOT_SET4NVML_POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR/NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE1NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE7NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESISr	  r	  r	  r	  r	  r	  r	  r  r  r  <module>r     sF1  @  $  
 	       !" !" !" !"!"!" !" !" !" !" !# !# !? !# !# !# !# !# !# % +, #+, #+, "+, "+, '+, (+, '+, #+,  "     %& %& !%& %& "%&   !  ! %& " %& "&' ##$       . "   !  !  !  !  #)  !" !" !" !" !"    !  !  !  !  !  !  ! (. %+. !+. "+. #+. #+/ $+/ #+/ &+/ (+/ !%+ "$% $%  $% $% !$%   "& "& "& "&           %&  %& "%&     #$ #$ #$ #$  #$                   '('( '( '( '( '( '( '( '( '( ') ') ') ') ') ') ') ') ') "') ') ') ') !') !') ') $') ') ') ') '*   +, (+,     "#"# "## <= 9<= /<=   <= *<= +<=          ! %& "#$   !"                 #$    $& !%' "          !               "#                        &       
      '( $(L %$% !,- *$% "   "         !  &        ) ) ) !' .8 +-7 * ", ", ",   %/  %/ !%/ !%/ !%/ "%/ "%/ "% $(  $(  $( $( $( $( $( $%    !' '( '( "'( $'( "+, (       02 '/1 /1 /1 &/1 $/1 /1 /1 /1 #/1 '/1 %/1 "/1 %/2 /1 /0 #/5f~/C #/2 (/3 +/3  '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 '03 03 03 03 )03 $03 %03 03  03 03 &03 "03 &03 !03 !03 &03 03 03 03 03 03 03 03 !03 '03 '03 &03 &03 03 := 5:= *;> %;> #;> $;> ";> %;> 0;> .;> #;> *;> +;> 4;> &;> 8;> 4;> -;> &;> &;>  ;> );> &;> &;> #;> *;> ,;> 0;> ;> ";> &;> %;> #;> ;> !;> %;>  ;> &;> &;> &;> &;> &;> &;> &;> &;> &;> &;> ';> ';> ';> ';> ';> ';X ,;] *;> 1;> 1;> 7;> %;> #BE BE BE +BE &BE 'BE 3BE 3BE =BE -BE /BE *BE ,BE 0BE +BE 6BE 1BE 3BE 7 !     -. *-. ) #$ !"  ,- !+, (+, !+, &+, & inn          & ./ &./ #./ )./ +./ %./ &!( ,. &,.  ,. ,. ',. " ./ ./ ./ "./ ./ ./ $ 23 -23  23 $ 9: *9: 59: 29: *9: +9: %9: %9: -9:  9: +9; .9; ,9; " 45 145 /# *- *- *- $*-  *- (. %.1 ".1 ).1 *.1 !.8 # "# "# #)  *+ ')* &" %& "!" "   "# $% !&' #'( $!' #$  "#   )* &)* &!" "# $ "# !" 39 057 257 2 &* "	y 	+)	 +)Z5
>2   !% 0' '		) 	*+2B) 2Bh* 0 
  * ) - / 	I 	./- .  * .' .(;  & !4 %8 "( ""+ " ", "I 
  "&0 & 0 ,     y ,#6 , 9 $ 0 "5 0 #- #+ 	E 	( / 	, 	 (* $ ) g(; g # Y!4 Y # Y!4 Y':  % !4   #6  ! &' !&' #6  ! "5    ,? 
-@ 
.A  #- 
+> 
,? .A  #-  3    	 3 	 34 23 %23 /23 -23 "23  1 
0 
': 
(; 
*=  ) 	 3 	': (; ': (; ': (; $7 %8 #6  %          @& @	i 	23 &8 &8 &8 &8 &8 &8 &8 &8 #&8  &8 "&8  &8 &8  &8 &8 (9*H)I*H)I +>)> +=	)=
 +I)I +H)H +C)C +N)N +K	)K +M
)M +K)K +H)H +K)K +I)I & -? 1C .1_ &,> ,> ,> ,> &,> &,> ),> (,> 2K2N3O2`3a 3R3R 3R	3R
 3Q3Q 3Y3Y 3Y3Y 3\3\ 3[	3[  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^ $+ $	I 	 !>? %7 "%7   %. "q-@ q $-  m+> m %. !o,? o$!4 $ $-  m+> m
 *) +$B	1 	) 
. 	2 	I  +, "*+ &*+ &*+ & /0 *.1 !$% $% $% ./ (#6 / 
% $7 2 $7 &9 2 
U $7 
(; 
 3  " %8  ' (;  !* $7  & (;  !* 	&9 	 ( ,?  %. !y ,     ), !), !), !), !), !), !), !), &), &), &+. %+. %+. %+. '+. '+. (+/ (+/ 9 
Y  !+ g(; g&i 	 	89 -0 %-0 %-0 %-0 %-0 %-0 %-0 %-0 *-0 #.1 +-0 *y 

 
 %/ !o,? o")   %& %& %& %& *9 *
cI c $%  $% $% $% $%  $% $% $& $& $& $& *+ *+ $*+ *+ *+ *+ *+ *+ *+ *+ *, *, !*,  *, *, '*, %*,  *,  *, #y #Y Y  )* )* !)* #)*   ,2 ,2 ,2 !,2 ',JMn,n  rY  -Y &,   G	Y 	!"@A 
Y 
y  +1 *0 $*. *0 #*0 '-. *-. &Y  $-  m9 mI 
Y 
	 i Y  -6 )Y  -6 )6
" "D"          .          !4  #  )<  "+ ! !.     ,28 	       3+86.     28FH M DJ8 C0    7I >.0544
*5++"	22225//  > D ; ;< D < < > > D D!F9 4F3G 94$/!4.k2 #J(, ,"2'+(#0*44     5(  "!(4 / /     " "";$.   4<,:< 4:8 Q$2:M44M44,4# 6 6E$$,*#!"("$6 (K $ 1] -:!%.K+ B_A` A IcHd H MSHbhbj S-   

& 9>57 O 9>57 O  /0 ./ ./ ./ ./ ./  ./  ./  .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 .0 '.0 '.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 $.0 %.0 %.0 %.0 %.0 %.0 %.0 %.0 %.0 %.0 %.0 %.0 %.0 %.0 %.0 %.0 %.1 $.1 $.1 #.1 #.1 *.1 *.1 ).1 ).1 *.1 *.1 ).1 ).1 *.1 *.1 ).1 ).1 *.1 *.1 ).1 ).1 *.1 *.1 ).1 ).1 *.1 *.1 ).1 ).1 *.1 *.1 ).1 ).1 *.1 *.1 ).1 ).1 *.1 *.1 ).1 ).1 *.1 *.1 ).1 ).1 +.1 +.1 *.1 *.1 +.1 +.1 *.1 *.1 +.1 +.1 *.1 *.1 +.1 +.1 *.1 *.1 !.1 ".1 !.1 ".1 .1 .2 .2 .2 .2 .2 (.2 '.2 ".2 (.2 $.2 (.2 '.2 ".2 (.2 $.2 (.2 '.2 ".2 (.2 $.2 (.2 '.2 ".2 (.2 $.2 (.2 '.2 ".2 (.2 $.2 (.2 '.2 ".2 (.2 $.2 (.2 '.2 ".2 (.2 $.2 (.2 '.2 ".2 (.2 $.1 * 	y 	45 Y + /   ! ,    ), "(+ *- #*0 #*4 %*O 'y 
   &' #&' !&' !&' /  9: 589 ,89 -89 -8< -=> 8=> /=> 0=> 0=A 0=> 9=> 0=> 1=> 1=A 1DE ADE 8DE 9DE 9DH 9! S0 S %( $' $' $' $'  $'      "/ "  Qb _$7 _( &   % _$7 _S1 SS1 S    ) 
 '*  &' &' &' &' &' &' &'  &' &' &' &( &( &(  &( &( &( "+ 	k*= 	k +4 '{2E { .7 *	A5H 	A 09 ,E7J E ' \!4 \I66 ;< %:D +:; 4:; /:; 1:; 7$ a%8 a ' 	e': 	e

r  