o
    bi                    @   s  d dl T 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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Z-dZ.dZ/eZ0d Z1dZ2dZ3dZ4dZ5dZ6dZ7d	Z8d
Z9dZ:dZ;e;Z<eZ=d Z>dZ?dZ@dZAdZBdZCeZDd ZEdZFdZGdZHdZIeZJd ZKdZLdZMdZNdZOdZPd	ZQeZRdZSdZTdZUdZVdZWdZXdZYdZZdZ[eZ\d Z]dZ^dZ_dZ`dZaeZbd ZcdZddZedZfeZgd ZhdZidZjeZkd ZldZmdZneZod ZpdZqdZreZsd ZtdZudZvdZwdZxeZyd ZzdZ{dZ|dZ}dZ~eZd 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 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ZeZd ZdZdZd!Zd"ZeZd#ZeZd$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eZd ZdZdZdZdZeZd&Zd'Zd(Z eZ!d Z"dZ#d Z$dZ%dZ&dZ'dZ(dZ)d)Z*d*Z+d)Z,d)Z-dZ.d!Z/d)Z0dZ1dZ2dZ3dZ4dZ5dZ6e7ed+ Z8d+Z9d,Z:d-Z;e<d.Z=ed.Z>	 dZ?dZ@dZAdZBdZCd	ZDd
ZEdZFdZGdZHdZIdZJdZKdZLdZMdZNdZOdZPdZQdZRdZSdZTdZUdZVd/ZWd0ZXd1ZYd2ZZd3Z[d!Z\d4Z]dZ^d5Z_d6Z`d7Zad8Zbd9Zcd:Zdd;Zed"Zfd<Zgd=Zhd>Zid?Zjd@ZkdAZldBZmdCZndDZod#ZpdEZqdFZrdGZsdHZtdIZudJZvdKZwdLZxdMZydNZzdOZ{dPZ|dQZ}dZ~dRZdS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Zdae Zd aeZeZeZd ZdZeZd ZdZdZdZdZdZeZd$ZdZdZdZdZeZd ZdZeZd 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G dd deZdd Zdd Ze  dd Ze Zdd ZG dd deZdd ZddĄ ZG ddƄ dƐeZeeZG ddȄ dȐeZG ddʄ dʐeZG dd̄ d̐eZ G dd΄ dΐeZ!G ddЄ dАeZ"G dd҄ dҐeZ#G ddԄ dԐeZ$ee$Z%G ddք d֐eZ&G dd؄ dؐeZ'G ddڄ dڐeZ(G dd܄ dܐeZ)G ddބ dސeZ*G dd deZ+G dd deZ,G dd deZ-G dd deZ.G dd deZ/G dd deZ0G dd deZ1G dd deZ2G dd deZ3G dd de4Z5G dd deZ6G dd deZ7G dd deZ8G dd deZ9G dd deZ:G dd deZ;G dd  d eZ<G dd deZ=G dd deZ>G dd deZ?G dd deZ@G d	d
 d
eZAG dd deZBG dd deZCG dd deZDG dd deZEG dd deZFG dd deZGG dd deZHeeHZIdZJdZKdZLdZMdZNdZOd+ZPd ZQeQeJB eKB eLB eNB eOB eMB ePB ZRdZSdZTeTZUdZVdZWdZXdZYdZZdZ[d+Z\d Z]e]eSB eTB eVB eWB eXB eYB eZB e[B e\B Z^G dd deZ_G dd deZ`G dd deZaG dd  d eZbG d!d" d"eZcG d#d$ d$eZdG d%d& d&eZeG d'd( d(eZfd ZgdZhd ZidZjdZkdZldZmdZnd	Zod
ZpdZqG d)d* d*eZrG d+d, d,eZsG d-d. d.eZtG d/d0 d0eZueeuZvd ZwdZxdZydZzdZ{dZ|d	Z}d
Z~d ZdZG d1d2 d2eZG d3d4 d4eZG d5d6 d6eZG d7d8 d8eZeeZG d9d: d:eZG d;d< d<eZd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz 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ϐ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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/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ Z	dAdB Z
dCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Z dodp Z!dqdr Z"dsdt Z#dudv Z$dwdx Z%dydz 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 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Ԅ 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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 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/d0 Zd1d2 Zd3d4 ZdS (5      )*)find_libraryN                        	   
                            @                              i     (   2   )r   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   {   |   }   ~                                                                                                         )r   )r   )r   )r   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   Y/home/ubuntu/.local/lib/python3.10/site-packages/ray/_private/thirdparty/pynvml/pynvml.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   new  s   z9_extractNVMLErrorsAsClasses.<locals>.gen_new.<locals>.newr   )r   r   r   r   r   gen_new  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   _nvmlGetFunctionPointer  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        
znvmlFriendlyObject.__str__N)r   r   r   r  r   r   r   r   r   r     s    r   c                 C   s6   i }| j D ]}|d }t| |}|||< qt|}|S Nr   )_fields_r   r   )structdr   keyr   r   r   r   r   nvmlStructToFriendlyObject!  s   


r
  c                 C   s.   |j D ]}|d }| j| }t||| q|S r  )r  r  r   )r   modelr   r	  r   r   r   r   nvmlFriendlyObjectToStruct+  s
   

r  c                   @      e Zd ZdS )struct_c_nvmlUnit_tNr   r   r   r   r   r   r   r  3      r  c                   @   s   e Zd ZdZi Zdd Zd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   K  s   




z_PrintableStructure.__str__N)r   r   r   __doc__r  r   r   r   r   r   r  7  s    r  c                   @   s8   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   r  X  s    



r  c                   @       e Zd Zded fdefgZdS )c_nvmlLedState_tcauser%   colorN)r   r   r   r   _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   r   c_uintr  r   r   r   r   r'  f  s    
r'  c                   @      e Zd ZdefdefgZdS )c_nvmlUnitFanInfo_tspeedr(  N)r   r   r   r,  _nvmlFanState_tr  r   r   r   r   r.  n      r.  c                   @   r!  )c_nvmlUnitFanSpeeds_tfansr   countN)r   r   r   r.  r,  r  r   r   r   r   r2  t  r&  r2  c                   @   r  )struct_c_nvmlDevice_tNr  r   r   r   r   r5  {  r  r5  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r8  r9  r:  r;  r<  N)r   r   r   r   %NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZEr,  r  r  r   r   r   r   r6    s$    

r6  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busIdLegacyr8  r9  r:  r;  r<  r7  rB  rA  rC  N)	r   r   r   r   rD  r,  "NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZEr  r  r   r   r   r   rE    s    


rE  c                   @   s    e Zd Zdefdee fgZdS )c_nvmlExcludedDeviceInfo_tpciuuidN)r   r   r   rE  r   NVML_DEVICE_UUID_BUFFER_SIZEr  r   r   r   r   rH        
rH  c                   @   r-  )nvmlNvLinkUtilizationControl_tunits	pktfilterN)r   r   r   "_nvmlNvLinkUtilizationCountUnits_t%_nvmlNvLinkUtilizationCountPktTypes_tr  r   r   r   r   rM    r1  rM  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   rS        rS  c                   @   rR  )c_nvmlBAR1Memory_t	bar1Totalbar1Freebar1Usedr  rW  NrX  r   r   r   r   r[    rZ  r[  c                   @      e Zd ZdefdefgZdS )nvmlClkMonFaultInfo_tclkApiDomainclkDomainFaultMaskN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gZdS )nvmlClkMonStatus_tbGlobalStatusclkMonListSize
clkMonListN)r   r   r   r,  r`  r  r   r   r   r   re    
    re  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computeInstanceIdrW  N)r   r   r   r,  rY  r  r  r   r   r   r   rj    s    rj  c                   @   r-  )c_nvmlBridgeChipInfo_tr   	fwVersionN)r   r   r   _nvmlBridgeChipType_tr,  r  r   r   r   r   ro    r1  ro  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   r,  ro  r  r   r   r   r   rs    rL  rs  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   rY  r  r   r   r   r   rv    s    rv  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   r,  r  r  r   r   r   r   r|    s
    r|  c                   @   rr  )c_nvmlHwbcEntry_thwbcIdr  r   N)r   r   r   r,  r   r  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gZdS )c_nvmlValue_tdValuiValulValullValsllValN)	r   r   r   c_doubler,  c_ulongrY  
c_longlongr  r   r   r   r   r    s    r  c                   @   r-  )c_nvmlSample_t	timeStampsampleValueN)r   r   r   rY  r  r  r   r   r   r   r    r1  r  c                   @   r_  )c_nvmlViolationTime_treferenceTimeviolationTimeNr{  r   r   r   r   r    r1  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_trY  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  rk  processNamer  r  r  r  r  N)	r   r   r   r  r,  r   NVML_VGPU_NAME_BUFFER_SIZErY  r  r   r   r   r   r  5  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  A  r  r  c                   @   r-  )c_nvmlVgpuLicenseInfo_t
isLicensedlicenseExpiryN)r   r   r   r  r  r  r   r   r   r   r  L  r1  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	sessionIdrk  r  	codecTypehResolutionvResolution
averageFpsencodeLatencyNr   r   r   r,  r  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_trk  r  r  r  r  r  Nr   r   r   r,  rY  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  h  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_tr,  r   NVML_GRID_LICENSE_BUFFER_SIZEr  r  r   r   r   r   r  s  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_intr,  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  r,  r   r  r  r   r   r   r   r    s    

r  c                   @   r  )!c_nvmlGridLicensableFeatures_v3_tr  r  r  N)r   r   r   r  r,  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  r,  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  r,  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_tr:  	eventType	eventDatarm  rn  rB  N)r   r   r   c_nvmlDevice_trY  r,  r  r  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defdefded fgZd	S )
c_nvmlAccountingStats_tgpuUtilizationmemoryUtilizationmaxMemoryUsagetime	startTime	isRunningreservedr   Nr  r   r   r   r   r    s    
r  c                   @   r_  )c_nvmlVgpuVersion_t
minVersion
maxVersionNrc  r   r   r   r   r    rd  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_tversionrevisionguestInfoStateguestDriverVersionhostDriverVersionr  r	   vgpuVirtualizationCapsguestVgpuVersionopaqueDataSize
opaqueDataN)	r   r   r   r,  _nvmlVgpuGuestInfoState_tr   &NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE#NVML_VGPU_METADATA_OPAQUE_DATA_SIZEr  r   r   r   r   r    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_tr  r  r  pgpuVirtualizationCapsr  r   hostSupportedVgpuRanger  r  N)	r   r   r   r,  r   r  r  (NVML_VGPU_PGPU_METADATA_OPAQUE_DATA_SIZEr  r   r   r   r   r  	  s    


r  c                   @   r-  )c_nvmlVgpuPgpuCompatibility_tvgpuVmCompatibilitycompatibilityLimitCodeN)r   r   r   _nvmlVgpuVmCompatibility_t%_nvmlVgpuPgpuCompatibilityLimitCode_tr  r   r   r   r   r    rd  r  c                   @   s"   e Zd ZdefdefdefgZdS )c_nvmlFBCStats_tsessionsCount
averageFPSaverageLatencyNrc  r   r   r   r   r    ri  r  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  rk  r  displayOrdinalsessionTypesessionFlagshMaxResolutionvMaxResolutionr  r  r   r  Nr  r   r   r   r   r    s    r  c                   @   r_  )c_nvmlGpuInstancePlacement_tstartsizeNrc  r   r   r   r   r  <  rd  r  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_tr  isP2pSupported
sliceCountinstanceCountmultiprocessorCountcopyEngineCountdecoderCountencoderCount	jpegCountofaCountmemorySizeMBNr  r   r   r   r   r  A  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_tr:  r  	profileId	placementN)r   r   r   r  r,  r  r  r   r   r   r   r  O  s    r  c                   @   r  )struct_c_nvmlGpuInstance_tNr  r   r   r   r   r  V  r  r  c                   @   r_  ) c_nvmlComputeInstancePlacement_tr	  r
  Nrc  r   r   r   r   r  f  rd  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_nvmlComputeInstanceProfileInfo_tr  r  r  r  sharedCopyEngineCountsharedDecoderCountsharedEncoderCountsharedJpegCountsharedOfaCountNrc  r   r   r   r   r  k      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_nvmlComputeInstanceInfo_tr:  gpuInstancer  r  r  N)r   r   r   r  c_nvmlGpuInstance_tr,  r  r  r   r   r   r   r"  w      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_nvmlDeviceAttributesr  r  r  r  r  r   gpuInstanceSliceCountcomputeInstanceSliceCountr  Nr  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gZdS ) c_nvmlRowRemapperHistogramValuesmaxhighpartiallownoneNrc  r   r   r   r   r*    r%  r*  c                 C   s:   t   td}|| }t| t  td7 at  d S )NnvmlInitWithFlagsr   )_LoadNvmlLibraryr   r   r   r   _nvmlLib_refcountr   )flagsfnr   r   r   r   r0    s   r0  c                   C   s   t d d S r  )r0  r   r   r   r   nvmlInit  s   r5  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   r1    s4   &
r1  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   r2  r   )r4  r   r   r   r   r@    s   r@  c                 C   s   t d}t|_|| }|S )Nr   )r   c_char_prestype)r  r4  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   r,  r   r   	c_versionr4  r   r   r   r   rD    
   rD  c                  C   (   t  } td}|t| }t| | jS )NnvmlSystemGetCudaDriverVersionr  r   byrefr   r   c_cuda_versionr4  r   r   r   r   rK    
   rK  c                  C   rJ  )N!nvmlSystemGetCudaDriverVersion_v2rL  rN  r   r   r   rQ    rP  rQ  c                 C   s2   t d}td}|t| |td}t| |jS )Ni   nvmlSystemGetProcessName)rE  r   r,  r   r   )rk  c_namer4  r   r   r   r   rR    s
   rR  c                  C   rC  )NnvmlSystemGetDriverVersion)rE  r  r   r,  r   r   rG  r   r   r   rT    rI  rT  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)	r,  r   rM  r   r   r   r   r  r   )c_counthicsr4  r   	hic_arrayr   r   r   rU    s   

rU  c                  C   rJ  )NnvmlUnitGetCountr,  r   rM  r   r   rV  r4  r   r   r   r   rY  $  rP  rY  c                 C   0   t | }t }td}||t|}t| |S )NnvmlUnitGetHandleByIndex)r,  c_nvmlUnit_tr   rM  r   )indexc_indexunitr4  r   r   r   r   r]  +     r]  c                 C   (   t  }td}|| t|}t| |S )NnvmlUnitGetUnitInfo)r  r   rM  r   ra  c_infor4  r   r   r   r   rd  3  
   rd  c                 C   rc  )NnvmlUnitGetLedState)r"  r   rM  r   )ra  c_stater4  r   r   r   r   rh  :  rg  rh  c                 C   rc  )NnvmlUnitGetPsuInfo)r'  r   rM  r   re  r   r   r   rj  A  rg  rj  c                 C   s0   t  }td}|| t |t|}t| |jS )NnvmlUnitGetTemperaturerZ  )ra  r   c_tempr4  r   r   r   r   rk  H  
   rk  c                 C   rc  )NnvmlUnitGetFanSpeedInfo)r2  r   rM  r   )ra  c_speedsr4  r   r   r   r   rn  O  rg  rn  c                 C   s:   t d}td}|| t|d }|tkrt}t| |jS )Nr   nvmlUnitGetDevices)r,  r   rM  r   r   r   r   )ra  rV  r4  r   r   r   r   nvmlUnitGetDeviceCountW  s   rq  c                 C   s@   t t| }t|j }| }td}|| t||}t| |S )Nrp  )r,  rq  r  r   r   rM  r   )ra  rV  device_array	c_devicesr4  r   r   r   r   rp  a  s   
rp  c                  C   rJ  )NnvmlDeviceGetCount_v2rZ  r[  r   r   r   nvmlDeviceGetCountk  rP  ru  c                 C   r\  )NnvmlDeviceGetHandleByIndex_v2r,  r  r   rM  r   )r_  r`  r:  r4  r   r   r   r   nvmlDeviceGetHandleByIndexr  rb  rx  c                 C   r\  )NnvmlDeviceGetHandleBySerialrA  r  r   rM  r   )r  c_serialr:  r4  r   r   r   r   ry  z  rb  ry  c                 C   r\  )NnvmlDeviceGetHandleByUUIDrz  )rJ  c_uuidr:  r4  r   r   r   r   r|    rb  r|  c                 C   r\  )N nvmlDeviceGetHandleByPciBusId_v2rz  )pciBusIdc_busIdr:  r4  r   r   r   r   nvmlDeviceGetHandleByPciBusId  rb  r  c                 C   .   t t}td}|| |tt}t| |jS )NnvmlDeviceGetName)rE  NVML_DEVICE_NAME_BUFFER_SIZEr   r,  r   r   )handlerS  r4  r   r   r   r   r    
   r  c                 C   *   t  }td}|| t|}t| |jS )NnvmlDeviceGetBoardIdrZ  )r  c_idr4  r   r   r   r   r    
   r  c                 C   r  )NnvmlDeviceGetMultiGpuBoardrZ  )r  
c_multiGpur4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetBrand)_nvmlBrandType_tr   rM  r   r   )r  c_typer4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetBoardPartNumber)rE  #NVML_DEVICE_PART_NUMBER_BUFFER_SIZEr   r,  r   r   )r  c_part_numberr4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetSerial)rE  NVML_DEVICE_SERIAL_BUFFER_SIZEr   r,  r   r   )r  r{  r4  r   r   r   r   r    r  r  c                 C   8   t | }| }td}|| |t|t|}t| |S )NnvmlDeviceGetMemoryAffinityrY  r   rM  _nvmlAffinityScope_tr   )r  nodeSetSizescopeaffinity_array
c_affinityr4  r   r   r   r   r       r  c                 C   r  )N#nvmlDeviceGetCpuAffinityWithinScoper  )r  
cpuSetSizer  r  r  r4  r   r   r   r   r    r  r  c                 C   s2   t | }| }td}|| |t|}t| |S )NnvmlDeviceGetCpuAffinity)rY  r   rM  r   )r  r  r  r  r4  r   r   r   r   r       r  c                 C      t d}|| }t| d S )NnvmlDeviceSetCpuAffinityr   r   r  r4  r   r   r   r   r       r  c                 C   r  )NnvmlDeviceClearCpuAffinityr  r  r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetMinorNumberrZ  )r  c_minor_numberr4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetUUID)rE  NVML_DEVICE_UUID_V2_BUFFER_SIZEr   r,  r   r   )r  r}  r4  r   r   r   r   r    r  r  c                 C   s4   t t}td}|| t||tt}t| |jS )NnvmlDeviceGetInforomVersion)rE  'NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZEr   _nvmlInforomObject_tr,  r   r   )r  infoRomObjectrH  r4  r   r   r   r   r    s   
r  c                 C   r  )N nvmlDeviceGetInforomImageVersion)rE  r  r   r,  r   r   r  rH  r4  r   r   r   r   r    r  r  c                 C   r  )N)nvmlDeviceGetInforomConfigurationChecksumrZ  )r  
c_checksumr4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceValidateInforomr  r  r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetDisplayMode_nvmlEnableState_tr   rM  r   r   r  c_moder4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetDisplayActiver  r  r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetPersistenceModer  )r  ri  r4  r   r   r   r   r    r  r  c                 C   rc  )NnvmlDeviceGetPciInfo_v3rE  r   rM  r   )r  rf  r4  r   r   r   r   r  #  rg  r  c                 C      t | S r   )r  r  r   r   r   nvmlDeviceGetPciInfo*     r  c                 C   0   t  }td}|| t|t|}t| |jS )NnvmlDeviceGetClockInfor,  r   _nvmlClockType_trM  r   r   r  r   c_clockr4  r   r   r   r   r  -  rm  r  c                 C   r  )NnvmlDeviceGetMaxClockInfor  r  r   r   r   r  5  rm  r  c                 C   r  )NnvmlDeviceGetApplicationsClockr  r  r   r   r   r  =  rm  r  c                 C   r  )N"nvmlDeviceGetMaxCustomerBoostClockr  r  r   r   r   r  D  rm  r  c                 C   6   t  }td}|| t|t|t|}t| |jS )NnvmlDeviceGetClock)r,  r   r  _nvmlClockId_trM  r   r   )r  r   r  r  r4  r   r   r   r   r  K  s
   r  c                 C   r  )N%nvmlDeviceGetDefaultApplicationsClockr  r  r   r   r   r  S  rm  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
r,  r   rM  r   r   r   r   ranger  r   )r  rV  r4  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  memoryClockMHzrV  r4  r   r  r  r  r  r   r   r   r  w  s   
r  c                 C   r  )NnvmlDeviceGetFanSpeedrZ  )r  c_speedr4  r   r   r   r   r    r  r  c                 C   ,   t  }td}|| |t|}t| |jS )NnvmlDeviceGetFanSpeed_v2rZ  )r  fanr  r4  r   r   r   r   r    
   r  c                 C   r  )NnvmlDeviceGetTemperature)r,  r   _nvmlTemperatureSensors_trM  r   r   )r  sensorrl  r4  r   r   r   r   r    rm  r  c                 C   r  )N!nvmlDeviceGetTemperatureThreshold)r,  r   _nvmlTemperatureThresholds_trM  r   r   r  	thresholdrl  r4  r   r   r   r   r    rm  r  c                 C   s.   t  }td}|| t|t|}t| d S )N!nvmlDeviceSetTemperatureThreshold)r,  r   r  rM  r   r  r   r   r   r    s
   r  c                 C   r  )NnvmlDeviceGetPowerState_nvmlPstates_tr   rM  r   r   r  c_pstater4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetPerformanceStater  r  r   r   r   r    r  r  c                 C   r  )N nvmlDeviceGetPowerManagementModer  )r  
c_pcapModer4  r   r   r   r   r    r  r  c                 C   r  )N!nvmlDeviceGetPowerManagementLimitrZ  r  c_limitr4  r   r   r   r   r    r  r  c                 C   <   t  }t  }td}|| t|t|}t| |j|jgS )N,nvmlDeviceGetPowerManagementLimitConstraintsrZ  )r  
c_minLimit
c_maxLimitr4  r   r   r   r   r       r  c                 C   r  )N(nvmlDeviceGetPowerManagementDefaultLimitrZ  r  r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetEnforcedPowerLimitrZ  r  r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetPowerUsagerZ  )r  c_wattsr4  r   r   r   r   r    r  r  c                 C   r  )N#nvmlDeviceGetTotalEnergyConsumption)c_uint64r   rM  r   r   )r  c_millijoulesr4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetGpuOperationMode)_nvmlGpuOperationMode_tr   rM  r   r   r  c_currStatec_pendingStater4  r   r   r   r   r    r  r  c                 C      t | d S r  r  r  r   r   r   $nvmlDeviceGetCurrentGpuOperationMode  r   r  c                 C   r  Nr   r  r  r   r   r   $nvmlDeviceGetPendingGpuOperationMode  r   r  c                 C   rc  )NnvmlDeviceGetMemoryInfo)rS  r   rM  r   )r  c_memoryr4  r   r   r   r   r    rg  r  c                 C   rc  )NnvmlDeviceGetBAR1MemoryInfo)r[  r   rM  r   )r  c_bar1_memoryr4  r   r   r   r   r	    rg  r	  c                 C   r  )NnvmlDeviceGetComputeMode)_nvmlComputeMode_tr   rM  r   r   r  r   r   r   r    r  r  c                 C   s<   t  }t  }td}|| t|t|}t| |j|jfS )N"nvmlDeviceGetCudaComputeCapabilityrL  )r  c_majorc_minorr4  r   r   r   r   r     r  r  c                 C   r  )NnvmlDeviceGetEccModer  r  r   r   r   r  (  r  r  c                 C   r  r  r  r  r   r   r   nvmlDeviceGetCurrentEccMode1  r   r  c                 C   r  r  r  r  r   r   r   nvmlDeviceGetPendingEccMode5  r   r  c                 C   r  )NnvmlDeviceGetTotalEccErrors)rY  r   _nvmlMemoryErrorType_t_nvmlEccCounterType_trM  r   r   )r  	errorTypecounterTyperV  r4  r   r   r   r   r  8  s   
r  c                 C   s4   t  }td}|| t|t|t|}t| |S )NnvmlDeviceGetDetailedEccErrors)rv  r   r  r  rM  r   )r  r  r  c_countsr4  r   r   r   r   r  A  s   
r  c                 C   s<   t  }td}|| t|t|t|t|}t| |jS )NnvmlDeviceGetMemoryErrorCounter)rY  r   r  r  _nvmlMemoryLocation_trM  r   r   )r  r  r  locationTyperV  r4  r   r   r   r   r  J  s   r  c                 C   rc  )NnvmlDeviceGetUtilizationRates)r|  r   rM  r   )r  c_utilr4  r   r   r   r   r  U  rg  r  c                 C   r  )NnvmlDeviceGetEncoderUtilizationrZ  r  r  c_samplingPeriodr4  r   r   r   r   r   \  r  r   c                 C   r  )NnvmlDeviceGetDecoderUtilizationrZ  r!  r   r   r   r#  d  r  r#  c                 C   r  )NnvmlDeviceGetPcieReplayCounterrZ  )r  c_replayr4  r   r   r   r   r$  l  r  r$  c                 C   r  )NnvmlDeviceGetDriverModel)_nvmlDriverModel_tr   rM  r   r   )r  c_currModelc_pendingModelr4  r   r   r   r   r&  s  r  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)rE  %NVML_DEVICE_VBIOS_VERSION_BUFFER_SIZEr   r,  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_v2r   r   r,  r   rM  r   r   r   rj  r   r  r
  rl  "NVML_VALUE_NOT_AVAILABLE_ulonglongr  r   	r  rV  r4  r   
proc_arrayc_procsr  r  r   r   r   r   r0    &   
r0  c                 C   r  r   )r0  r  r   r   r   $nvmlDeviceGetComputeRunningProcesses  r  r7  c           	      C   r/  )Nr   (nvmlDeviceGetGraphicsRunningProcesses_v2r   r   r1  r3  r   r   r   r8    r6  r8  c                 C   r  r   )r8  r  r   r   r   %nvmlDeviceGetGraphicsRunningProcesses  r  r9  c                 C   r  r   )*nvmlDeviceGetMPSComputeRunningProcesses_v2r  r   r   r   'nvmlDeviceGetMPSComputeRunningProcesses  r  r;  c           	      C   r/  )Nr   r:  r   r   r1  r3  r   r   r   r:    r6  r:  c                 C   r  )N%nvmlDeviceGetAutoBoostedClocksEnabledr  )r  c_isEnabledc_defaultIsEnabledr4  r   r   r   r   r<    r  r<  c                 C   "   t d}|| t|}t| d S )NnvmlUnitSetLedState)r   r%  r   )ra  r$  r4  r   r   r   r   r@  	     r@  c                 C   r?  )NnvmlDeviceSetPersistenceModer   r  r   r  moder4  r   r   r   r   rB  	  rA  rB  c                 C   r?  )NnvmlDeviceSetComputeMode)r   r  r   rD  r   r   r   rF  	  rA  rF  c                 C   r?  )NnvmlDeviceSetEccModerC  rD  r   r   r   rG  	  rA  rG  c                 C   r?  )NnvmlDeviceClearEccErrorCounts)r   r  r   )r  r  r4  r   r   r   r   rH  	  rA  rH  c                 C   r?  )NnvmlDeviceSetDriverModel)r   r'  r   )r  r  r4  r   r   r   r   rI  #	  rA  rI  c                 C   r?  )N%nvmlDeviceSetAutoBoostedClocksEnabledrC  )r  enabledr4  r   r   r   r   rJ  )	  rA  rJ  c                 C   (   t d}|| t|t|}t| d S )N,nvmlDeviceSetDefaultAutoBoostedClocksEnabled)r   r  r,  r   )r  rK  r3  r4  r   r   r   r   rM  0	     rM  c                 C   (   t d}|| t|t|}t| d S )NnvmlDeviceSetGpuLockedClocksr   r,  r   )r  minGpuClockMHzmaxGpuClockMHzr4  r   r   r   r   rP  7	  rN  rP  c                 C   r  )NnvmlDeviceResetGpuLockedClocksr  r  r   r   r   rT  =	  r  rT  c                 C   rO  )NnvmlDeviceSetMemoryLockedClocksrQ  )r  minMemClockMHzmaxMemClockMHzr4  r   r   r   r   rU  C	  rN  rU  c                 C   r  )N!nvmlDeviceResetMemoryLockedClocksr  r  r   r   r   rX  I	  r  rX  c                 C   s   t d}|| |}|S )NnvmlDeviceGetClkMonStatusr   )r  c_clkMonInfor4  r   r   r   r   rY  O	  s   
rY  c                 C   rO  )NnvmlDeviceSetApplicationsClocksrQ  )r  rW  maxGraphicsClockMHzr4  r   r   r   r   r\  U	  rN  r\  c                 C   r  )N!nvmlDeviceResetApplicationsClocksr  r  r   r   r   r^  \	  r  r^  c                 C   r?  )N!nvmlDeviceSetPowerManagementLimitrQ  )r  limitr4  r   r   r   r   r_  c	  rA  r_  c                 C   r?  )NnvmlDeviceSetGpuOperationMode)r   r  r   rD  r   r   r   ra  j	  rA  ra  c                  C   s&   t d} t }| t|}t| |S )NnvmlEventSetCreate)r   c_nvmlEventSet_trM  r   )r4  eventSetr   r   r   r   rb  q	  s
   rb  c                 C   s$   t d}|| t||}t| d S )NnvmlDeviceRegisterEvents)r   rY  r   )r  
eventTypesrd  r4  r   r   r   r   re  y	  s   re  c                 C   r  )N nvmlDeviceGetSupportedEventTypesrY  r   rM  r   r   )r  c_eventTypesr4  r   r   r   r   rg  	  r  rg  c                 C   s.   t d}t }|| t|t|}t| |S )NnvmlEventSetWait_v2)r   r  rM  r,  r   )rd  	timeoutmsr4  datar   r   r   r   rj  	  s
   rj  c                 C   s
   t | |S r   )rj  )rd  rk  r   r   r   nvmlEventSetWait	  r  rm  c                 C   r  )NnvmlEventSetFreer  )rd  r4  r   r   r   r   rn  	  r  rn  c                 C   s0   t d}t }|| |t|}t| |jdkS )NnvmlDeviceOnSameBoardr   )r   r  rM  r   r   )handle1handle2r4  onSameBoardr   r   r   r   ro  	  s
   
ro  c                 C   *   t d}t }|| t|}t| |jS )N#nvmlDeviceGetCurrPcieLinkGenerationr   r,  rM  r   r   r  r4  genr   r   r   r   rt  	  
   rt  c                 C   rs  )N"nvmlDeviceGetMaxPcieLinkGenerationru  rv  r   r   r   ry  	  rx  ry  c                 C   rs  )NnvmlDeviceGetCurrPcieLinkWidthru  r  r4  widthr   r   r   r   rz  	  rx  rz  c                 C   rs  )NnvmlDeviceGetMaxPcieLinkWidthru  r{  r   r   r   r}  	  rx  r}  c                 C   r  )N+nvmlDeviceGetSupportedClocksThrottleReasonsrh  r  	c_reasonsr4  r   r   r   r   r~  	  r  r~  c                 C   r  )N)nvmlDeviceGetCurrentClocksThrottleReasonsrh  r  r   r   r   r  	  r  r  c                 C   rs  )NnvmlDeviceGetIndexru  )r  r4  r`  r   r   r   r   r  	  rx  r  c                 C   r  )NnvmlDeviceGetAccountingModer  r  r   r   r   r  	  r  r  c                 C   r?  )NnvmlDeviceSetAccountingModerC  rD  r   r   r   r  	  rA  r  c                 C   r  )NnvmlDeviceClearAccountingPidsr  r  r   r   r   r  	  r  r  c                 C   s@   t  }td}|| t|t|}t| |jtjkrd |_|S )NnvmlDeviceGetAccountingStats)r  r   r,  rM  r   r  r2  r   )r  rk  statsr4  r   r   r   r   r  	  s   r  c                 C   sP   t t| }t |j  }td}|| t||}t| ttt|d|j S )NnvmlDeviceGetAccountingPidsr   )	r,  !nvmlDeviceGetAccountingBufferSizer   r   rM  r   listmapint)r  r4  pidsr4  r   r   r   r   r  	  s   r  c                 C   .   t  }td}|| t|}t| t|jS )Nr  )r,  r   rM  r   r  r   )r  
bufferSizer4  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_tr,  r   rM  r   r   r   r   rY  r   r  r  r  )r:  sourceFilterc_sourcerV  r4  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   r  r  c_timesr   r   r   4
  s   & z0nvmlDeviceGetRetiredPages_v2.<locals>.<listcomp>)r  r,  r   rM  r   r   r   r   rY  r   r  )r:  r  r  rV  r4  r   r  times_arrayr   r  r   r  
  s   

r  c                 C   r  )N&nvmlDeviceGetRetiredPagesPendingStatus)r  r   rM  r   r  r   )r:  	c_pendingr4  r   r   r   r   r  6
  r  r  c                 C   s4   t  }td}|| t|t|}t| t|jS )NnvmlDeviceGetAPIRestriction)r  r   _nvmlRestrictedAPI_trM  r   r  r   )r:  apiTypec_permissionr4  r   r   r   r   r  =
  s
   
r  c                 C   rL  )NnvmlDeviceSetAPIRestriction)r   r  r  r   )r  r  isRestrictedr4  r   r   r   r   r  D
  rN  r  c                 C   rc  )NnvmlDeviceGetBridgeChipInfo)rs  r   rM  r   )r  bridgeHierarchyr4  r   r   r   r   r  J
  rg  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_trY  r,  r  r   rM  r   r   r   r  r   )r:  sampling_typer  c_sampling_typec_time_stampc_sample_countc_sample_value_typer4  r   sampleArray	c_samplesr   r   r   r  Q
  s   
r  c                 C   2   t |}t }td}|| |t|}t| |S )NnvmlDeviceGetViolationStatus)_nvmlPerfPolicyType_tr  r   rM  r   )r:  perfPolicyTypec_perfPolicy_type
c_violTimer4  r   r   r   r   r  e
  s   r  c                 C   r  )NnvmlDeviceGetPcieThroughput)r,  r   _nvmlPcieUtilCounter_trM  r   r   )r:  counterr  r4  r   r   r   r   r  o
  rm  r  c                 C   sj   t d}td}|| t|d }|tkrt|t|j }| }|| t||}t| t|d|j S )Nr   nvmlSystemGetTopologyGpuSet	r,  r   rM  r   r   r  r   r   r  )	cpuNumberrV  r4  r   rr  rs  r   r   r   r  v
  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  )r:  levelrV  r4  r   rr  rs  r   r   r   r  
  s   
r  c                 C   r  )N#nvmlDeviceGetTopologyCommonAncestor)_nvmlGpuTopologyLevel_tr   rM  r   r   )device1device2c_levelr4  r   r   r   r   r  
  r  r  c                 C   s@   t  }t  }td}|| ||t|t|}t| |j|jfS )N%nvmlDeviceGetNvLinkUtilizationCounterrh  )r:  linkr  c_rxcounterc_txcounterr4  r   r   r   r   r  
  s   r  c                 C   s"   t d}|| |||}t| d S )N(nvmlDeviceFreezeNvLinkUtilizationCounterr  )r:  r  r  freezer4  r   r   r   r   r  
  rA  r  c                 C   s    t d}|| ||}t| d S )N'nvmlDeviceResetNvLinkUtilizationCounterr  )r:  r  r  r4  r   r   r   r   r  
     r  c                 C   s(   t d}|| ||t||}t| d S )N%nvmlDeviceSetNvLinkUtilizationControlr   rM  r   )r:  r  r  controlresetr4  r   r   r   r   r  
  rN  r  c                 C   ,   t  }td}|| ||t|}t| |S )N%nvmlDeviceGetNvLinkUtilizationControl)rM  r   rM  r   )r:  r  r  	c_controlr4  r   r   r   r   r  
  
   r  c                 C   .   t  }td}|| ||t|}t| |jS )NnvmlDeviceGetNvLinkCapabilityrZ  )r:  r  
capabilityc_capResultr4  r   r   r   r   r  
  
   r  c                 C   r  )NnvmlDeviceGetNvLinkErrorCounterrh  )r:  r  r  c_resultr4  r   r   r   r   r  
  r  r  c                 C   s   t d}|| |}t| d S )N"nvmlDeviceResetNvLinkErrorCountersr  )r:  r  r4  r   r   r   r   r  
  s   
r  c                 C   *   t  }td}|| |t|}t| |S )N#nvmlDeviceGetNvLinkRemotePciInfo_v2r  )r:  r  c_pcir4  r   r   r   r    nvmlDeviceGetNvLinkRemotePciInfo
  
   r  c                 C   r  )N#nvmlDeviceGetNvLinkRemoteDeviceType)_nvmlNvLinkDeviceType_tr   rM  r   r   )r  r  r  r4  r   r   r   r   r  
  r  r  c                 C   r  )NnvmlDeviceGetNvLinkStaterZ  )r:  r  
c_isActiver4  r   r   r   r   r  
  r  r  c                 C   r  )NnvmlDeviceGetNvLinkVersionrZ  )r:  r  rH  r4  r   r   r   r   r  
  r  r  c                 C   s"   t d}|t| |}t| d S )NnvmlDeviceModifyDrainStater   pointerr   )pciInfonewStater4  r   r   r   r   r  
  rA  r  c                 C   s.   t  }td}|t| t|}t| |jS )NnvmlDeviceQueryDrainState)r,  r   r  rM  r   r   )r  
c_newStater4  r   r   r   r   r  
  r  r  c                 C       t d}|t| }t| d S )NnvmlDeviceRemoveGpur  r  r4  r   r   r   r   r  
  r  r  c                 C   r  )NnvmlDeviceDiscoverGpusr  r  r   r   r   r    r  r  c              	   C   s   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_int32rM  r   )r  fieldIds
values_arrvaluesr4  r  r  r   r   r   r   r    s   r  c                 C   r  )NnvmlDeviceGetVirtualizationModerh  )r  c_virtualization_moder4  r   r   r   r   r    r  r  c                 C      t d}|| |S )NnvmlDeviceSetVirtualizationModerZ  )r  virtualization_moder4  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r,  r   rM  r   r   _nvmlVgpuTypeId_tr   r   r  r  r   r  c_vgpu_countr4  r   vgpu_type_ids_arrayc_vgpu_type_idsvgpusr  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   #nvmlVgpuTypeGetGpuInstanceProfileIdrZ  )
vgpuTypeIdc_profile_idr4  r   r   r   r   r	  W  rI  r	  c                 C   6   t t}tt}td}|| |t|}t| |jS )NnvmlVgpuTypeGetClassrE  r  r,  r   rM  r   r   )r
  c_classc_buffer_sizer4  r   r   r   r   r  ^     r  c                 C   r  )NnvmlVgpuTypeGetNamer  )r
  rS  r  r4  r   r   r   r   r  f  r  r  c                 C   s@   t d}t d}td}|| t|t|}t| |j|jfS )Nr   nvmlVgpuTypeGetDeviceIDrh  )r
  c_device_idc_subsystem_idr4  r   r   r   r   r  n  s   r  c                 C   r  )Nr   nvmlVgpuTypeGetFramebufferSizerh  )r
  	c_fb_sizer4  r   r   r   r   r  v  rI  r  c                 C   r  )Nr   nvmlVgpuTypeGetNumDisplayHeadsrZ  )r
  c_num_headsr4  r   r   r   r   r  }  rI  r  c                 C   sB   t d}t d}td}|| dt|t|}t| |j|jfS )Nr   nvmlVgpuTypeGetResolutionrZ  )r
  c_xdimc_ydimr4  r   r   r   r   r    s   r  c                 C   s2   t t}tt}td}|| ||}t| |jS )NnvmlVgpuTypeGetLicense)rE  r  r,  r   r   r   )r
  	c_licenser  r4  r   r   r   r   r    s   r  c                 C   r  )Nr   nvmlVgpuTypeGetFrameRateLimitrZ  )r
  c_frl_configr4  r   r   r   r   r    rI  r  c                 C   s.   t d}td}|| |t|}t| |jS )Nr   nvmlVgpuTypeGetMaxInstancesrZ  )r  r
  c_max_instancesr4  r   r   r   r   r!    r  r!  c                 C   r  )Nr    nvmlVgpuTypeGetMaxInstancesPerVmrZ  )r
  c_max_instances_per_vmr4  r   r   r   r   r#    rI  r#  c                 C   r  )Nr   nvmlDeviceGetActiveVgpus)r,  r   rM  r   r   r  r   r   r  r  r   )r  r  r4  r   vgpu_instance_arrayc_vgpu_instancesr  r  r   r   r   r%    r  r%  c                 C   sJ   t t}tt}td}td}|| t||t|}t| |j|jfS )Nr   nvmlVgpuInstanceGetVmID)rE  rK  r,  r  r   rM  r   r   )r  c_vm_idr  c_vm_id_typer4  r   r   r   r   r(    s   r(  c                 C   6   t t}tt}td}|| t||}t| |jS )NnvmlVgpuInstanceGetUUIDrE  rK  r,  r   rM  r   r   r  r}  r  r4  r   r   r   r   r,    r  r,  c                 C   r+  )NnvmlVgpuInstanceGetMdevUUIDr-  r.  r   r   r   r/    r  r/  c                 C   r+  )N"nvmlVgpuInstanceGetVmDriverVersion)rE  r  r,  r   rM  r   r   )r  c_driver_versionr  r4  r   r   r   r   r0    r  r0  c                 C   r  )Nr    nvmlVgpuInstanceGetLicenseStatusrZ  )r  c_license_statusr4  r   r   r   r   r2    rI  r2  c                 C   s(   t d}t }|| t|}t| |S )NnvmlVgpuInstanceGetLicenseInfo)r   r  rM  r   )r  r4  c_license_infor   r   r   r   r4    s
   r4  c                 C   r  )Nr   !nvmlVgpuInstanceGetFrameRateLimitrZ  )r  c_frlr4  r   r   r   r   r6    rI  r6  c                 C   r  )NnvmlVgpuInstanceGetEccModer  r  r  r4  r   r   r   r   r8    r  r8  c                 C   r  )Nr   nvmlVgpuInstanceGetTyperZ  )r  c_vgpu_typer4  r   r   r   r   r:     rI  r:  c                 C   r  )Nr   "nvmlVgpuInstanceGetEncoderCapacityrh  )r  c_encoder_capacityr4  r   r   r   r   r<    rI  r<  c                 C   r  )N"nvmlVgpuInstanceSetEncoderCapacityrZ  )r  encoder_capacityr4  r   r   r   r>    r  r>  c                 C   r  )Nr   nvmlVgpuInstanceGetFbUsagerZ  )r  
c_fb_usager4  r   r   r   r   r@    rI  r@  c                 C   r  )Nr    nvmlVgpuInstanceGetGpuInstanceIdrZ  )r  r  r4  r   r   r   r   rB    rI  rB  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)r,  rY  r  r   rM  r   r   r   r  r   r   )	r  r  r  r  r  r4  r   r  r  r   r   r   rC     s   
rC  c                 C   r  )NnvmlDeviceGetP2PStatus)_nvmlGpuP2PStatus_tr   rM  r   r   )r  r  p2pIndexc_p2pstatusr4  r   r   r   r   rD  :  r  rD  c                 C   rc  )N&nvmlDeviceGetGridLicensableFeatures_v4)r  r   rM  r   )r  c_get_grid_licensable_featuresr4  r   r   r   r   rH  A  s
   rH  c                 C   r  r   )rH  r  r   r   r   #nvmlDeviceGetGridLicensableFeaturesI  r  rJ  c                 C   s6   t d}t|}td}|| |t|}t| |jS )Nr   nvmlDeviceGetEncoderCapacity)rY  _nvmlEncoderQueryType_tr   rM  r   r   )r  encoderQueryTyper=  c_encoderQuery_typer4  r   r   r   r   rK  L  s   rK  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)
r,  rY  r   rM  r   r   r   r  r   r   )r  r  r  r  r4  r   r  r  r   r   r   rO  U  s   
rO  c                 C   R   t d}t d}t d}td}|| t|t|t|}t| |j|j|jfS )Nr   nvmlDeviceGetEncoderStatsrh  )r  c_encoderCountc_encodeFpsc_encoderLatencyr4  r   r   r   r   rQ  n     rQ  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
r,  r   rM  r   r   r  r   r  r  r   r  c_session_countr4  r   session_array
c_sessionssessionsr  r   r   r   rW  w     

rW  c                 C   rc  )NnvmlDeviceGetFBCStatsr  r   rM  r   )r  
c_fbcStatsr4  r   r   r   r   r_    rg  r_  c                 C   rV  )Nr   nvmlDeviceGetFBCSessions
r,  r   rM  r   r   r  r   r  r  r   rY  r   r   r   rb    r^  rb  c                 C   rP  )Nr   nvmlVgpuInstanceGetEncoderStatsrh  )r  rR  rS  rT  r4  r   r   r   r   rd    rU  rd  c                 C   rV  )Nr   "nvmlVgpuInstanceGetEncoderSessionsrX  r  rZ  r4  r   r[  r\  r]  r  r   r   r   re    r^  re  c                 C   rc  )NnvmlVgpuInstanceGetFBCStatsr`  )r  ra  r4  r   r   r   r   rg    rg  rg  c                 C   rV  )Nr   nvmlVgpuInstanceGetFBCSessionsrc  rf  r   r   r   rh    r^  rh  c                 C   sr   t d}t|}td}|| d t||}|tkr5|jt }| }|| |t||}t| |d|j S t|)Nr   nvmlDeviceGetProcessUtilization)	r,  rY  r   rM  r   r   r  r   r   )r  r  rV  r  r4  r   r  r  r   r   r   ri    s   
ri  c                 C   Z   t d}t }td}|| t|t|}|tkr)|| t|t|}t| |S t|)NnvmlVgpuInstanceGetMetadatar   )r   r  r,  rM  r   r   r   )r  r4  c_vgpuMetadatac_bufferSizer   r   r   r   rk       rk  c                 C   rj  )NnvmlDeviceGetVgpuMetadatar   )r   r  r,  rM  r   r   r   )r  r4  c_vgpuPgpuMetadatarm  r   r   r   r   ro    rn  ro  c                 C   s2   t d}t }|t| t|t|}t| |S )NnvmlGetVgpuCompatibility)r   r  rM  r   )vgpuMetadatapgpuMetadatar4  c_vgpuPgpuCompatibilityr   r   r   r   rq  (  s
   rq  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   rE  r  r,  rM  r   r   r   r   )r  r4  c_pgpuMetadatarm  r   r   r   r   ru  /  s   
ru  c                 C   s    t d}|t| }t| |S )NnvmlSetVgpuVersionr  )vgpuVersionr4  r   r   r   r   rw  =  r  rw  c                 C   s&   t d}|t| t|}t| |S )NnvmlGetVgpuVersionr  )	supportedr)  r4  r   r   r   r   ry  C  s   ry  c                 C   r  )N!nvmlVgpuInstanceGetAccountingModer  r9  r   r   r   r{  I  r  r{  c                 C   sb   t  }td}|| t|d }|tkr-|jt  }| }|| t|t|}t| ||fS t|)N!nvmlVgpuInstanceGetAccountingPids)r,  r   rM  r   r   r   r   )r  
c_pidCountr4  r   r  
c_pidArrayr   r   r   r|  P  s   
r|  c                 C   r  )N"nvmlVgpuInstanceGetAccountingStats)r  r   rM  r   )r  rk  c_accountingStatsr4  r   r   r   r   r  ]  r  r  c                 C      t d}|| }t| |S )N#nvmlVgpuInstanceClearAccountingPidsr  )r  r4  r   r   r   r   r  d  r  r  c                  C   rJ  )NnvmlGetExcludedDeviceCountrZ  r[  r   r   r   r  j  rP  r  c                 C   r\  )N nvmlGetExcludedDeviceInfoByIndex)r,  rH  r   rM  r   )r_  r`  infor4  r   r   r   r   r  q  rb  r  c                 C   r  )NnvmlDeviceGetHostVgpuMode)_nvmlHostVgpuMode_tr   rM  r   r   )r  c_host_vgpu_moder4  r   r   r   r   r  y  r  r  c                 C   r  )NnvmlDeviceSetMigModerZ  )r:  rE  c_activationStatusr4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetMigModerZ  )r:  c_currentModec_pendingModer4  r   r   r   r   r    r  r  c                 C   r  )N#nvmlDeviceGetGpuInstanceProfileInfo)r  r   rM  r   )r:  profilerf  r4  r   r   r   r   r    r  r  c                 C   r  )N)nvmlDeviceGetGpuInstanceRemainingCapacityrZ  )r:  r  rV  r4  r   r   r   r   r    r  r  c                 C   "   t d}|| |||}t| |S )N-nvmlDeviceGetGpuInstancePossiblePlacements_v2r  )r:  r  placementsRefcountRefr4  r   r   r   r   *nvmlDeviceGetGpuInstancePossiblePlacements  rA  r  c                 C   r  )NnvmlDeviceCreateGpuInstancer$  r   rM  r   )r:  r  
c_instancer4  r   r   r   r   r    r  r  c                 C   r  )N(nvmlDeviceCreateGpuInstanceWithPlacementr  )r:  r  r  r  r4  r   r   r   r   r    r  r  c                 C   r  )NnvmlGpuInstanceDestroyr  )r#  r4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetGpuInstancesr  )r:  r  gpuInstancesRefr  r4  r   r   r   r   r    rA  r  c                 C   r  )NnvmlDeviceGetGpuInstanceByIdr  )r:  rm  r  r4  r   r   r   r   r    r  r  c                 C   rc  )NnvmlGpuInstanceGetInfo)r  r   rM  r   )r#  rf  r4  r   r   r   r   r    rg  r  c                 C   r  )N,nvmlGpuInstanceGetComputeInstanceProfileInfo)r  r   rM  r   )r:  r  
engProfilerf  r4  r   r   r   r   r    r  r  c                 C   r  )N2nvmlGpuInstanceGetComputeInstanceRemainingCapacityrZ  )r#  r  rV  r4  r   r   r   r   r    r  r  c                 C   r  )N$nvmlGpuInstanceCreateComputeInstancec_nvmlComputeInstance_tr   rM  r   )r#  r  r  r4  r   r   r   r   r    r  r  c                 C   r  )NnvmlComputeInstanceDestroyr  )computeInstancer4  r   r   r   r   r    r  r  c                 C   r  )N"nvmlGpuInstanceGetComputeInstancesr  )r#  r  computeInstancesRefr  r4  r   r   r   r   r    rA  r  c                 C   r  )N%nvmlGpuInstanceGetComputeInstanceByIdr  )r#  rn  r  r4  r   r   r   r   r    r  r  c                 C   rc  )NnvmlComputeInstanceGetInfo_v2)r"  r   rM  r   )r  rf  r4  r   r   r   r   r    rg  r  c                 C   r  r   )r  )r  r   r   r   nvmlComputeInstanceGetInfo  r  r  c                 C   rc  )NnvmlDeviceIsMigDeviceHandle)r,  r   rM  r   )r:  c_isMigDevicer4  r   r   r   r   r    rg  r  c                 C   r  )NnvmlDeviceGetGpuInstanceIdrZ  )r:  c_gpuInstanceIdr4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetComputeInstanceIdrZ  )r:  c_computeInstanceIdr4  r   r   r   r   r    r  r  c                 C   r  )NnvmlDeviceGetMaxMigDeviceCountrZ  )r:  rV  r4  r   r   r   r   r    r  r  c                 C   r  )N#nvmlDeviceGetMigDeviceHandleByIndexrw  )r:  r_  r`  	migDevicer4  r   r   r   r   r    r  r  c                 C   rc  )N,nvmlDeviceGetDeviceHandleFromMigDeviceHandle)r  r   rM  r   )r  r:  r4  r   r   r   r   r  !  rg  r  c                 C   rc  )NnvmlDeviceGetAttributes_v2)r'  r   rM  r   )r:  c_attrsr4  r   r   r   r   r  (  rg  r  c                 C   r  r   )r  )r:  r   r   r   nvmlDeviceGetAttributes/  r  r  c                 C   s\   t d}t }t }t }t }|| t|t|t|t|}t| |j|j|j|jfS )NnvmlDeviceGetRemappedRowsru  )r:  r4  c_corrc_unc
c_bpending
c_bfailurer   r   r   r   r  2  s    r  c                 C   rc  )N!nvmlDeviceGetRowRemapperHistogram)r*  r   rM  r   )r:  c_valsr4  r   r   r   r   r  <  rg  r  c                 C   r  )NnvmlDeviceGetArchitecture)_nvmlDeviceArchitecture_tr   rM  r   r   )r:  archr4  r   r   r   r   r  C  r  r  c                 C   r  )NnvmlDeviceGetBusType)_nvmlBusType_tr   rM  r   r   )r:  	c_busTyper4  r   r   r   r   r  J  r  r  c                 C   r  )NnvmlDeviceGetIrqNumrZ  )r:  c_irqNumr4  r   r   r   r   r  Q  r  r  (  ctypesctypes.utilr   r   r;  	threadingr   r,  r  NVML_FEATURE_DISABLEDNVML_FEATURE_ENABLEDr  NVML_BRAND_UNKNOWNNVML_BRAND_QUADRONVML_BRAND_TESLANVML_BRAND_NVSNVML_BRAND_GRIDNVML_BRAND_GEFORCENVML_BRAND_TITANNVML_BRAND_NVIDIA_VAPPSNVML_BRAND_NVIDIA_VPCNVML_BRAND_NVIDIA_VCSNVML_BRAND_NVIDIA_VWSNVML_BRAND_NVIDIA_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_COUNTrQ  !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_ALLrP  NVML_NVLINK_COUNTER_UNIT_CYCLES NVML_NVLINK_COUNTER_UNIT_PACKETSNVML_NVLINK_COUNTER_UNIT_BYTES!NVML_NVLINK_COUNTER_UNIT_RESERVEDNVML_NVLINK_COUNTER_UNIT_COUNTr  NVML_NVLINK_DEVICE_TYPE_GPUNVML_NVLINK_DEVICE_TYPE_IBMNPUNVML_NVLINK_DEVICE_TYPE_SWITCHNVML_NVLINK_DEVICE_TYPE_UNKNOWN_nvmlEccBitType_tNVML_SINGLE_BIT_ECCNVML_DOUBLE_BIT_ECCNVML_ECC_ERROR_TYPE_COUNTr  NVML_VOLATILE_ECCNVML_AGGREGATE_ECCNVML_ECC_COUNTER_TYPE_COUNTr   NVML_MEMORY_ERROR_TYPE_CORRECTED"NVML_MEMORY_ERROR_TYPE_UNCORRECTEDNVML_MEMORY_ERROR_TYPE_COUNTr  NVML_CLOCK_GRAPHICSNVML_CLOCK_SMNVML_CLOCK_MEMNVML_CLOCK_VIDEONVML_CLOCK_COUNTr  NVML_CLOCK_ID_CURRENTNVML_CLOCK_ID_APP_CLOCK_TARGETNVML_CLOCK_ID_APP_CLOCK_DEFAULT NVML_CLOCK_ID_CUSTOMER_BOOST_MAXNVML_CLOCK_ID_COUNTr'  NVML_DRIVER_WDDMNVML_DRIVER_WDMr  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_15NVML_PSTATE_UNKNOWNr  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_SUPPORTEDr   r0  NVML_FAN_NORMALNVML_FAN_FAILEDr%  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_COUNTrq  NVML_BRIDGE_CHIP_PLXNVML_BRIDGE_CHIP_BRO4NVML_MAX_PHYSICAL_BRIDGEr  NVML_VALUE_TYPE_DOUBLENVML_VALUE_TYPE_UNSIGNED_INTNVML_VALUE_TYPE_UNSIGNED_LONG"NVML_VALUE_TYPE_UNSIGNED_LONG_LONG NVML_VALUE_TYPE_SIGNED_LONG_LONGNVML_VALUE_TYPE_COUNTr  NVML_PERF_POLICY_POWERNVML_PERF_POLICY_THERMALNVML_PERF_POLICY_SYNC_BOOSTNVML_PERF_POLICY_BOARD_LIMIT NVML_PERF_POLICY_LOW_UTILIZATIONNVML_PERF_POLICY_RELIABILITY!NVML_PERF_POLICY_TOTAL_APP_CLOCKS"NVML_PERF_POLICY_TOTAL_BASE_CLOCKSNVML_PERF_POLICY_COUNTrL  NVML_ENCODER_QUERY_H264NVML_ENCODER_QUERY_HEVC_nvmlFBCSessionType_tNVML_FBC_SESSION_TYPE_UNKNOWNNVML_FBC_SESSION_TYPE_TOSYSNVML_FBC_SESSION_TYPE_CUDANVML_FBC_SESSION_TYPE_VIDNVML_FBC_SESSION_TYPE_HWENC_nvmlDetachGpuState_tNVML_DETACH_GPU_KEEPNVML_DETACH_GPU_REMOVE_nvmlPcieLinkState_tNVML_PCIE_LINK_KEEPNVML_PCIE_LINK_SHUT_DOWNr  NVML_TOTAL_POWER_SAMPLESNVML_GPU_UTILIZATION_SAMPLESNVML_MEMORY_UTILIZATION_SAMPLESNVML_ENC_UTILIZATION_SAMPLESNVML_DEC_UTILIZATION_SAMPLESNVML_PROCESSOR_CLK_SAMPLESNVML_MEMORY_CLK_SAMPLESNVML_SAMPLINGTYPE_COUNTr  NVML_PCIE_UTIL_TX_BYTESNVML_PCIE_UTIL_RX_BYTESNVML_PCIE_UTIL_COUNTr  NVML_TOPOLOGY_INTERNALNVML_TOPOLOGY_SINGLENVML_TOPOLOGY_MULTIPLENVML_TOPOLOGY_HOSTBRIDGENVML_TOPOLOGY_NODENVML_TOPOLOGY_CPUNVML_TOPOLOGY_SYSTEM_nvmlGpuP2PCapsIndex_tNVML_P2P_CAPS_INDEX_READNVML_P2P_CAPS_INDEX_WRITENVML_P2P_CAPS_INDEX_NVLINKNVML_P2P_CAPS_INDEX_ATOMICSNVML_P2P_CAPS_INDEX_PROPNVML_P2P_CAPS_INDEX_LOOPBACKNVML_P2P_CAPS_INDEX_UNKNOWNrE  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_UNKNOWNr  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_UNKNOWNr  NVML_BUS_TYPE_UNKNOWNNVML_BUS_TYPE_PCINVML_BUS_TYPE_PCIENVML_BUS_TYPE_FPCINVML_BUS_TYPE_AGP_nvmlClockLimitId_tNVML_CLOCK_LIMIT_ID_RANGE_STARTNVML_CLOCK_LIMIT_ID_TDPNVML_CLOCK_LIMIT_ID_UNLIMITEDr  NVML_AFFINITY_SCOPE_NODENVML_AFFINITY_SCOPE_SOCKETnvmlFlagDefaultnvmlFlagForceNVML_INIT_FLAG_NO_GPUSNVML_INIT_FLAG_NO_ATTACHNVML_MAX_GPC_COUNTr  rK  r  r  rF  r  r  r  r.  rG  rD  r  r  r  sizeofr  r  !NVML_DEVICE_PCI_BUS_ID_LEGACY_FMTNVML_DEVICE_PCI_BUS_ID_FMTrY  r2  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_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   r2  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  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_SRIOVr   r   r   r   r   r   r   r   objectr   r
  r  	Structurer  POINTERr^  r  r  r"  r'  r.  r2  r5  r  r6  rE  rH  rM  rS  r[  r`  re  rj  ro  rs  rv  r|  r  Unionr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rc  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  r  r  NVML_DEVICE_MIG_DISABLENVML_DEVICE_MIG_ENABLE!NVML_GPU_INSTANCE_PROFILE_1_SLICE!NVML_GPU_INSTANCE_PROFILE_2_SLICE!NVML_GPU_INSTANCE_PROFILE_3_SLICE!NVML_GPU_INSTANCE_PROFILE_4_SLICE!NVML_GPU_INSTANCE_PROFILE_7_SLICE!NVML_GPU_INSTANCE_PROFILE_8_SLICE!NVML_GPU_INSTANCE_PROFILE_6_SLICE&NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV1NVML_GPU_INSTANCE_PROFILE_COUNTr  r  r  r  r$  %NVML_COMPUTE_INSTANCE_PROFILE_1_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_2_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_3_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_4_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_7_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_8_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_6_SLICE#NVML_COMPUTE_INSTANCE_PROFILE_COUNT+NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_SHARED*NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_COUNTr  r  r"  r&  r  r'  r*  r0  r5  r1  r@  r   rD  rK  rQ  rR  rT  rU  rY  r]  rd  rh  rj  rk  rn  rq  rp  ru  rx  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r   r#  r$  r&  r+  r,  r-  r0  r7  r8  r9  r;  r:  r<  r@  rB  rF  rG  rH  rI  rJ  rM  rP  rT  rU  rX  rY  r\  r^  r_  ra  rb  re  rg  rj  rm  rn  ro  rt  ry  rz  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r!  r#  r%  r(  r,  r/  r0  r2  r4  r6  r8  r:  r<  r>  r@  rB  rC  rD  rH  rJ  rK  rO  rQ  rW  r_  rb  rd  re  rg  rh  ri  rk  ro  rq  ru  rw  ry  r{  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s8  

-






!		


		
	"

								"""


				
