o
    װiA                    @   s*  d dl T d dlmZ d dlmZ d dlZd dlZd dlZd dlZe	Z
d ZdZe	Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZeZdZdZdZdZdZdZ e	Z!d Z"dZ#dZ$dZ%dZ&d	Z'd
Z(dZ)e	Z*d Z+dZ,e	Z-d Z.dZ/dZ0dZ1dZ2e	Z3d Z4dZ5dZ6dZ7dZ8dZ9d	Z:d
Z;dZ<dZ=dZ>e>Z?e	Z@d ZAdZBdZCdZDdZEd	ZFe	ZGd ZHdZIdZJdZKd	ZLe	ZMd ZNdZOdZPdZQdZRd	ZSd
ZTe	ZUdZVdZWdZXdZYdZZdZ[dZ\dZ]dZ^e	Z_d Z`dZadZbdZcdZde	Zed ZfdZgdZhdZie	Zjd ZkdZldZme	Znd ZodZpdZqe	Zrd ZsdZtdZue	Zvd ZwdZxdZydZzdZ{e	Z|d Z}dZ~dZdZdZe	Zd ZdZdZdZe	Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZe	Zd ZdZdZdZe	Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd Zd!Zd"Zd#Ze	Zd ZdZe	Zd ZdZe	Zd ZdZe	Zd ZdZdZe	Zd ZdZdZe	Zd ZdZdZe	Zd ZdZdZe	Zd ZdZdZdZdZd	Ze	Zd ZdZdZdZdZd	ZdZdZdZe	Zd ZdZe	Zd ZdZdZdZdZe	Zd ZdZe	Zd ZdZe	Zd ZdZdZdZdZd	Zd
ZdZe	Zd ZdZdZ e	Zd ZdZdZd$Zd%ZeZd&Ze	Z	d Z
dZdZdZdZd	Zd
Ze	Zd ZdZdZdZdZd	Zd
Ze	ZdZdZdZd	Zd
ZdZdZ dZ!d'Z"e	Z#d Z$dZ%dZ&dZ'dZ(e	Z)d Z*dZ+e	Z,d Z-dZ.e	Z/d(Z0d)Z1d*Z2e	Z3d Z4dZ5dZ6dZ7dZ8d	Z9d
Z:e	Z;d Z<dZ=d Z>dZ?dZ@dZAdZBdZCd+ZDd,ZEd+ZFd+ZGdZHd,ZId$ZJd+ZKd+ZLdZMdZNdZOdZPdZQdZReSe	d- ZTd-ZUd.ZVd/ZWeXd0ZYe	d0ZZ	 dZ[dZ\dZ]dZ^d	Z_d
Z`dZadZbdZcdZddZedZfdZgdZhdZidZjdZkdZldZmdZndZodZpdZqd Zrd!Zsd"Ztd1Zud2Zvd3Zwd$Zxd4ZydZzd5Z{d6Z|d7Z}d8Z~d9Zd:Zd;Zd%Zd<Zd=Zd>Zd?Zd@ZdAZdBZdCZdDZd&ZdEZdFZdGZdHZdIZdJZdKZdLZdMZdNZdOZdPZdQZdZdRZdSZdTZdUZdVZdWZdXZdYZdZZd[Zd\Zd]Zd^Zd_Zd`Zd+ZdaZdbZdcZddZdeZdfZdgZdhZdiZdjZdkZdlZdmZdnZdoZd,ZdpZdqZdrZdsZdtZduZdvZdwZdxZdyZdzZd{Zd|Zd}Zd~ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZdZdZdZd ZdZdZdZdZ	da
e Zd ae	Ze	Ze	Zd ZdZe	Zd ZdZdZdZdZdZeZd ZdZdZdZdZ e	Z!d Z"dZ#dZ$dZ%dZ&d	Z'e	Z(d Z)dZ*e	Z+d Z,dZ-dZ.dZ/dZ0d	Z1e	Z2d Z3dZ4e	Z5d Z6dZ7dZ8dZ9dZ:e	Z;d Z<dZ=dZ>dZ?dZ@e	ZAd ZBdZCdZDG dd deEZFdd ZGdd ZHeH  dd ZIeJ ZKddÄ ZLG ddń dŐeMZNddǄ ZOddɄ ZPG dd˄ dːeQZReSeRZTG dd̈́ d͐eQZUG ddτ dϐeUZVG ddф dѐeUZWG ddӄ dӐeUZXG ddՄ dՐeUZYG ddׄ dאeUZZG ddل dِeQZ[eSe[Z\G ddۄ dېeUZ]G dd݄ dݐeUZ^G dd߄ dߐeUZ_G dd deUZ`G dd deUZaG dd deUZbdZcG dd deUZdG dd deQZeG dd deQZfG dd deUZgG dd deUZhG dd deUZiG dd deUZjG dd deUZkG dd deUZlG dd demZnG dd deUZoG dd deUZpG dd  d eUZqG dd deUZrG dd deUZsG dd deUZtd ZudZvdZwdZxdZyd	ZzG dd deUZ{G d	d
 d
eUZ|G dd deUZ}G dd deUZ~G dd deUZG dd deUZG dd deUZG dd deUZG dd deUZG dd deUZG dd deUZG dd deUZG dd  d eQZeSeZdZdZdZdZdZdZd-Zd ZeeB eB eB eB eB eB eB ZdZdZeZdZdZdZdZdZdZd-Zd ZeeB eB eB eB eB eB eB eB eB ZG d!d" d"eUZG d#d$ d$eUZG d%d& d&eQZG d'd( d(eUZG d)d* d*eUZG d+d, d,eQZd ZdZdZdZdZd-ZG d.d/ d/eUZG d0d1 d1eUZG d2d3 d3emZG d4d5 d5eUZG d6d7 d7eUZG d8d9 d9eUZG d:d; d;eUZG d<d= d=eUZG d>d? d?eUZG d@dA dAeQZG dBdC dCeUZd ZdZd ZdZdZdZdZd	Zd
ZdZdZdZdZG dDdE dEeQZG dFdG dGeQZÐdHZG dIdJ dJeUZG dKdL dLeQZG dMdN dNeQZǐeSeǃZd ZdZdZdZdZd	Zd
ZdZdZd ZdZG dOdP dPeQZG dQdR dReQZՐdSZG dTdU dUeUZG dVdW dWeQZdZd ZdZdZdZG dXdY dYeQZG dZd[ d[eQZdZd ZdZdZdZdZdZdZdZdZd0Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZd0ZG d\d] d]eQZG d^d_ d_eQZG d`da daeQZ eSe ZG dbdc dceQZG ddde deeQZdfdg Zdhdi Zdjdk Zdldm Zdndo Zedpdq Z	edrds Z
dtdu Zdvdw Zedxdy Zedzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zedd Zedd Zedd Zedd Zdd Zdd Z dd Z!edd Z"edd Z#dd Z$dd Z%dd Z&dd Z'dd Z(dd Z)edd Z*edd Z+edd Z,dd Z-dd Z.dd Z/dd Z0dd Z1ddÄ Z2dĐdń Z3dƐdǄ Z4dȐdɄ Z5dʐd˄ Z6d̐d̈́ Z7dΐdτ Z8dАdф Z9dҐdӄ Z:dԐdՄ Z;d֐dׄ Z<dؐdل Z=dڐdۄ Z>dܐd݄ Z?dސd߄ Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPd d ZQdd ZRdϐddZSdd ZTdd	 ZUd
d ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`d d! Zad"d# Zbd$d% Zcd&d' Zded(d) Zed*d+ Zfd,d- Zgd.d/ Zhd0d1 Zid2d3 Zjd4d5 Zkd6d7 Zld8d9 Zmd:d; Znd<d= Zod>d? Zpd@dA ZqdBdC ZrdDdE ZsdFdG ZtdHdI ZudJdK ZvdLdM ZwdNdO ZxdPdQ ZydRdS ZzdTdU Z{dVdW Z|dXdY Z}dZd[ Z~d\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddÄ ZdĐdń ZdƐdǄ ZdȐdɄ Zdʐd˄ Zd̐d̈́ Zedΐdτ ZedАdф ZdҐdӄ ZdԐdՄ Zd֐dׄ Zdؐdل Zedڐdۄ Zdܐd݄ Zdސd߄ Zdd Zdd Zedd ZÐedd ZĐedd ZŐedd ZƐdd Zǐdd ZȐdd Zɐdd Zʐdd Zːdd Z̐dd Z͐dd Zΐdd Zϐdd ZАd d Zѐedd ZҐdd ZӐdd ZԐdd	 ZՐd
d Z֐dd Zאdd Zؐdd Zِdd Zڐdd Zېdd Zܐdd Zݐdd Zސdd Zߐdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zed,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdАdJdKZeZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ ZdАd\d]Z e Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Z	dndo Z
dpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(dZ)dZ*dZ+dZ,d	Z-d
Z.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6d$Z7d4Z8dZ9d5Z:d6Z;d7Z<d8Z=d9Z>d%Z?d<Z@d=ZAd>ZBd?ZCd@ZDdAZEdBZFd&ZGdNZHdOZIdPZJdQZKdZLdRZMdSZNdTZOdUZPdVZQdWZRdXZSdYZTdZZUd[ZVd\ZWd]ZXd^ZYd_ZZd`Z[d+Z\daZ]dbZ^dcZ_ddZ`deZadfZbdgZcdhZddiZedjZfdkZgdlZhdmZidnZjdoZkd,ZldpZmdqZnG ddτ dϐeUZVG dd deQZoeSeoZpG dd deQZqG dd deUZrG dd deUZsdZtG dd deUZudZvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|d Z}dZ~dÐdĄ ZdŐdƄ ZG dǐdȄ dȐeQZdɐdʄ Ze	Zd ZdZdZdZG dːd̄ d̐eUZd͐d΄ ZdS (      )*)find_library)wrapsN                        	   
                               @                                 i     (   2   l    l     l    l    P   `      z%04X:%02X:%02X.0z%08X:%02X:%02X.0            !   "   #   $   %   &   '   )   *   +   ,   -   .   /   0   1   3   4   5   6   7   8   9   :   ;   <   =   >   ?   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~                                                                                                                                    l        c                   @   s   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d Zdd Zdd ZdS )	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                 C   s*   | t krt j|| } t| }||_|S )z
        Maps value to a proper subclass of NVMLError.
        See _extractNVMLErrorsAsClasses function for more details
        )r   _valClassMappingget	Exception__new__value)typr   obj r   ?/home/ubuntu/.local/lib/python3.10/site-packages/pynvml/nvml.pyr     s
   
zNVMLError.__new__c                 C   sN   z| j tjvrtt| j tj| j < tj| j  W S  ty&   d| j   Y S w )NzNVML Error with code %d)r   r   _errcode_to_stringstrnvmlErrorStringselfr   r   r   __str__  s   zNVMLError.__str__c                 C   s   | j |j kS N)r   )r   otherr   r   r   __eq__     zNVMLError.__eq__N)__name__
__module____qualname__dictr   NVML_ERROR_UNINITIALIZEDNVML_ERROR_INVALID_ARGUMENTNVML_ERROR_NOT_SUPPORTEDNVML_ERROR_NO_PERMISSIONNVML_ERROR_ALREADY_INITIALIZEDNVML_ERROR_NOT_FOUNDNVML_ERROR_INSUFFICIENT_SIZENVML_ERROR_INSUFFICIENT_POWERNVML_ERROR_DRIVER_NOT_LOADEDNVML_ERROR_TIMEOUTNVML_ERROR_IRQ_ISSUENVML_ERROR_LIBRARY_NOT_FOUNDNVML_ERROR_FUNCTION_NOT_FOUNDNVML_ERROR_CORRUPTED_INFOROMNVML_ERROR_GPU_IS_LOSTNVML_ERROR_RESET_REQUIREDNVML_ERROR_OPERATING_SYSTEM"NVML_ERROR_LIB_RM_VERSION_MISMATCHNVML_ERROR_MEMORYNVML_ERROR_UNKNOWNr   r   r   r   r   r   r   r   r     sX    	

r   c                 C   s    | t jvrtd|  t j|  S )NznvmlErrorCode %s is not valid)r   r   
ValueError)nvmlErrorCoder   r   r   nvmlExceptionClass  s   

r   c                  C   s   t jt } dd t| D }|D ]4}dt|ddddd }t| |}dd }t|t	fd	||i}t|_
t| || |t	j|< qd
S )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
    c                 S   s   g | ]	}| d r|qS )NVML_ERROR_)
startswith).0xr   r   r   
<listcomp>/  s    z/_extractNVMLErrorsAsClasses.<locals>.<listcomp>
NVMLError_r    _c                    s    fdd}|S )Nc                    s   t |  }|S r   )r   r   )r   r   valr   r   new5  s   z9_extractNVMLErrorsAsClasses.<locals>.gen_new.<locals>.newr   )r   r   r   r   r   gen_new4  s   z,_extractNVMLErrorsAsClasses.<locals>.gen_newr   N)sysmodulesr   dirstringcapwordsreplacegetattrtyper   r   setattrr   )this_modulenvmlErrorsNameserr_name
class_nameerr_valr   new_error_classr   r   r   _extractNVMLErrorsAsClasses$  s   

 
r   c                 C   s   | t krt| | S r   )NVML_SUCCESSr   )retr   r   r   _nvmlCheckReturn?  s   r  c                 C   sn   | t v rt |  S t  z%td krttztt| t | < t |  W W t  S  ty1   tt	w t  w r   )
_nvmlGetFunctionPointer_cachelibLoadLockacquirenvmlLibr   r   r   releaseAttributeErrorr   )namer   r   r   _nvmlGetFunctionPointerF  s   


r	  c                   @   s   e Zd Zdd Zdd ZdS )nvmlFriendlyObjectc                 C   s   |D ]
}t | |||  qd S r   )r   )r   
dictionaryr   r   r   r   __init___  s   znvmlFriendlyObject.__init__c                 C   s
   | j  S r   )__dict__r   r   r   r   r   r   b     
znvmlFriendlyObject.__str__N)r   r   r   r  r   r   r   r   r   r
  ^  s    r
  c                 C   sH   i }| j D ]}|d }t| |}t|tr| n|||< qt|}|S Nr   )_fields_r   
isinstancebytesdecoder
  )structdr   keyr   r   r   r   r   nvmlStructToFriendlyObjecte  s   

r  c                 C   sJ   |j D ]}|d }| j| }tjdkrt|||  qt||| q|S )Nr   r   )r  r  r   version_infor   encode)r   modelr   r  r   r   r   r   nvmlFriendlyObjectToStructp  s   


r  c                   @      e Zd ZdS )struct_c_nvmlUnit_tNr   r   r   r   r   r   r   r  |      r  c                       s8   e Zd ZdZi Zdd Z fddZ fddZ  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                 C   s   g }| j D ]-}|d }t| |}d}|| jv r| j| }n
d| jv r'| jd }|d| ||f  q| jjd d| d S )Nr   z%s	<default>z%s: (z, ))r  r   _fmt_append	__class__r   join)r   resultr   r  r   fmtr   r   r   r     s   




z_PrintableStructure.__str__c                    s4   t t| |}t|trt|tr|S | S |S r   )superr!  __getattribute__r  r  r   r  )r   r  resr'  r   r   r,    s   

z$_PrintableStructure.__getattribute__c                    s(   t |tr	| }tt| || d S r   )r  r   r  r+  r!  __setattr__)r   r  r   r.  r   r   r/    s   
z_PrintableStructure.__setattr__)	r   r   r   __doc__r%  r   r,  r/  __classcell__r   r   r.  r   r!    s    r!  c                   @   8   e Zd Zded fded fded fded fgZdS c_nvmlUnitInfo_tr  r'   idserialfirmwareVersionNr   r   r   c_charr  r   r   r   r   r4        



r4  c                   @       e Zd Zded fdefgZdS )c_nvmlLedState_tcauser(   colorN)r   r   r   r9  _nvmlLedColor_tr  r   r   r   r   r<        
r<  c                   @   s,   e Zd Zded fdefdefdefgZdS )c_nvmlPSUInfo_tstater(   currentvoltagepowerN)r   r   r   r9  c_uintr  r   r   r   r   rA        
rA  c                   @      e Zd ZdefdefgZdS )c_nvmlUnitFanInfo_tspeedrB  N)r   r   r   rF  _nvmlFanState_tr  r   r   r   r   rI        rI  c                   @   r;  )c_nvmlUnitFanSpeeds_tfansr    countN)r   r   r   rI  rF  r  r   r   r   r   rM    r@  rM  c                   @   r  )struct_c_nvmlDevice_tNr  r   r   r   r   rP    r   rP  c                   @   s`   e Zd Zde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ddddddZdS )nvmlPciInfo_v2_tbusIddomainbusdevicepciDeviceIdpciSubSystemId	reserved0	reserved1	reserved2	reserved3z0x%04X0x%02X0x%08XrS  rT  rU  rV  rW  N)r   r   r   r9  %NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZErF  r  r%  r   r   r   r   rQ    s$    

rQ  c                	   @   sR   e Zd Zdee fdefdefdefdefdefdee fgZdd	d	ddd
ZdS )nvmlPciInfo_tbusIdLegacyrS  rT  rU  rV  rW  rR  r]  r\  r^  N)	r   r   r   r9  r_  rF  "NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZEr  r%  r   r   r   r   r`    s    


r`  c                   @       e Zd Zdefdee fgZdS )c_nvmlExcludedDeviceInfo_tpciuuidN)r   r   r   r`  r9  NVML_DEVICE_UUID_BUFFER_SIZEr  r   r   r   r   rd  
      
rd  c                   @   rH  )nvmlNvLinkUtilizationControl_tunits	pktfilterN)r   r   r   "_nvmlNvLinkUtilizationCountUnits_t%_nvmlNvLinkUtilizationCountPktTypes_tr  r   r   r   r   ri    rL  ri  c                   @   *   e Zd ZdefdefdefgZddiZdS )c_nvmlMemory_ttotalfreeusedr"  %d BNr   r   r   c_ulonglongr  r%  r   r   r   r   ro        ro  c                   @   s6   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dS )	c_nvmlMemory_v2_tversionrp  reservedrq  rr  r"  rs  Nr   r   r   rF  ru  r  r%  r   r   r   r   rw        rw  i(  c                   @   rn  )c_nvmlBAR1Memory_t	bar1Totalbar1Freebar1Usedr"  rs  Nrt  r   r   r   r   r|  *  rv  r|  c                   @      e Zd ZdefdefgZdS )nvmlClkMonFaultInfo_tclkApiDomainclkDomainFaultMaskNr   r   r   rF  r  r   r   r   r   r  2      r  c                   @   "   e Zd ZdefdefdefgZdS )nvmlClkMonStatus_tbGlobalStatusclkMonListSize
clkMonListN)r   r   r   rF  r  r  r   r   r   r   r  7  
    r  c                   @   s0   e Zd ZdefdefdefdefgZddiZdS )c_nvmlProcessInfo_tpidusedGpuMemorygpuInstanceIdcomputeInstanceIdrs  Nrz  r   r   r   r   r  H  s    r  c                   @   rH  )c_nvmlBridgeChipInfo_tr   	fwVersionN)r   r   r   _nvmlBridgeChipType_trF  r  r   r   r   r   r  R  rL  r  c                   @       e Zd Zdefded fgZdS )c_nvmlBridgeChipHierarchy_tbridgeCountbridgeChipInfor   N)r   r   r   rF  r  r  r   r   r   r   r  X  rh  r  c                   @   s(   e Zd ZdefdefdefdefgZdS )c_nvmlEccErrorCounts_tl1Cachel2CachedeviceMemoryregisterFileNr   r   r   ru  r  r   r   r   r   r  ^      r  c                   @   s$   e Zd ZdefdefgZddiZdS )c_nvmlUtilization_tgpumemoryr"  z%d %%N)r   r   r   rF  r  r%  r   r   r   r   r  f  s
    r  c                   @   r  )c_nvmlHwbcEntry_thwbcIdr7  r   N)r   r   r   rF  r9  r  r   r   r   r   r  n  rh  r  c                   @   s.   e Zd ZdefdefdefdefdefgZdS )c_nvmlValue_tdValuiValulValullValsllValN)	r   r   r   c_doublerF  c_ulongru  
c_longlongr  r   r   r   r   r  t  s    r  c                   @   rH  )c_nvmlSample_t	timeStampsampleValueN)r   r   r   ru  r  r  r   r   r   r   r  }  rL  r  c                   @   r  )c_nvmlViolationTime_treferenceTimeviolationTimeNr  r   r   r   r   r    rL  r  c                   @   s:   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dS )	c_nvmlFieldValue_tfieldIdscopeId	timestamplatencyUsec	valueType
nvmlReturnr   N)	r   r   r   c_uint32c_int64_nvmlValueType_t_nvmlReturn_tr  r  r   r   r   r   r        r  c                   @   s4   e Zd ZdefdefdefdefdefdefgZdS )%c_nvmlVgpuInstanceUtilizationSample_tvgpuInstancer  smUtilmemUtilencUtildecUtilN)r   r   r   _nvmlVgpuInstance_tru  r  r  r   r   r   r   r        r  c                	   @   sD   e Zd Zdefdefdee fdefdefdefdefdefgZd	S )
$c_nvmlVgpuProcessUtilizationSample_tr  r  processNamer  r  r  r  r  N)	r   r   r   r  rF  r9  NVML_VGPU_NAME_BUFFER_SIZEru  r  r   r   r   r   r    s    
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dS )	c_nvmlVgpuLicenseExpiry_tyearmonthdayhourminsecstatusNr   r   r   r  c_uint16c_uint8r  r   r   r   r   r    r  r  c                   @   s"   e Zd ZdefdefdefgZdS )c_nvmlVgpuLicenseInfo_t
isLicensedlicenseExpirycurrentStateN)r   r   r   r  r  rF  r  r   r   r   r   r    
    r  c                	   @   s@   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d	S )
c_nvmlEncoderSession_t	sessionIdr  r  	codecTypehResolutionvResolution
averageFpsencodeLatencyNr   r   r   rF  r  r  r   r   r   r   r    s    r  c                   @   s4   e Zd ZdefdefdefdefdefdefgZdS ) c_nvmlProcessUtilizationSample_tr  r  r  r  r  r  Nr   r   r   rF  ru  r  r   r   r   r   r    r  r  c                   @   r  )	c_nvmlGridLicenseExpiry_tr  r  r  r  r  r  r  Nr  r   r   r   r   r    r  r  c                   @   s<   e Zd Zdefdefdee fdee fdefdefgZdS ) c_nvmlGridLicensableFeature_v4_tfeatureCodefeatureStatelicenseInfoproductNamefeatureEnabledr  N)	r   r   r   _nvmlGridLicenseFeatureCode_trF  r9  NVML_GRID_LICENSE_BUFFER_SIZEr  r  r   r   r   r   r    s    

r  c                   @   &   e Zd Zdefdefdee fgZdS )!c_nvmlGridLicensableFeatures_v4_tisGridLicenseSupportedlicensableFeaturesCountgridLicensableFeaturesN)r   r   r   c_intrF  r  #NVML_GRID_LICENSE_FEATURE_MAX_COUNTr  r   r   r   r   r    
    
r  c                   @   s6   e Zd Zdefdefdee fdee fdefgZdS ) c_nvmlGridLicensableFeature_v3_tr  r  r  r  r  Nr   r   r   r  rF  r9  r  r  r   r   r   r   r    s    

r  c                   @   r  )!c_nvmlGridLicensableFeatures_v3_tr  r  r  N)r   r   r   r  rF  r  r  r  r   r   r   r   r    r  r  c                   @   s0   e Zd Zdefdefdee fdee fgZdS ) c_nvmlGridLicensableFeature_v2_tr  r  r  r  Nr  r   r   r   r   r    s    

r  c                   @   r  )!c_nvmlGridLicensableFeatures_v2_tr  r  r  N)r   r   r   r  rF  r  r  r  r   r   r   r   r    r  r  c                   @   r  )c_nvmlGridLicensableFeature_tr  r  r  Nr  r   r   r   r   r    r  r  c                   @   r  )c_nvmlGridLicensableFeatures_tr  r  r  N)r   r   r   r  rF  r  r  r  r   r   r   r   r    r  r  c                   @   r  )struct_c_nvmlEventSet_tNr  r   r   r   r   r  #  r   r  c                   @   s6   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dS )c_nvmlEventData_trU  	eventType	eventDatar  r  r]  N)r   r   r   c_nvmlDevice_tru  rF  r  r%  r   r   r   r   r  S  r{  r  c                	   @   s>   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 fgZd	S )
c_nvmlAccountingStats_tgpuUtilizationmemoryUtilizationmaxMemoryUsagetime	startTime	isRunningry  r	   Nr  r   r   r   r   r  ]  s    
r  c                   @   r  )c_nvmlVgpuVersion_t
minVersion
maxVersionNr  r   r   r   r   r	  h  r  r	  c                   @   s\   e Zd Zdefdefdefdee fdee fded fdefd	efd
efdee fg
ZdS )c_nvmlVgpuMetadata_trx  revisionguestInfoStateguestDriverVersionhostDriverVersionry  r
   vgpuVirtualizationCapsguestVgpuVersionopaqueDataSize
opaqueDataN)	r   r   r   rF  _nvmlVgpuGuestInfoState_tr9  &NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE#NVML_VGPU_METADATA_OPAQUE_DATA_SIZEr  r   r   r   r   r  m  s    



r  c                
   @   sL   e Zd Zdefdefdee fdefded fdefdefd	ee fgZd
S )c_nvmlVgpuPgpuMetadata_trx  r  r  pgpuVirtualizationCapsry  r	   hostSupportedVgpuRanger  r  N)	r   r   r   rF  r9  r  r	  (NVML_VGPU_PGPU_METADATA_OPAQUE_DATA_SIZEr  r   r   r   r   r  z  s    


r  c                   @   rH  )c_nvmlVgpuPgpuCompatibility_tvgpuVmCompatibilitycompatibilityLimitCodeN)r   r   r   _nvmlVgpuVmCompatibility_t%_nvmlVgpuPgpuCompatibilityLimitCode_tr  r   r   r   r   r    r  r     c                   @   r  )c_nvmlVgpuSchedDataWithARR_t	avgFactor	timesliceNr  r   r   r   r   r"    rL  r"  c                   @      e Zd ZdefgZdS )c_nvmlVgpuSchedData_tr$  Nr  r   r   r   r   r&        r&  c                   @   rH  )c_nvmlVgpuSchedulerParams_tvgpuSchedDataWithARRvgpuSchedDataN)r   r   r   r"  r&  r  r   r   r   r   r(    rL  r(  c                   @   s4   e Zd ZdefdefdefdefdefdefgZdS )c_nvmlVgpuSchedulerLogEntry_tr  timeRunTotaltimeRunswRunlistIdtargetTimeSlicecumulativePreemptionTimeN)r   r   r   ru  rF  r  r   r   r   r   r+    r  r+  c                   @   s8   e Zd Zdefdefdefdefdefdee fgZdS )c_nvmlVgpuSchedulerLog_tengineIdschedulerPolicyisEnabledARRschedulerParamsentriesCount
logEntriesN)r   r   r   rF  r(  r+  !NVML_SCHEDULER_SW_MAX_LOG_ENTRIESr  r   r   r   r   r1    s    
r1  c                   @   r  )c_nvmlVgpuSchedulerGetState_tr3  r4  r5  N)r   r   r   rF  r(  r  r   r   r   r   r9    r  r9  c                   @   r  )c_nvmlVgpuSchedSetDataWithARR_tr#  	frequencyNr  r   r   r   r   r:    rL  r:  c                   @   r%  )c_nvmlVgpuSchedSetData_tr$  Nr  r   r   r   r   r<    r'  r<  c                	   @   sD   e Zd Zde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	S )
!c_nvmlVgpuSchedulerCapabilities_tsupportedSchedulersmaxTimesliceminTimesliceisArrModeSupportedmaxFrequencyForARRminFrequencyForARRmaxAvgFactorForARRminAvgFactorForARRN)r   r   r   rF  *NVML_SUPPORTED_VGPU_SCHEDULER_POLICY_COUNTr  r   r   r   r   r=    s    
r=  c                   @   "   e Zd ZdefdefdefgZdS )c_nvmlFBCStats_tsessionsCount
averageFPSaverageLatencyNr  r   r   r   r   rH    r  rH  c                   @   sX   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dS )c_nvmlFBCSession_tr  r  r  displayOrdinalsessionTypesessionFlagshMaxResolutionvMaxResolutionr  r  rJ  rK  Nr  r   r   r   r   rL    s    rL  c                   @   r  )c_nvmlGpuInstancePlacement_tstartsizeNr  r   r   r   r   rR    r  rR  c                   @   sR   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dS )c_nvmlGpuInstanceProfileInfo_tr5  isP2pSupported
sliceCountinstanceCountmultiprocessorCountcopyEngineCountdecoderCountencoderCount	jpegCountofaCountmemorySizeMBNr  r   r   r   r   rU    s    rU  i  c                       sr   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 fgZ fddZ  Z	S )!c_nvmlGpuInstanceProfileInfo_v2_trx  r5  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r  c                       t t| jtd d S N)rx  )r+  r`  r  nvmlGpuInstanceProfileInfo_v2r   r.  r   r   r  "     z*c_nvmlGpuInstanceProfileInfo_v2_t.__init__)
r   r   r   rF  ru  r9  NVML_DEVICE_NAME_V2_BUFFER_SIZEr  r  r1  r   r   r.  r   r`    s     
r`  c                   @   s(   e Zd ZdefdefdefdefgZdS )c_nvmlGpuInstanceInfo_trU  r5  	profileId	placementN)r   r   r   r  rF  rR  r  r   r   r   r   rf  %  s    rf  c                   @   r  )struct_c_nvmlGpuInstance_tNr  r   r   r   r   ri  ,  r   ri  c                   @   r  ) c_nvmlComputeInstancePlacement_trS  rT  Nr  r   r   r   r   rj  =  r  rj  c                
   @   sF   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d
S )"c_nvmlComputeInstanceProfileInfo_tr5  rW  rX  rY  sharedCopyEngineCountsharedDecoderCountsharedEncoderCountsharedJpegCountsharedOfaCountNr  r   r   r   r   rk  B      rk  i  c                       sf   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 fgZ fddZ  ZS )%c_nvmlComputeInstanceProfileInfo_v2_trx  r5  rW  rX  rY  rl  rm  rn  ro  rp  r  c                    ra  rb  )r+  rr  r  !nvmlComputeInstanceProfileInfo_v2r   r.  r   r   r  ^  rd  z.c_nvmlComputeInstanceProfileInfo_v2_t.__init__)	r   r   r   rF  r9  re  r  r  r1  r   r   r.  r   rr  P  s    
rr  c                   @   s.   e Zd ZdefdefdefdefdefgZdS )c_nvmlComputeInstanceInfo_trU  gpuInstancer5  rg  rh  N)r   r   r   r  c_nvmlGpuInstance_trF  rj  r  r   r   r   r   rt  a      rt  c                   @   s*   e Zd ZdedfdefdefdefgZdS )$c_nvmlGpuDynamicPstatesUtilization_t
bIsPresentr   
percentageincThresholddecThresholdNr  r   r   r   r   rx  n  s    rx  c                   @   rc  )c_nvmlGpuDynamicPstatesInfo_tflagsutilizationN)r   r   r   rF  rx  NVML_MAX_GPU_UTILIZATIONSr  r   r   r   r   r}  s      
r}  c                   @   .   e Zd ZdefdefdefdefdefgZdS )c_nvmlGpuThermalSensor_t
controllerdefaultMinTempdefaultMaxTempcurrentTemptargetN)r   r   r   r  r  r   r   r   r   r    rw  r  c                   @   rc  )c_nvmlGpuThermalSettings_trO  sensorN)r   r   r   rF  r   NVML_MAX_THERMAL_SENSORS_PER_GPUr  r   r   r   r   r    r  r  c                   @   r  )struct_c_nvmlComputeInstance_tNr  r   r   r   r   r    r   r  c                
   @   sF   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d
S )c_nvmlDeviceAttributesrY  rl  rm  rn  ro  rp  gpuInstanceSliceCountcomputeInstanceSliceCountr_  Nr  r   r   r   r   r    rq  r  c                   @   r  ) c_nvmlRowRemapperHistogramValuesmaxhighpartiallownoneNr  r   r   r   r   r    rw  r  c                    s&   t   fd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                     s@   dd | D }  | i |}t |trt |tr|S | S |S )Nc                 S   s"   g | ]}t |tr| n|qS r   )r  r   r  )r   argr   r   r   r     s   " z4convertStrBytes.<locals>.wrapper.<locals>.<listcomp>)r  r  r   r  )argskwargsr-  funcr   r   wrapper  s   

z convertStrBytes.<locals>.wrapperr  )r   r   r  )r  r  r   r  r   convertStrBytes  s
   	
r  c                 C   s:   t   td}|| }t| t  td7 at  d S )NnvmlInitWithFlagsr   )_LoadNvmlLibraryr	  r  r  r  _nvmlLib_refcountr  )r~  fnr   r   r   r   r    s   r  c                   C   s   t d d S r  )r  r   r   r   r   nvmlInit  s   r  c               
   C   s  t dkrt  zvt dkrqz>tjdd dkrFzttjt	ddda W n# t
yE }  zttjt	ddd	a W Y d} ~ n	d} ~ ww td
a W n t
ya }  z
tt W Y d} ~ nd} ~ ww t dkrxtt W t  dS W t  dS W t  dS t  w dS )z5
    Load the library if it isn't loaded already
    Nr   winWINDIRz
C:/WindowszSystem32/nvml.dllProgramFileszC:/Program Filesz!NVIDIA Corporation/NVSMI/nvml.dllzlibnvidia-ml.so.1)r  r  r  r   platformCDLLospathr(  getenvOSErrorr  r   r  )oser   r   r   r    s4   &
r  c                  C   s:   t d} |  }t| t  dtk rtd8 at  d S )NnvmlShutdownr   r   )r	  r  r  r  r  r  )r  r   r   r   r   r    s   r  c                 C   s   t d}t|_|| }|S )Nr   )r	  c_char_prestype)r)  r  r   r   r   r   r      s   r   c                  C   ,   t t} td}|| tt}t| | jS )NnvmlSystemGetNVMLVersion)create_string_buffer$NVML_SYSTEM_NVML_VERSION_BUFFER_SIZEr	  rF  r  r   	c_versionr  r   r   r   r   r  (  
   r  c                  C   (   t  } td}|t| }t| | jS )NnvmlSystemGetCudaDriverVersionr  r	  byrefr  r   c_cuda_versionr  r   r   r   r   r  0  
   r  c                  C   r  )N!nvmlSystemGetCudaDriverVersion_v2r  r  r   r   r   r  7  r  r  c                 C   s2   t d}td}|t| |td}t| |jS )Ni   nvmlSystemGetProcessName)r  r	  rF  r  r   )r  c_namer  r   r   r   r   r  ?  
   r  c                  C   r  )NnvmlSystemGetDriverVersion)r  r  r	  rF  r  r   r  r   r   r   r  G  r  r  c                  C   sr   t d} d }td}|t| d }|tkr|tkrt|| jdkr$g S t| j }| }|t| |}t| |S )Nr   nvmlSystemGetHicVersion)	rF  r	  r  r   r   r   r   r  r  )c_counthicsr  r   	hic_arrayr   r   r   r  P  s   

r  c                  C   r  )NnvmlUnitGetCountrF  r	  r  r  r   r  r  r   r   r   r   r  h  r  r  c                 C   0   t | }t }td}||t|}t| |S )NnvmlUnitGetHandleByIndex)rF  c_nvmlUnit_tr	  r  r  )indexc_indexunitr  r   r   r   r   r  o     r  c                 C   (   t  }td}|| t|}t| |S )NnvmlUnitGetUnitInfo)r4  r	  r  r  r  c_infor  r   r   r   r   r  w  
   r  c                 C   r  )NnvmlUnitGetLedState)r<  r	  r  r  )r  c_stater  r   r   r   r   r  ~  r  r  c                 C   r  )NnvmlUnitGetPsuInfo)rA  r	  r  r  r  r   r   r   r    r  r  c                 C   s0   t  }td}|| t |t|}t| |jS )NnvmlUnitGetTemperaturer  )r  r   c_tempr  r   r   r   r   r    
   r  c                 C   r  )NnvmlUnitGetFanSpeedInfo)rM  r	  r  r  )r  c_speedsr  r   r   r   r   r    r  r  c                 C   s:   t d}td}|| t|d }|tkrt}t| |jS )Nr   nvmlUnitGetDevices)rF  r	  r  r   r   r  r   )r  r  r  r   r   r   r   nvmlUnitGetDeviceCount  s   r  c                 C   s@   t t| }t|j }| }td}|| t||}t| |S )Nr  )rF  r  r  r   r	  r  r  )r  r  device_array	c_devicesr  r   r   r   r   r    s   
r  c                  C   r  )NnvmlDeviceGetCount_v2r  r  r   r   r   nvmlDeviceGetCount  r  r  c                 C   r  )NnvmlDeviceGetHandleByIndex_v2rF  r  r	  r  r  )r  r  rU  r  r   r   r   r   nvmlDeviceGetHandleByIndex  r  r  c                 C   r  )NnvmlDeviceGetHandleBySerialr  r  r	  r  r  )r6  c_serialrU  r  r   r   r   r   r       r  c                 C   r  )NnvmlDeviceGetHandleByUUIDr  )rf  c_uuidrU  r  r   r   r   r   r    r  r  c                 C   r  )N nvmlDeviceGetHandleByPciBusId_v2r  )pciBusIdc_busIdrU  r  r   r   r   r   nvmlDeviceGetHandleByPciBusId  r  r  c                 C   .   t t}td}|| |tt}t| |jS )NnvmlDeviceGetName)r  re  r	  rF  r  r   )handler  r  r   r   r   r   r    
   r  c                 C   *   t  }td}|| t|}t| |jS )NnvmlDeviceGetBoardIdr  )r  c_idr  r   r   r   r   r    
   r  c                 C   r  )NnvmlDeviceGetMultiGpuBoardr  )r  
c_multiGpur  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetBrand)_nvmlBrandType_tr	  r  r  r   )r  c_typer  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetBoardPartNumber)r  #NVML_DEVICE_PART_NUMBER_BUFFER_SIZEr	  rF  r  r   )r  c_part_numberr  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetSerial)r  NVML_DEVICE_SERIAL_BUFFER_SIZEr	  rF  r  r   )r  r  r  r   r   r   r   r     r  r   c                 C   8   t | }| }td}|| |t|t|}t| |S )NnvmlDeviceGetMemoryAffinityru  r	  r  _nvmlAffinityScope_tr  )r  nodeSetSizescopeaffinity_array
c_affinityr  r   r   r   r   r       r  c                 C   r  )N#nvmlDeviceGetCpuAffinityWithinScoper  )r  
cpuSetSizer  r  r	  r  r   r   r   r   r    r
  r  c                 C   s2   t | }| }td}|| |t|}t| |S )NnvmlDeviceGetCpuAffinity)ru  r	  r  r  )r  r  r  r	  r  r   r   r   r   r       r  c                 C      t d}|| }t| d S )NnvmlDeviceSetCpuAffinityr	  r  r  r  r   r   r   r   r       r  c                 C   r  )NnvmlDeviceClearCpuAffinityr  r  r   r   r   r  $  r  r  c                 C   r  )NnvmlDeviceGetMinorNumberr  )r  c_minor_numberr  r   r   r   r   r  *  r  r  c                 C   r  )NnvmlDeviceGetUUID)r  NVML_DEVICE_UUID_V2_BUFFER_SIZEr	  rF  r  r   )r  r  r  r   r   r   r   r  1  r  r  c                 C   s4   t t}td}|| t||tt}t| |jS )NnvmlDeviceGetInforomVersion)r  'NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZEr	  _nvmlInforomObject_trF  r  r   )r  infoRomObjectr  r  r   r   r   r   r  9  s   
r  c                 C   r  )N nvmlDeviceGetInforomImageVersion)r  r  r	  rF  r  r   r  r  r  r   r   r   r   r  C  r  r  c                 C   r  )N)nvmlDeviceGetInforomConfigurationChecksumr  )r  
c_checksumr  r   r   r   r   r  L  r  r  c                 C   r  )NnvmlDeviceValidateInforomr  r  r   r   r   r!  T  r  r!  c                 C   r  )NnvmlDeviceGetDisplayMode_nvmlEnableState_tr	  r  r  r   r  c_moder  r   r   r   r   r"  Z  r  r"  c                 C   r  )NnvmlDeviceGetDisplayActiver#  r%  r   r   r   r'  a  r  r'  c                 C   r  )NnvmlDeviceGetPersistenceModer#  )r  r  r  r   r   r   r   r(  i  r  r(  c                 C   r  )NnvmlDeviceGetPciInfo_v3r`  r	  r  r  )r  r  r  r   r   r   r   r)  p  r  r)  c                 C      t | S r   )r)  r  r   r   r   nvmlDeviceGetPciInfow     r-  c                 C   0   t  }td}|| t|t|}t| |jS )NnvmlDeviceGetClockInforF  r	  _nvmlClockType_tr  r  r   r  r   c_clockr  r   r   r   r   r0  z  r  r0  c                 C   r/  )NnvmlDeviceGetMaxClockInfor1  r3  r   r   r   r5    r  r5  c                 C   r/  )NnvmlDeviceGetApplicationsClockr1  r3  r   r   r   r6    r  r6  c                 C   r/  )N"nvmlDeviceGetMaxCustomerBoostClockr1  r3  r   r   r   r7    r  r7  c                 C   6   t  }td}|| t|t|t|}t| |jS )NnvmlDeviceGetClock)rF  r	  r2  _nvmlClockId_tr  r  r   )r  r   r5  r4  r  r   r   r   r   r9    s
   r9  c                 C   r/  )N%nvmlDeviceGetDefaultApplicationsClockr1  r3  r   r   r   r;    r  r;  c                 C   s   t d}td}|| t|d }|tkrg S |tkrAt |j }| }|| t||}t| g }t|jD ]	}|||  q5|S t	|)Nr   "nvmlDeviceGetSupportedMemoryClocks
rF  r	  r  r   r   r   r  ranger&  r   )r  r  r  r   clocks_arrayc_clocksprocsir   r   r   r<    s   
r<  c           	      C   s   t d}td}|| t |t|d }|tkrg S |tkrGt |j }| }|| t |t||}t| g }t|jD ]	}|||  q;|S t	|)Nr   $nvmlDeviceGetSupportedGraphicsClocksr=  )	r  memoryClockMHzr  r  r   r?  r@  rA  rB  r   r   r   rC    s   
rC  c                 C   r  )NnvmlDeviceGetFanSpeedr  )r  c_speedr  r   r   r   r   rE    r  rE  c                 C   ,   t  }td}|| |t|}t| |jS )NnvmlDeviceGetFanSpeed_v2r  r  fanrF  r  r   r   r   r   rH    
   rH  c                 C   rG  )NnvmlDeviceGetTargetFanSpeedr  rI  r   r   r   rL    rK  rL  c                 C   r  )NnvmlDeviceGetNumFansr  )rU  	c_numFansr  r   r   r   r   rM    r  rM  c                 C      t d}|| |}t| |S )NnvmlDeviceSetDefaultFanSpeed_v2r  )r  r  r  r   r   r   r   rP       
rP  c                 C       t d}|| ||}t| |S )NnvmlDeviceGetMinMaxFanSpeedr  )r  minSpeedmaxSpeedr  r   r   r   r   rS  	     rS  c                 C   rR  )N nvmlDeviceGetFanControlPolicy_v2r  r  rJ  fanControlPolicyr  r   r   r   r   rW  	  rV  rW  c                 C   s$   t d}|| |t|}t| |S )NnvmlDeviceSetFanControlPolicy)r	  _nvmlFanControlPolicy_tr  rX  r   r   r   rZ  	     rZ  c                 C   r/  )NnvmlDeviceGetTemperature)rF  r	  _nvmlTemperatureSensors_tr  r  r   )r  r  r  r  r   r   r   r   r]  	  r  r]  c                 C   r/  )N!nvmlDeviceGetTemperatureThreshold)rF  r	  _nvmlTemperatureThresholds_tr  r  r   )r  	thresholdr  r  r   r   r   r   r_  	  r  r_  c                 C   s4   t  }||_td}|| t|t|}t| d S )N!nvmlDeviceSetTemperatureThreshold)rF  r   r	  r`  r  r  )r  ra  tempr  r  r   r   r   r   rb  !	  s   rb  c                 C   r  )NnvmlDeviceGetPowerState_nvmlPstates_tr	  r  r  r   r  c_pstater  r   r   r   r   rd  *	  r  rd  c                 C   r  )NnvmlDeviceGetPerformanceStatere  rg  r   r   r   ri  1	  r  ri  c                 C   r  )N nvmlDeviceGetPowerManagementModer#  )r  
c_pcapModer  r   r   r   r   rj  8	  r  rj  c                 C   r  )N!nvmlDeviceGetPowerManagementLimitr  r  c_limitr  r   r   r   r   rl  ?	  r  rl  c                 C   <   t  }t  }td}|| t|t|}t| |j|jgS )N,nvmlDeviceGetPowerManagementLimitConstraintsr  )r  
c_minLimit
c_maxLimitr  r   r   r   r   rp  G	     rp  c                 C   r  )N(nvmlDeviceGetPowerManagementDefaultLimitr  rm  r   r   r   rt  P	  r  rt  c                 C   r  )NnvmlDeviceGetEnforcedPowerLimitr  rm  r   r   r   ru  Y	  r  ru  c                 C   r  )NnvmlDeviceGetPowerUsager  )r  c_wattsr  r   r   r   r   rv  `	  r  rv  c                 C   r  )N#nvmlDeviceGetTotalEnergyConsumption)c_uint64r	  r  r  r   )r  c_millijoulesr  r   r   r   r   rx  g	  r  rx  c                 C   ro  )NnvmlDeviceGetGpuOperationMode)_nvmlGpuOperationMode_tr	  r  r  r   r  c_currStatec_pendingStater  r   r   r   r   r{  o	  rs  r{  c                 C      t | d S r  r{  r,  r   r   r   $nvmlDeviceGetCurrentGpuOperationModex	  r   r  c                 C   r  Nr   r  r,  r   r   r   $nvmlDeviceGetPendingGpuOperationMode|	  r   r  c                 C   sB   |s
t  }td}n
t }||_td}|| t|}t| |S )NnvmlDeviceGetMemoryInfonvmlDeviceGetMemoryInfo_v2)ro  r	  rw  rx  r  r  )r  rx  c_memoryr  r   r   r   r   r  	  s   
r  c                 C   r  )NnvmlDeviceGetBAR1MemoryInfo)r|  r	  r  r  )r  c_bar1_memoryr  r   r   r   r   r  	  r  r  c                 C   r  )NnvmlDeviceGetComputeMode)_nvmlComputeMode_tr	  r  r  r   r%  r   r   r   r  	  r  r  c                 C   s<   t  }t  }td}|| t|t|}t| |j|jfS )N"nvmlDeviceGetCudaComputeCapabilityr  )r  c_majorc_minorr  r   r   r   r   r  	  rs  r  c                 C   ro  )NnvmlDeviceGetEccModer#  r}  r   r   r   r  	  rs  r  c                 C   r  r  r  r,  r   r   r   nvmlDeviceGetCurrentEccMode	  r   r  c                 C   r  r  r  r,  r   r   r   nvmlDeviceGetPendingEccMode	  r   r  c                 C   s,   t  }td}|| t|}t| |jgS )NnvmlDeviceGetDefaultEccModer#  )r  c_defaultStater  r   r   r   r   r  	  s
   r  c                 C   r8  )NnvmlDeviceGetTotalEccErrors)ru  r	  _nvmlMemoryErrorType_t_nvmlEccCounterType_tr  r  r   )r  	errorTypecounterTyper  r  r   r   r   r   r  	  s   
r  c                 C   s4   t  }td}|| t|t|t|}t| |S )NnvmlDeviceGetDetailedEccErrors)r  r	  r  r  r  r  )r  r  r  c_countsr  r   r   r   r   r  	  s   
r  c                 C   s<   t  }td}|| t|t|t|t|}t| |jS )NnvmlDeviceGetMemoryErrorCounter)ru  r	  r  r  _nvmlMemoryLocation_tr  r  r   )r  r  r  locationTyper  r  r   r   r   r   r  	  s   r  c                 C   r  )NnvmlDeviceGetUtilizationRates)r  r	  r  r  )r  c_utilr  r   r   r   r   r  	  r  r  c                 C   ro  )NnvmlDeviceGetEncoderUtilizationr  r  r  c_samplingPeriodr  r   r   r   r   r  	  rs  r  c                 C   ro  )NnvmlDeviceGetDecoderUtilizationr  r  r   r   r   r  	  rs  r  c                 C   r  )NnvmlDeviceGetPcieReplayCounterr  )r  c_replayr  r   r   r   r   r  	  r  r  c                 C   ro  )NnvmlDeviceGetDriverModel)_nvmlDriverModel_tr	  r  r  r   )r  c_currModelc_pendingModelr  r   r   r   r   r  	  rs  r  c                 C   r  r  r  r,  r   r   r   nvmlDeviceGetCurrentDriverModel	  r   r  c                 C   r  r  r  r,  r   r   r   nvmlDeviceGetPendingDriverModel 
  r   r  c                 C   r  )NnvmlDeviceGetVbiosVersion)r  %NVML_DEVICE_VBIOS_VERSION_BUFFER_SIZEr	  rF  r  r   r  r   r   r   r  
  r  r  c           	      C      t d}td}|| t|d }|tkrg S |tkrV|jd d |_t|j }| }|| t||}t| g }t|jD ]}t	|| }|j
tjkrNd |_
|| q=|S t|)Nr   'nvmlDeviceGetComputeRunningProcesses_v3r   r	   rF  r	  r  r   r   r   r  r  r>  r  r  "NVML_VALUE_NOT_AVAILABLE_ulonglongr&  r   	r  r  r  r   
proc_arrayc_procsrA  rB  r   r   r   r   r  
  &   
r  c                 C   r+  r   )r  r,  r   r   r   $nvmlDeviceGetComputeRunningProcesses/
  r.  r  c           	      C   r  )Nr   (nvmlDeviceGetGraphicsRunningProcesses_v3r   r	   r  r  r   r   r   r  2
  r  r  c                 C   r+  r   )r  r,  r   r   r   %nvmlDeviceGetGraphicsRunningProcessesT
  r.  r  c                 C   r+  r   )*nvmlDeviceGetMPSComputeRunningProcesses_v3r,  r   r   r   'nvmlDeviceGetMPSComputeRunningProcessesW
  r.  r  c           	      C   r  )Nr   r  r   r	   r  r  r   r   r   r  Z
  r  r  c                 C   ro  )N%nvmlDeviceGetAutoBoostedClocksEnabledr#  )r  c_isEnabledc_defaultIsEnabledr  r   r   r   r   r  |
  rs  r  c                 C   "   t d}|| t|}t| d S )NnvmlUnitSetLedState)r	  r?  r  )r  r>  r  r   r   r   r   r  
     r  c                 C   r  )NnvmlDeviceSetPersistenceModer	  r$  r  r  moder  r   r   r   r   r  
  r  r  c                 C   r  )NnvmlDeviceSetComputeMode)r	  r  r  r  r   r   r   r  
  r  r  c                 C   r  )NnvmlDeviceSetEccModer  r  r   r   r   r  
  r  r  c                 C   r  )NnvmlDeviceClearEccErrorCounts)r	  r  r  )r  r  r  r   r   r   r   r  
  r  r  c                 C   r  )NnvmlDeviceSetDriverModel)r	  r  r  )r  r  r  r   r   r   r   r  
  r  r  c                 C   r  )N%nvmlDeviceSetAutoBoostedClocksEnabledr  )r  enabledr  r   r   r   r   r  
  r  r  c                 C   (   t d}|| t|t|}t| d S )N,nvmlDeviceSetDefaultAutoBoostedClocksEnabled)r	  r$  rF  r  )r  r  r~  r  r   r   r   r   r  
     r  c                 C   (   t d}|| t|t|}t| d S )NnvmlDeviceSetGpuLockedClocksr	  rF  r  )r  minGpuClockMHzmaxGpuClockMHzr  r   r   r   r   r  
  r  r  c                 C   r  )NnvmlDeviceResetGpuLockedClocksr  r  r   r   r   r  
  r  r  c                 C   r  )NnvmlDeviceSetMemoryLockedClocksr  )r  minMemClockMHzmaxMemClockMHzr  r   r   r   r   r  
  r  r  c                 C   r  )N!nvmlDeviceResetMemoryLockedClocksr  r  r   r   r   r  
  r  r  c                 C   s   t d}|| |}|S )NnvmlDeviceGetClkMonStatusr	  )r  c_clkMonInfor  r   r   r   r   r  
  s   
r  c                 C   r  )NnvmlDeviceSetApplicationsClocksr  )r  r  maxGraphicsClockMHzr  r   r   r   r   r  
  r  r  c                 C   r  )N!nvmlDeviceResetApplicationsClocksr  r  r   r   r   r  
  r  r  c                 C   r  )N!nvmlDeviceSetPowerManagementLimitr  )r  limitr  r   r   r   r   r  
  r  r  c                 C   r  )NnvmlDeviceSetGpuOperationMode)r	  r|  r  r  r   r   r   r  
  r  r  c                  C   s&   t d} t }| t|}t| |S )NnvmlEventSetCreate)r	  c_nvmlEventSet_tr  r  )r  eventSetr   r   r   r   r  
  s
   r  c                 C   s$   t d}|| t||}t| d S )NnvmlDeviceRegisterEvents)r	  ru  r  )r  
eventTypesr  r  r   r   r   r   r  
  r\  r  c                 C   r  )N nvmlDeviceGetSupportedEventTypesru  r	  r  r  r   )r  c_eventTypesr  r   r   r   r   r    r  r  c                 C   s.   t d}t }|| t|t|}t| |S )NnvmlEventSetWait_v2)r	  r  r  rF  r  )r  	timeoutmsr  datar   r   r   r   r  	  s
   r  c                 C   s
   t | |S r   )r  )r  r  r   r   r   nvmlEventSetWait  r  r  c                 C   r  )NnvmlEventSetFreer  )r  r  r   r   r   r   r    r  r  c                 C   s0   t d}t }|| |t|}t| |jdkS )NnvmlDeviceOnSameBoardr   )r	  r  r  r  r   )handle1handle2r  onSameBoardr   r   r   r   r    s
   
r  c                 C   *   t d}t }|| t|}t| |jS )N#nvmlDeviceGetCurrPcieLinkGenerationr	  rF  r  r  r   r  r  genr   r   r   r   r  #  
   r  c                 C   r  )N"nvmlDeviceGetMaxPcieLinkGenerationr  r  r   r   r   r  +  r  r  c                 C   r  )NnvmlDeviceGetCurrPcieLinkWidthr  r  r  widthr   r   r   r   r  3  r  r  c                 C   r  )NnvmlDeviceGetMaxPcieLinkWidthr  r  r   r   r   r  ;  r  r  c                 C   r  )N%nvmlDeviceGetGpuMaxPcieLinkGenerationr  r  r   r   r   r  B  r  r  c                 C   r  )N+nvmlDeviceGetSupportedClocksThrottleReasonsr  r  	c_reasonsr  r   r   r   r   r   J  r  r   c                 C   r  )N)nvmlDeviceGetCurrentClocksThrottleReasonsr  r  r   r   r   r  R  r  r  c                 C   r  )NnvmlDeviceGetIndexr  )r  r  r  r   r   r   r   r  Z  r  r  c                 C   r  )NnvmlDeviceGetAccountingModer#  r%  r   r   r   r  b  r  r  c                 C   r  )NnvmlDeviceSetAccountingModer  r  r   r   r   r  i  r  r  c                 C   r  )NnvmlDeviceClearAccountingPidsr  r  r   r   r   r  o  r  r  c                 C   s@   t  }td}|| t|t|}t| |jtjkrd |_|S )NnvmlDeviceGetAccountingStats)r  r	  rF  r  r  r  r  r   )r  r  statsr  r   r   r   r   r  u  s   r  c                 C   sP   t t| }t |j  }td}|| t||}t| ttt|d|j S )NnvmlDeviceGetAccountingPidsr   )	rF  !nvmlDeviceGetAccountingBufferSizer   r	  r  r  listmapint)r  rO  pidsr  r   r   r   r   r
    s   r
  c                 C   .   t  }td}|| t|}t| t|jS )Nr  )rF  r	  r  r  r  r   )r  
bufferSizer  r   r   r   r   r    
   
r  c                 C   s   t |}td}td}|| |t|d }|tkr!|tkr!t||jd d |_t|j }| }|| |t||}t	| t
tt|d|j S )Nr   nvmlDeviceGetRetiredPagesr   r	   )_nvmlPageRetirementCause_trF  r	  r  r   r   r   r   ru  r  r  r  r  )rU  sourceFilterc_sourcer  r  r   
page_arrayc_pagesr   r   r   r    s   
r  c                    s   t |}td}td}|| |t|d }|tkr!|tkr!t||jd d |_t|j }|  t|j }| || |t| }t	|  fddt
|jD S )Nr   nvmlDeviceGetRetiredPages_v2r   r	   c                    s&   g | ]}t  | t | d qS ))addressr  )r  )r   rB  r  c_timesr   r   r     s   & z0nvmlDeviceGetRetiredPages_v2.<locals>.<listcomp>)r  rF  r	  r  r   r   r   r   ru  r  r>  )rU  r  r  r  r  r   r  times_arrayr   r  r   r    s   

r  c                 C   r  )N&nvmlDeviceGetRetiredPagesPendingStatus)r$  r	  r  r  r  r   )rU  	c_pendingr  r   r   r   r   r    r  r  c                 C   s4   t  }td}|| t|t|}t| t|jS )NnvmlDeviceGetAPIRestriction)r$  r	  _nvmlRestrictedAPI_tr  r  r  r   )rU  apiTypec_permissionr  r   r   r   r   r     s
   
r   c                 C   r  )NnvmlDeviceSetAPIRestriction)r	  r!  r$  r  )r  r"  isRestrictedr  r   r   r   r   r$    r  r$  c                 C   r  )NnvmlDeviceGetBridgeChipInfo)r  r	  r  r  )r  bridgeHierarchyr  r   r   r   r   r&    r  r&  c                 C   s   t |}t|}td}t }td}|| ||t|t|d }|tkr(t||jt	 }	|	 }
|| ||t|t||
}t
| |j|
d|j fS )Nr   nvmlDeviceGetSamples)_nvmlSamplingType_tru  rF  r  r	  r  r   r   r   r  r  )rU  sampling_typer  c_sampling_typec_time_stampc_sample_countc_sample_value_typer  r   sampleArray	c_samplesr   r   r   r(    s   
r(  c                 C   2   t |}t }td}|| |t|}t| |S )NnvmlDeviceGetViolationStatus)_nvmlPerfPolicyType_tr  r	  r  r  )rU  perfPolicyTypec_perfPolicy_type
c_violTimer  r   r   r   r   r2    s   r2  c                 C   r/  )NnvmlDeviceGetPcieThroughput)rF  r	  _nvmlPcieUtilCounter_tr  r  r   )rU  counterr  r  r   r   r   r   r7    r  r7  c                 C   sj   t d}td}|| t|d }|tkrt|t|j }| }|| t||}t| t|d|j S )Nr   nvmlSystemGetTopologyGpuSet	rF  r	  r  r   r   r  r   r  r  )	cpuNumberr  r  r   r  r  r   r   r   r:    s   
r:  c                 C   sn   t d}td}|| |t|d }|tkrt|t|j }| }|| |t||}t| t|d|j S )Nr    nvmlDeviceGetTopologyNearestGpusr;  )rU  levelr  r  r   r  r  r   r   r   r=    s   
r=  c                 C   rG  )N#nvmlDeviceGetTopologyCommonAncestor)_nvmlGpuTopologyLevel_tr	  r  r  r   )device1device2c_levelr  r   r   r   r   r?    rK  r?  c                 C   s@   t  }t  }td}|| ||t|t|}t| |j|jfS )N%nvmlDeviceGetNvLinkUtilizationCounterr  )rU  linkr9  c_rxcounterc_txcounterr  r   r   r   r   rD  &  s   rD  c                 C   s"   t d}|| |||}t| d S )N(nvmlDeviceFreezeNvLinkUtilizationCounterr  )rU  rE  r9  freezer  r   r   r   r   rH  .  r  rH  c                 C   s    t d}|| ||}t| d S )N'nvmlDeviceResetNvLinkUtilizationCounterr  )rU  rE  r9  r  r   r   r   r   rJ  4  rV  rJ  c                 C   s(   t d}|| ||t||}t| d S )N%nvmlDeviceSetNvLinkUtilizationControlr	  r  r  )rU  rE  r9  controlresetr  r   r   r   r   rK  :  r  rK  c                 C   ,   t  }td}|| ||t|}t| |S )N%nvmlDeviceGetNvLinkUtilizationControl)ri  r	  r  r  )rU  rE  r9  	c_controlr  r   r   r   r   rP  @  
   rP  c                 C   .   t  }td}|| ||t|}t| |jS )NnvmlDeviceGetNvLinkCapabilityr  )rU  rE  
capabilityc_capResultr  r   r   r   r   rT  G  
   rT  c                 C   rS  )NnvmlDeviceGetNvLinkErrorCounterr  )rU  rE  r9  c_resultr  r   r   r   r   rX  N  rW  rX  c                 C   s   t d}|| |}t| d S )N"nvmlDeviceResetNvLinkErrorCountersr  )rU  rE  r  r   r   r   r   rZ  U  rQ  rZ  c                 C   *   t  }td}|| |t|}t| |S )N#nvmlDeviceGetNvLinkRemotePciInfo_v2r*  )rU  rE  c_pcir  r   r   r   r    nvmlDeviceGetNvLinkRemotePciInfo[  
   r^  c                 C   rG  )N#nvmlDeviceGetNvLinkRemoteDeviceType)_nvmlNvLinkDeviceType_tr	  r  r  r   )r  rE  r  r  r   r   r   r   r`  b  rK  r`  c                 C   rG  )NnvmlDeviceGetNvLinkStater  )rU  rE  
c_isActiver  r   r   r   r   rb  i  rK  rb  c                 C   rG  )NnvmlDeviceGetNvLinkVersionr  )rU  rE  r  r  r   r   r   r   rd  p  rK  rd  c                 C   s"   t d}|t| |}t| d S )NnvmlDeviceModifyDrainStater	  pointerr  )pciInfonewStater  r   r   r   r   re  w  r  re  c                 C   .   t  }td}|t| t|}t| |jS )NnvmlDeviceQueryDrainState)rF  r	  rg  r  r  r   )rh  
c_newStater  r   r   r   r   rk  }  rW  rk  c                 C       t d}|t| }t| d S )NnvmlDeviceRemoveGpurf  rh  r  r   r   r   r   rn    rV  rn  c                 C   rm  )NnvmlDeviceDiscoverGpusrf  ro  r   r   r   rp    rV  rp  c              	   C      t t| }| }td}t|D ]\}}z|\|| _|| _W q ty/   ||| _Y qw || tt|t|}t	| |S )NnvmlDeviceGetFieldValues
r  lenr	  	enumerater  r  	TypeErrorc_int32r  r  r  fieldIds
values_arrvaluesr  rB  r  r   r   r   r   rr       rr  c              	   C   rq  )NnvmlDeviceClearFieldValuesrs  rx  r   r   r   r}    r|  r}  c                 C   r  )NnvmlDeviceGetVirtualizationModer  )r  c_virtualization_moder  r   r   r   r   r~    r  r~  c                 C      t d}|| |S )NnvmlDeviceSetVirtualizationModer  )r  virtualization_moder  r   r   r   r       
r  c                 C   rj  )NnvmlGetVgpuDriverCapabilities)rF  r	  _nvmlVgpuDriverCapability_tr  r  r   )rU  rV  r  r   r   r   r   r    rW  r  c                 C   r/  )NnvmlDeviceGetVgpuCapabilities)rF  r	  _nvmlDeviceVgpuCapability_tr  r  r   )r  rU  rV  r  r   r   r   r   r    r  r  c                 C      t d}td}|| t|d }|tkrg S |tkrAt|j }| }|| t||}t| g }t|jD ]	}|	||  q5|S t
|)Nr   nvmlDeviceGetSupportedVgpusrF  r	  r  r   r   _nvmlVgpuTypeId_tr   r  r>  r&  r   r  c_vgpu_countr  r   vgpu_type_ids_arrayc_vgpu_type_idsvgpusrB  r   r   r   r       
r  c                 C   r  )Nr   nvmlDeviceGetCreatableVgpusr  r  r   r   r   r    r  r  c                 C   ,   t d}td}|| t|}t| |jS )Nr   #nvmlVgpuTypeGetGpuInstanceProfileIdr  )
vgpuTypeIdc_profile_idr  r   r   r   r   r    
   r  c                 C   6   t t}tt}td}|| |t|}t| |jS )NnvmlVgpuTypeGetClassr  NVML_DEVICE_NAME_BUFFER_SIZErF  r	  r  r  r   )r  c_classc_buffer_sizer  r   r   r   r   r       r  c                 C   r  )NnvmlVgpuTypeGetNamer  )r  r  r  r  r   r   r   r   r    r  r  c                 C   s@   t d}t d}td}|| t|t|}t| |j|jfS )Nr   nvmlVgpuTypeGetDeviceIDr  )r  c_device_idc_subsystem_idr  r   r   r   r   r    s   r  c                 C   r  )Nr   nvmlVgpuTypeGetFramebufferSizer  )r  	c_fb_sizer  r   r   r   r   r    r  r  c                 C   r  )Nr   nvmlVgpuTypeGetNumDisplayHeadsr  )r  c_num_headsr  r   r   r   r   r  #  r  r  c                 C   sB   t d}t d}td}|| dt|t|}t| |j|jfS )Nr   nvmlVgpuTypeGetResolutionr  )r  c_xdimc_ydimr  r   r   r   r   r  *  s   r  c                 C   s2   t t}tt}td}|| ||}t| |jS )NnvmlVgpuTypeGetLicense)r  r  rF  r	  r  r   )r  	c_licenser  r  r   r   r   r   r  2  s   r  c                 C   r  )Nr   nvmlVgpuTypeGetFrameRateLimitr  )r  c_frl_configr  r   r   r   r   r  ;  r  r  c                 C   s.   t d}td}|| |t|}t| |jS )Nr   nvmlVgpuTypeGetMaxInstancesr  )r  r  c_max_instancesr  r   r   r   r   r  B  s
   r  c                 C   r  )Nr    nvmlVgpuTypeGetMaxInstancesPerVmr  )r  c_max_instances_per_vmr  r   r   r   r   r  I  r  r  c                 C   r  )Nr   nvmlDeviceGetActiveVgpus)rF  r	  r  r   r   r  r   r  r>  r&  r   )r  r  r  r   vgpu_instance_arrayc_vgpu_instancesr  rB  r   r   r   r  P  r  r  c                 C   sJ   t t}tt}td}td}|| t||t|}t| |j|jfS )Nr   nvmlVgpuInstanceGetVmID)r  rg  rF  r  r	  r  r  r   )r  c_vm_idr  c_vm_id_typer  r   r   r   r   r  j  s   r  c                 C   6   t t}tt}td}|| t||}t| |jS )NnvmlVgpuInstanceGetUUIDr  rg  rF  r	  r  r  r   r  r  r  r  r   r   r   r   r  t  r  r  c                 C   r  )NnvmlVgpuInstanceGetMdevUUIDr  r  r   r   r   r  }  r  r  c                 C   r  )N"nvmlVgpuInstanceGetVmDriverVersion)r  r  rF  r	  r  r  r   )r  c_driver_versionr  r  r   r   r   r   r    r  r  c                 C   r  )Nr    nvmlVgpuInstanceGetLicenseStatusr  )r  c_license_statusr  r   r   r   r   r    r  r  c                 C   s(   t d}t }|| t|}t| |S )N!nvmlVgpuInstanceGetLicenseInfo_v2)r	  r  r  r  )r  r  c_license_infor   r   r   r   r    s
   r  c                 C   r+  r   )r  )r  r   r   r   nvmlVgpuInstanceGetLicenseInfo  r.  r  c                 C   r  )Nr   !nvmlVgpuInstanceGetFrameRateLimitr  )r  c_frlr  r   r   r   r   r    r  r  c                 C   r  )NnvmlVgpuInstanceGetEccModer#  r  r&  r  r   r   r   r   r    r  r  c                 C   r  )Nr   nvmlVgpuInstanceGetTyper  )r  c_vgpu_typer  r   r   r   r   r    r  r  c                 C   r  )Nr   "nvmlVgpuInstanceGetEncoderCapacityr  )r  c_encoder_capacityr  r   r   r   r   r    r  r  c                 C   r  )N"nvmlVgpuInstanceSetEncoderCapacityr  )r  encoder_capacityr  r   r   r   r    r  r  c                 C   r  )Nr   nvmlVgpuInstanceGetFbUsager  )r  
c_fb_usager  r   r   r   r   r    r  r  c                 C   s2   t d}td}|| t|t|}t| |jS )Nr   nvmlVgpuTypeGetCapabilities)rF  r	  _nvmlVgpuCapability_tr  r  r   )r  rU  c_cap_resultr  r   r   r   r   r    s
   r  c                 C   r  )Nr    nvmlVgpuInstanceGetGpuInstanceIdr  )r  r  r  r   r   r   r   r    r  r  c                 C   s2   t t}td}|| |ttt}t| |jS )NnvmlVgpuInstanceGetGpuPciId)r  rb  r	  r  rF  r  r   )r  c_vgpuPciIdr  r   r   r   r   r    r  r  c           	      C   s   t d}t|}t }td}|| |t|t|d }|tkr!g S |tkrD|jt }| }|| |t|t||}t	| |d|j S t
|)Nr   nvmlDeviceGetVgpuUtilization)rF  ru  r  r	  r  r   r   r   r  r  r   )	r  r  r  r,  r.  r  r   r/  r0  r   r   r   r    s   
r  c                 C   rS  )NnvmlDeviceGetP2PStatus)_nvmlGpuP2PStatus_tr	  r  r  r   )rA  rB  p2pIndexc_p2pstatusr  r   r   r   r   r    rW  r  c                 C   r  )N&nvmlDeviceGetGridLicensableFeatures_v4)r  r	  r  r  )r  c_get_grid_licensable_featuresr  r   r   r   r   r    s
   r  c                 C   r+  r   )r  r,  r   r   r   #nvmlDeviceGetGridLicensableFeatures  r.  r  c                 C   rO  )NnvmlDeviceGetGspFirmwareVersionr  )r  rx  r  r   r   r   r   r  	  rQ  r  c                 C   rR  )NnvmlDeviceGetGspFirmwareModer  )r  	isEnableddefaultModer  r   r   r   r   r    rV  r  c                 C   s6   t d}t|}td}|| |t|}t| |jS )Nr   nvmlDeviceGetEncoderCapacity)ru  _nvmlEncoderQueryType_tr	  r  r  r   )r  encoderQueryTyper  c_encoderQuery_typer  r   r   r   r   r    s   r  c                 C   s~   t d}t|}td}|| |t|d }|tkrg S |tkr;|jt }| }|| |t||}t| |d|j S t	|)Nr   #nvmlDeviceGetVgpuProcessUtilization)
rF  ru  r	  r  r   r   r   r  r  r   )r  r  r  r,  r  r   r/  r0  r   r   r   r    s   
r  c                 C   R   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  r   r   r   r   r  7     r  c                 C      t d}td}|| t|d }|tkrB|jdkr@t|j }| }|| t||}t| g }t|jD ]	}|||  q4|S g S t	|)Nr   nvmlDeviceGetEncoderSessions
rF  r	  r  r   r   r  r  r>  r&  r   r  c_session_countr  r   session_array
c_sessionssessionsrB  r   r   r   r  @     

r  c                 C   r  )NnvmlDeviceGetFBCStatsrH  r	  r  r  )r  
c_fbcStatsr  r   r   r   r   r  Z  r  r  c                 C   r  )Nr   nvmlDeviceGetFBCSessions
rF  r	  r  r   r   rL  r  r>  r&  r   r  r   r   r   r  a  r  r  c                 C   r  )Nr   nvmlVgpuInstanceGetEncoderStatsr  )r  r  r  r  r  r   r   r   r   r  {  r  r  c                 C   r  )Nr   "nvmlVgpuInstanceGetEncoderSessionsr  r  r  r  r   r  r  r  rB  r   r   r   r    r  r  c                 C   r  )NnvmlVgpuInstanceGetFBCStatsr  )r  r  r  r   r   r   r   r    r  r  c                 C   r  )Nr   nvmlVgpuInstanceGetFBCSessionsr  r  r   r   r   r    r  r  c                 C   sr   t d}t|}td}|| d t||}|tkr5|jt }| }|| |t||}t| |d|j S t|)Nr   nvmlDeviceGetProcessUtilization)	rF  ru  r	  r  r   r   r  r  r   )r  r  r  r,  r  r   r/  r0  r   r   r   r     s   
r   c                 C   Z   t d}t }td}|| t|t|}|tkr)|| t|t|}t| |S t|)NnvmlVgpuInstanceGetMetadatar   )r	  r  rF  r  r   r  r   )r  r  c_vgpuMetadatac_bufferSizer   r   r   r   r       r  c                 C   r  )NnvmlDeviceGetVgpuMetadatar   )r	  r  rF  r  r   r  r   )r  r  c_vgpuPgpuMetadatar  r   r   r   r   r    r  r  c                 C   s2   t d}t }|t| t|t|}t| |S )NnvmlGetVgpuCompatibility)r	  r  r  r  )vgpuMetadatapgpuMetadatar  c_vgpuPgpuCompatibilityr   r   r   r   r    s
   r  c                 C   sf   t d}tt}td}|| t|t|}|tkr)|| t|t|}t| nt||j|jfS )NnvmlDeviceGetPgpuMetadataStringr   )	r	  r  r  rF  r  r   r  r   r   )r  r  c_pgpuMetadatar  r   r   r   r   r    s   
r  c                 C   r  )NnvmlDeviceGetVgpuSchedulerLog)r1  r	  r  r  )r  c_vgpu_sched_logr  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetVgpuSchedulerState)r9  r	  r  r  )r  c_vgpu_sched_stater  r   r   r   r   r    r  r  c                 C   r  )N&nvmlDeviceGetVgpuSchedulerCapabilities)r=  r	  r  r  )r  c_vgpu_sched_capsr  r   r   r   r   r    r  r  c                 C   s    t d}|t| }t| |S )NnvmlSetVgpuVersionrL  )vgpuVersionr  r   r   r   r   r    rV  r  c                 C   s&   t d}|t| t|}t| |S )NnvmlGetVgpuVersionrL  )	supportedrC  r  r   r   r   r   r  "  s   r  c                 C   r  )N!nvmlVgpuInstanceGetAccountingModer#  r  r   r   r   r  (  r  r  c                 C   sb   t  }td}|| t|d }|tkr-|jt  }| }|| t|t|}t| ||fS t|)N!nvmlVgpuInstanceGetAccountingPids)rF  r	  r  r   r   r  r   )r  
c_pidCountr  r   r/  
c_pidArrayr   r   r   r  /  s   
r  c                 C   r[  )N"nvmlVgpuInstanceGetAccountingStats)r  r	  r  r  )r  r  c_accountingStatsr  r   r   r   r   r  <  r_  r  c                 C      t d}|| }t| |S )N#nvmlVgpuInstanceClearAccountingPidsr  )r  r  r   r   r   r   r  C  r  r  c                  C   r  )NnvmlGetExcludedDeviceCountr  r  r   r   r   r   I  r  r   c                 C   r  )N nvmlGetExcludedDeviceInfoByIndex)rF  rd  r	  r  r  )r  r  infor  r   r   r   r   r!  P  r  r!  c                 C   r  )NnvmlDeviceGetHostVgpuMode)_nvmlHostVgpuMode_tr	  r  r  r   )r  c_host_vgpu_moder  r   r   r   r   r#  X  r  r#  c                 C   rG  )NnvmlDeviceSetMigModer  )rU  r  c_activationStatusr  r   r   r   r   r&  _  rK  r&  c                 C   ro  )NnvmlDeviceGetMigModer  )rU  c_currentModec_pendingModer  r   r   r   r   r(  f  rs  r(  c                 C   sT   |dkrt  }td}n|dkrt }td}ntt|| |t|}t| |S )Nr   $nvmlDeviceGetGpuInstanceProfileInfoVr   #nvmlDeviceGetGpuInstanceProfileInfo)r`  r	  rU  r   r   r  r  )rU  profilerx  r  r  r   r   r   r   r,  n  s   

r,  c                 C   rG  )N)nvmlDeviceGetGpuInstanceRemainingCapacityr  )rU  rg  r  r  r   r   r   r   r.  ~  rK  r.  c                 C   "   t d}|| |||}t| |S )N-nvmlDeviceGetGpuInstancePossiblePlacements_v2r  )rU  rg  placementsRefcountRefr  r   r   r   r   *nvmlDeviceGetGpuInstancePossiblePlacements  r  r3  c                 C   r[  )NnvmlDeviceCreateGpuInstancerv  r	  r  r  )rU  rg  
c_instancer  r   r   r   r   r4    r_  r4  c                 C   rO  )N(nvmlDeviceCreateGpuInstanceWithPlacementr5  )rU  rg  rh  r6  r  r   r   r   r   r7    rR  r7  c                 C   r  )NnvmlGpuInstanceDestroyr  )ru  r  r   r   r   r   r8    r  r8  c                 C   r/  )NnvmlDeviceGetGpuInstancesr  )rU  rg  gpuInstancesRefr2  r  r   r   r   r   r9    r  r9  c                 C   r[  )NnvmlDeviceGetGpuInstanceByIdr5  )rU  r  r6  r  r   r   r   r   r;    r_  r;  c                 C   r  )NnvmlGpuInstanceGetInfo)rf  r	  r  r  )ru  r  r  r   r   r   r   r<    r  r<  c                 C   sV   |dkrt  }td}n|dkrt }td}ntt|| ||t|}t| |S )Nr   -nvmlGpuInstanceGetComputeInstanceProfileInfoVr   ,nvmlGpuInstanceGetComputeInstanceProfileInfo)rr  r	  rk  r   r   r  r  )rU  r-  
engProfilerx  r  r  r   r   r   r   r>    s   

r>  c                 C   rG  )N2nvmlGpuInstanceGetComputeInstanceRemainingCapacityr  )ru  rg  r  r  r   r   r   r   r@    rK  r@  c                 C   r/  )N3nvmlGpuInstanceGetComputeInstancePossiblePlacementsr  )ru  rg  r1  r2  r  r   r   r   r   rA    r  rA  c                 C   r[  )N$nvmlGpuInstanceCreateComputeInstancec_nvmlComputeInstance_tr	  r  r  )ru  rg  r6  r  r   r   r   r   rB    r_  rB  c                 C   rO  )N1nvmlGpuInstanceCreateComputeInstanceWithPlacementrC  )ru  rg  rh  r6  r  r   r   r   r   rE    rR  rE  c                 C   r  )NnvmlComputeInstanceDestroyr  )computeInstancer  r   r   r   r   rF    r  rF  c                 C   r/  )N"nvmlGpuInstanceGetComputeInstancesr  )ru  rg  computeInstancesRefr2  r  r   r   r   r   rH    r  rH  c                 C   r[  )N%nvmlGpuInstanceGetComputeInstanceByIdrC  )ru  r  r6  r  r   r   r   r   rJ    r_  rJ  c                 C   r  )NnvmlComputeInstanceGetInfo_v2)rt  r	  r  r  )rG  r  r  r   r   r   r   rK    r  rK  c                 C   r+  r   )rK  )rG  r   r   r   nvmlComputeInstanceGetInfo  r.  rL  c                 C   r  )NnvmlDeviceIsMigDeviceHandle)rF  r	  r  r  )rU  c_isMigDevicer  r   r   r   r   rM    r  rM  c                 C   r  )NnvmlDeviceGetGpuInstanceIdr  )rU  c_gpuInstanceIdr  r   r   r   r   rO    r  rO  c                 C   r  )NnvmlDeviceGetComputeInstanceIdr  )rU  c_computeInstanceIdr  r   r   r   r   rQ  	  r  rQ  c                 C   r  )NnvmlDeviceGetMaxMigDeviceCountr  )rU  r  r  r   r   r   r   rS    r  rS  c                 C   r1  )N#nvmlDeviceGetMigDeviceHandleByIndexr  )rU  r  r  	migDevicer  r   r   r   r   rT    r  rT  c                 C   r  )N,nvmlDeviceGetDeviceHandleFromMigDeviceHandle)r  r	  r  r  )rU  rU  r  r   r   r   r   rV    r  rV  c                 C   r  )NnvmlDeviceGetAttributes_v2)r  r	  r  r  )rU  c_attrsr  r   r   r   r   rW  &  r  rW  c                 C   r+  r   )rW  )rU  r   r   r   nvmlDeviceGetAttributes-  r.  rY  c                 C   s\   t d}t }t }t }t }|| t|t|t|t|}t| |j|j|j|jfS )NnvmlDeviceGetRemappedRowsr  )rU  r  c_corrc_unc
c_bpending
c_bfailurer   r   r   r   rZ  0  s    rZ  c                 C   r  )N!nvmlDeviceGetRowRemapperHistogram)r  r	  r  r  )rU  c_valsr  r   r   r   r   r_  :  r  r_  c                 C   r  )NnvmlDeviceGetArchitecture)_nvmlDeviceArchitecture_tr	  r  r  r   )rU  archr  r   r   r   r   ra  A  r  ra  c                 C   r  )NnvmlDeviceGetBusType)_nvmlBusType_tr	  r  r  r   )rU  	c_busTyper  r   r   r   r   rd  H  r  rd  c                 C   r  )NnvmlDeviceGetIrqNumr  )rU  c_irqNumr  r   r   r   r   rg  O  r  rg  c                 C   r  )NnvmlDeviceGetNumGpuCoresr  )rU  
c_numCoresr  r   r   r   r   ri  V  r  ri  c                 C   r  )NnvmlDeviceGetPowerSource)_nvmlPowerSource_tr	  r  r  r   )rU  c_powerSourcer  r   r   r   r   rk  ]  r  rk  c                 C   r  )NnvmlDeviceGetMemoryBusWidthr  )rU  c_memBusWidthr  r   r   r   r   rn  d  r  rn  c                 C   r  )NnvmlDeviceGetPcieLinkMaxSpeed)_nvmlPcieLinkMaxSpeed_tr	  r  r  r   rU  rF  r  r   r   r   r   rp  k  r  rp  c                 C   r  )N$nvmlDeviceGetAdaptiveClockInfoStatus)_nvmlAdaptiveClockInfoStatus_tr	  r  r  r   )rU  c_adaptiveClockInfoStatusr  r   r   r   r   rs  r  r  rs  c                 C   r  )NnvmlDeviceGetPcieSpeedr  rr  r   r   r   rv  y  r  rv  c                 C   rO  )NnvmlDeviceGetDynamicPstatesInfor  )rU  c_dynamicpstatesinfor  r   r   r   r   rw    rQ  rw  c                 C   rR  )NnvmlDeviceSetFanSpeed_v2r  )r  r  rJ  r  r   r   r   r   ry    rV  ry  c                 C   rR  )NnvmlDeviceGetThermalSettingsr  )rU  sensorindexc_thermalsettingsr  r   r   r   r   rz    rV  rz  c                 C   s,   t d}|| t|t|||}t| |S )N nvmlDeviceGetMinMaxClockOfPState)r	  r2  r  )rU  r   pstateminClockMHzmaxClockMHzr  r   r   r   r   r}    s   r}  c           	      C   sf   g }t t}tt |j }t|j }| }td}|| ||}t| |D ]}|tkr0|| q%|S )N'nvmlDeviceGetSupportedPerformanceStates)	rF  NVML_MAX_GPU_PERF_PSTATESsizeofr   rf  r	  r  NVML_PSTATE_UNKNOWNr&  )	rU  pstatesr  c_sizepstates_array	c_pstatesr  r   r   r   r   r   r    s   

r  c                 C   r  )NnvmlDeviceGetGpcClkVfOffsetrw  r	  r  r  r   rU  offsetr  r   r   r   r   r    r  r  c                 C   &   t |}td}|| |}t| |S )NnvmlDeviceSetGpcClkVfOffsetrw  r	  r  rU  r  c_offsetr  r   r   r   r   r    
   
r  c                 C   rR  )N!nvmlDeviceGetGpcClkMinMaxVfOffsetr  rU  	minOffset	maxOffsetr  r   r   r   r   r    rV  r  c                 C   r  )NnvmlDeviceGetMemClkVfOffsetr  r  r   r   r   r    r  r  c                 C   r  )NnvmlDeviceSetMemClkVfOffsetr  r  r   r   r   r    r  r  c                 C   rR  )N!nvmlDeviceGetMemClkMinMaxVfOffsetr  r  r   r   r   r    rV  r  c                   @   r2  r3  r8  r   r   r   r   r4  "  r:  c                   @   r  )struct_c_nvmlGpmSample_tNr  r   r   r   r   r  *  r   r  c                   @   rG  )c_metricInfo_t	shortNamelongNamer  N)r   r   r   r  r  r   r   r   r   r  .  r  r  c                   @   s(   e Zd ZdefdefdefdefgZdS )c_nvmlGpmMetric_tmetricIdr  r   
metricInfoN)r   r   r   rF  r  r  r  r  r   r   r   r   r  5  r  r  c                   @   s2   e Zd Zdefdefdefdefdee fgZdS )c_nvmlGpmMetricsGet_trx  
numMetricssample1sample2metricsN)r   r   r   rF  c_nvmlGpmSample_tr  NVML_GPM_METRIC_MAXr  r   r   r   r   r  =  s    
r  c                   @   r  )c_nvmlGpmSupport_trx  isSupportedDeviceNr  r   r   r   r   r  H  rL  r  c                 C   s    t d}|t| }t| | S )NnvmlGpmMetricsGetrL  )
metricsGetr  r   r   r   r   r  R  rV  r  c                 C   r  )NnvmlGpmSampleFreer  	gpmSampler  r   r   r   r   r  X  r  r  c                  C   s&   t  } td}|t| }t| | S )NnvmlGpmSampleAlloc)r  r	  r  r  r  r   r   r   r  ^  s
   r  c                 C   s   t d}|| |}t| |S )NnvmlGpmSampleGetr  )rU  r  r  r   r   r   r   r  e  rQ  r  c                 C   s    t d}|| ||}t| |S )NnvmlGpmMigSampleGetr  )rU  r  r  r  r   r   r   r   r  k  rV  r  c                 C   s.   t  }t|_td}|| t|}t| |S )NnvmlGpmQueryDeviceSupport)r  NVML_GPM_SUPPORT_VERSIONrx  r	  r  r  )rU  
gpmSupportr  r   r   r   r   r  q     r  c                 C   r  )NnvmlDeviceCcuSetStreamState)rF  r	  r  )rU  rB  r  r  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceCcuGetStreamStater  )rU  r  r  r   r   r   r   r    r  r  c                   @   r%  )c_nvmlNvLinkPowerThres_tlowPwrThresholdNr  r   r   r   r   r    r'  r  c                 C   s.   t  }||_td}|| t|}t| |S )N*nvmlDeviceSetNvLinkDeviceLowPowerThreshold)r  r  r	  r  r  )rU  l1thresholdr  r  r   r   r   r   r    r  r  c                   @   s,   e Zd Zdee fdefdefdefgZdS )c_nvmlGpuFabricInfo_tclusterUuidr  partitionIdrB  N)	r   r   r   r9  rg  r  r  _nvmlGpuFabricState_tr  r   r   r   r   r    rG  r  c                 C   rO  )NnvmlDeviceGetGpuFabricInfor  )rU  gpuFabricInfor  r   r   r   r   r    rQ  r  r   )r   (  ctypesctypes.utilr   	functoolsr   r   r  	threadingr   rF  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_COUNTr`  #NVML_TEMPERATURE_THRESHOLD_SHUTDOWN#NVML_TEMPERATURE_THRESHOLD_SLOWDOWN"NVML_TEMPERATURE_THRESHOLD_MEM_MAX"NVML_TEMPERATURE_THRESHOLD_GPU_MAX'NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MIN(NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_CURR'NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MAX NVML_TEMPERATURE_THRESHOLD_COUNTr^  NVML_TEMPERATURE_GPUNVML_TEMPERATURE_COUNTr  NVML_COMPUTEMODE_DEFAULT!NVML_COMPUTEMODE_EXCLUSIVE_THREADNVML_COMPUTEMODE_PROHIBITED"NVML_COMPUTEMODE_EXCLUSIVE_PROCESSNVML_COMPUTEMODE_COUNTr  NVML_MEMORY_LOCATION_L1_CACHENVML_MEMORY_LOCATION_L2_CACHE"NVML_MEMORY_LOCATION_DEVICE_MEMORYNVML_MEMORY_LOCATION_DRAM"NVML_MEMORY_LOCATION_REGISTER_FILE#NVML_MEMORY_LOCATION_TEXTURE_MEMORY NVML_MEMORY_LOCATION_TEXTURE_SHMNVML_MEMORY_LOCATION_CBUNVML_MEMORY_LOCATION_SRAMNVML_MEMORY_LOCATION_COUNTNVML_NVLINK_MAX_LINKSNVML_NVLINK_MAX_LANES_nvmlNvLinkErrorCounter_tNVML_NVLINK_ERROR_DL_REPLAYNVML_NVLINK_ERROR_DL_RECOVERYNVML_NVLINK_ERROR_DL_CRC_FLITNVML_NVLINK_ERROR_DL_CRC_DATANVML_NVLINK_ERROR_DL_ECC_DATANVML_NVLINK_ERROR_COUNT _nvmlNvLinkEccLaneErrorCounter_tNVML_NVLINK_ERROR_DL_ECC_LANE0NVML_NVLINK_ERROR_DL_ECC_LANE1NVML_NVLINK_ERROR_DL_ECC_LANE2NVML_NVLINK_ERROR_DL_ECC_LANE3NVML_NVLINK_ERROR_DL_ECC_COUNT_nvmlNvLinkCapability_tNVML_NVLINK_CAP_P2P_SUPPORTEDNVML_NVLINK_CAP_SYSMEM_ACCESSNVML_NVLINK_CAP_P2P_ATOMICSNVML_NVLINK_CAP_SYSMEM_ATOMICSNVML_NVLINK_CAP_SLI_BRIDGENVML_NVLINK_CAP_VALIDNVML_NVLINK_CAP_COUNTrm  !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_ALLrl  NVML_NVLINK_COUNTER_UNIT_CYCLES NVML_NVLINK_COUNTER_UNIT_PACKETSNVML_NVLINK_COUNTER_UNIT_BYTES!NVML_NVLINK_COUNTER_UNIT_RESERVEDNVML_NVLINK_COUNTER_UNIT_COUNTra  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_COUNTr2  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  rf  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_COUNTr  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   NVML_ERROR_IN_USEr   NVML_ERROR_NO_DATA!NVML_ERROR_VGPU_ECC_NOT_SUPPORTED!NVML_ERROR_INSUFFICIENT_RESOURCESNVML_ERROR_FREQ_NOT_SUPPORTED$NVML_ERROR_ARGUMENT_VERSION_MISMATCHNVML_ERROR_DEPRECATEDr   rK  NVML_FAN_NORMALNVML_FAN_FAILEDr[  (NVML_FAN_POLICY_TEMPERATURE_CONTINOUS_SWNVML_FAN_POLICY_MANUALr?  NVML_LED_COLOR_GREENNVML_LED_COLOR_AMBERr|  NVML_GOM_ALL_ONNVML_GOM_COMPUTENVML_GOM_LOW_DPr  9NVML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS/NVML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR NVML_PAGE_RETIREMENT_CAUSE_COUNTr!  *NVML_RESTRICTED_API_SET_APPLICATION_CLOCKS+NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKSNVML_RESTRICTED_API_COUNTr  NVML_BRIDGE_CHIP_PLXNVML_BRIDGE_CHIP_BRO4NVML_MAX_PHYSICAL_BRIDGEr  NVML_VALUE_TYPE_DOUBLENVML_VALUE_TYPE_UNSIGNED_INTNVML_VALUE_TYPE_UNSIGNED_LONG"NVML_VALUE_TYPE_UNSIGNED_LONG_LONG NVML_VALUE_TYPE_SIGNED_LONG_LONGNVML_VALUE_TYPE_COUNTr3  NVML_PERF_POLICY_POWERNVML_PERF_POLICY_THERMALNVML_PERF_POLICY_SYNC_BOOSTNVML_PERF_POLICY_BOARD_LIMIT NVML_PERF_POLICY_LOW_UTILIZATIONNVML_PERF_POLICY_RELIABILITY!NVML_PERF_POLICY_TOTAL_APP_CLOCKS"NVML_PERF_POLICY_TOTAL_BASE_CLOCKSNVML_PERF_POLICY_COUNTr  NVML_ENCODER_QUERY_H264NVML_ENCODER_QUERY_HEVC_nvmlFBCSessionType_tNVML_FBC_SESSION_TYPE_UNKNOWNNVML_FBC_SESSION_TYPE_TOSYSNVML_FBC_SESSION_TYPE_CUDANVML_FBC_SESSION_TYPE_VIDNVML_FBC_SESSION_TYPE_HWENC_nvmlDetachGpuState_tNVML_DETACH_GPU_KEEPNVML_DETACH_GPU_REMOVE_nvmlPcieLinkState_tNVML_PCIE_LINK_KEEPNVML_PCIE_LINK_SHUT_DOWNr)  NVML_TOTAL_POWER_SAMPLESNVML_GPU_UTILIZATION_SAMPLESNVML_MEMORY_UTILIZATION_SAMPLESNVML_ENC_UTILIZATION_SAMPLESNVML_DEC_UTILIZATION_SAMPLESNVML_PROCESSOR_CLK_SAMPLESNVML_MEMORY_CLK_SAMPLESNVML_SAMPLINGTYPE_COUNTr8  NVML_PCIE_UTIL_TX_BYTESNVML_PCIE_UTIL_RX_BYTESNVML_PCIE_UTIL_COUNTr@  NVML_TOPOLOGY_INTERNALNVML_TOPOLOGY_SINGLENVML_TOPOLOGY_MULTIPLENVML_TOPOLOGY_HOSTBRIDGENVML_TOPOLOGY_NODENVML_TOPOLOGY_CPUNVML_TOPOLOGY_SYSTEM_nvmlGpuP2PCapsIndex_tNVML_P2P_CAPS_INDEX_READNVML_P2P_CAPS_INDEX_WRITENVML_P2P_CAPS_INDEX_NVLINKNVML_P2P_CAPS_INDEX_ATOMICSNVML_P2P_CAPS_INDEX_PROPNVML_P2P_CAPS_INDEX_LOOPBACKNVML_P2P_CAPS_INDEX_UNKNOWNr  NVML_P2P_STATUS_OK$NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED!NVML_P2P_STATUS_GPU_NOT_SUPPORTED*NVML_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED"NVML_P2P_STATUS_DISABLED_BY_REGKEYNVML_P2P_STATUS_NOT_SUPPORTEDNVML_P2P_STATUS_UNKNOWNrb  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_UNKNOWNre  NVML_BUS_TYPE_UNKNOWNNVML_BUS_TYPE_PCINVML_BUS_TYPE_PCIENVML_BUS_TYPE_FPCINVML_BUS_TYPE_AGPrl  NVML_POWER_SOURCE_ACNVML_POWER_SOURCE_BATTERYrt  +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_UNLIMITEDrq   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_64000MBPSr  NVML_AFFINITY_SCOPE_NODENVML_AFFINITY_SCOPE_SOCKETnvmlFlagDefaultnvmlFlagForceNVML_INIT_FLAG_NO_GPUSNVML_INIT_FLAG_NO_ATTACHNVML_MAX_GPC_COUNTr  rg  r  r  r  r  re  r  r  'NVML_DEVICE_GPU_PART_NUMBER_BUFFER_SIZEr  rb  r_  r  r  r  r  r  r  !NVML_DEVICE_PCI_BUS_ID_LEGACY_FMTNVML_DEVICE_PCI_BUS_ID_FMTru  r  NVML_VALUE_NOT_AVAILABLE_uintNVML_FI_DEV_ECC_CURRENTNVML_FI_DEV_ECC_PENDINGNVML_FI_DEV_ECC_SBE_VOL_TOTALNVML_FI_DEV_ECC_DBE_VOL_TOTALNVML_FI_DEV_ECC_SBE_AGG_TOTALNVML_FI_DEV_ECC_DBE_AGG_TOTALNVML_FI_DEV_ECC_SBE_VOL_L1NVML_FI_DEV_ECC_DBE_VOL_L1NVML_FI_DEV_ECC_SBE_VOL_L2NVML_FI_DEV_ECC_DBE_VOL_L2NVML_FI_DEV_ECC_SBE_VOL_DEVNVML_FI_DEV_ECC_DBE_VOL_DEVNVML_FI_DEV_ECC_SBE_VOL_REGNVML_FI_DEV_ECC_DBE_VOL_REGNVML_FI_DEV_ECC_SBE_VOL_TEXNVML_FI_DEV_ECC_DBE_VOL_TEXNVML_FI_DEV_ECC_DBE_VOL_CBUNVML_FI_DEV_ECC_SBE_AGG_L1NVML_FI_DEV_ECC_DBE_AGG_L1NVML_FI_DEV_ECC_SBE_AGG_L2NVML_FI_DEV_ECC_DBE_AGG_L2NVML_FI_DEV_ECC_SBE_AGG_DEVNVML_FI_DEV_ECC_DBE_AGG_DEVNVML_FI_DEV_ECC_SBE_AGG_REGNVML_FI_DEV_ECC_DBE_AGG_REGNVML_FI_DEV_ECC_SBE_AGG_TEXNVML_FI_DEV_ECC_DBE_AGG_TEXNVML_FI_DEV_ECC_DBE_AGG_CBUNVML_FI_DEV_RETIRED_SBENVML_FI_DEV_RETIRED_DBENVML_FI_DEV_RETIRED_PENDING*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L5-NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_TOTAL*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L5-NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_TOTAL(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L0(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L1(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L2(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L3(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L4(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L5+NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L5-NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_TOTAL"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L0"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L1"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L2"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L3"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L4"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L5%NVML_FI_DEV_NVLINK_BANDWIDTH_C0_TOTAL"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L0"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L1"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L2"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L3"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L4"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L5%NVML_FI_DEV_NVLINK_BANDWIDTH_C1_TOTALNVML_FI_DEV_PERF_POLICY_POWERNVML_FI_DEV_PERF_POLICY_THERMAL"NVML_FI_DEV_PERF_POLICY_SYNC_BOOST#NVML_FI_DEV_PERF_POLICY_BOARD_LIMIT'NVML_FI_DEV_PERF_POLICY_LOW_UTILIZATION#NVML_FI_DEV_PERF_POLICY_RELIABILITY(NVML_FI_DEV_PERF_POLICY_TOTAL_APP_CLOCKS)NVML_FI_DEV_PERF_POLICY_TOTAL_BASE_CLOCKSNVML_FI_DEV_MEMORY_TEMP$NVML_FI_DEV_TOTAL_ENERGY_CONSUMPTION NVML_FI_DEV_NVLINK_SPEED_MBPS_L0 NVML_FI_DEV_NVLINK_SPEED_MBPS_L1 NVML_FI_DEV_NVLINK_SPEED_MBPS_L2 NVML_FI_DEV_NVLINK_SPEED_MBPS_L3 NVML_FI_DEV_NVLINK_SPEED_MBPS_L4 NVML_FI_DEV_NVLINK_SPEED_MBPS_L5$NVML_FI_DEV_NVLINK_SPEED_MBPS_COMMONNVML_FI_DEV_NVLINK_LINK_COUNTNVML_FI_DEV_RETIRED_PENDING_SBENVML_FI_DEV_RETIRED_PENDING_DBENVML_FI_DEV_PCIE_REPLAY_COUNTER(NVML_FI_DEV_PCIE_REPLAY_ROLLOVER_COUNTER*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L11*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L11(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L6(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L7(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L8(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L9)NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L10)NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L11*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L11"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L6"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L7"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L8"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L9#NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L10#NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L11"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L6"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L7"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L8"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L9#NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L10#NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L11 NVML_FI_DEV_NVLINK_SPEED_MBPS_L6 NVML_FI_DEV_NVLINK_SPEED_MBPS_L7 NVML_FI_DEV_NVLINK_SPEED_MBPS_L8 NVML_FI_DEV_NVLINK_SPEED_MBPS_L9!NVML_FI_DEV_NVLINK_SPEED_MBPS_L10!NVML_FI_DEV_NVLINK_SPEED_MBPS_L11%NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_TX%NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_RX$NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_TX$NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_RXNVML_FI_DEV_REMAPPED_CORNVML_FI_DEV_REMAPPED_UNCNVML_FI_DEV_REMAPPED_PENDINGNVML_FI_DEV_REMAPPED_FAILURE#NVML_FI_DEV_NVLINK_REMOTE_NVLINK_ID)NVML_FI_DEV_NVSWITCH_CONNECTED_LINK_COUNT*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L5*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L11-NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_TOTAL"NVML_FI_DEV_NVLINK_ERROR_DL_REPLAY$NVML_FI_DEV_NVLINK_ERROR_DL_RECOVERYNVML_FI_DEV_NVLINK_ERROR_DL_CRCNVML_FI_DEV_NVLINK_GET_SPEEDNVML_FI_DEV_NVLINK_GET_STATENVML_FI_DEV_NVLINK_GET_VERSION"NVML_FI_DEV_NVLINK_GET_POWER_STATE&NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD'NVML_FI_DEV_PCIE_L0_TO_RECOVERY_COUNTERNVML_FI_MAX!NVML_GPU_VIRTUALIZATION_MODE_NONE(NVML_GPU_VIRTUALIZATION_MODE_PASSTHROUGH!NVML_GPU_VIRTUALIZATION_MODE_VGPU&NVML_GPU_VIRTUALIZATION_MODE_HOST_VGPU&NVML_GPU_VIRTUALIZATION_MODE_HOST_VSGAr  Lockr  r  r  r  _nvmlVgpuVmIdType_tNVML_VGPU_VM_ID_DOMAIN_IDNVML_VGPU_VM_ID_UUIDr  &NVML_GRID_LICENSE_FEATURE_CODE_UNKNOWN#NVML_GRID_LICENSE_FEATURE_CODE_VGPU)NVML_GRID_LICENSE_FEATURE_CODE_NVIDIA_RTX+NVML_GRID_LICENSE_FEATURE_CODE_VWORKSTATION%NVML_GRID_LICENSE_FEATURE_CODE_GAMING&NVML_GRID_LICENSE_FEATURE_CODE_COMPUTEr  _nvmlGridLicenseExpiryStatus_t&NVML_GRID_LICENSE_EXPIRY_NOT_AVAILABLE NVML_GRID_LICENSE_EXPIRY_INVALIDNVML_GRID_LICENSE_EXPIRY_VALID'NVML_GRID_LICENSE_EXPIRY_NOT_APPLICABLE"NVML_GRID_LICENSE_EXPIRY_PERMANENTr  NVML_VGPU_CAP_NVLINK_P2PNVML_VGPU_CAP_GPUDIRECT"NVML_VGPU_CAP_MULTI_VGPU_EXCLUSIVENVML_VGPU_CAP_EXCLUSIVE_TYPENVML_VGPU_CAP_EXCLUSIVE_SIZENVML_VGPU_CAP_COUNTr  -NVML_VGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPU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_COUNTr  1NVML_VGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED/NVML_VGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZEDr  NVML_VGPU_VM_COMPATIBILITY_NONENVML_VGPU_VM_COMPATIBILITY_COLD$NVML_VGPU_VM_COMPATIBILITY_HIBERNATE NVML_VGPU_VM_COMPATIBILITY_SLEEPNVML_VGPU_VM_COMPATIBILITY_LIVEr   "NVML_VGPU_COMPATIBILITY_LIMIT_NONE)NVML_VGPU_COMPATIBILITY_LIMIT_HOST_DRIVER*NVML_VGPU_COMPATIBILITY_LIMIT_GUEST_DRIVER!NVML_VGPU_COMPATIBILITY_LIMIT_GPU#NVML_VGPU_COMPATIBILITY_LIMIT_OTHERr$  NVML_HOST_VGPU_MODE_NON_SRIOVNVML_HOST_VGPU_MODE_SRIOV"NVML_GSP_FIRMWARE_VERSION_BUF_SIZEr   r   r   r   r  r   r  r	  objectr
  r  r  	Structurer  POINTERr  r!  r4  r<  rA  rI  rM  rP  r  rQ  r`  rd  ri  ro  rw  nvmlMemory_v2r|  r  r  r  r  r  r  r  r  Unionr  r  r  r  r  r  r  NVML_GRID_LICENSE_STATE_UNKNOWN%NVML_GRID_LICENSE_STATE_UNINITIALIZED/NVML_GRID_LICENSE_STATE_UNLICENSED_UNRESTRICTED-NVML_GRID_LICENSE_STATE_UNLICENSED_RESTRICTED"NVML_GRID_LICENSE_STATE_UNLICENSED NVML_GRID_LICENSE_STATE_LICENSEDr  r  r  r  r  r  r  r  r  r  r  r  r  r  nvmlEventTypeSingleBitEccErrornvmlEventTypeDoubleBitEccErrornvmlEventTypePStatenvmlEventTypeXidCriticalErrornvmlEventTypeClocknvmlEventTypePowerSourceChangenvmlEventMigConfigChangenvmlEventTypeNonenvmlEventTypeAllnvmlClocksThrottleReasonGpuIdle1nvmlClocksThrottleReasonApplicationsClocksSetting)nvmlClocksThrottleReasonUserDefinedClocks"nvmlClocksThrottleReasonSwPowerCap"nvmlClocksThrottleReasonHwSlowdown!nvmlClocksThrottleReasonSyncBoost)nvmlClocksThrottleReasonSwThermalSlowdown)nvmlClocksThrottleReasonHwThermalSlowdown,nvmlClocksThrottleReasonHwPowerBrakeSlowdown+nvmlClocksThrottleReasonDisplayClockSettingnvmlClocksThrottleReasonNonenvmlClocksThrottleReasonAllr  r  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_SHARErF  r8  r"  r&  r(  r+  r1  r9  r:  r<  r=  rH  rL  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_COUNTrR  rU  rc  r`  rf  ri  rv  %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_COUNTrj  rk  rs  rr  rt  r  NVML_GPU_UTILIZATION_DOMAIN_GPUNVML_GPU_UTILIZATION_DOMAIN_FBNVML_GPU_UTILIZATION_DOMAIN_VIDNVML_GPU_UTILIZATION_DOMAIN_BUSrx  r}  r  NVML_THERMAL_TARGET_NONENVML_THERMAL_TARGET_GPUNVML_THERMAL_TARGET_MEMORY NVML_THERMAL_TARGET_POWER_SUPPLYNVML_THERMAL_TARGET_BOARDNVML_THERMAL_TARGET_VCD_BOARDNVML_THERMAL_TARGET_VCD_INLETNVML_THERMAL_TARGET_VCD_OUTLETNVML_THERMAL_TARGET_ALLNVML_THERMAL_TARGET_UNKNOWNNVML_THERMAL_CONTROLLER_NONE$NVML_THERMAL_CONTROLLER_GPU_INTERNALNVML_THERMAL_CONTROLLER_ADM1032NVML_THERMAL_CONTROLLER_ADT7461NVML_THERMAL_CONTROLLER_MAX6649NVML_THERMAL_CONTROLLER_MAX1617NVML_THERMAL_CONTROLLER_LM99NVML_THERMAL_CONTROLLER_LM89NVML_THERMAL_CONTROLLER_LM64NVML_THERMAL_CONTROLLER_G781NVML_THERMAL_CONTROLLER_ADT7473!NVML_THERMAL_CONTROLLER_SBMAX6649 NVML_THERMAL_CONTROLLER_VBIOSEVTNVML_THERMAL_CONTROLLER_OS'NVML_THERMAL_CONTROLLER_NVSYSCON_CANOAS%NVML_THERMAL_CONTROLLER_NVSYSCON_E551 NVML_THERMAL_CONTROLLER_MAX6649R NVML_THERMAL_CONTROLLER_ADT7473SNVML_THERMAL_CONTROLLER_UNKNOWNr  r  r  rD  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r5  r6  r7  r9  r;  r<  rC  rE  rH  rL  rM  rP  rS  rW  rZ  r]  r_  rb  rd  ri  rj  rl  rp  rt  ru  rv  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  r   r  r  r  r  r  r  r
  r  r  r  r  r   r$  r&  r(  r2  r7  r:  r=  r?  rD  rH  rJ  rK  rP  rT  rX  rZ  r^  r`  rb  rd  re  rk  rn  rp  rr  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r#  r&  r(  r,  r+  r.  r3  r4  r7  r8  r9  r;  r<  r>  r=  r@  rA  rB  rE  rF  rH  rJ  rK  rL  rM  rO  rQ  rS  rT  rV  rW  rY  rZ  r_  ra  rd  rg  ri  rk  rn  rp  rs  rv  rw  ry  rz  r}  r  r  r  r  r  r  r  NVML_GPM_METRIC_GRAPHICS_UTILNVML_GPM_METRIC_SM_UTILNVML_GPM_METRIC_SM_OCCUPANCYNVML_GPM_METRIC_INTEGER_UTILNVML_GPM_METRIC_ANY_TENSOR_UTIL NVML_GPM_METRIC_DFMA_TENSOR_UTIL NVML_GPM_METRIC_HMMA_TENSOR_UTIL NVML_GPM_METRIC_IMMA_TENSOR_UTILNVML_GPM_METRIC_DRAM_BW_UTILNVML_GPM_METRIC_FP64_UTILNVML_GPM_METRIC_FP32_UTILNVML_GPM_METRIC_FP16_UTILNVML_GPM_METRIC_PCIE_TX_PER_SECNVML_GPM_METRIC_PCIE_RX_PER_SECNVML_GPM_METRIC_NVDEC_0_UTILNVML_GPM_METRIC_NVDEC_1_UTILNVML_GPM_METRIC_NVDEC_2_UTILNVML_GPM_METRIC_NVDEC_3_UTILNVML_GPM_METRIC_NVDEC_4_UTILNVML_GPM_METRIC_NVDEC_5_UTILNVML_GPM_METRIC_NVDEC_6_UTILNVML_GPM_METRIC_NVDEC_7_UTILNVML_GPM_METRIC_NVJPG_0_UTILNVML_GPM_METRIC_NVJPG_1_UTILNVML_GPM_METRIC_NVJPG_2_UTILNVML_GPM_METRIC_NVJPG_3_UTILNVML_GPM_METRIC_NVJPG_4_UTILNVML_GPM_METRIC_NVJPG_5_UTILNVML_GPM_METRIC_NVJPG_6_UTILNVML_GPM_METRIC_NVJPG_7_UTILNVML_GPM_METRIC_NVOFA_0_UTIL'NVML_GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC'NVML_GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L0_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L0_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L1_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L1_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L2_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L2_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L3_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L3_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L4_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L4_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L5_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L5_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L6_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L6_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L7_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L7_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L8_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L8_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L9_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L9_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L10_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L10_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L11_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L11_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L12_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L12_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L13_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L13_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L14_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L14_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L15_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L15_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L16_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L16_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L17_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L17_TX_PER_SECr  r  r  r  r  r  NVML_GPM_METRICS_GET_VERSIONr  r  r  r  r  r  r  r  1NVML_COUNTER_COLLECTION_UNIT_STREAM_STATE_DISABLE0NVML_COUNTER_COLLECTION_UNIT_STREAM_STATE_ENABLEr  r  r  r  r  #NVML_GPU_FABRIC_STATE_NOT_SUPPORTED!NVML_GPU_FABRIC_STATE_NOT_STARTED!NVML_GPU_FABRIC_STATE_IN_PROGRESSNVML_GPU_FABRIC_STATE_COMPLETEDr  r  r   r   r   r   <module>   sr	  

-





4

	


		



"

									"""


				
		