o
    .iU                    @   sK  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)dZ*e	Z+d Z,dZ-e	Z.d Z/dZ0dZ1dZ2dZ3e	Z4d Z5dZ6dZ7dZ8dZ9dZ:d	Z;d
Z<dZ=dZ>dZ?e?Z@e	ZAd ZBdZCdZDdZEdZFd	ZGe	ZHd ZIdZJdZKdZLd	ZMe	ZNd ZOdZPdZQdZRdZSd	ZTd
ZUe	ZVdZWdZXdZYdZZdZ[dZ\dZ]dZ^dZ_e	Z`d ZadZbdZcdZddZee	Zfd ZgdZhdZidZje	Zkd ZldZmdZne	Zod ZpdZqdZre	Zsd ZtdZudZve	Zwd ZxdZydZzdZ{dZ|e	Z}d Z~dZdZdZdZe	Zd ZdZdZdZe	Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZe	Zd ZdZdZdZdZe	Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd Zd!Zd"Zd#Zd$Zd%Zd&Zd'Ze	Zd ZdZe	Zd ZdZe	Zd ZdZe	Zd ZdZdZe	Zd ZdZdZe	Zd ZdZdZe	Zd ZdZdZe	Zd ZdZdZdZdZd	Zd
ZdZe	Zd ZdZdZdZdZd	Zd
ZdZe	Zd ZdZdZdZdZd	ZdZdZdZe	Zd ZdZdZdZe	Zd ZdZdZdZdZ e	Zd ZdZe	Zd ZdZe	Zd ZdZ	dZ
dZdZd	Zd
ZdZdZdZdZe	Zd ZdZdZe	Zd ZdZdZd&Zd(ZeZd)Ze	Zd*Z dZ!dZ"dZ#dZ$dZ%d	Z&e	Z'd Z(dZ)e)Z*dZ+dZ,dZ-d	Z.d
Z/e	Z0dZ1dZ2dZ3d	Z4d
Z5dZ6dZ7dZ8dZ9d+Z:e	Z;d Z<dZ=dZ>dZ?dZ@e	ZAd ZBdZCdZDe	ZEd ZFdZGe	ZHd,ZId-ZJd.ZKe	ZLd ZMdZNdZOdZPdZQd	ZRd
ZSe	ZTdZUdZVdZWdZXdZYdZZdZ[dZ\e	Z]d Z^dZ_e	Z`d ZadZbdZcdZddZed ZfdZgdZhdZidZjdZkdZld/Zmd0Znd/Zod/ZpdZqd0Zrd&Zsd/Ztd/ZudZvdZwdZxdZydZzdZ{e|e	d1 Z}d1Z~dZd2Zd3Zd4Zed5Ze	d5Z	 dZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd Zd!Zd"Zd#Zd$Zd%Zd&Zd6ZdZd7Zd8Zd9Zd:Zd;Zd<Zd=Zd(Zd>Zd?Zd@ZdAZdBZdCZdDZdEZdFZd)ZdGZdHZdIZdJZdKZdLZdMZdNZdOZdPZdQZdRZdSZdZdTZdUZdVZdWZdXZdYZdZZd[Zd\Zd]Zd^Zd_Zd`ZdaZdbZd/ZdcZddZdeZdfZdgZdhZdiZdjZdkZdlZdmZdnZdoZdpZdqZd0ZdrZdsZdtZduZdvZdwZdxZdyZdzZd{Zd|Zd}Zd~ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZdZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dÐZ8dĐZ9dŐZ:dƐZ;dǐZ<dȐZ=dɐZ>dʐZ?dːZ@d̐ZAd͐ZBdΐZCdϐZDdАZEdѐZFdҐZGdӐZHdԐZIdՐZJd֐ZKdאZLdؐZMdِZNdڐZOdېZPdܐZQdݐZRdސZSdߐZTdZUdZVdZWdZXdZYdZZdZ[dZ\dZ]dZ^dZ_dZ`dZadZbdZcdZddZedZfdZgdZhdZidZjdZkdZldZmdZndZodZpdZqdZrdZsdZtd ZudZvdZwdZxdZydZzdZ{dZ|dZ}d	Z~d
ZdZdZdZdZdZd1ZdZdZdZdZdZdZdZdZdZdZdZdZeϐ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d-Zd.Zd/Zd0Zd1Zd2Zd3Zd4Zd5Zd6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*Zΐd7Zϐd8ZАd9Zѐd:Ze	Zd ZdZdZdZdZd	Ze	Zd ZdZdZe	Zd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZe	Zd ZdZe	Zd ZdZdZdZdZe	Zd ZdZdZdZd;Ze	Zd ZdZe	Zd ZdZ e	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dZdZe	Zd ZdZe	Zd)ZdTZdZG d<d= d=eZG d>d? d?eZd@dA ZdBdC Ze  dDdE Ze  Z!dFdG Z"G dHdI dIe#Z$dJdK Z%dLdM Z&G dNdO dOe'Z(e)e(Z*G dPdQ dQe'Z+G dRdS dSe+Z,G dTdU dUe+Z-dVZ.G dWdX dXe+Z/G dYdZ dZe+Z0G d[d\ d\e+Z1G d]d^ d^e+Z2G d_d` d`e'Z3e)e3Z4G dadb dbe+Z5dcZ6G ddde dee+Z7G dfdg dge+Z8G dhdi die+Z9djZ:G dkdl dle+Z;G dmdn dne+Z<G dodp dpe+Z=G dqdr dre+Z>dsZ?G dtdu due+Z@G dvdw dwe'ZAdZBG dxdy dye'ZCG dzd{ d{e+ZDeDZEeEZFe	ZGd ZHdZIdZJG d|d} d}e'ZKG d~d de+ZLeLZMdZNG dd de+ZOG dd de+ZPG dd de+ZQG dd de+ZRG dd de+ZSG dd deTZUG dd de+ZVG dd de+ZWG dd de+ZXdZYdZZG dd de+Z[dZ\G dd de+Z]dZ^G dd de+Z_G dd de+Z`dVZaG dd de+ZbdVZcG dd de+ZddZed ZfdZgG dd de+ZhdZiG dd de+ZjdZkG dd de+ZlG dd de+ZmG dd de+ZndZoG dd de+ZpG dd de+ZqG dd de+ZrdZsG dd de+ZtdZuG dd de+Zvd ZwdZxdZydZzdZ{d	Z|G dd de+Z}G dd de+Z~G dd de+ZG dd de+ZG dd de+ZdZG ddÄ dÐe+ZG dĐdń dŐe+ZG dƐdǄ dǐe+ZG dȐdɄ dɐe+ZG dʐd˄ dːe+ZG d̐d̈́ d͐e+ZG dΐdτ dϐe+ZG dАdф dѐe+ZG dҐdӄ dӐe+ZG dԐdՄ dՐe+ZdVZd>ZdZd ZdZdZG d֐dׄ dאeTZdؐZG dِdڄ dڐe+ZdZG dېd܄ dܐe+ZdZG dݐdބ dސe+ZdVZG dߐd de+ZdZdZdZdZd	ZduZG dd de+ZG dd de+ZdZG dd de+ZdZG dd de+Zdd Zd ZdZdZdVZG dd de+ZdVZG dd de+Zd ZdZdZdvZdwZdxZdِZdZdZdZdZdZdZdZdZG dd de+ZG dd de+ZG dd de+ZG dd  d e+Zdd ZG dd de'ZĐe)eăZdZdZdZdZdZdZd1Z̐dZ͐dZd2ZϐdZАdZѐd	ZҐd
Zd ZԐeԐeB eB eB eB eB eB eB eB eB eB eB eB eB eB ZdZdZאeאZdZdZdZdZdZdZd1Zd ZeeB eB eB eB eB eB eB eB eB ZdZdZeZdZdZdZdZdZdZd1Zd ZeeB eB eB eB eB eB eB eB eB ZG dd de+ZG dd de'Ze)eZdZdZdZdZG dd de+ZdZG dd de+ZdZG dd de+ZG dd de+ZdZG dd de+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G d)d* d*e+ZG d+d, d,e'ZG d-d. d.e+ZG d/d0 d0e+ZG d1d2 d2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G d3d4 d4e+ZG d5d6 d6e+ZG d7d8 d8eTZG d9d: d:e+ZG d;d< d<e+ZG d=d> d>e+ZG d?d@ d@e+ZG dAdB dBe+ZG dCdD dDeTZG dEdF dFe+ZG dGdH dHe+Z G dIdJ dJe+Z!dZ"G dKdL dLe+Z#dZ$G dMdN dNe+Z%dZ&G dOdP dPe+Z'dZ(G dQdR dRe+Z)dZ*G dSdT dTe+Z+dUZ,G dVdW dWe+Z-dZ.G dXdY dYe+Z/G dZd[ d[e+Z0G d\d] d]e+Z1G d^d_ d_e+Z2G d`da dae'Z3G dbdc dce+Z4d Z5dZ6d Z7dZ8dZ9dZ:dZ;d	Z<d
Z=dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFdZGdZHG ddde dee'ZIG dfdg dge'ZJdhZKG didj dje+ZLG dkdl dle'ZMG dmdn dne'ZNe)eNZOd ZPdZQdZRdZSdZTd	ZUd
ZVdZWdZXd ZYdZZG dodp dpe'Z[G dqdr dre'Z\dsZ]G dtdu due+Z^G dvdw dwe'Z_dZ`d ZadZbdZcdZdG dxdy dye'ZeG dzd{ d{e'ZfdZgd ZhdZidZjdZkdZldZmdZndZodZpd5Zqd ZrdZsdZtdZudZvd	Zwd
ZxdZydZzdZ{dZ|dZ}dZ~dZdZdZdZdZd5ZG d|d} d}e'ZG d~d de'Ze	Zd ZdZdZdZe	ZdZdZdZdZeeB eB ZG dd de+ZdZdd ZG dd de'Ze)eZG dd de'ZG dd de'ZdZdZdZdZdZd ZdZG dd de'ZdZG dd de'ZG dd de'ZG dd de'ZG dd de'ZG dd de'ZG dd de'ZdZG dd de'Z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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dʐd˄ Zd̐d̈́ ZÐedΐdτ ZĐedАdф ZŐedҐdӄ ZƐedԐdՄ Zǐed֐dׄ ZG dؐdل dِe+ZɐdڐZʐedېd܄ ZG dݐdބ dސe+Z̐dڐZ͐e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 Ze	 f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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, ZG d-d. d.e+ZdZd/d0 Zd1d2 Zd3d4 Zd5d6 Ze	 e	 fd7d8Ze	 fd9d:Zd;d< ZG d=d> d>e+ZdZd?d@ Z ef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d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'edd Z(dd Z)dd Z*edd Z+dd Z,dd Z-edd Z.e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?eC f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/d0 Zxd1d2 Zyd3d4 Zzd5d6 Z{d7d8 Z|d9d: Z}d;d< Z~dd=d>Zd7d?d@ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZedOdP ZedQdR ZdSdT ZdUdV ZdWdX ZdYdZ Ze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edmdn Zedodp Zedqdr Ze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edd Zdd Zdd Zdd Zdd Zdd ZdddZe	 e	 f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dd Zdd ZdÐdĄ ZdŐdƄ ZÐd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ܐd8ddZݐdd ZސeݐZߐeސ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d8ddZe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ef fdGdHZdIdJ Ze fdKdLZ	e	 e	 fdMdNZ
e	Zd ZdZdZdZG dOdP dPe+ZdQdR ZdSdT ZG dUdV dVe+ZdZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Ze e fdadbZdcdd Zdedf Ze e f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Z+dZ,dZ-dZ.d	Z/d
Z0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9d&Z:d6Z;dZ<d7Z=d8Z>d9Z?d:Z@d;ZAd(ZBd>ZCd?ZDd@ZEdAZFdBZGdCZHdDZId)ZJdGZKdPZLdQZMdRZNdSZOdZPdTZQdUZRdVZSdWZTdXZUdYZVdZZWd[ZXd\ZYd]ZZd^Z[d_Z\d`Z]daZ^dbZ_d/Z`dcZaddZbdeZcdfZddgZedhZfdiZgdjZhdkZidlZjdmZkdnZldoZmdpZndqZod0ZpdrZqduZrdvZsdwZtdxZudyZvdzZwd{Zxd|Zyd}Zzd~Z{dZ|dZ}dZ~dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd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͐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ZdZd1ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd Zd!Zd"Zd#Zd$Zd%Zd&Z d'Zd(Zd)Zd*Zd+Zd,Zd-Zd.Zd/Z	d0Z
d1Zd2Zd3Zd4Zd5Zd6ZdZG ddS dSe+Z,G dd de'Ze)eZG dd de'ZG dd de+ZG dd de+ZdZG dd de+Z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&e&Z'G dd de'Z(dd Z)dZ*e	Z+d Z,dZ-dZ.dZ/G dd de+Z0d Z1dZ2dZ3d Z4dZ5d Z6dZ7dZ8dZ9dZ:d Z;dZ<dZ=dZ>dZ?d Z@dZAdZBd
ZCdZDd ZEdZFdZGdZHdZId	ZJd
ZKdZLeLZMdZNdZOdZPd ZQdZRdZSdZTdZUd ZVdZWdZXdZYdZZG dd de+Z[e[Z\G dd de+Z]dZ^dd Z_dd Z`d ZadZbdZcdZddZed	Zfdd Zgdd Zhe	Zid ZjdZkdZlG dd de+ZmdZnenfddZoG dd de+ZpdZqdd ZrdZsdVZtG dd de+Zudd ZvG dd de+ZwG ddÄ dÐe+ZxdĐZydŐZzdƐdǄ Z{dZ|G dȐdɄ dɐe+Z}G dʐd˄ dːe+Z~dZd ZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdĐZG d̐d̈́ d͐e+ZdΐZG dϐdЄ dАe+ZdѐZG dҐdӄ dӐe+ZdԐZG dՐdք d֐e+Zd ZdZdZdZdԐZG dאd؄ dؐe+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dVZG dd de+Zdd Zdd Zdd Zdd ZdZd	Zd+Zd ZdZdZdZdZd	Zd
ZdZdVZG dd de+ZdZG dd de+Zdd Zdd Zdd ZG dd de+ZG dd  d e+ZdZdd Zdd Zdd ZÐdd ZĐed	d
 ZŐdd ZƐdd Zd ZdZdZdZdZdZdZdZdZАdZѐdZG dd de+ZӐdd ZdS (      )*)find_librarywrapsN                        	   
                            @                                                i  (   2   r   l    l     l    l    P   `      i   z%04X:%02X:%02X.0z%08X:%02X:%02X.0   !   "   #   $   %   &   '   )   *   +   ,   -   .   /   0   1   3   4   5   6   7   8   9   :   ;   <   =   >   ?   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~                                                                                                                                                                                                                                                                                                                                                                                                i  i  i  i  i  i  i  i  i	  i
  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i   i!  i"  i#  i$  i%  i&  i'  i(  )r   )r   r   )r	   l        c                   @      e Zd ZdS )NVMLLibraryMismatchErrorN__name__
__module____qualname__ r  r  S/lsinfo/ai/hellotax_ai/llm_service/venv_vllm/lib/python3.10/site-packages/pynvml.pyr
        r
  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  objr  r  r  r    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)r  r  r  dictr  NVML_ERROR_UNINITIALIZEDNVML_ERROR_INVALID_ARGUMENTNVML_ERROR_NOT_SUPPORTEDNVML_ERROR_NO_PERMISSIONNVML_ERROR_ALREADY_INITIALIZEDNVML_ERROR_NOT_FOUNDNVML_ERROR_INSUFFICIENT_SIZENVML_ERROR_INSUFFICIENT_POWERNVML_ERROR_DRIVER_NOT_LOADEDNVML_ERROR_TIMEOUTNVML_ERROR_IRQ_ISSUENVML_ERROR_LIBRARY_NOT_FOUNDNVML_ERROR_FUNCTION_NOT_FOUNDNVML_ERROR_CORRUPTED_INFOROMNVML_ERROR_GPU_IS_LOSTNVML_ERROR_RESET_REQUIREDNVML_ERROR_OPERATING_SYSTEM"NVML_ERROR_LIB_RM_VERSION_MISMATCHNVML_ERROR_MEMORYNVML_ERROR_UNKNOWNr  r  r!  r$  r  r  r  r  r    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  argsr  valr  r  new/  s   z9_extractNVMLErrorsAsClasses.<locals>.gen_new.<locals>.newr  )rH  rI  r  rG  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_valrJ  new_error_classr  r  r  _extractNVMLErrorsAsClasses  s   

 
rZ  c                 C   s   | t krt| | S r"  )NVML_SUCCESSr  )retr  r  r  _nvmlCheckReturn9  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'  rQ  releaseAttributeErrorr3  )namer  r  r  _nvmlGetFunctionPointer@  s   


re  c                   @   s   e Zd Zdd Zdd ZdS )nvmlFriendlyObjectc                 C   s   |D ]
}t | |||  qd S r"  )rS  )r   
dictionaryrA  r  r  r  __init__Y  s   znvmlFriendlyObject.__init__c                 C   s
   | j  S r"  )__dict__r!  r  r  r  r  r!  \     
znvmlFriendlyObject.__str__N)r  r  r  rh  r!  r  r  r  r  rf  X  s    rf  c                 C   sH   i }| j D ]}|d }t| |}t|tr| n|||< qt|}|S Nr   )_fields_rQ  
isinstancebytesdecoderf  )structdrA  keyr  r  r  r  r  nvmlStructToFriendlyObject_  s   

rs  c                 C   sJ   |j D ]}|d }| j| }tjdkrt|||  qt||| q|S )Nr   r  )rl  ri  rK  version_inforS  encode)r  modelrA  rr  r  r  r  r  nvmlFriendlyObjectToStructj  s   


rw  c                   @   r	  )struct_c_nvmlUnit_tNr  r  r  r  r  rx  v  r  rx  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, ))rl  rQ  _fmt_append	__class__r  join)r   resultrA  rr  r  fmtr  r  r  r!    s   




z_PrintableStructure.__str__c                    s4   t t| |}t|trt|tr|S | S |S r"  )superry  __getattribute__rm  rn  r  ro  )r   rd  resr  r  r  r    s   

z$_PrintableStructure.__getattribute__c                    s(   t |tr	| }tt| || d S r"  )rm  r  ru  r  ry  __setattr__)r   rd  r  r  r  r  r    s   
z_PrintableStructure.__setattr__)	r  r  r  __doc__r}  r!  r  r  __classcell__r  r  r  r  ry  z  s    ry  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_trd  r,   idserialfirmwareVersionNr  r  r  c_charrl  r  r  r  r  r        



r  c                   @      e Zd ZdefgZdS )c_nvmlC2cModeInfo_v1_tisC2cEnabledNr  r  r  c_uintrl  r  r  r  r  r        r  i  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_trl  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  r  rl  r  r  r  r  r        
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_trl  r  r  r  r  r        r  c                   @   r  )c_nvmlUnitFanSpeeds_tfansr!   countN)r  r  r  r  r  rl  r  r  r  r  r    r  r  c                   @   r	  )struct_c_nvmlDevice_tNr  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d	ee fg	Zd
d
dddddddZdS )nvmlPciInfoExt_v1_tversiondomainbusdevicepciDeviceIdpciSubSystemId	baseClasssubClassbusId0x%04X0x%02X0x%08Xz0x%01X)r  r  r  r  r  r  r  r  N)r  r  r  r  r  "NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZErl  r}  r  r  r  r  r    s(    

r  i@  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_tr  r  r  r  r  r  	reserved0	reserved1	reserved2	reserved3r  r  r  r  r  r  r  r  N)r  r  r  r  %NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZEr  rl  r}  r  r  r  r  r    s$    

r  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busIdLegacyr  r  r  r  r  r  r  r  r  N)	r  r  r  r  r  r  r  rl  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_nvmlSystemDriverBranchInfo_v1_tr  branchN)r  r  r  r  r  &NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZErl  r  r  r  r  r  $      
r  iT  c                   @   r  )c_nvmlExcludedDeviceInfo_tpciuuidN)r  r  r  r  r  NVML_DEVICE_UUID_BUFFER_SIZErl  r  r  r  r  r  ,  r  r  c                   @   r  )nvmlNvLinkUtilizationControl_tunits	pktfilterN)r  r  r  "_nvmlNvLinkUtilizationCountUnits_t%_nvmlNvLinkUtilizationCountPktTypes_trl  r  r  r  r  r  2  r  r  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usedrz  %d BNr  r  r  c_ulonglongrl  r}  r  r  r  r  r  8      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_nvmlMemory_v2_tr  r  reservedr  r  rz  r  Nr  r  r  r  r  rl  r}  r  r  r  r  r  @      r  i(  c                   @   r  )c_nvmlBAR1Memory_t	bar1Totalbar1Freebar1Usedrz  r  Nr  r  r  r  r  r  L  r  r  c                   @      e Zd ZdefdefgZdS )nvmlClkMonFaultInfo_tclkApiDomainclkDomainFaultMaskNr  r  r  r  r  r  T      r  c                   @   s&   e Zd Zdefdefdee fgZdS )nvmlClkMonStatus_tbGlobalStatusclkMonListSize
clkMonListN)r  r  r  r  r  MAX_CLK_DOMAINSrl  r  r  r  r  r  [  s
    
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_v2_tpidusedGpuMemorygpuInstanceIdcomputeInstanceIdr  Nr  r  r  r  r  r  l  s    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_nvmlProcessDetail_v1_tr  r  r  r  usedGpuCcProtectedMemoryNr  r  r  r  r  rl  r  r  r  r  r  ~      r  c                   @   s4   e Zd ZdefdefdefdeefgZddiZdS )c_nvmlProcessDetailList_v1_tr  modenumProcArrayEntries	procArrayr  N)	r  r  r  r  _nvmlProcessMode_tPOINTERr  rl  r}  r  r  r  r  r    s    
r  i  c                   @   r  )c_nvmlBridgeChipInfo_trR  	fwVersionN)r  r  r  _nvmlBridgeChipType_tr  rl  r  r  r  r  r    r  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  r  r  rl  r  r  r  r  r    r  r  c                   @   (   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  r  rl  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memoryrz  z%d %%N)r  r  r  r  rl  r}  r  r  r  r  r    
    r  c                   @   r   )c_nvmlHwbcEntry_thwbcIdr  r   N)r  r  r  r  r  rl  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gZ
dS )	c_nvmlValue_tdValuiValulValullValsllValsiValusValN)r  r  r  c_doubler  c_ulongr  
c_longlongc_intc_ushortrl  r  r  r  r  r        r  c                   @   r  )c_nvmlSample_t	timeStampsampleValueN)r  r  r  r  r  rl  r  r  r  r  r     r  r   c                   @   r  )c_nvmlViolationTime_treferenceTimeviolationTimeNr
  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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  rl  r  r  r  r  r&    r  r&  i  c                       s6   e Zd Zdefdee fdefgZ fddZ  ZS )!c_nvmlNvlinkSupportedBwModes_v1_tr  bwModestotalBwModesc                       t t| jtd d S N)r  )r  r1  rh  nvmlNvlinkSupportedBwModes_v1r  r  r  r  rh       z*c_nvmlNvlinkSupportedBwModes_v1_t.__init__)	r  r  r  r  c_uint8$NVML_NVLINK_TOTAL_SUPPORTED_BW_MODESrl  rh  r  r  r  r  r  r1    s    
r1  i  c                       2   e Zd ZdefdefdefgZ fddZ  ZS )c_nvmlNvlinkGetBwMode_v1_tr  bIsBestbwModec                    r4  r5  )r  r;  rh  nvmlNvlinkGetBwMode_v1r  r  r  r  rh    r7  z#c_nvmlNvlinkGetBwMode_v1_t.__init__r  r  r  r  r8  rl  rh  r  r  r  r  r  r;        r;  c                       r:  )c_nvmlNvlinkSetBwMode_v1_tr  bSetBestr=  c                    r4  r5  )r  rA  rh  nvmlNvlinkSetBwMode_v1r  r  r  r  rh    r7  z#c_nvmlNvlinkSetBwMode_v1_t.__init__r?  r  r  r  r  rA    r@  rA  c                   @   r  ) c_nvmlVgpuHeterogeneousMode_v1_tr  r  Nr  r  r  r  r  rD    r  rD  c                   @   r  )c_nvmlVgpuPlacementId_v1_tr  placementIdNr  r  r  r  r  rE    r  rE  c                   @   s,   e Zd ZdefdefdefdeefgZdS )c_nvmlVgpuPlacementList_v1_tr  r  placementSizeplacementIdsNr  r  r  r  r  rl  r  r  r  r  rG        
rG  c                   @   2   e Zd ZdefdefdefdeefdefgZdS )c_nvmlVgpuPlacementList_v2_tr  rH  r  rI  r  NrJ  r  r  r  r  rM        
rM  i   c                   @   r  )c_nvmlVgpuTypeBar1Info_v1_tr  bar1SizeNr  r  r  r  r  rO  #  r  rO  i  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_tr  r  rl  r  r  r  r  rQ  +      rQ  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_nvmlVgpuInstanceUtilizationInfo_v1_tr!  rR  rS  rT  rU  rV  jpgUtilofaUtilN)r  r  r  r  rW  r  rl  r  r  r  r  rY  5      rY  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_nvmlVgpuInstancesUtilizationInfo_v1_tr  sampleValTypevgpuInstanceCountlastSeenTimeStampvgpuUtilArrayN)	r  r  r  r  r/  r  r  rY  rl  r  r  r  r  r]  A      
r]  i   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_trR  r  processNamer!  rS  rT  rU  rV  N)	r  r  r  rW  r  r  NVML_VGPU_NAME_BUFFER_SIZEr  rl  r  r  r  r  rc  L  s    
rc  c                   @   sP   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S )%c_nvmlVgpuProcessUtilizationInfo_v1_trd  r!  rR  r  rS  rT  rU  rV  rZ  r[  N)	r  r  r  r  re  r  rW  r  rl  r  r  r  r  rf  X  s    
rf  c                   @   ,   e Zd ZdefdefdefdeefgZdS )'c_nvmlVgpuProcessesUtilizationInfo_v1_tr  vgpuProcessCountr`  vgpuProcUtilArrayN)r  r  r  r  r  r  rf  rl  r  r  r  r  rh  f  rK  rh  c                   @   r  )nvmlVgpuRuntimeState_v1_tr  sizeNr  r  r  r  r  rk  p  r  rk  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_uint16r8  rl  r  r  r  r  rn  x  r  rn  c                   @   "   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  r8  rn  r  rl  r  r  r  r  ry    
    ry  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  rR  	codecTypehResolutionvResolution
averageFpsencodeLatencyNr  r  r  r  rW  rl  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_nvmlProcessUtilizationSample_tr  r!  rS  rT  rU  rV  Nr  r  r  r  r  r    rX  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_nvmlProcessUtilizationInfo_v1_tr!  r  rS  rT  rU  rV  rZ  r[  Nr  r  r  r  r  rl  r  r  r  r  r    r\  r  c                   @   rg  )#c_nvmlProcessesUtilizationInfo_v1_tr  processSamplesCountr`  procUtilArrayN)r  r  r  r  r  r  r  rl  r  r  r  r  r    rK  r  c                   @   rm  )	c_nvmlGridLicenseExpiry_tro  rp  rq  rr  rs  rt  ru  Nrv  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_tr  r  NVML_GRID_LICENSE_BUFFER_SIZEr  rl  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  r  r  r  #NVML_GRID_LICENSE_FEATURE_MAX_COUNTrl  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  rl  r  r  r  r  r    s    

r  c                   @   r  )!c_nvmlGridLicensableFeatures_v3_tr  r  r  N)r  r  r  r  r  r  r  rl  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  rl  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  rl  r  r  r  r  r    r  r  c                   @   r  )c_nvmlMarginTemperature_v1_tr  marginTemperatureN)r  r  r  r  r  rl  r  r  r  r  r    r  r  c                   @   s$   e Zd Zdee fdee fgZdS )c_nvmlUUIDValue_tr  rn  N)r  r  r  r  NVML_DEVICE_UUID_ASCII_LENc_ubyteNVML_DEVICE_UUID_BINARY_LENrl  r  r  r  r  r    s    

r  i4  c                       r:  )c_nvmlUUID_tr  rR  r  c                    r4  r5  )r  r  rh  nvmlUUID_v1r  r  r  r  rh  #  r7  zc_nvmlUUID_t.__init__)r  r  r  r  r  rl  rh  r  r  r  r  r  r    r@  r  c                       ,   e Zd ZdefdefgZ fddZ  ZS )c_nvmlPdi_tr  r  c                    r4  r5  )r  r  rh  
nvmlPdi_v1r  r  r  r  rh  -  r7  zc_nvmlPdi_t.__init__r  r  r  r  r  rl  rh  r  r  r  r  r  r  '  
    r  c                       s2   e Zd ZdefdefdefgZ fddZ  ZS )c_nvmlRepairStatus_tr  bChannelRepairPendingbTpcRepairPendingc                    r4  r5  )r  r  rh  nvmlRepairStatus_v1r  r  r  r  rh  8  r7  zc_nvmlRepairStatus_t.__init__r  r  r  r  rl  rh  r  r  r  r  r  r  1  r@  r  c                       ,   e Zd ZdefdefgZ fddZ  ZS )c_nvmlNvLinkInfo_v1_tr  isNvleEnabledc                    r4  r5  )r  r  rh  nvmlNvLinkInfo_v1r  r  r  r  rh  B  r7  zc_nvmlNvLinkInfo_v1_t.__init__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_nvmlNvlinkFirmwareVersion_t	ucodeTypemajorminorsubMinorN)r  r  r  r8  r  rl  r  r  r  r  r  L  r  r  c                   @   s    e Zd Zdee fdefgZdS )c_nvmlNvlinkFirmwareInfo_tr  numValidEntriesN)r  r  r  r  #NVML_NVLINK_FIRMWARE_VERSION_LENGTHr  rl  r  r  r  r  r  T  r  r  iL c                       r:  )c_nvmlNvLinkInfo_v2_tr  r  firmwareInfoc                    r4  r5  )r  r  rh  nvmlNvLinkInfo_v2r  r  r  r  rh  b  r7  zc_nvmlNvLinkInfo_v2_t.__init__)r  r  r  r  r  rl  rh  r  r  r  r  r  r  [  r@  r  i  c                       s8   e Zd Zdefdefdee fgZd fdd	Z  ZS )c_nvmlPRMTLV_v1_tdataSizeru  datar   c                    s   t t| j|dd d S )Nr   )r  ru  )r  r  rh  )r   rl  r  r  r  rh  m     zc_nvmlPRMTLV_v1_t.__init__r*   )	r  r  r  r-  r  NVML_PRM_DATA_MAX_SIZErl  rh  r  r  r  r  r  r  g  s    
r  c                 C   "   t d}|| t|}t| d S )NnvmlDeviceReadWritePRM_v1re  byrefr]  handlec_infofnr\  r  r  r  r  p     r  c                       r  )c_nvmlDeviceAddressingMode_tr  r  c                    r4  r5  )r  r  rh  nvmlDeviceAddressingMode_v1r  r  r  r  rh    r7  z%c_nvmlDeviceAddressingMode_t.__init__r  r  r  r  r  r  |  r  r  c                       r  )c_nvmlUnrepairableMemory_v1_tr  unrepairableMemoryc                    r4  r5  )r  r  rh  nvmlUnrepairableMemory_v1r  r  r  r  rh    r7  z&c_nvmlUnrepairableMemory_v1_t.__init__r  r  r  r  r  r    s
    r  i-  i.  i/  i0  i1  i2  i3  i  c                       s(   e Zd ZdefgZd fdd	Z  ZS )c_nvmlPRMCounterInput_v1_t	localPortr   c                    s   t t| j|d d S )N)r  )r  r  rh  )r   portr  r  r  rh    r7  z#c_nvmlPRMCounterInput_v1_t.__init__r*   )r  r  r  r-  rl  rh  r  r  r  r  r  r    s    r  c                       2   e Zd ZdefdefdefgZ fddZ  ZS )c_nvmlPRMCounterValue_v1_tru  
outputTypeoutputValuec                    s   t t| jtjd d S )N)ru  )r  r  rh  pynvmlr[  r  r  r  r  rh    r  z#c_nvmlPRMCounterValue_v1_t.__init__)	r  r  r  r0  r/  r  rl  rh  r  r  r  r  r  r    s    r  c                       s8   e Zd ZdefdefdefgZedf fdd	Z  Z	S )c_nvmlPRMCounter_v1_t	counterId
inputValuer  Nc                       t t| j||d d S )N)r  r  )r  r  rh  )r   ctrIdinDatar  r  r  rh    r  zc_nvmlPRMCounter_v1_t.__init__)
r  r  r  r-  r  r  rl  NVML_PRM_COUNTER_ID_NONErh  r  r  r  r  r  r    s    r  c                       s2   e Zd ZdefdeefgZd fdd	Z  ZS )c_nvmlPRMCounterList_v1_tnumCounterscountersNc                    r  )N)r  r  )r  r  rh  )r   numctrsr  r  r  rh    r  z"c_nvmlPRMCounterList_v1_t.__init__r"  )	r  r  r  r-  r  r  rl  rh  r  r  r  r  r  r    s
    
r  c                 C   r  )NnvmlDeviceReadPRMCounters_v1r  r  r  r  r  r    r  r  c                   @   r	  )struct_c_nvmlEventSet_tNr  r  r  r  r  r    r  r  i      i   i    i @  i   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	eventDatar  r  r  N)r  r  r  c_nvmlDevice_tr  r  rl  r}  r  r  r  r  r  "  r  r  c                   @   r	  )struct_c_nvmlSystemEventSet_tNr  r  r  r  r  r  ,  r  r  c                       r  )&c_nvmlSystemEventSetCreateRequest_v1_tr  setc                    r4  r5  )r  r  rh  "nvmlSystemEventSetCreateRequest_v1r  r  r  r  rh  <  r7  z/c_nvmlSystemEventSetCreateRequest_v1_t.__init__r  r  r  r  c_nvmlSystemEventSet_trl  rh  r  r  r  r  r  r  6  r  r  c                       r  )$c_nvmlSystemEventSetFreeRequest_v1_tr  r  c                    r4  r5  )r  r  rh   nvmlSystemEventSetFreeRequest_v1r  r  r  r  rh  F  r7  z-c_nvmlSystemEventSetFreeRequest_v1_t.__init__r  r  r  r  r  r  @  r  r  c                       r  )%c_nvmlSystemRegisterEventRequest_v1_tr  
eventTypesr  c                    r4  r5  )r  r  rh  !nvmlSystemRegisterEventRequest_v1r  r  r  r  rh  Q  r7  z.c_nvmlSystemRegisterEventRequest_v1_t.__init__)	r  r  r  r  r  r  rl  rh  r  r  r  r  r  r  J  r@  r  c                   @   s$   e Zd ZdefdefgZddiZdS )c_nvmlSystemEventData_v1_tr  gpuIdr  N)r  r  r  r  r  rl  r}  r  r  r  r  r  T  r  r  c                       sH   e Zd ZdefdefdefdeefdefdefgZ fddZ  Z	S )	$c_nvmlSystemEventSetWaitRequest_v1_tr  	timeoutmsr  r  r  numEventc                    r4  r5  )r  r  rh   nvmlSystemEventSetWaitRequest_v1r  r  r  r  rh  f  r7  z-c_nvmlSystemEventSetWaitRequest_v1_t.__init__)
r  r  r  r  r  r  r  rl  rh  r  r  r  r  r  r  \  s    
	r  c                 C      t d}|| }t| dS )zx
    C API binding for c_nvmlSystemEventSetFree
    :param req: reference of c_nvmlSystemEventSetCreateRequest_v1_t
    nvmlSystemEventSetCreateNre  r]  reqr  r\  r  r  r  c_nvmlSystemEventSetCreatej     r  c                 C   r  )zv
    C API binding for c_nvmlSystemEventSetFree
    :param req: reference of c_nvmlSystemEventSetFreeRequest_v1_t
    nvmlSystemEventSetFreeNr  r  r  r  r  c_nvmlSystemEventSetFrees  r	  r  c                 C   r  )zw
    C API binding for nvmlSystemRegisterEvents
    :param req: reference of c_nvmlSystemRegisterEventRequest_v1_t
    nvmlSystemRegisterEventsNr  r  r  r  r  c_nvmlSystemRegisterEvents|  r	  r  c                 C   s(   t d}|| }|tkr|S t| dS )zt
    C API binding for nvmlSystemEventSetWait
    :param req: reference of c_nvmlSystemEventSetWaitRequest_v1_t
    nvmlSystemEventSetWaitN)re  r0  r]  r  r  r  r  c_nvmlSystemEventSetWait  s
   r  c                 C   sB   | t krttt }| |_d|_tt| |jstt|jS )z
    Create an NVML system event set.
    :param version: The version of the request.
    :return: A ctypes pointer to the created c_nvmlSystemEventSet_t structure.
    N)	r  r  $NVML_ERROR_ARGUMENT_VERSION_MISMATCHr  r  r  r  r  r9  )r  r  r  r  r  r    s   r  c                 C   s2   | t krttt }| |_||_tt| dS )z
    Free an NVML system event set.
    :param version: The version of the request.
    :param setHandle: A ctypes pointer to a c_nvmlSystemEventSet_t structure.
    N)r  r  r  r  r  r  r  r  )r  	setHandler  r  r  r  r
    s   r
  c                 C   s8   | t krttt }| |_||_||_tt| dS )z
    Register events for an NVML system event set.
    :param version: The version of the request.
    :param eventTypes: A bitmask of event types to register.
    :param setHandle: A ctypes pointer to a c_nvmlSystemEventSet_t structure.
    N)	r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r    s   r  c           	      C   s   | t krttt }| |_||_||_||_||_t	t
|}|tkr&g S g }t|jD ]}||| j|| jd q-|S )a  
    Wait for events in an NVML system event set.
    :param version: The version of the request.
    :param setHandle: A ctypes pointer to a c_nvmlSystemEventSet_t structure.
    :param timeoutMs: Timeout in milliseconds.
    :param eventData: A ctypes array of c_nvmlSystemEventData_v1_t for event data.
    :param eventDataSize: Number of c_nvmlSystemEventData_v1_t in evenData array..
    :return: A list of dictionaries containing event data.
    )r  r  )r  r  r  r  r  r   r  r  r  r  r  r0  ranger  r~  r  r  )	r  r  	timeoutMsr  eventDataSizer  r\  eventsir  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	isRunningr  r
   Nr  r  r  r  r  r        
r  c                   @   r  )c_nvmlVgpuVersion_t
minVersion
maxVersionNr  r  r  r  r  r    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_tr  revisionguestInfoStateguestDriverVersionhostDriverVersionr  r   vgpuVirtualizationCapsguestVgpuVersionopaqueDataSize
opaqueDataN)	r  r  r  r  _nvmlVgpuGuestInfoState_tr  r  #NVML_VGPU_METADATA_OPAQUE_DATA_SIZErl  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_SIZErl  r  r  r  r  r-  
	  s    


r-  c                   @   r  )c_nvmlVgpuPgpuCompatibility_tvgpuVmCompatibilitycompatibilityLimitCodeN)r  r  r  _nvmlVgpuVmCompatibility_t%_nvmlVgpuPgpuCompatibilityLimitCode_trl  r  r  r  r  r1  	  r  r1  c                   @   r  )c_nvmlVgpuSchedDataWithARR_t	avgFactor	timesliceNr  r  r  r  r  r6  .	  r  r6  c                   @   r  )c_nvmlVgpuSchedData_tr8  Nr  r  r  r  r  r9  4	  r  r9  c                   @   r  )c_nvmlVgpuSchedulerParams_tvgpuSchedDataWithARRvgpuSchedDataN)r  r  r  r6  r9  rl  r  r  r  r  r:  9	  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_nvmlVgpuSchedulerLogEntry_tr)  timeRunTotaltimeRunswRunlistIdtargetTimeSlicecumulativePreemptionTimeNr  r  r  r  r  r=  ?	  rX  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arrModeschedulerParamsentriesCount
logEntriesNr  r  r  r  r:  r=  !NVML_SCHEDULER_SW_MAX_LOG_ENTRIESrl  r  r  r  r  rC  I	      
rC  c                   @   "   e Zd ZdefdefdefgZdS )c_nvmlVgpuSchedulerGetState_trE  rF  rG  Nr  r  r  r  r:  rl  r  r  r  r  rN  S	  r}  rN  c                   @   r  )c_nvmlVgpuSchedSetDataWithARR_tr7  	frequencyNr  r  r  r  r  rP  Z	  r  rP  c                   @   r  )c_nvmlVgpuSchedSetData_tr8  Nr  r  r  r  r  rR  `	  r  rR  c                   @   r  )c_nvmlVgpuSchedulerSetParams_tr;  r<  N)r  r  r  rP  rR  rl  r  r  r  r  rS  e	  r  rS  c                   @   rM  )c_nvmlVgpuSchedulerSetState_trE  enableARRModerG  Nr  r  r  r  rS  rl  r  r  r  r  rT  k	  r}  rT  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  r  *NVML_SUPPORTED_VGPU_SCHEDULER_POLICY_COUNTrl  r  r  r  r  rW  r	  s    
rW  c                   @   &   e Zd ZdefdefdeefgZdS )c_nvmlVgpuTypeIdInfo_v1_tr  	vgpuCountvgpuTypeIdsNrJ  r  r  r  r  rb  ~	  r  rb  c                   @   "   e Zd ZdefdefdefgZdS )c_nvmlVgpuTypeMaxInstance_v1_tr  
vgpuTypeIdmaxInstancePerGINr  r  r  r  r  rf  	  r}  rf  c                   @   ra  )!c_nvmlActiveVgpuInstanceInfo_v1_tr  rc  vgpuInstancesNrJ  r  r  r  r  ri  	  r  ri  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_nvmlVgpuSchedulerState_v1_tr  rD  rE  rU  rG  NrV  r  r  r  r  rl  	  r  rl  c                   @   rk  )!c_nvmlVgpuSchedulerStateInfo_v1_tr  rD  rE  rF  rG  NrO  r  r  r  r  rm  	  r  rm  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e fgZdS )	c_nvmlVgpuSchedulerLogInfo_v1_tr  rD  rE  rF  rG  rH  rI  NrJ  r  r  r  r  rn  	  r  rn  i% c                   @   rL  )%c_nvmlVgpuCreatablePlacementInfo_v1_tr  rg  r  rI  rH  NrJ  r  r  r  r  ro  	  rN  ro  c                   @   r  )!c_nvmlVgpuSchedulerStateInfo_v2_trD  rE  r7  r8  Nr  r  r  r  r  rp  	  r  rp  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_nvmlVgpuSchedulerLogEntry_v2_tr)  r>  r?  r@  rA  rB  weightNr  r  r  r  r  rq  	  r  rq  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_nvmlVgpuSchedulerLogInfo_v2_trD  rE  r7  r8  rH  rI  N)r  r  r  r  rq  rK  rl  r  r  r  r  rs  	  rL  rs  c                   @   r  )c_nvmlVgpuSchedulerState_v2_trD  rE  r7  rQ  Nr  r  r  r  r  rt  	  r  rt  c                   @   re  )c_nvmlFBCStats_tsessionsCount
averageFPSaverageLatencyNr  r  r  r  r  ru  	  
    ru  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  rR  displayOrdinalsessionTypesessionFlagshMaxResolutionvMaxResolutionr  r  rw  rx  Nr  r  r  r  r  rz  	  s    rz  c                   @   r  )c_nvmlGpuInstancePlacement_tstartrl  Nr  r  r  r  r  r  
  r  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  
  s    r  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_tr  r  r  r  r  r  r  r  r  r  r  r  rd  c                    r4  r5  )r  r  rh  nvmlGpuInstanceProfileInfo_v2r  r  r  r  rh  =
  r7  z*c_nvmlGpuInstanceProfileInfo_v2_t.__init__)
r  r  r  r  r  r  NVML_DEVICE_NAME_V2_BUFFER_SIZErl  rh  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gZdS )c_nvmlGpuInstanceInfo_tr  r  	profileId	placementN)r  r  r  r  r  r  rl  r  r  r  r  r  @
      r  c                   @   r	  )struct_c_nvmlGpuInstance_tNr  r  r  r  r  r  G
  r  r  c                   @   r  ) c_nvmlComputeInstancePlacement_tr  rl  Nr  r  r  r  r  r  X
  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_nvmlComputeInstanceProfileInfo_tr  r  r  r  sharedCopyEngineCountsharedDecoderCountsharedEncoderCountsharedJpegCountsharedOfaCountNr  r  r  r  r  r  ]
      r  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_tr  r  r  r  r  r  r  r  r  r  rd  c                    r4  r5  )r  r  rh  !nvmlComputeInstanceProfileInfo_v2r  r  r  r  rh  y
  r7  z.c_nvmlComputeInstanceProfileInfo_v2_t.__init__)	r  r  r  r  r  r  rl  rh  r  r  r  r  r  r  k
  s    
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  rl  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_nvmlGpuDynamicPstatesUtilization_t
bIsPresentr   
percentageincThresholddecThresholdNr  r  r  r  r  r  
  s    r  c                   @   r  )c_nvmlGpuDynamicPstatesInfo_tflagsutilizationN)r  r  r  r  r  NVML_MAX_GPU_UTILIZATIONSrl  r  r  r  r  r  
      
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  rl  r  r  r  r  r  
  r  r  c                   @   r  )c_nvmlGpuThermalSettings_tr  sensorN)r  r  r  r  r   NVML_MAX_THERMAL_SENSORS_PER_GPUrl  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_nvmlCoolerInfo_tr  indexcoolerControlTypecoolerTargetN)r  r  r  r  _nvmlCoolerControl_t_nvmlCoolerTarget_trl  r  r  r  r  r  
  r  r  c                 C   s<   t  }t|_d|_td}|| t|}t| |j|jgS )Nr   nvmlDeviceGetCoolerInfo)	r  nvmlCoolerInfo_v1r  r  re  r  r]  r  r  )r  c_coolerInfor  r\  r  r  r  r  
  s   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                   @   r  ) c_nvmlRowRemapperHistogramValuesmaxhighpartiallownoneNr  r  r  r  r  r  
  r  r  i   c                   @   re  )c_nvmlConfComputeSystemState_tenvironment	ccFeaturedevToolsModeNr  r  r  r  r  r  
  ry  r  i  c                       s>   e Zd ZdefdefdefdefdefgZ fddZ  ZS )$c_nvmlSystemConfComputeSettings_v1_tr  r  r  r  multiGpuModec                    r4  r5  )r  r  rh   nvmlSystemConfComputeSettings_v1r  r  r  r  rh    r7  z-c_nvmlSystemConfComputeSettings_v1_t.__init__r  r  r  r  r  r    s    r  c                   @   r  )c_nvmlConfComputeSystemCaps_tcpuCapsgpusCapsNr  r  r  r  r  r    r  r  c                   @   r  )c_nvmlConfComputeMemSizeInfo_tprotectedMemSizeKibunprotectedMemSizeKibNr
  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_nvmlConfComputeGpuCertificate_tcertChainSizeattestationCertChainSize	certChainattestationCertChainN)r  r  r  r  r8  NVML_GPU_CERT_CHAIN_SIZE$NVML_GPU_ATTESTATION_CERT_CHAIN_SIZErl  r  r  r  r  r    s    

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e fgZdS )'c_nvmlConfComputeGpuAttestationReport_tisCecAttestationReportPresentattestationReportSizececAttestationReportSizenonceattestationReportcecAttestationReportN)	r  r  r  r  r8  NVML_CC_GPU_CEC_NONCE_SIZE#NVML_CC_GPU_ATTESTATION_REPORT_SIZE'NVML_CC_GPU_CEC_ATTESTATION_REPORT_SIZErl  r  r  r  r  r    s    


r  c                   @   r  ).c_nvmlConfComputeSetKeyRotationThresholdInfo_tr  maxAttackerAdvantageNr  r  r  r  r  rl  r  r  r  r  r  (  r  r  c                   @   r  ).c_nvmlConfComputeGetKeyRotationThresholdInfo_tr  attackerAdvantageNr  r  r  r  r  r  .  r  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  )rm  r  ru  )r@  argr  r  r  rB  A  s   " z4convertStrBytes.<locals>.wrapper.<locals>.<listcomp>)rm  rn  r  ro  )rF  kwargsr  funcr  r  wrapper>  s   

z convertStrBytes.<locals>.wrapperr  )r   rK  rt  r  r  r  r  r  convertStrBytes5  s
   	
r  c                    s   t   fdd}|S )Nc                     s2   z | i |W S  t y   td j d w )NzUnversioned function called and the pyNVML version does not match the NVML lib version. Either use matching pyNVML and NVML lib versions or use a versioned function such as _v2)NVMLError_FunctionNotFoundr
  r  )rF  r  r  r  r  r  Q  s   z'throwOnVersionMismatch.<locals>.wrapperr   r  r  r  r  throwOnVersionMismatchP  s   r  c                 C   s:   t   td}|| }t| t  td7 at  d S )NnvmlInitWithFlagsr   )_LoadNvmlLibraryre  r]  r_  r`  _nvmlLib_refcountrb  )r  r  r\  r  r  r  r  ]  s   r  c                   C   s   t d d S rk  )r  r  r  r  r  nvmlInitn  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)ra  r_  r`  rK  platformCDLLospathr  getenvOSErrorr]  r2  rb  )oser  r  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   )re  r]  r_  r`  r  rb  )r  r\  r  r  r  r    s   r  c                 C   s   t d}t|_|| }|S )Nr  )re  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_SIZEre  r  r]  r  	c_versionr  r\  r  r  r  r	    
   r	  c                  C   (   t  } td}|t| }t| | jS )NnvmlSystemGetCudaDriverVersionr  re  r  r]  r  c_cuda_versionr  r\  r  r  r  r    
   r  c                  C   r  )N!nvmlSystemGetCudaDriverVersion_v2r  r  r  r  r  r    r  r  c                 C   s2   t d}td}|t| |td}t| |jS )Nr  nvmlSystemGetProcessName)r
  re  r  r]  r  )r  c_namer  r\  r  r  r  r    
   r  c                  C   r  )NnvmlSystemGetDriverVersion)r
  r  re  r  r]  r  r  r  r  r  r    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)	r  re  r  r[  r-  r  r  r  r]  )c_counthicsr  r\  	hic_arrayr  r  r  r    s   

r  c                  C   s4   t d} t| _td}|t| tt}t| | S )Nr   nvmlSystemGetDriverBranch)r  SystemDriverBranchInfo_v1r  re  r  r  r  r]  )c_branchInfor  r\  r  r  r  r    s   r  c                  C   r  )NnvmlUnitGetCountr  re  r  r]  r  r  r  r\  r  r  r  r!    r  r!  c                 C   0   t | }t }td}||t|}t| |S )NnvmlUnitGetHandleByIndex)r  c_nvmlUnit_tre  r  r]  )r  c_indexunitr  r\  r  r  r  r%       r%  c                 C   (   t  }td}|| t|}t| |S )NnvmlUnitGetUnitInfo)r  re  r  r]  r(  r  r  r\  r  r  r  r+    
   r+  c                 C   r*  )NnvmlUnitGetLedState)r  re  r  r]  )r(  c_stater  r\  r  r  r  r.    r-  r.  c                 C   r*  )NnvmlUnitGetPsuInfo)r  re  r  r]  r,  r  r  r  r0    r-  r0  c                 C   s0   t  }td}|| t |t|}t| |jS )NnvmlUnitGetTemperaturer"  )r(  rR  c_tempr  r\  r  r  r  r1    
   r1  c                 C   r*  )NnvmlUnitGetFanSpeedInfo)r  re  r  r]  )r(  c_speedsr  r\  r  r  r  r4     r-  r4  c                 C   s:   t d}td}|| t|d }|tkrt}t| |jS )Nr   nvmlUnitGetDevices)r  re  r  r-  r[  r]  r  )r(  r  r  r\  r  r  r  nvmlUnitGetDeviceCount(  s   r7  c                 C   s@   t t| }t|j }| }td}|| t||}t| |S )Nr6  )r  r7  r  r  re  r  r]  )r(  r  device_array	c_devicesr  r\  r  r  r  r6  2  s   
r6  c                  C   r  )NnvmlDeviceGetCount_v2r"  r#  r  r  r  nvmlDeviceGetCount<  r  r;  c                 C   r$  )NnvmlDeviceGetHandleByIndex_v2r  r  re  r  r]  )r  r'  r  r  r\  r  r  r  nvmlDeviceGetHandleByIndexC  r)  r>  c                 C   r$  )NnvmlDeviceGetHandleBySerialr  r  re  r  r]  )r  c_serialr  r  r\  r  r  r  r?  L  s   r?  c                 C   r$  )NnvmlDeviceGetHandleByUUIDr@  )r  c_uuidr  r  r\  r  r  r  rB  V     rB  c                 C   sb   t  }||_|tkr| |j_n|tkrt|jj| t t	 }t
d}|t|t|}t| |S )NnvmlDeviceGetHandleByUUIDV)r  rR  NVML_UUID_TYPE_ASCIIr  r  NVML_UUID_TYPE_BINARYmemmovern  r  r  re  r  r]  )r  rR  rC  r  r  r\  r  r  r  rE  _  s   
rE  c                 C   r$  )N nvmlDeviceGetHandleByPciBusId_v2r@  )pciBusIdc_busIdr  r  r\  r  r  r  nvmlDeviceGetHandleByPciBusIdm  rD  rL  c                 C   .   t t}td}|| |tt}t| |jS )NnvmlDeviceGetName)r
  r  re  r  r]  r  )r  r  r  r\  r  r  r  rN  v  
   rN  c                   @   r  )c_nvmlDevicePerfModes_v1_tr  r  Nr  r  r  r  r  NVML_PERF_MODES_BUFFER_SIZErl  r  r  r  r  rP  ~  r  rP  i c                 C   0   t  }t|_td}|| t|}t| |jS )NnvmlDeviceGetPerformanceModes)rP  nvmlDevicePerfModes_v1r  re  r  r]  r  )r  	perfModesr  r\  r  r  r  rT       rT  c                   @   r  )"c_nvmlDeviceCurrentClockFreqs_v1_tr  r  NrQ  r  r  r  r  rX    r  rX  c                 C   rS  )NnvmlDeviceGetCurrentClockFreqs)rX  nvmlDeviceCurrentClockFreqs_v1r  re  r  r]  r  )r  currentClockFreqsr  r\  r  r  r  rY    rW  rY  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_tre  r  r]  r  )r  c_typer  r\  r  r  r  rb    r_  rb  c                 C   r*  )NnvmlDeviceGetC2cModeInfoV)r  re  r  r]  r  r  r  r  nvmlDeviceGetC2cModeInfoV1  r-  rf  c                 C      t | S r"  )rf  r  r  r  r  re       re  c                 C   rM  )NnvmlDeviceGetBoardPartNumber)r
  #NVML_DEVICE_PART_NUMBER_BUFFER_SIZEre  r  r]  r  )r  c_part_numberr  r\  r  r  r  rj    rO  rj  c                 C   rM  )NnvmlDeviceGetSerial)r
  NVML_DEVICE_SERIAL_BUFFER_SIZEre  r  r]  r  )r  rA  r  r\  r  r  r  rm    rO  rm  c                 C   sD   t |tu}|r
|nt|}td}|| |}|r|S t| |jS )NnvmlDeviceGetModuleId)rR  r  r  re  r]  r  )r  moduleIdisReferencemoduleIdRefr  r\  r  r  r  ro    s   
ro  c                 C   8   t | }| }td}|| |t|t|}t| |S )NnvmlDeviceGetMemoryAffinityr  re  r  _nvmlAffinityScope_tr]  )r  nodeSetSizescopeaffinity_array
c_affinityr  r\  r  r  r  rt       rt  c                 C   rs  )N#nvmlDeviceGetCpuAffinityWithinScoperu  )r  
cpuSetSizerx  ry  rz  r  r\  r  r  r  r|    r{  r|  c                 C   s2   t | }| }td}|| |t|}t| |S )NnvmlDeviceGetCpuAffinity)r  re  r  r]  )r  r}  ry  rz  r  r\  r  r  r  r~       r~  c                 C      t d}|| }t| d S )NnvmlDeviceSetCpuAffinityr  r  r  r\  r  r  r  r       r  c                 C   r  )NnvmlDeviceClearCpuAffinityr  r  r  r  r  r    r  r  c                 C   *   t d}t }|| t|}t| |jS )NnvmlDeviceGetNumaNodeIdre  r  r  r]  r  )r  r  noder\  r  r  r  r    
   r  c                 C   r\  )NnvmlDeviceGetAddressingMode)r  re  r  r]  r  )r  c_moder  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   rM  )NnvmlDeviceGetUUID)r
  NVML_DEVICE_UUID_V2_BUFFER_SIZEre  r  r]  r  )r  rC  r  r\  r  r  r  r    rO  r  c                 C   s4   t t}td}|| t||tt}t| |jS )NnvmlDeviceGetInforomVersion)r
  'NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZEre  _nvmlInforomObject_tr  r]  r  )r  infoRomObjectr  r  r\  r  r  r  r    s   
r  c                 C   rM  )N nvmlDeviceGetInforomImageVersion)r
  r  re  r  r]  r  r  r  r  r\  r  r  r  r  %  rO  r  c                 C   r\  )N)nvmlDeviceGetInforomConfigurationChecksumr"  )r  
c_checksumr  r\  r  r  r  r  .  r_  r  c                 C   r  )NnvmlDeviceValidateInforomr  r  r  r  r  r  6  r  r  c                 C   s<   t  }t }td}|| t|t|}t| |j|jgS )NnvmlDeviceGetLastBBXFlushTime)r  r  re  r  r]  r  )r  c_timestampc_durationUsr  r\  r  r  r  r  <     r  c                 C   r\  )NnvmlDeviceGetDisplayMode_nvmlEnableState_tre  r  r]  r  r  r  r  r\  r  r  r  r  D  r_  r  c                 C   r\  )NnvmlDeviceGetDisplayActiver  r  r  r  r  r  K  r_  r  c                 C   r\  )NnvmlDeviceGetPersistenceModer  )r  r/  r  r\  r  r  r  r  S  r_  r  c                 C      t d}|| |}t| d S )NnvmlDeviceGetPciInfoExtr  r  r  r  r  r  Z     
r  c                 C   r*  )NnvmlDeviceGetPciInfo_v3r  re  r  r]  r  r  r  r  r  `  r-  r  c                 C   rg  r"  )r  rh  r  r  r  nvmlDeviceGetPciInfog  ri  r  c                 C   0   t  }td}|| t|t|}t| |jS )NnvmlDeviceGetClockInfor  re  _nvmlClockType_tr  r]  r  r  rR  c_clockr  r\  r  r  r  r  j  r3  r  c                 C   r  )NnvmlDeviceGetMaxClockInfor  r  r  r  r  r  r  r3  r  c                 C   r  )NnvmlDeviceGetApplicationsClockr  r  r  r  r  r  {  r3  r  c                 C   r  )N"nvmlDeviceGetMaxCustomerBoostClockr  r  r  r  r  r    r3  r  c                 C   6   t  }td}|| t|t|t|}t| |jS )NnvmlDeviceGetClock)r  re  r  _nvmlClockId_tr  r]  r  )r  rR  r  r  r  r\  r  r  r  r    s
   r  c                 C   r  )N%nvmlDeviceGetDefaultApplicationsClockr  r  r  r  r  r    r3  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  re  r  r[  r-  r  r]  r  r~  r  )r  r  r  r\  clocks_arrayc_clocksprocsr  r  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  r  r  r  r  r  r    s   
r  c                 C   r\  )NnvmlDeviceGetFanSpeedr"  )r  c_speedr  r\  r  r  r  r    r_  r  c                 C   ,   t  }td}|| |t|}t| |jS )NnvmlDeviceGetFanSpeed_v2r"  r  fanr  r  r\  r  r  r  r    
   r  c                   @   re  )c_nvmlFanSpeedInfo_tr  r  r  Nr  r  r  r  r  r    r}  r  c                 C   s6   t  }d|_t|_td}|| t|}t| |jS )Nr   nvmlDeviceGetFanSpeedRPM)r  r  nvmlFanSpeedInfo_v1r  re  r  r]  r  )r  
c_fanSpeedr  r\  r  r  r  r    s   r  c                 C   r  )NnvmlDeviceGetTargetFanSpeedr"  r  r  r  r  r    r  r  c                 C   r\  )NnvmlDeviceGetNumFansr"  )r  	c_numFansr  r\  r  r  r  r    r_  r  c                 C      t d}|| |}t| tS )NnvmlDeviceSetDefaultFanSpeed_v2re  r]  r[  )r  r  r  r\  r  r  r  r    r  r  c                 C   sh   t |tupt |tu}|r|nt|}|r|nt|}td}|| ||}t| |r.tS |j|jgS )NnvmlDeviceGetMinMaxFanSpeedrR  r  r  re  r]  r[  r  )r  minSpeedmaxSpeedrq  minSpeedRefmaxSpeedRefr  r\  r  r  r  r       r  c                 C   sF   t |tu}|r
|nt|}td}|| ||}t| |r tS |jS )N nvmlDeviceGetFanControlPolicy_v2r  )r  r  fanControlPolicyrq  fanControlPolicyRefr  r\  r  r  r  r    s   r  c                 C   s$   t d}|| |t|}t| tS )NnvmlDeviceSetFanControlPolicy)re  _nvmlFanControlPolicy_tr]  r[  )r  r  r  r  r\  r  r  r  r       r  c                   @   rx  )c_nvmlTemperature_v1_tr  
sensorTypetemperatureN)r  r  r  r  _nvmlTemperatureSensors_tr  rl  r  r  r  r  r    r}  r  c                 C   s:   t  }t|_t||_td}|| t|}t| |jS )NnvmlDeviceGetTemperatureV)	r  nvmlTemperature_v1r  r  r  re  r  r]  r  r  r  r2  r  r\  r  r  r  nvmlDeviceGetTemperatureV1$  s   
r  c                 C   s   |t kr	t| |S ttr"  )r  r  r  r  )r  r  r  r  r  r  r  -  s   
r  c                 C   r  )NnvmlDeviceGetTemperature)r  re  r  r  r]  r  r  r  r  r  r  4  r3  r  c                 C   r  )N!nvmlDeviceGetTemperatureThreshold)r  re  _nvmlTemperatureThresholds_tr  r]  r  )r  	thresholdr2  r  r\  r  r  r  r  ;  r3  r  c                 C   s4   t  }||_td}|| t|t|}t| d S )N!nvmlDeviceSetTemperatureThreshold)r  r  re  r  r  r]  )r  r  tempr2  r  r\  r  r  r  r  B  s   r  c                 C   rS  )NnvmlDeviceGetMarginTemperature)r  nvmlMarginTemperature_v1r  re  r  r]  r  )r  c_marginTempInfor  r\  r  r  r  r  J  s   r  c                 C   r\  )NnvmlDeviceGetPowerState_nvmlPstates_tre  r  r]  r  r  c_pstater  r\  r  r  r  r  S  r_  r  c                 C   r\  )NnvmlDeviceGetPerformanceStater  r  r  r  r  r  Z  r_  r  c                 C   r\  )N nvmlDeviceGetPowerManagementModer  )r  
c_pcapModer  r\  r  r  r  r  b  r_  r  c                 C   r\  )N!nvmlDeviceGetPowerManagementLimitr"  r  c_limitr  r\  r  r  r  r  i  r_  r  c                 C   <   t  }t  }td}|| t|t|}t| |j|jgS )N,nvmlDeviceGetPowerManagementLimitConstraintsr"  )r  
c_minLimit
c_maxLimitr  r\  r  r  r  r  q  r  r  c                 C   r\  )N(nvmlDeviceGetPowerManagementDefaultLimitr"  r  r  r  r  r  z  r_  r  c                 C   r\  )NnvmlDeviceGetEnforcedPowerLimitr"  r  r  r  r  r    r_  r  c                 C   r\  )NnvmlDeviceGetPowerUsager"  )r  c_wattsr  r\  r  r  r  r    r_  r  c                 C   r\  )N#nvmlDeviceGetTotalEnergyConsumption)c_uint64re  r  r]  r  )r  c_millijoulesr  r\  r  r  r  r    r_  r  c                 C   r  )NnvmlDeviceGetGpuOperationMode)_nvmlGpuOperationMode_tre  r  r]  r  r  c_currStatec_pendingStater  r\  r  r  r  r    r  r  c                 C      t | d S rk  r  rh  r  r  r  $nvmlDeviceGetCurrentGpuOperationMode  r%  r	  c                 C   r  Nr   r  rh  r  r  r  $nvmlDeviceGetPendingGpuOperationMode  r%  r  c                 C   sB   |s
t  }td}n
t }||_td}|| t|}t| |S )NnvmlDeviceGetMemoryInfonvmlDeviceGetMemoryInfo_v2)r  re  r  r  r  r]  )r  r  c_memoryr  r\  r  r  r  r    s   
r  c                 C   r*  )NnvmlDeviceGetBAR1MemoryInfo)r  re  r  r]  )r  c_bar1_memoryr  r\  r  r  r  r    r-  r  c                 C   r\  )NnvmlDeviceGetComputeMode)_nvmlComputeMode_tre  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    r  r  c                 C   r  )NnvmlDeviceGetEccModer  r  r  r  r  r    r  r  c                 C   r  rk  r  rh  r  r  r  nvmlDeviceGetCurrentEccMode  r%  r  c                 C   r  r
  r  rh  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   r  )NnvmlDeviceGetTotalEccErrors)r  re  _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  re  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)r  re  r  r  _nvmlMemoryLocation_tr  r]  r  )r  r  r   locationTyper  r  r\  r  r  r  r#    s   r#  c                 C   r*  )NnvmlDeviceGetUtilizationRates)r  re  r  r]  )r  c_utilr  r\  r  r  r  r&    r-  r&  c                 C   r  )NnvmlDeviceGetEncoderUtilizationr"  r  r'  c_samplingPeriodr  r\  r  r  r  r(    r  r(  c                 C   r  )NnvmlDeviceGetDecoderUtilizationr"  r)  r  r  r  r+    r  r+  c                 C   r  )NnvmlDeviceGetJpgUtilizationr"  r)  r  r  r  r,    r  r,  c                 C   r  )NnvmlDeviceGetOfaUtilizationr"  r)  r  r  r  r-    r  r-  c                 C   r\  )NnvmlDeviceGetPcieReplayCounterr"  )r  c_replayr  r\  r  r  r  r.  &  r_  r.  c                 C   r  )NnvmlDeviceGetDriverModel_nvmlDriverModel_tre  r  r]  r  r  c_currModelc_pendingModelr  r\  r  r  r  nvmlDeviceGetDriverModel_v1-  r  r6  c                 C   r  )NnvmlDeviceGetDriverModel_v2r1  r3  r  r  r  r7  5  r  r7  c                 C   rg  r"  )r7  rh  r  r  r  r0  =  ri  r0  c                 C   r  rk  r0  rh  r  r  r  nvmlDeviceGetCurrentDriverModelA  r%  r9  c                 C   r  r
  r8  rh  r  r  r  nvmlDeviceGetPendingDriverModelE  r%  r:  c                 C   rM  )NnvmlDeviceGetVbiosVersion)r
  %NVML_DEVICE_VBIOS_VERSION_BUFFER_SIZEre  r  r]  r  r  r  r  r  r;  I  rO  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  re  r  r[  r-  r  r  r]  r  rs  r  "NVML_VALUE_NOT_AVAILABLE_ulonglongr~  r  	r  r  r  r\  
proc_arrayc_procsr  r  r  r  r  r  r>  R  &   
r>  c           	      C   r=  )Nr   'nvmlDeviceGetComputeRunningProcesses_v3r   r
   r  re  r  r[  r-  r  c_nvmlProcessInfo_v3_tr]  r  rs  r  r@  r~  r  rA  r  r  r  rE  q  &   
rE  c                 C   rg  r"  )rE  rh  r  r  r  $nvmlDeviceGetComputeRunningProcesses     rI  c           	      C   r=  )Nr   (nvmlDeviceGetGraphicsRunningProcesses_v2r   r
   r?  rA  r  r  r  rK    rD  rK  c           	      C   r=  )Nr   (nvmlDeviceGetGraphicsRunningProcesses_v3r   r
   rF  rA  r  r  r  rL    rH  rL  c                 C   rg  r"  )rL  rh  r  r  r  %nvmlDeviceGetGraphicsRunningProcesses  rJ  rM  c                 C   rg  r"  )*nvmlDeviceGetMPSComputeRunningProcesses_v3rh  r  r  r  'nvmlDeviceGetMPSComputeRunningProcesses  rJ  rO  c           	      C   r=  )Nr   *nvmlDeviceGetMPSComputeRunningProcesses_v2r   r
   r?  rA  r  r  r  rP    rH  rP  c           	      C   r=  )Nr   rN  r   r
   rF  rA  r  r  r  rN    rH  rN  c           
      C   s   t  }||_||_td}|| t|}|tkrg S |tkr_t|j }t	| t
t|_|| t|}t| g }t|jD ]}|j| }	|	jtjkrNd |	_|	jtjkrWd |	_||	 q>|S t|)N%nvmlDeviceGetRunningProcessDetailList)c_nvmlProcessDetailList_tr  r  re  r  r[  r-  r  r  castr  r  r]  r  r  r@  r  r  r~  r  )
r  r  r  c_processDetailListr  r\  rC  r  r  r  r  r  r  rQ  #  s,   

rQ  c                 C   r  )N%nvmlDeviceGetAutoBoostedClocksEnabledr  )r  c_isEnabledc_defaultIsEnabledr  r\  r  r  r  rU  F  r  rU  c                 C   r  )NnvmlUnitSetLedState)re  r  r]  )r(  r  r  r\  r  r  r  rX  P     rX  c                 C   r  )NnvmlDeviceSetPersistenceModere  r  r]  r  r  r  r\  r  r  r  rZ  V  rY  rZ  c                 C   r  )NnvmlDeviceSetComputeMode)re  r  r]  r\  r  r  r  r]  \  rY  r]  c                 C   r  )NnvmlDeviceSetEccModer[  r\  r  r  r  r^  b  rY  r^  c                 C   r  )NnvmlDeviceClearEccErrorCounts)re  r  r]  )r  r   r  r\  r  r  r  r_  h  rY  r_  c                 C   r  )NnvmlDeviceSetDriverModel)re  r2  r]  )r  rv  r  r\  r  r  r  r`  n  rY  r`  c                 C   r  )N%nvmlDeviceSetAutoBoostedClocksEnabledr[  )r  enabledr  r\  r  r  r  ra  t  rY  ra  c                 C   (   t d}|| t|t|}t| d S )N,nvmlDeviceSetDefaultAutoBoostedClocksEnabled)re  r  r  r]  )r  rb  r  r  r\  r  r  r  rd  {     rd  c                 C   (   t d}|| t|t|}t| d S )NnvmlDeviceSetGpuLockedClocksre  r  r]  )r  minGpuClockMHzmaxGpuClockMHzr  r\  r  r  r  rg    re  rg  c                 C   r  )NnvmlDeviceResetGpuLockedClocksr  r  r  r  r  rk    r  rk  c                 C   rf  )NnvmlDeviceSetMemoryLockedClocksrh  )r  minMemClockMHzmaxMemClockMHzr  r\  r  r  r  rl    re  rl  c                 C   r  )N!nvmlDeviceResetMemoryLockedClocksr  r  r  r  r  ro    r  ro  c                 C   B   t |tu}|r
|nt|}td}|| |}t| |rtS |S )NnvmlDeviceGetClkMonStatus)rR  r  r  re  r]  r[  )r  c_clkMonInforq  c_clkMonInfoRefr  r\  r  r  r  rq    s   
rq  c                 C   rf  )NnvmlDeviceSetApplicationsClocksrh  )r  rn  maxGraphicsClockMHzr  r\  r  r  r  rt    re  rt  c                 C   r  )N!nvmlDeviceResetApplicationsClocksr  r  r  r  r  rv    r  rv  c                 C   r  )N!nvmlDeviceSetPowerManagementLimitrh  )r  limitr  r\  r  r  r  rw    rY  rw  c                 C   r  )NnvmlDeviceSetGpuOperationMode)re  r  r]  r\  r  r  r  ry    rY  ry  c                  C   s&   t d} t }| t|}t| |S )NnvmlEventSetCreate)re  c_nvmlEventSet_tr  r]  )r  eventSetr\  r  r  r  rz    s
   rz  c                 C   s$   t d}|| t||}t| d S )NnvmlDeviceRegisterEvents)re  r  r]  )r  r  r|  r  r\  r  r  r  r}    r  r}  c                 C   r\  )N nvmlDeviceGetSupportedEventTypesr  re  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)re  r  r  r  r]  )r|  r   r  r  r\  r  r  r  r    s
   r  c                 C   s
   t | |S r"  )r  )r|  r   r  r  r  nvmlEventSetWait  rj  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  )handle1handle2r  onSameBoardr\  r  r  r  r    s
   
r  c                 C   r  )N#nvmlDeviceGetCurrPcieLinkGenerationre  r  r  r]  r  r  r  genr\  r  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    r  r  c                 C   r  )NnvmlDeviceGetMaxPcieLinkWidthr  r  r  r  r  r  
  r  r  c                 C   r  )N%nvmlDeviceGetGpuMaxPcieLinkGenerationr  r  r  r  r  r    r  r  c                 C   r\  )N+nvmlDeviceGetSupportedClocksThrottleReasonsr  r  	c_reasonsr  r\  r  r  r  r    r_  r  c                 C   r\  )N(nvmlDeviceGetSupportedClocksEventReasonsr  r  r  r  r  r  !  r_  r  c                 C   r\  )N)nvmlDeviceGetCurrentClocksThrottleReasonsr  r  r  r  r  r  *  r_  r  c                 C   r\  )N&nvmlDeviceGetCurrentClocksEventReasonsr  r  r  r  r  r  1  r_  r  c                 C   r  )NnvmlDeviceGetIndexr  )r  r  r'  r\  r  r  r  r  9  r  r  c                 C   r\  )NnvmlDeviceGetAccountingModer  r  r  r  r  r  A  r_  r  c                 C   r  )NnvmlDeviceSetAccountingModer[  r\  r  r  r  r  H  rY  r  c                 C   r  )NnvmlDeviceClearAccountingPidsr  r  r  r  r  r  N  r  r  c                 C   s@   t  }td}|| t|t|}t| |jtjkrd |_|S )NnvmlDeviceGetAccountingStats)r  re  r  r  r]  r  r@  r  )r  r  statsr  r\  r  r  r  r  T  s   r  c                 C   sP   t t| }t |j  }td}|| t||}t| ttt|d|j S )NnvmlDeviceGetAccountingPidsr   )	r  !nvmlDeviceGetAccountingBufferSizer  re  r  r]  listmapint)r  r  pidsr  r\  r  r  r  r  ^  s   r  c                 C   .   t  }td}|| t|}t| t|jS )Nr  )r  re  r  r]  r  r  )r  
bufferSizer  r\  r  r  r  r  f  
   
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  re  r  r[  r-  r  r  r  r]  r  r  r  )r  sourceFilterc_sourcer  r  r\  
page_arrayc_pagesr  r  r  r  m  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  rB    s   & z0nvmlDeviceGetRetiredPages_v2.<locals>.<listcomp>)r  r  re  r  r[  r-  r  r  r  r]  r  )r  r  r  r  r  r\  r  times_arrayr  r  r  r    s   

r  c                 C   r  )N&nvmlDeviceGetRetiredPagesPendingStatus)r  re  r  r]  r  r  )r  	c_pendingr  r\  r  r  r  r    r  r  c                 C   s4   t  }td}|| t|t|}t| t|jS )NnvmlDeviceGetAPIRestriction)r  re  _nvmlRestrictedAPI_tr  r]  r  r  )r  apiTypec_permissionr  r\  r  r  r  r    s
   
r  c                 C   rc  )NnvmlDeviceSetAPIRestriction)re  r  r  r]  )r  r  isRestrictedr  r\  r  r  r  r    re  r  c                 C   r*  )NnvmlDeviceGetBridgeChipInfo)r  re  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_tr  r  r/  re  r  r[  r  r  r   r]  )r  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#  re  r  r]  )r  perfPolicyTypec_perfPolicy_type
c_violTimer  r\  r  r  r  r    s   r  c                 C   r  )NnvmlDeviceGetPcieThroughput)r  re  _nvmlPcieUtilCounter_tr  r]  r  )r  counterr'  r  r\  r  r  r  r    r3  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  re  r  r[  r  r  r  r]  r  )	cpuNumberr  r  r\  r8  r9  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  )r  levelr  r  r\  r8  r9  r  r  r  r    s   
r  c                 C   r  )N#nvmlDeviceGetTopologyCommonAncestor)_nvmlGpuTopologyLevel_tre  r  r]  r  )device1device2c_levelr  r\  r  r  r  r    r  r  c                 C   s@   t  }t  }td}|| ||t|t|}t| |j|jfS )N%nvmlDeviceGetNvLinkUtilizationCounterr  )r  linkr  c_rxcounterc_txcounterr  r\  r  r  r  r    s   r  c                 C   s"   t d}|| |||}t| d S )N(nvmlDeviceFreezeNvLinkUtilizationCounterr  )r  r  r  freezer  r\  r  r  r  r    rY  r  c                 C   s    t d}|| ||}t| d S )N'nvmlDeviceResetNvLinkUtilizationCounterr  )r  r  r  r  r\  r  r  r  r       r  c                 C   s(   t d}|| ||t||}t| d S )N%nvmlDeviceSetNvLinkUtilizationControlr  )r  r  r  controlresetr  r\  r  r  r  r    re  r  c                 C   ,   t  }td}|| ||t|}t| |S )N%nvmlDeviceGetNvLinkUtilizationControl)r  re  r  r]  )r  r  r  	c_controlr  r\  r  r  r  r  %  
   r  c                 C   .   t  }td}|| ||t|}t| |jS )NnvmlDeviceGetNvLinkCapabilityr"  )r  r  
capabilityc_capResultr  r\  r  r  r  r  ,  
   r  c                 C   r  )NnvmlDeviceGetNvLinkErrorCounterr  )r  r  r  c_resultr  r\  r  r  r  r  3  r  r  c                 C   r  )N"nvmlDeviceResetNvLinkErrorCountersr  )r  r  r  r\  r  r  r  r  :  r  r  c                 C   *   t  }td}|| |t|}t| |S )N#nvmlDeviceGetNvLinkRemotePciInfo_v2r  )r  r  c_pcir  r\  r  r  r   nvmlDeviceGetNvLinkRemotePciInfo@  
   r  c                 C   r  )N#nvmlDeviceGetNvLinkRemoteDeviceType)_nvmlNvLinkDeviceType_tre  r  r]  r  )r  r  rd  r  r\  r  r  r  r  G  r  r  c                 C   r  )NnvmlDeviceGetNvLinkStater"  )r  r  
c_isActiver  r\  r  r  r  r  N  r  r  c                 C   r  )NnvmlDeviceGetNvLinkVersionr"  )r  r  r  r  r\  r  r  r  r  U  r  r  c                 C   s"   t d}|t| |}t| d S )NnvmlDeviceModifyDrainStatere  pointerr]  )pciInfonewStater  r\  r  r  r  r  \  rY  r  c                 C   .   t  }td}|t| t|}t| |jS )NnvmlDeviceQueryDrainState)r  re  r  r  r]  r  )r  
c_newStater  r\  r  r  r  r  b  r  r  c                 C       t d}|t| }t| d S )NnvmlDeviceRemoveGpur  r  r  r\  r  r  r  r  i  r  r  c                 C   r  )NnvmlDeviceDiscoverGpusr  r  r  r  r  r  o  r  r  c              	   C      t t| }| }td}t|D ]\}}z|\|| _|| _W q ty/   ||| _Y qw || tt|t|}t	| |S )NnvmlDeviceGetFieldValues
r&  lenre  	enumerater'  r(  	TypeErrorc_int32r  r]  r  fieldIds
values_arrvaluesr  r  r'  r\  r  r  r  r  u     r  c              	   C   r  )NnvmlDeviceClearFieldValuesr  r  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nvmlDeviceSetVirtualizationModere  )r  virtualization_moder  r  r  r  r       
r  c                 C   2   t d}t|_td}|| t|}t| |jS )Nr   "nvmlDeviceGetVgpuHeterogeneousModerD  VgpuHeterogeneousMode_v1r  re  r  r]  r  )r  c_vgpuHeterogeneousModer  r\  r  r  r  r       r  c                 C   6   t d}t|_||_td}|| t|}t| tS )Nr   "nvmlDeviceSetVgpuHeterogeneousModerD  r  r  r  re  r  r]  r[  )r  heterogeneous_moder  r  r\  r  r  r  r        r   c                 C   r  )Nr   nvmlVgpuInstanceGetPlacementId)rE  VgpuPlacementId_v1r  re  r  r]  rF  )rR  c_placementr  r\  r  r  r  r$    r  r$  c           	      C   s   t d}td}|| |t|}t| |dkr&t }t|_|j|_||_	n|dkr1t
 }t|_nttt |j }| |_td}|| |t|}t| |S )Nr   nvmlVgpuTypeGetMaxInstancesr   r   (nvmlDeviceGetVgpuTypeSupportedPlacements)r  re  r  r]  rM  VgpuPlacementList_v2r  r  r  r  rG  VgpuPlacementList_v1r  r  rI  )	r  rg  r  r  c_max_instancesr  r\  c_vgpu_placementsc_placementsr  r  r  r(    s&   
r(  c                 C   s   t d}td}|| |t|}t| |dkr#t }t|_|j|_n
|dkr-t	 }t
|_t |j }| |_td}|| |t|}t| |S )Nr   r'  r   r   (nvmlDeviceGetVgpuTypeCreatablePlacements)r  re  r  r]  rM  r)  r  r  r  rG  r*  rI  )r  rg  r  r+  r  r\  r,  r-  r  r  r  r.    s"   

r.  c                 C   r  )NnvmlGetVgpuDriverCapabilities)r  re  _nvmlVgpuDriverCapability_tr  r]  r  )r  r  r  r\  r  r  r  r/    r  r/  c                 C   r  )NnvmlDeviceGetVgpuCapabilities)r  re  _nvmlDeviceVgpuCapability_tr  r]  r  )r  r  r  r  r\  r  r  r  r1    r3  r1  c                 C   s$   t d}|| t||}t| tS )NnvmlDeviceSetVgpuCapabilities)re  r2  r]  r[  )r  r  r  r  r\  r  r  r  r3    r  r3  c                 C      t d}|| }t| tS )NnvmlDeviceVgpuForceGspUnloadr  r  r  r  r  r5    r  r5  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  re  r  r[  r-  _nvmlVgpuTypeId_tr  r]  r  r~  r  r  c_vgpu_countr  r\  vgpu_type_ids_arrayc_vgpu_type_idsvgpusr  r  r  r  r7       
r7  c                 C   r6  )Nr   nvmlDeviceGetCreatableVgpusr8  r:  r  r  r  r@    r?  r@  c                 C   ,   t d}td}|| t|}t| |jS )Nr   #nvmlVgpuTypeGetGpuInstanceProfileIdr"  )rg  c_profile_idr  r\  r  r  r  rB  2  
   rB  c                 C   6   t t}tt}td}|| |t|}t| |jS )NnvmlVgpuTypeGetClassr
  NVML_DEVICE_NAME_BUFFER_SIZEr  re  r  r]  r  )rg  c_classc_buffer_sizer  r\  r  r  r  rF  9     rF  c                 C   rE  )NnvmlVgpuTypeGetNamerG  )rg  r  rJ  r  r\  r  r  r  rL  B  rK  rL  c                 C   s@   t d}t d}td}|| t|t|}t| |j|jfS )Nr   nvmlVgpuTypeGetDeviceIDr  )rg  c_device_idc_subsystem_idr  r\  r  r  r  rM  K  s   rM  c                 C   rA  )Nr   nvmlVgpuTypeGetFramebufferSizer  )rg  	c_fb_sizer  r\  r  r  r  rP  S  rD  rP  c                 C   rA  )Nr   nvmlVgpuTypeGetNumDisplayHeadsr"  )rg  c_num_headsr  r\  r  r  r  rR  Z  rD  rR  c                 C   sB   t d}t d}td}|| dt|t|}t| |j|jfS )Nr   nvmlVgpuTypeGetResolutionr"  )rg  c_xdimc_ydimr  r\  r  r  r  rT  a  s   rT  c                 C   s2   t t}tt}td}|| ||}t| |jS )NnvmlVgpuTypeGetLicense)r
  r  r  re  r]  r  )rg  	c_licenserJ  r  r\  r  r  r  rW  i  s   rW  c                 C   rA  )Nr   nvmlVgpuTypeGetFrameRateLimitr"  )rg  c_frl_configr  r\  r  r  r  rY  r  rD  rY  c                 C   rA  )Nr   nvmlVgpuTypeGetGspHeapSizer"  )rg  
c_gsp_heapr  r\  r  r  r  r[  y  rD  r[  c                 C   rA  )Nr   nvmlVgpuTypeGetFbReservationr"  )rg  c_fb_reservationr  r\  r  r  r  r]    rD  r]  c                 C   .   t  }t|_td}|| t|}t| |S )N#nvmlVgpuInstanceGetRuntimeStateSize)rk  VgpuRuntimeState_v1r  re  r  r]  )rR  c_runtime_stater  r\  r  r  r  r`       r`  c                 C   s.   t d}td}|| |t|}t| |jS )Nr   r'  r"  )r  rg  r+  r  r\  r  r  r  r'    s
   r'  c                 C   rA  )Nr    nvmlVgpuTypeGetMaxInstancesPerVmr"  )rg  c_max_instances_per_vmr  r\  r  r  r  rd    rD  rd  c                 C   s0   t d}t|_td}|| t|}t| |S )Nr   nvmlVgpuTypeGetBAR1Info)rO  VgpuTypeBar1Info_v1r  re  r  r]  )rg  
c_bar1Infor  r\  r  r  r  rf    r)  rf  c                 C   r6  )Nr   nvmlDeviceGetActiveVgpus)r  re  r  r[  r-  rW  r  r]  r  r~  r  )r  r;  r  r\  vgpu_instance_arrayc_vgpu_instancesr>  r  r  r  r  ri    r?  ri  c                 C   sJ   t t}tt}td}td}|| t||t|}t| |j|jfS )Nr   nvmlVgpuInstanceGetVmID)r
  r  r  r  re  r  r]  r  )rR  c_vm_idrJ  c_vm_id_typer  r\  r  r  r  rl    s   rl  c                 C   6   t t}tt}td}|| t||}t| |jS )NnvmlVgpuInstanceGetUUIDr
  r  r  re  r  r]  r  rR  rC  rJ  r  r\  r  r  r  rp    rK  rp  c                 C   ro  )NnvmlVgpuInstanceGetMdevUUIDrq  rr  r  r  r  rs    rK  rs  c                 C   ro  )N"nvmlVgpuInstanceGetVmDriverVersion)r
  r  r  re  r  r]  r  )rR  c_driver_versionrJ  r  r\  r  r  r  rt    rK  rt  c                 C   rA  )Nr    nvmlVgpuInstanceGetLicenseStatusr"  )rR  c_license_statusr  r\  r  r  r  rv    rD  rv  c                 C   s(   t d}t }|| t|}t| |S )N!nvmlVgpuInstanceGetLicenseInfo_v2)re  ry  r  r]  )rR  r  c_license_infor\  r  r  r  rx    s
   rx  c                 C   rg  r"  )rx  )rR  r  r  r  nvmlVgpuInstanceGetLicenseInfo  ri  rz  c                 C   rA  )Nr   !nvmlVgpuInstanceGetFrameRateLimitr"  )rR  c_frlr  r\  r  r  r  r{    rD  r{  c                 C   r\  )NnvmlVgpuInstanceGetEccModer  rR  r  r  r\  r  r  r  r}    r_  r}  c                 C   rA  )Nr   nvmlVgpuInstanceGetTyper"  )rR  c_vgpu_typer  r\  r  r  r  r    rD  r  c                 C   rA  )Nr   "nvmlVgpuInstanceGetEncoderCapacityr  )rR  c_encoder_capacityr  r\  r  r  r  r    rD  r  c                 C   r  )N"nvmlVgpuInstanceSetEncoderCapacityr  )rR  encoder_capacityr  r  r  r  r    r  r  c                 C   rA  )Nr   nvmlVgpuInstanceGetFbUsager"  )rR  
c_fb_usager  r\  r  r  r  r    rD  r  c                 C   s2   t d}td}|| t|t|}t| |jS )Nr   nvmlVgpuTypeGetCapabilities)r  re  _nvmlVgpuCapability_tr  r]  r  )rg  r  c_cap_resultr  r\  r  r  r  r    s
   r  c                 C   rA  )Nr    nvmlVgpuInstanceGetGpuInstanceIdr"  )rR  r^  r  r\  r  r  r  r  $  rD  r  c                 C   s2   t t}td}|| |ttt}t| |jS )NnvmlVgpuInstanceGetGpuPciId)r
  r  re  r  r  r]  r  )rR  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)r  r  r/  re  r  r[  r-  r  rQ  r]  r  )	r  r!  r;  r  r  r  r\  r  r  r  r  r  r  3  s   
r  c                 C   s   t |}td}t|_t |_td|_||_t	d}|| t
|}|tkr(g S |tkrI|jt }| }||_|| t
|}t| |d|j S t|)Nr   )nvmlDeviceGetVgpuInstancesUtilizationInfo)r  r]  VgpuInstancesUtilizationInfo_v1r  r/  r^  r  r_  r`  re  r  r[  r-  rY  ra  r]  r  )r  r!  r  c_vgpuUtilInfor  r\  r  r  r  r  r  r  M  s$   

r  c                 C   r  )NnvmlDeviceGetP2PStatus)_nvmlGpuP2PStatus_tre  r  r]  r  )r  r  p2pIndexc_p2pstatusr  r\  r  r  r  r  k  r  r  c                 C   r*  )N&nvmlDeviceGetGridLicensableFeatures_v4)r  re  r  r]  )r  c_get_grid_licensable_featuresr  r\  r  r  r  r  r  s
   r  c                 C   rg  r"  )r  rh  r  r  r  #nvmlDeviceGetGridLicensableFeaturesz  ri  r  c                 C   s>   |d u}|st t  }td}|| |}t| |rtS |jS )NnvmlDeviceGetGspFirmwareVersion)r  "NVML_GSP_FIRMWARE_VERSION_BUF_SIZEre  r]  r[  r  )r  r  isUserDefinedr  r\  r  r  r  r  }  s   

r  c                 C   s\   t |tu}|r
|nt|}|r|nt|}td}|| ||}t| |r(tS |j|jgS )NnvmlDeviceGetGspFirmwareModer  )r  	isEnableddefaultModerq  isEnabledRefdefaultModeRefr  r\  r  r  r  r    s   r  c                 C   s6   t d}t|}td}|| |t|}t| |jS )Nr   nvmlDeviceGetEncoderCapacity)r  _nvmlEncoderQueryType_tre  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)
r  r  re  r  r[  r-  r  rc  r]  r  )r  r!  r;  r  r  r\  r  r  r  r  r  r    s   
r  c                 C   s   t |}td}t|_td|_||_td}|| t|}|t	kr$g S |t
krE|jt }| }||_|| t|}t| |d|j S t|)Nr   )nvmlDeviceGetVgpuProcessesUtilizationInfo)r  rh  VgpuProcessesUtilizationInfo_v1r  r  ri  r`  re  r  r[  r-  rf  rj  r]  r  )r  r!  r  c_vgpuProcUtilInfor  r\  r  r  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       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
r  re  r  r[  r  r~  r]  r  r~  r  r  c_session_countr  r\  session_array
c_sessionssessionsr  r  r  r  r       

r  c                 C   r*  )NnvmlDeviceGetFBCStatsru  re  r  r]  )r  
c_fbcStatsr  r\  r  r  r  r    r-  r  c                 C   r  )Nr   nvmlDeviceGetFBCSessions
r  re  r  r[  r  rz  r]  r  r~  r  r  r  r  r  r    r  r  c                 C   r  )Nr   nvmlVgpuInstanceGetEncoderStatsr  )rR  r  r  r  r  r\  r  r  r  r    r  r  c                 C   r  )Nr   "nvmlVgpuInstanceGetEncoderSessionsr  rR  r  r  r\  r  r  r  r  r  r  r  r    r  r  c                 C   r*  )NnvmlVgpuInstanceGetFBCStatsr  )rR  r  r  r\  r  r  r  r  5  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)	r  r  re  r  r-  r  r  r]  r  )r  r!  r  r  r  r\  r  r  r  r  r  r  V  s   
r  c                 C   s   t |}td}t|_td|_||_td}|| t|}|t	kr?|jt
 }| }||_|| t|}t| |d|j S t|)Nr   %nvmlDeviceGetProcessesUtilizationInfo)r  r  ProcessesUtilizationInfo_v1r  r  r  r`  re  r  r-  r  r  r]  r  )r  r!  r  c_processesUtilInfor  r\  r  r  r  r  r  r  l  s   

r  c                 C   Z   t d}t }td}|| t|t|}|tkr)|| t|t|}t| |S t|)NnvmlVgpuInstanceGetMetadatar   )re  r"  r  r  r-  r]  r  )rR  r  c_vgpuMetadatac_bufferSizer\  r  r  r  r       r  c                 C   r  )NnvmlDeviceGetVgpuMetadatar   )re  r-  r  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)re  r1  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   )	re  r
  r0  r  r  r-  r]  r  r  )r  r  c_pgpuMetadatar  r\  r  r  r  r    s   
r  c                 C   r*  )NnvmlDeviceGetVgpuSchedulerLog)rC  re  r  r]  )r  c_vgpu_sched_logr  r\  r  r  r  r    r-  r  c                 C   r*  )NnvmlDeviceGetVgpuSchedulerState)rN  re  r  r]  )r  c_vgpu_sched_stater  r\  r  r  r  r    r-  r  c                 C   r*  )N&nvmlDeviceGetVgpuSchedulerCapabilities)rW  re  r  r]  )r  c_vgpu_sched_capsr  r\  r  r  r  r    r-  r  c                 C   "   t d}|| t|}t| tS )NnvmlDeviceSetVgpuSchedulerStatere  r  r]  r[  )r  sched_stater  r\  r  r  r  r    rY  r  c                 C   s    t d}|t| }t| tS )NnvmlSetVgpuVersionr  )vgpuVersionr  r\  r  r  r  r    r  r  c                 C   sb   | d up|d u}|st  } t  }td}|t| t|}t| |r%tS | j| jf|j|jfgS )NnvmlGetVgpuVersion)r  re  r  r]  r[  r   r!  )	supportedr  r  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)r  re  r  r-  r  r]  r  )rR  
c_pidCountr  r\  r  
c_pidArrayr  r  r  r    s   
r  c                 C   r  )N"nvmlVgpuInstanceGetAccountingStats)r  re  r  r]  )rR  r  c_accountingStatsr  r\  r  r  r  r    r  r  c                 C   r4  )N#nvmlVgpuInstanceClearAccountingPidsr  )rR  r  r\  r  r  r  r    r  r  c                 C   sd   d|_ td}|| t|}|tkr|S |tkr.t|j  }| |_|| t|}t| |S t|)Nr    nvmlGpuInstanceGetCreatableVgpus)	rc  re  r  r[  r-  r9  rd  r]  r  )r  c_vgpusr  r\  r<  r  r  r  r  
  s   
r  c                 C   s4   t  }t|_| |_td}|t|}t| |jS )N)nvmlVgpuTypeGetMaxInstancesPerGpuInstance)rf  nvmlVgpuTypeMaxInstance_v1r  rg  re  r  r]  rh  )rg  r+  r  r\  r  r  r  r    s   r  c                 C   sh   t d|_td}|| t|}|tkr|S |tkr0t|j }| |_|| t|}t| |S t	|)Nr   nvmlGpuInstanceGetActiveVgpus)
r  rc  re  r  r[  r-  rW  rj  r]  r  )r  c_vgpu_instance_infor  r\  rj  r  r  r  r  %  s   

r  c                 C   s"   t d}|| t|}t| |S )N$nvmlGpuInstanceSetVgpuSchedulerStater  )r  r  r  r\  r  r  r  r  ;  rY  r  c                 C   "   t d}|| t|}t| |S )N$nvmlGpuInstanceGetVgpuSchedulerStater  )r  c_vgpu_sched_state_infor  r\  r  r  r  r  B  rY  r  c                 C   r  )N"nvmlGpuInstanceGetVgpuSchedulerLogr  )r  c_vgpu_sched_log_infor  r\  r  r  r  r  I  rY  r  c                 C   sl   t  }t|_|j|_td}|t|}t| |j|_t	|j }| |_
td}|| t|}t| |S )Nr  -nvmlGpuInstanceGetVgpuTypeCreatablePlacements)rf  r  r  rg  re  r  r]  rh  r  r  rI  )r  r,  r+  r  r\  r-  r  r  r  r  O  s   
r  c                 C   r  )Nr   'nvmlGpuInstanceGetVgpuHeterogeneousModer  )r  r  r  r\  r  r  r  r  `  r  r  c                 C   r  )Nr   'nvmlGpuInstanceSetVgpuHeterogeneousModer!  )r  r"  r  r  r\  r  r  r  r  h  r#  r  c                 C   r  )N"nvmlDeviceGetVgpuSchedulerState_v2r  )r  c_vgpu_sched_state_info_v2r  r\  r  r  r  r  q  rY  r  c                 C   r  )N'nvmlGpuInstanceGetVgpuSchedulerState_v2r  )r  r  r  r\  r  r  r  r  w  rY  r  c                 C   r  )N nvmlDeviceGetVgpuSchedulerLog_v2r  )r  c_vgpu_sched_log_info_v2r  r\  r  r  r  r  }  rY  r  c                 C   r  )N%nvmlGpuInstanceGetVgpuSchedulerLog_v2r  )r  r  r  r\  r  r  r  r    rY  r  c                 C   r  )N"nvmlDeviceSetVgpuSchedulerState_v2r  )r  sched_state_v2r  r\  r  r  r  r    rY  r  c                 C   r  )N'nvmlGpuInstanceSetVgpuSchedulerState_v2r  )r  r  r  r\  r  r  r  r    rY  r  c                  C   r  )NnvmlGetExcludedDeviceCountr"  r#  r  r  r  r    r  r  c                 C   r$  )N nvmlGetExcludedDeviceInfoByIndex)r  r  re  r  r]  )r  r'  infor  r\  r  r  r  r     r)  r   c                 C   r\  )NnvmlDeviceGetHostVgpuMode)_nvmlHostVgpuMode_tre  r  r]  r  )r  c_host_vgpu_moder  r\  r  r  r  r    r_  r  c                 C   r  )NnvmlDeviceSetMigModer"  )r  r  c_activationStatusr  r\  r  r  r  r    r  r  c                 C   r  )NnvmlDeviceGetMigModer"  )r  c_currentModec_pendingModer  r\  r  r  r  r    r  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  re  r  r  r3  r  r]  )r  profiler  r  r  r\  r  r  r  r    s   

r  c                 C   r  )N(nvmlDeviceGetGpuInstanceProfileInfoByIdV)r  re  r  r]  )r  r  r  r  r\  r  r  r  'nvmlDeviceGetGpuInstanceProfileInfoById  s
   r  c                 C   r  )N)nvmlDeviceGetGpuInstanceRemainingCapacityr"  )r  r  r  r  r\  r  r  r  r    r  r  c                 C   "   t d}|| |||}t| tS )N-nvmlDeviceGetGpuInstancePossiblePlacements_v2r  )r  r  placementsRefcountRefr  r\  r  r  r  *nvmlDeviceGetGpuInstancePossiblePlacements  rY  r  c                 C   r  )NnvmlDeviceCreateGpuInstancer  re  r  r]  )r  r  
c_instancer  r\  r  r  r  r    r  r  c                 C   r  )N(nvmlDeviceCreateGpuInstanceWithPlacementr  )r  r  r  r  r  r\  r  r  r  r    r  r  c                 C   r4  )NnvmlGpuInstanceDestroyr  )r  r  r\  r  r  r  r    r  r  c                 C   r  )NnvmlDeviceGetGpuInstancesr  )r  r  gpuInstancesRefr  r  r\  r  r  r  r    rY  r  c                 C   r  )NnvmlDeviceGetGpuInstanceByIdr  )r  r  r  r  r\  r  r  r  r    r  r  c                 C   r*  )NnvmlGpuInstanceGetInfo)r  re  r  r]  )r  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)r  re  r  r  r3  r  r]  )r  r  
engProfiler  r  r  r\  r  r  r  r    s   

r  c                 C   r  )N2nvmlGpuInstanceGetComputeInstanceRemainingCapacityr"  )r  r  r  r  r\  r  r  r  r!    r  r!  c                 C   r  )N3nvmlGpuInstanceGetComputeInstancePossiblePlacementsr  )r  r  r  r  r  r\  r  r  r  r"    rY  r"  c                 C   r  )N$nvmlGpuInstanceCreateComputeInstancec_nvmlComputeInstance_tre  r  r]  )r  r  r  r  r\  r  r  r  r#  %  r  r#  c                 C   r  )N1nvmlGpuInstanceCreateComputeInstanceWithPlacementr$  )r  r  r  r  r  r\  r  r  r  r&  ,  r  r&  c                 C   r4  )NnvmlComputeInstanceDestroyr  )computeInstancer  r\  r  r  r  r'  3  r  r'  c                 C   r  )N"nvmlGpuInstanceGetComputeInstancesr  )r  r  computeInstancesRefr  r  r\  r  r  r  r)  9  rY  r)  c                 C   r  )N%nvmlGpuInstanceGetComputeInstanceByIdr$  )r  r  r  r  r\  r  r  r  r+  ?  r  r+  c                 C   r*  )NnvmlComputeInstanceGetInfo_v2)r  re  r  r]  )r(  r  r  r\  r  r  r  r,  F  r-  r,  c                 C   rg  r"  )r,  )r(  r  r  r  nvmlComputeInstanceGetInfoM  ri  r-  c                 C   r*  )NnvmlDeviceIsMigDeviceHandle)r  re  r  r]  )r  c_isMigDevicer  r\  r  r  r  r.  P  r-  r.  c                 C   r\  )NnvmlDeviceGetGpuInstanceIdr"  )r  c_gpuInstanceIdr  r\  r  r  r  r0  W  r_  r0  c                 C   r\  )NnvmlDeviceGetComputeInstanceIdr"  )r  c_computeInstanceIdr  r\  r  r  r  r2  ^  r_  r2  c                 C   r\  )NnvmlDeviceGetMaxMigDeviceCountr"  )r  r  r  r\  r  r  r  r4  e  r_  r4  c                 C   r  )N#nvmlDeviceGetMigDeviceHandleByIndexr=  )r  r  r'  	migDevicer  r\  r  r  r  r5  l  r  r5  c                 C   r*  )N,nvmlDeviceGetDeviceHandleFromMigDeviceHandle)r  re  r  r]  )r6  r  r  r\  r  r  r  r7  t  r-  r7  c                 C   r*  )NnvmlDeviceGetAttributes_v2)r  re  r  r]  )r  c_attrsr  r\  r  r  r  r8  {  r-  r8  c                 C   rg  r"  )r8  )r  r  r  r  nvmlDeviceGetAttributes  ri  r:  c                 C   s\   t d}t }t }t }t }|| t|t|t|t|}t| |j|j|j|jfS )NnvmlDeviceGetRemappedRowsr  )r  r  c_corrc_unc
c_bpending
c_bfailurer\  r  r  r  r;    s    r;  c                 C   r*  )N!nvmlDeviceGetRowRemapperHistogram)r  re  r  r]  )r  c_valsr  r\  r  r  r  r@    r-  r@  c                 C   r\  )NnvmlDeviceGetArchitecture)_nvmlDeviceArchitecture_tre  r  r]  r  )r  archr  r\  r  r  r  rB    r_  rB  c                 C   r\  )NnvmlDeviceGetBusType)_nvmlBusType_tre  r  r]  r  )r  	c_busTyper  r\  r  r  r  rE    r_  rE  c                 C   r\  )NnvmlDeviceGetIrqNumr"  )r  c_irqNumr  r\  r  r  r  rH    r_  rH  c                 C   r\  )NnvmlDeviceGetNumGpuCoresr"  )r  
c_numCoresr  r\  r  r  r  rJ    r_  rJ  c                 C   r\  )NnvmlDeviceGetPowerSource)_nvmlPowerSource_tre  r  r]  r  )r  c_powerSourcer  r\  r  r  r  rL    r_  rL  c                 C   r\  )NnvmlDeviceGetMemoryBusWidthr"  )r  c_memBusWidthr  r\  r  r  r  rO    r_  rO  c                 C   r\  )NnvmlDeviceGetPcieLinkMaxSpeed)_nvmlPcieLinkMaxSpeed_tre  r  r]  r  r  r  r  r\  r  r  r  rQ    r_  rQ  c                 C   r\  )N$nvmlDeviceGetAdaptiveClockInfoStatus)_nvmlAdaptiveClockInfoStatus_tre  r  r]  r  )r  c_adaptiveClockInfoStatusr  r\  r  r  r  rT    r_  rT  c                 C   r\  )NnvmlDeviceGetPcieSpeedr"  rS  r  r  r  rW    r_  rW  c                 C   rp  )NnvmlDeviceGetDynamicPstatesInfo)rR  r  r  re  r]  r[  )r  c_dynamicpstatesinforq  dynamicpstatesinfoRefr  r\  r  r  r  rX    s   
rX  c                 C   s    t d}|| ||}t| tS )NnvmlDeviceSetFanSpeed_v2r  )r  r  r  r  r\  r  r  r  r[    r  r[  c                 C   sN   t |tu}|r
|nt|}td}|| ||}t| |r tS |jd d  S )NnvmlDeviceGetThermalSettings)rR  r  r  re  r]  r[  r  )r  sensorindexc_thermalsettingsrq  thermalsettingsRefr  r\  r  r  r  r\    s   r\  c           
      C   st   t |tupt |tu}|r|nt|}|r|nt|}td}|| t|t|||}	t|	 |r4tS |j|jfS )N nvmlDeviceGetMinMaxClockOfPState)rR  r  r  re  r  r]  r[  r  )
r  	clockTypepstateminClockMHzmaxClockMHzrq  minClockMHzRefmaxClockMHzRefr  r\  r  r  r  r`    s   r`  c                   @   re  ) c_nvmlDevicePowerMizerModes_v1_tcurrentModer  supportedPowerMizerModesN)r  r  r  _nvmlPowerMizerMode_trl  r  r  r  r  rg    r}  rg  c                 C      t d}|| |}|S )NnvmlDeviceGetPowerMizerMode_v1r  r  r  r  r\  r  r  r  rl       
rl  c                 C   rk  )NnvmlDeviceSetPowerMizerMode_v1r  rm  r  r  r  ro    rn  ro  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_nvmlClockOffset_tr  rR  rb  clockOffsetMHzminClockOffsetMHzmaxClockOffsetMHzN)r  r  r  r  r  r  r  rl  r  r  r  r  rp    rX  rp  c                 C      t d}|| |}tS )NnvmlDeviceGetClockOffsetsre  r[  rm  r  r  r  ru    rn  ru  c                 C   rt  )NnvmlDeviceSetClockOffsetsrv  rm  r  r  r  rw    rn  rw  c           	      C   sf   g }t t}tt |j }t|j }| }td}|| ||}t| |D ]}|tkr0|| q%|S )N'nvmlDeviceGetSupportedPerformanceStates)	r  NVML_MAX_GPU_PERF_PSTATESsizeofr  r  re  r]  NVML_PSTATE_UNKNOWNr~  )	r  pstatesr  c_sizepstates_array	c_pstatesr  r\  r  r  r  r  rx  "  s   

rx  c                 C   r\  )NnvmlDeviceGetGpcClkVfOffsetr  re  r  r]  r  r  offsetr  r\  r  r  r  r  5  r_  r  c                 C   &   t |}td}|| |}t| tS )NnvmlDeviceSetGpcClkVfOffsetr  re  r]  r[  r  r  c_offsetr  r\  r  r  r  r  =  
   
r  c                 C   h   t |tupt |tu}|r|nt|}|r|nt|}td}|| ||}t| |r.tS |j|jfS )N!nvmlDeviceGetGpcClkMinMaxVfOffsetrR  r  r  re  r]  r[  r  r  	minOffset	maxOffsetrq  minOffsetRefmaxOffsetRefr  r\  r  r  r  r  D  r  r  c                 C   r\  )NnvmlDeviceGetMemClkVfOffsetr  r  r  r  r  r  M  r_  r  c                 C   r  )NnvmlDeviceSetMemClkVfOffsetr  r  r  r  r  r  U  r  r  c                 C   r  )N!nvmlDeviceGetMemClkMinMaxVfOffsetr  r  r  r  r  r  \  s   r  c                 C   s$   t | }td}||}t| tS )N&nvmlSystemSetConfComputeGpusReadyStater  re  r]  r[  )r  r/  r  r\  r  r  r  r  f  s
   r  c                  C   r  )N&nvmlSystemGetConfComputeGpusReadyStater"  r/  r  r\  r  r  r  r  m  r  r  c                  C   &   t  } td}|t| }t| | S )N$nvmlSystemGetConfComputeCapabilities)r  re  r  r]  )c_ccSysCapsr  r\  r  r  r  r  t  
   r  c                  C   r  )NnvmlSystemGetConfComputeState)r  re  r  r]  r  r  r  r  r  {  r  r  c                 C   s   t d}|| S )N nvmlSystemGetConfComputeSettingsr  )settingsr  r  r  r  r    s   r  c                 C   r  )N*nvmlDeviceSetConfComputeUnprotectedMemSizer  r  c_ccMemSizer  r\  r  r  r  r    r  r  c                 C   r*  )N#nvmlDeviceGetConfComputeMemSizeInfo)r  re  r  r]  r  r  r  r  r    r-  r  c                 C   r*  )N,nvmlDeviceGetConfComputeProtectedMemoryUsage)r  re  r  r]  )r  r  r  r\  r  r  r  r    r-  r  c                 C   r*  )N&nvmlDeviceGetConfComputeGpuCertificate)r  re  r  r]  )r  c_certr  r\  r  r  r  r    r-  r  c                 C   sD   t  }tt| | }t|d| td}|| t|}t| |S )Nr  ,nvmlDeviceGetConfComputeGpuAttestationReport)r  r8  r  rS  re  r  r]  )r  c_noncec_attestReportc_nonce_arrr  r\  r  r  r  r    s   r  c                 C   s4   t d}t|_| |_td}|t|}t| tS )Nr   0nvmlSystemSetConfComputeKeyRotationThresholdInfo)r  )ConfComputeSetKeyRotationThresholdInfo_v1r  r  re  r  r]  r[  )max_atk_advc_keyRotationThrInfor  r\  r  r  r  r    s   r  c                  C   s.   t d} t| _td}|t| }t| | S )Nr   0nvmlSystemGetConfComputeKeyRotationThresholdInfo)r  )ConfComputeGetKeyRotationThresholdInfo_v1r  re  r  r]  )r  r  r\  r  r  r  r    s   r  iM  c                   @   r  r  r  r  r  r  r  r    r  c                   @   r	  )struct_c_nvmlGpmSample_tNr  r  r  r  r  r    r  r  c                   @   re  )c_metricInfo_t	shortNamelongNamer(  N)r  r  r  r  rl  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  r  r0  r  r  rl  r  r  r  r  r    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_tr  
numMetricssample1sample2metricsN)r  r  r  r  c_nvmlGpmSample_tr  NVML_GPM_METRIC_MAXrl  r  r  r  r  r    rb  r  c                   @   r  )c_nvmlGpmSupport_tr  isSupportedDeviceNr  r  r  r  r  r    r  r  c                 C   s    t d}|t| }t| | S )NnvmlGpmMetricsGetr  )
metricsGetr  r\  r  r  r  r    r  r  c                 C   r  )NnvmlGpmSampleFreer  	gpmSampler  r\  r  r  r  r    r  r  c                  C   r  )NnvmlGpmSampleAlloc)r  re  r  r]  r  r  r  r  r    r  r  c                 C   s   t d}|| |}t| |S )NnvmlGpmSampleGetr  )r  r  r  r\  r  r  r  r    r  r  c                 C   s    t d}|| ||}t| |S )NnvmlGpmMigSampleGetr  )r  r  r  r  r\  r  r  r  r    r  r  c                 C   r_  )NnvmlGpmQueryDeviceSupport)r  NVML_GPM_SUPPORT_VERSIONr  re  r  r]  )r  
gpmSupportr  r\  r  r  r  r    rc  r  c                 C   r  )NnvmlGpmSetStreamingEnabledr  )r  r  r/  r  r\  r  r  r  r    r  r  c                 C   r\  )NnvmlGpmQueryIfStreamingEnabledr"  )r  r/  r  r\  r  r  r  r  	  r_  r  i  c                   @   r  )c_nvmlNvLinkPowerThres_tlowPwrThresholdNr  r  r  r  r  r    r  r  c                 C   s.   t  }||_td}|| t|}t| tS )N*nvmlDeviceSetNvLinkDeviceLowPowerThreshold)r  r  re  r  r]  r[  )r  l1thresholdr  r  r\  r  r  r  r    rc  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clusterUuidru  cliqueIdr  N)	r  r  r  r8  r  r0  r-  _nvmlGpuFabricState_trl  r  r  r  r  r  /  r  r  i$  c                       sH   e Zd Zdefdee fdefdefdefdefgZ	 fddZ
  ZS )	c_nvmlGpuFabricInfo_v2_tr  r  ru  r  r  
healthMaskc                    r4  r5  )r  r  rh  nvmlGpuFabricInfo_v2r  r  r  r  rh  u  r7  z!c_nvmlGpuFabricInfo_v2_t.__init__r  r  r  r  r8  NVML_GPU_FABRIC_UUID_LENr0  r-  r  rl  rh  r  r  r  r  r  r  k  s    
	r  c                       sN   e Zd Zdefdee fdefdefdefdefdefgZ	 fdd	Z
  ZS )
c_nvmlGpuFabricInfo_v3_tr  r  ru  r  r  r  healthSummaryc                    r4  r5  )r  r  rh  nvmlGpuFabricInfo_v3r  r  r  r  rh    r7  z!c_nvmlGpuFabricInfo_v3_t.__init__r  r  r  r  r  r  z  s    

r  i(  c                 C   r  )NnvmlDeviceGetGpuFabricInfor  r  gpuFabricInfor  r\  r  r  r  r    r  r  c                 C   r  )NnvmlDeviceGetGpuFabricInfoVr  r  r  r  r  r    r  r  c                 C   r4  )NnvmlSystemSetNvlinkBwModer  r  r  r\  r  r  r  r    r  r  c                  C   r  )NnvmlSystemGetNvlinkBwModer"  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diZdS )c_nvmlPowerValue_v2_tr  
powerScopepowerValueMwrz  r  N)r  r  r  r  _nvmlPowerScopeType_trl  r}  r  r  r  r  r    r  r  i  c                 C   sB   t |}t }t||_||_t||_td}|| t|}tS )N$nvmlDeviceSetPowerManagementLimit_v2)	r  r  r  r  r  r  re  r  r[  )r  r  
powerLimitr  c_powerScopec_powerValuer  r\  r  r  r  r    s   

r  c                       sn   e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefdefdefgZ fddZ  ZS )c_nvmlEccSramErrorStatus_v1_tr  aggregateUncParityaggregateUncSecDedaggregateCorvolatileUncParityvolatileUncSecDedvolatileCoraggregateUncBucketL2aggregateUncBucketSmaggregateUncBucketPcieaggregateUncBucketMcuaggregateUncBucketOtherbThresholdExceededc                    r4  r5  )r  r  rh  nvmlEccSramErrorStatus_v1r  r  r  r  rh    r7  z&c_nvmlEccSramErrorStatus_v1_t.__init__r  r  r  r  r  r    s     r  ih  c                 C   r  )NnvmlDeviceGetSramEccErrorStatusr  )r  ru  r  r\  r  r  r  r    r  r  c                       r  )c_nvmlDeviceCapabilities_v1_tr  capMaskc                    r4  r5  )r  r  rh  nvmlDeviceCapabilities_v1r  r  r  r  rh    r7  z&c_nvmlDeviceCapabilities_v1_t.__init__r  r  r  r  r  r    r  r  c                 C   r  )NnvmlDeviceGetCapabilitiesr  )r  capsr  r  r  r  r    r  r  c                	       X   e Zd Zdefded fded fdefdefdefdefd	efgZ fd
dZ  ZS )c_nvmlPlatformInfo_v1_tr  ibGuidr   rackGuidchassisPhysicalSlotNumbercomputeSlotIndex	nodeIndexpeerTyperp  c                    r4  r5  )r  r  rh  nvmlPlatformInfo_v1r  r  r  r  rh    r7  z c_nvmlPlatformInfo_v1_t.__init__r  r  r  r  r  rl  rh  r  r  r  r  r  r        

r  c                	       r  )c_nvmlPlatformInfo_v2_tr  r  r   chassisSerialNumber
slotNumber	trayIndexhostIdr  rp  c                    r4  r5  )r  r  rh  nvmlPlatformInfo_v2r  r  r  r  rh    r7  z c_nvmlPlatformInfo_v2_t.__init__r
  r  r  r  r  r    r  r  i,  i,  c                 C   r  )NnvmlDeviceGetPlatformInfor  )r  platformInfor  r\  r  r  r  r    r  r  c                   @   s   e Zd Zdee fgZdS )c_nvmlHostname_v1_tr  N)r  r  r  r   NVML_DEVICE_HOSTNAME_BUFFER_SIZErl  r  r  r  r  r        
r  c                   @   s   e Zd Zded fgZdS )c_nvmlMask255_tmaskr   Nr  r  r  r  r  r  !  r  r  c                       8   e Zd ZdefdefdefdefgZ fddZ  ZS )#c_nvmlWorkloadPowerProfileInfo_v1_tr  r  priorityconflictingmaskc                    r4  r5  )r  r  rh  nvmlWorkloadPowerProfileInfo_v1r  r  r  r  rh  A  r7  z,c_nvmlWorkloadPowerProfileInfo_v1_t.__init__r  r  r  r  r  rl  rh  r  r  r  r  r  r  9      r  i+ c                       s6   e Zd Zdefdefdee fgZ fddZ  Z	S )+c_nvmlWorkloadPowerProfileProfilesInfo_v1_tr  perfProfilesMaskperfProfilec                    r4  r5  )r  r   rh  'nvmlWorkloadPowerProfileProfilesInfo_v1r  r  r  r  rh  L  r7  z4c_nvmlWorkloadPowerProfileProfilesInfo_v1_t.__init__)
r  r  r  r  r  r   NVML_WORKLOAD_POWER_MAX_PROFILESrl  rh  r  r  r  r  r  r   E      
r   id  c                       s8   e Zd ZdefdefdefdefgZ fddZ  ZS ).c_nvmlWorkloadPowerProfileCurrentProfiles_v1_tr  r!  requestedProfilesMaskenforcedProfilesMaskc                    r4  r5  )r  r&  rh  *nvmlWorkloadPowerProfileCurrentProfiles_v1r  r  r  r  rh  X  r7  z7c_nvmlWorkloadPowerProfileCurrentProfiles_v1_t.__init__r  r  r  r  r  r&  P  r  r&  i$  c                       r  )0c_nvmlWorkloadPowerProfileRequestedProfiles_v1_tr  r'  c                    r4  r5  )r  r*  rh  ,nvmlWorkloadPowerProfileRequestedProfiles_v1r  r  r  r  rh  b  r7  z9c_nvmlWorkloadPowerProfileRequestedProfiles_v1_t.__init__r  r  r  r  r  r*  \  r  r*  c                   @   r  )-c_nvmlWorkloadPowerProfileUpdateProfiles_v1_t	operationupdateProfilesMaskN)r  r  r  r  r  rl  r  r  r  r  r,  k  r  r,  c                 C   r  )N-nvmlDeviceWorkloadPowerProfileGetProfilesInfor  )r  profilesInfor  r\  r  r  r  r/  q  r  r/  c                 C   r  )N0nvmlDeviceWorkloadPowerProfileGetCurrentProfilesr  )r  currentProfilesr  r\  r  r  r  r1  w  r  r1  c                 C   r  )N2nvmlDeviceWorkloadPowerProfileSetRequestedProfilesr  r  requestedProfilesr  r\  r  r  r  r3  }  r  r3  c                 C   r  )N4nvmlDeviceWorkloadPowerProfileClearRequestedProfilesr  r4  r  r  r  r6    r  r6  c                 C   r  )N/nvmlDeviceWorkloadPowerProfileUpdateProfiles_v1r  )r  updateProfilesr  r\  r  r  r  r7    r  r7  c                 C   r  )N#nvmlDeviceGetNvlinkSupportedBwModesr  )r  supportedBwModesr  r\  r  r  r  r9    r  r9  c                 C   r  )NnvmlDeviceGetNvlinkBwModer  )r  	getBwModer  r\  r  r  r  r;    r  r;  c                 C   r  )NnvmlDeviceSetNvlinkBwModer  )r  	setBwModer  r\  r  r  r  r=    r  r=  c                       r  )c_nvmlDramEncryptionInfo_tr  encryptionStatec                    r4  r5  )r  r?  rh  nvmlDramEncryptionInfo_v1r  r  r  r  rh    r7  z#c_nvmlDramEncryptionInfo_t.__init__)r  r  r  r  r  rl  rh  r  r  r  r  r  r?    r  r?  c                 C   r  )NnvmlDeviceGetDramEncryptionMode)r?  re  r  r]  r@  r  r  r  r  rB    r  rB  c                 C   r  rk  rB  rh  r  r  r  &nvmlDeviceGetCurrentDramEncryptionMode  r%  rD  c                 C   r  r
  rC  rh  r  r  r  &nvmlDeviceGetPendingDramEncryptionMode  r%  rE  c                 C   s.   t d}t }||_|| t|}t| d S )NnvmlDeviceSetDramEncryptionMode)re  r?  r@  r  r]  )r  r  r  c_dramEncryptionModer\  r  r  r  rF    s   rF  c                       r  )c_nvmlPowerSmoothingState_v1_tr  r  c                    r4  r5  )r  rH  rh  nvmlPowerSmoothingState_v1r  r  r  r  rh    r7  z'c_nvmlPowerSmoothingState_v1_t.__init__r  r  r  r  r  rH    r  rH  c                       r  ) c_nvmlPowerSmoothingProfile_v1_tr  r  paramIdr  c                    r4  r5  )r  rJ  rh  nvmlPowerSmoothingProfile_v1r  r  r  r  rh    r7  z)c_nvmlPowerSmoothingProfile_v1_t.__init__)r  r  r  r  r  rl  rh  r  r  r  r  r  rJ    r  rJ  c                 C   r  )N-nvmlDevicePowerSmoothingActivatePresetProfiler  r  r  r  r\  r  r  r  rM       
rM  c                 C   r  )N0nvmlDevicePowerSmoothingUpdatePresetProfileParamr  rN  r  r  r  rP    rO  rP  c                 C   r  )N nvmlDevicePowerSmoothingSetStater  )r  r  r  r\  r  r  r  rQ    rO  rQ  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_nvmlEccSramUniqueUncorrectedErrorEntry_v1_tr(  locationsublocationextlocationr  isParityr  Nr  r  r  r  r  rR    r  rR  c                       s6   e Zd ZdefdefdeefgZ fddZ  ZS ).c_nvmlEccSramUniqueUncorrectedErrorCounts_v1_tr  
entryCountentriesc                    r4  r5  )r  rW  rh  *nvmlEccSramUniqueUncorrectedErrorCounts_v1r  r  r  r  rh    r7  z7c_nvmlEccSramUniqueUncorrectedErrorCounts_v1_t.__init__)	r  r  r  r  r  rR  rl  rh  r  r  r  r  r  rW    r%  rW  c                 C   r  )N0nvmlDeviceGetSramUniqueUncorrectedEccErrorCountsr  )r  countsr  r\  r  r  r  r[    r  r[  c                 C   r\  )NnvmlDeviceGetPdi)r  re  r  r]  r  )r  c_pdir  r\  r  r  r  r]    r_  r]  c                 C   r  )NnvmlDeviceGetNvLinkInfor  rm  r  r  r  r_    r  r_  c                 C   s0   t  }td}|| t|}t| |j|jgS )NnvmlDeviceGetRepairStatus)r  re  r  r]  r  r  r  c_statusr  r\  r  r  r  r`    s
   r`  c                 C   s.   t  }td}||_|| t|}t| d S )NnvmlDeviceSetHostname_v1)r  re  r  r  r]  )r  hostname
c_hostnamer  r\  r  r  r  rc  &  s   rc  c                 C   r\  )NnvmlDeviceGetHostname_v1)r  re  r  r]  r  )r  re  r  r\  r  r  r  rf  /  r_  rf  c                 C   r\  )N&nvmlDeviceGetUnrepairableMemoryFlag_v1)r  re  r  r]  r  ra  r  r  r  rg  6  r_  rg  l    c                       s4   e Zd ZdefdefgZddiZ fddZ  ZS )c_nvmlRusdSettings_v1_tr  pollMaskz0x%016Xc                    s   t t|   t| _d S r"  )r  rh  rh  nvmlRusdSettings_v1r  r  r  r  r  rh  Q  s   
z c_nvmlRusdSettings_v1_t.__init__)	r  r  r  r  r  rl  r}  rh  r  r  r  r  r  rh  J  s    rh  c                 C   r  )NnvmlDeviceSetRusdSettings_v1r  )r  r  r  r\  r  r  r  rk  U  r  rk  r"  )r   r   )NN(  ctypesctypes.utilr   	functoolsr   rK  r   	threadingrN  r  r  NVML_FEATURE_DISABLEDNVML_FEATURE_ENABLEDrc  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_GPS_CURR NVML_TEMPERATURE_THRESHOLD_COUNTr  NVML_TEMPERATURE_GPUNVML_TEMPERATURE_COUNTr  NVML_COMPUTEMODE_DEFAULT!NVML_COMPUTEMODE_EXCLUSIVE_THREADNVML_COMPUTEMODE_PROHIBITED"NVML_COMPUTEMODE_EXCLUSIVE_PROCESSNVML_COMPUTEMODE_COUNTr$  NVML_MEMORY_LOCATION_L1_CACHENVML_MEMORY_LOCATION_L2_CACHE"NVML_MEMORY_LOCATION_DEVICE_MEMORYNVML_MEMORY_LOCATION_DRAM"NVML_MEMORY_LOCATION_REGISTER_FILE#NVML_MEMORY_LOCATION_TEXTURE_MEMORY NVML_MEMORY_LOCATION_TEXTURE_SHMNVML_MEMORY_LOCATION_CBUNVML_MEMORY_LOCATION_SRAMNVML_MEMORY_LOCATION_COUNTNVML_NVLINK_MAX_LINKSNVML_NVLINK_MAX_LANES_nvmlNvLinkErrorCounter_tNVML_NVLINK_ERROR_DL_REPLAYNVML_NVLINK_ERROR_DL_RECOVERYNVML_NVLINK_ERROR_DL_CRC_FLITNVML_NVLINK_ERROR_DL_CRC_DATANVML_NVLINK_ERROR_DL_ECC_DATANVML_NVLINK_ERROR_COUNT _nvmlNvLinkEccLaneErrorCounter_tNVML_NVLINK_ERROR_DL_ECC_LANE0NVML_NVLINK_ERROR_DL_ECC_LANE1NVML_NVLINK_ERROR_DL_ECC_LANE2NVML_NVLINK_ERROR_DL_ECC_LANE3NVML_NVLINK_ERROR_DL_ECC_COUNT_nvmlNvLinkCapability_tNVML_NVLINK_CAP_P2P_SUPPORTEDNVML_NVLINK_CAP_SYSMEM_ACCESSNVML_NVLINK_CAP_P2P_ATOMICSNVML_NVLINK_CAP_SYSMEM_ATOMICSNVML_NVLINK_CAP_SLI_BRIDGENVML_NVLINK_CAP_VALIDNVML_NVLINK_CAP_COUNTr  !NVML_NVLINK_COUNTER_PKTFILTER_NOP"NVML_NVLINK_COUNTER_PKTFILTER_READ#NVML_NVLINK_COUNTER_PKTFILTER_WRITE#NVML_NVLINK_COUNTER_PKTFILTER_RATOM$NVML_NVLINK_COUNTER_PKTFILTER_NRATOM#NVML_NVLINK_COUNTER_PKTFILTER_FLUSH&NVML_NVLINK_COUNTER_PKTFILTER_RESPDATA(NVML_NVLINK_COUNTER_PKTFILTER_RESPNODATA!NVML_NVLINK_COUNTER_PKTFILTER_ALLr  NVML_NVLINK_COUNTER_UNIT_CYCLES NVML_NVLINK_COUNTER_UNIT_PACKETSNVML_NVLINK_COUNTER_UNIT_BYTES!NVML_NVLINK_COUNTER_UNIT_RESERVEDNVML_NVLINK_COUNTER_UNIT_COUNTr  NVML_NVLINK_DEVICE_TYPE_GPUNVML_NVLINK_DEVICE_TYPE_IBMNPUNVML_NVLINK_DEVICE_TYPE_SWITCHNVML_NVLINK_DEVICE_TYPE_UNKNOWN_nvmlEccBitType_tNVML_SINGLE_BIT_ECCNVML_DOUBLE_BIT_ECCNVML_ECC_ERROR_TYPE_COUNTr  NVML_VOLATILE_ECCNVML_AGGREGATE_ECCNVML_ECC_COUNTER_TYPE_COUNTr   NVML_MEMORY_ERROR_TYPE_CORRECTED"NVML_MEMORY_ERROR_TYPE_UNCORRECTEDNVML_MEMORY_ERROR_TYPE_COUNTr  NVML_CLOCK_GRAPHICSNVML_CLOCK_SMNVML_CLOCK_MEMNVML_CLOCK_VIDEONVML_CLOCK_COUNTr  NVML_CLOCK_ID_CURRENTNVML_CLOCK_ID_APP_CLOCK_TARGETNVML_CLOCK_ID_APP_CLOCK_DEFAULT NVML_CLOCK_ID_CUSTOMER_BOOST_MAXNVML_CLOCK_ID_COUNTr2  NVML_DRIVER_WDDMNVML_DRIVER_WDMNVML_DRIVER_MCDMry  r  NVML_PSTATE_0NVML_PSTATE_1NVML_PSTATE_2NVML_PSTATE_3NVML_PSTATE_4NVML_PSTATE_5NVML_PSTATE_6NVML_PSTATE_7NVML_PSTATE_8NVML_PSTATE_9NVML_PSTATE_10NVML_PSTATE_11NVML_PSTATE_12NVML_PSTATE_13NVML_PSTATE_14NVML_PSTATE_15r{  r  NVML_INFOROM_OEMNVML_INFOROM_ECCNVML_INFOROM_POWERNVML_INFOROM_DENNVML_INFOROM_COUNTr0  r[  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  NVML_ERROR_IN_USEr9  NVML_ERROR_NO_DATA!NVML_ERROR_VGPU_ECC_NOT_SUPPORTED!NVML_ERROR_INSUFFICIENT_RESOURCESNVML_ERROR_FREQ_NOT_SUPPORTEDr  NVML_ERROR_DEPRECATEDNVML_ERROR_NOT_READYNVML_ERROR_GPU_NOT_FOUNDNVML_ERROR_INVALID_STATE#NVML_ERROR_RESET_TYPE_NOT_SUPPORTEDr:  r  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_SIGNED_INTNVML_VALUE_TYPE_UNSIGNED_SHORTNVML_VALUE_TYPE_COUNT_nvmlNvlinkVersion_tNVML_NVLINK_VERSION_INVALIDNVML_NVLINK_VERSION_1_0NVML_NVLINK_VERSION_2_0NVML_NVLINK_VERSION_2_2NVML_NVLINK_VERSION_3_0NVML_NVLINK_VERSION_3_1NVML_NVLINK_VERSION_4_0NVML_NVLINK_VERSION_5_0r  NVML_PERF_POLICY_POWERNVML_PERF_POLICY_THERMALNVML_PERF_POLICY_SYNC_BOOSTNVML_PERF_POLICY_BOARD_LIMIT NVML_PERF_POLICY_LOW_UTILIZATIONNVML_PERF_POLICY_RELIABILITY!NVML_PERF_POLICY_TOTAL_APP_CLOCKS"NVML_PERF_POLICY_TOTAL_BASE_CLOCKSNVML_PERF_POLICY_COUNTr  NVML_ENCODER_QUERY_H264NVML_ENCODER_QUERY_HEVCNVML_ENCODER_QUERY_AV1NVML_ENCODER_QUERY_UNKNOWN_nvmlFBCSessionType_tNVML_FBC_SESSION_TYPE_UNKNOWNNVML_FBC_SESSION_TYPE_TOSYSNVML_FBC_SESSION_TYPE_CUDANVML_FBC_SESSION_TYPE_VIDNVML_FBC_SESSION_TYPE_HWENC_nvmlDetachGpuState_tNVML_DETACH_GPU_KEEPNVML_DETACH_GPU_REMOVE_nvmlPcieLinkState_tNVML_PCIE_LINK_KEEPNVML_PCIE_LINK_SHUT_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_MODULE_POWER_SAMPLESNVML_JPG_UTILIZATION_SAMPLESNVML_OFA_UTILIZATION_SAMPLESNVML_SAMPLINGTYPE_COUNTr  NVML_PCIE_UTIL_TX_BYTESNVML_PCIE_UTIL_RX_BYTESNVML_PCIE_UTIL_COUNTr  NVML_TOPOLOGY_INTERNALNVML_TOPOLOGY_SINGLENVML_TOPOLOGY_MULTIPLENVML_TOPOLOGY_HOSTBRIDGENVML_TOPOLOGY_NODENVML_TOPOLOGY_CPUNVML_TOPOLOGY_SYSTEM_nvmlGpuP2PCapsIndex_tNVML_P2P_CAPS_INDEX_READNVML_P2P_CAPS_INDEX_WRITENVML_P2P_CAPS_INDEX_NVLINKNVML_P2P_CAPS_INDEX_ATOMICSNVML_P2P_CAPS_INDEX_PROPNVML_P2P_CAPS_INDEX_PCINVML_P2P_CAPS_INDEX_UNKNOWNr  NVML_P2P_STATUS_OK$NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED%NVML_P2P_STATUS_CHIPSET_NOT_SUPPORTED!NVML_P2P_STATUS_GPU_NOT_SUPPORTED*NVML_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED"NVML_P2P_STATUS_DISABLED_BY_REGKEYNVML_P2P_STATUS_NOT_SUPPORTEDNVML_P2P_STATUS_UNKNOWNrC  NVML_DEVICE_ARCH_KEPLERNVML_DEVICE_ARCH_MAXWELLNVML_DEVICE_ARCH_PASCALNVML_DEVICE_ARCH_VOLTANVML_DEVICE_ARCH_TURINGNVML_DEVICE_ARCH_AMPERENVML_DEVICE_ARCH_ADANVML_DEVICE_ARCH_HOPPERNVML_DEVICE_ARCH_BLACKWELLNVML_DEVICE_ARCH_UNKNOWNrF  NVML_BUS_TYPE_UNKNOWNNVML_BUS_TYPE_PCINVML_BUS_TYPE_PCIENVML_BUS_TYPE_FPCINVML_BUS_TYPE_AGPrM  NVML_POWER_SOURCE_ACNVML_POWER_SOURCE_BATTERYNVML_POWER_SOURCE_UNDERSIZEDrU  +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_UNLIMITEDrR   NVML_PCIE_LINK_MAX_SPEED_INVALID!NVML_PCIE_LINK_MAX_SPEED_2500MBPS!NVML_PCIE_LINK_MAX_SPEED_5000MBPS!NVML_PCIE_LINK_MAX_SPEED_8000MBPS"NVML_PCIE_LINK_MAX_SPEED_16000MBPS"NVML_PCIE_LINK_MAX_SPEED_32000MBPS"NVML_PCIE_LINK_MAX_SPEED_64000MBPS_nvmlPcieAtomicsCapability_t NVML_PCIE_ATOMICS_CAP_FETCHADD32 NVML_PCIE_ATOMICS_CAP_FETCHADD64NVML_PCIE_ATOMICS_CAP_SWAP32NVML_PCIE_ATOMICS_CAP_SWAP64NVML_PCIE_ATOMICS_CAP_CAS32NVML_PCIE_ATOMICS_CAP_CAS64NVML_PCIE_ATOMICS_CAP_CAS128NVML_PCIE_ATOMICS_OPS_MAXrv  NVML_AFFINITY_SCOPE_NODENVML_AFFINITY_SCOPE_SOCKET_nvmlDeviceGpuRecoveryAction_tNVML_GPU_RECOVERY_ACTION_NONE"NVML_GPU_RECOVERY_ACTION_GPU_RESET$NVML_GPU_RECOVERY_ACTION_NODE_REBOOT"NVML_GPU_RECOVERY_ACTION_DRAIN_P2P(NVML_GPU_RECOVERY_ACTION_DRAIN_AND_RESETnvmlFlagDefaultnvmlFlagForceNVML_INIT_FLAG_NO_GPUSNVML_INIT_FLAG_NO_ATTACHNVML_INIT_FLAG_FORCE_INITNVML_MAX_GPC_COUNTr  r  r  r  r  rH  r  rn  rk  'NVML_DEVICE_GPU_PART_NUMBER_BUFFER_SIZEr<  r  r  r  re  r  rz  r,  r0  +NVML_DEVICE_GPU_FRU_PART_NUMBER_BUFFER_SIZErR  !NVML_DEVICE_PCI_BUS_ID_LEGACY_FMTNVML_DEVICE_PCI_BUS_ID_FMTr  r@  NVML_VALUE_NOT_AVAILABLE_uintNVML_FI_DEV_ECC_CURRENTNVML_FI_DEV_ECC_PENDINGNVML_FI_DEV_ECC_SBE_VOL_TOTALNVML_FI_DEV_ECC_DBE_VOL_TOTALNVML_FI_DEV_ECC_SBE_AGG_TOTALNVML_FI_DEV_ECC_DBE_AGG_TOTALNVML_FI_DEV_ECC_SBE_VOL_L1NVML_FI_DEV_ECC_DBE_VOL_L1NVML_FI_DEV_ECC_SBE_VOL_L2NVML_FI_DEV_ECC_DBE_VOL_L2NVML_FI_DEV_ECC_SBE_VOL_DEVNVML_FI_DEV_ECC_DBE_VOL_DEVNVML_FI_DEV_ECC_SBE_VOL_REGNVML_FI_DEV_ECC_DBE_VOL_REGNVML_FI_DEV_ECC_SBE_VOL_TEXNVML_FI_DEV_ECC_DBE_VOL_TEXNVML_FI_DEV_ECC_DBE_VOL_CBUNVML_FI_DEV_ECC_SBE_AGG_L1NVML_FI_DEV_ECC_DBE_AGG_L1NVML_FI_DEV_ECC_SBE_AGG_L2NVML_FI_DEV_ECC_DBE_AGG_L2NVML_FI_DEV_ECC_SBE_AGG_DEVNVML_FI_DEV_ECC_DBE_AGG_DEVNVML_FI_DEV_ECC_SBE_AGG_REGNVML_FI_DEV_ECC_DBE_AGG_REGNVML_FI_DEV_ECC_SBE_AGG_TEXNVML_FI_DEV_ECC_DBE_AGG_TEXNVML_FI_DEV_ECC_DBE_AGG_CBUNVML_FI_DEV_RETIRED_SBENVML_FI_DEV_RETIRED_DBENVML_FI_DEV_RETIRED_PENDING*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L5-NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_TOTAL*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L5-NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_TOTAL(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L0(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L1(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L2(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L3(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L4(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L5+NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L5-NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_TOTAL"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L0"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L1"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L2"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L3"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L4"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L5%NVML_FI_DEV_NVLINK_BANDWIDTH_C0_TOTAL"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L0"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L1"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L2"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L3"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L4"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L5%NVML_FI_DEV_NVLINK_BANDWIDTH_C1_TOTALNVML_FI_DEV_PERF_POLICY_POWERNVML_FI_DEV_PERF_POLICY_THERMAL"NVML_FI_DEV_PERF_POLICY_SYNC_BOOST#NVML_FI_DEV_PERF_POLICY_BOARD_LIMIT'NVML_FI_DEV_PERF_POLICY_LOW_UTILIZATION#NVML_FI_DEV_PERF_POLICY_RELIABILITY(NVML_FI_DEV_PERF_POLICY_TOTAL_APP_CLOCKS)NVML_FI_DEV_PERF_POLICY_TOTAL_BASE_CLOCKSNVML_FI_DEV_MEMORY_TEMP$NVML_FI_DEV_TOTAL_ENERGY_CONSUMPTION NVML_FI_DEV_NVLINK_SPEED_MBPS_L0 NVML_FI_DEV_NVLINK_SPEED_MBPS_L1 NVML_FI_DEV_NVLINK_SPEED_MBPS_L2 NVML_FI_DEV_NVLINK_SPEED_MBPS_L3 NVML_FI_DEV_NVLINK_SPEED_MBPS_L4 NVML_FI_DEV_NVLINK_SPEED_MBPS_L5$NVML_FI_DEV_NVLINK_SPEED_MBPS_COMMONNVML_FI_DEV_NVLINK_LINK_COUNTNVML_FI_DEV_RETIRED_PENDING_SBENVML_FI_DEV_RETIRED_PENDING_DBENVML_FI_DEV_PCIE_REPLAY_COUNTER(NVML_FI_DEV_PCIE_REPLAY_ROLLOVER_COUNTER*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L11*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L11(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L6(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L7(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L8(NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L9)NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L10)NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L11*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L11"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L6"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L7"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L8"NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L9#NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L10#NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L11"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L6"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L7"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L8"NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L9#NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L10#NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L11 NVML_FI_DEV_NVLINK_SPEED_MBPS_L6 NVML_FI_DEV_NVLINK_SPEED_MBPS_L7 NVML_FI_DEV_NVLINK_SPEED_MBPS_L8 NVML_FI_DEV_NVLINK_SPEED_MBPS_L9!NVML_FI_DEV_NVLINK_SPEED_MBPS_L10!NVML_FI_DEV_NVLINK_SPEED_MBPS_L11%NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_TX%NVML_FI_DEV_NVLINK_THROUGHPUT_DATA_RX$NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_TX$NVML_FI_DEV_NVLINK_THROUGHPUT_RAW_RXNVML_FI_DEV_REMAPPED_CORNVML_FI_DEV_REMAPPED_UNCNVML_FI_DEV_REMAPPED_PENDINGNVML_FI_DEV_REMAPPED_FAILURE#NVML_FI_DEV_NVLINK_REMOTE_NVLINK_ID)NVML_FI_DEV_NVSWITCH_CONNECTED_LINK_COUNT*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L0*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L1*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L2*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L3*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L4*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L5*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L6*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L7*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L8*NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L9+NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L10+NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L11-NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_TOTAL"NVML_FI_DEV_NVLINK_ERROR_DL_REPLAY$NVML_FI_DEV_NVLINK_ERROR_DL_RECOVERYNVML_FI_DEV_NVLINK_ERROR_DL_CRCNVML_FI_DEV_NVLINK_GET_SPEEDNVML_FI_DEV_NVLINK_GET_STATENVML_FI_DEV_NVLINK_GET_VERSION"NVML_FI_DEV_NVLINK_GET_POWER_STATE&NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD'NVML_FI_DEV_PCIE_L0_TO_RECOVERY_COUNTERNVML_FI_DEV_C2C_LINK_COUNTNVML_FI_DEV_C2C_LINK_GET_STATUSNVML_FI_DEV_C2C_LINK_GET_MAX_BW)NVML_FI_DEV_PCIE_COUNT_CORRECTABLE_ERRORS$NVML_FI_DEV_PCIE_COUNT_NAKS_RECEIVED%NVML_FI_DEV_PCIE_COUNT_RECEIVER_ERRORNVML_FI_DEV_PCIE_COUNT_BAD_TLP NVML_FI_DEV_PCIE_COUNT_NAKS_SENTNVML_FI_DEV_PCIE_COUNT_BAD_DLLP&NVML_FI_DEV_PCIE_COUNT_NON_FATAL_ERROR"NVML_FI_DEV_PCIE_COUNT_FATAL_ERROR&NVML_FI_DEV_PCIE_COUNT_UNSUPPORTED_REQ!NVML_FI_DEV_PCIE_COUNT_LCRC_ERROR!NVML_FI_DEV_PCIE_COUNT_LANE_ERROR&NVML_FI_DEV_IS_RESETLESS_MIG_SUPPORTEDNVML_FI_DEV_POWER_AVERAGENVML_FI_DEV_POWER_INSTANTNVML_FI_DEV_POWER_MIN_LIMITNVML_FI_DEV_POWER_MAX_LIMITNVML_FI_DEV_POWER_DEFAULT_LIMITNVML_FI_DEV_POWER_CURRENT_LIMITNVML_FI_DEV_ENERGY!NVML_FI_DEV_POWER_REQUESTED_LIMIT'NVML_FI_DEV_TEMPERATURE_SHUTDOWN_TLIMIT'NVML_FI_DEV_TEMPERATURE_SLOWDOWN_TLIMIT&NVML_FI_DEV_TEMPERATURE_MEM_MAX_TLIMIT&NVML_FI_DEV_TEMPERATURE_GPU_MAX_TLIMITNVML_FI_DEV_PCIE_COUNT_TX_BYTESNVML_FI_DEV_PCIE_COUNT_RX_BYTES5NVML_FI_DEV_IS_MIG_MODE_INDEPENDENT_MIG_QUERY_CAPABLE*NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX%NVML_FI_DEV_NVLINK_COUNT_XMIT_PACKETS#NVML_FI_DEV_NVLINK_COUNT_XMIT_BYTES$NVML_FI_DEV_NVLINK_COUNT_RCV_PACKETS"NVML_FI_DEV_NVLINK_COUNT_RCV_BYTES%NVML_FI_DEV_NVLINK_COUNT_VL15_DROPPED0NVML_FI_DEV_NVLINK_COUNT_MALFORMED_PACKET_ERRORS.NVML_FI_DEV_NVLINK_COUNT_BUFFER_OVERRUN_ERRORS#NVML_FI_DEV_NVLINK_COUNT_RCV_ERRORS*NVML_FI_DEV_NVLINK_COUNT_RCV_REMOTE_ERRORS+NVML_FI_DEV_NVLINK_COUNT_RCV_GENERAL_ERRORS4NVML_FI_DEV_NVLINK_COUNT_LOCAL_LINK_INTEGRITY_ERRORS&NVML_FI_DEV_NVLINK_COUNT_XMIT_DISCARDS8NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_SUCCESSFUL_EVENTS4NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_FAILED_EVENTS-NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_EVENTS&NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE0&NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE1 NVML_FI_DEV_NVLINK_COUNT_RAW_BER)NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_ERRORS&NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_BER&NVML_FI_DEV_NVLINK_COUNT_SYMBOL_ERRORS#NVML_FI_DEV_NVLINK_COUNT_SYMBOL_BER*NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MIN,NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS0NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_SUPPORTEDNVML_FI_DEV_RESET_STATUS"NVML_FI_DEV_DRAIN_AND_RESET_STATUS&NVML_FI_DEV_PCIE_OUTBOUND_ATOMICS_MASK%NVML_FI_DEV_PCIE_INBOUND_ATOMICS_MASK#NVML_FI_DEV_GET_GPU_RECOVERY_ACTIONNVML_FI_DEV_C2C_LINK_ERROR_INTR!NVML_FI_DEV_C2C_LINK_ERROR_REPLAY%NVML_FI_DEV_C2C_LINK_ERROR_REPLAY_B2B NVML_FI_DEV_C2C_LINK_POWER_STATE&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_0&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_1&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_2&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_3&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_4&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_5&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_6&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_7&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_8&NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_9'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_10'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_11'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_12'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_13'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_14'NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_15NVML_FI_PWR_SMOOTHING_ENABLEDNVML_FI_PWR_SMOOTHING_PRIV_LVL+NVML_FI_PWR_SMOOTHING_IMM_RAMP_DOWN_ENABLED&NVML_FI_PWR_SMOOTHING_APPLIED_TMP_CEIL'NVML_FI_PWR_SMOOTHING_APPLIED_TMP_FLOOR3NVML_FI_PWR_SMOOTHING_MAX_PERCENT_TMP_FLOOR_SETTING3NVML_FI_PWR_SMOOTHING_MIN_PERCENT_TMP_FLOOR_SETTING=NVML_FI_PWR_SMOOTHING_HW_CIRCUITRY_PERCENT_LIFETIME_REMAINING-NVML_FI_PWR_SMOOTHING_MAX_NUM_PRESET_PROFILES/NVML_FI_PWR_SMOOTHING_PROFILE_PERCENT_TMP_FLOOR*NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_UP_RATE,NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_RATE0NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_HYST_VAL+NVML_FI_PWR_SMOOTHING_ACTIVE_PRESET_PROFILE6NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PERCENT_TMP_FLOOR1NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_UP_RATE3NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_RATE7NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_HYST_VAL,NVML_FI_DEV_CLOCKS_EVENT_REASON_SW_POWER_CAP*NVML_FI_DEV_CLOCKS_EVENT_REASON_SYNC_BOOST1NVML_FI_DEV_CLOCKS_EVENT_REASON_SW_THERM_SLOWDOWN1NVML_FI_DEV_CLOCKS_EVENT_REASON_HW_THERM_SLOWDOWN7NVML_FI_DEV_CLOCKS_EVENT_REASON_HW_POWER_BRAKE_SLOWDOWN%NVML_FI_DEV_POWER_SYNC_BALANCING_FREQ#NVML_FI_DEV_POWER_SYNC_BALANCING_AFNVML_FI_DEV_EDPP_MULTIPLIER)NVML_FI_PWR_SMOOTHING_PRIMARY_POWER_FLOOR+NVML_FI_PWR_SMOOTHING_SECONDARY_POWER_FLOOR2NVML_FI_PWR_SMOOTHING_MIN_PRIMARY_FLOOR_ACT_OFFSET1NVML_FI_PWR_SMOOTHING_MIN_PRIMARY_FLOOR_ACT_POINT'NVML_FI_PWR_SMOOTHING_WINDOW_MULTIPLIER5NVML_FI_PWR_SMOOTHING_DELAYED_PWR_SMOOTHING_SUPPORTED3NVML_FI_PWR_SMOOTHING_PROFILE_SECONDARY_POWER_FLOOR8NVML_FI_PWR_SMOOTHING_PROFILE_PRIMARY_FLOOR_ACT_WIN_MULT8NVML_FI_PWR_SMOOTHING_PROFILE_PRIMARY_FLOOR_TAR_WIN_MULT6NVML_FI_PWR_SMOOTHING_PROFILE_PRIMARY_FLOOR_ACT_OFFSET:NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_SECONDARY_POWER_FLOOR?NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PRIMARY_FLOOR_ACT_WIN_MULT?NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PRIMARY_FLOOR_TAR_WIN_MULT=NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PRIMARY_FLOOR_ACT_OFFSET)NVML_FI_DEV_NVLINK_COUNT_RAW_ERRORS_LANE0)NVML_FI_DEV_NVLINK_COUNT_RAW_ERRORS_LANE1)NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE0_V2)NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE1_V2#NVML_FI_DEV_NVLINK_COUNT_RAW_BER_V2"NVML_FI_DEV_NVLINK_PLR_XMIT_BLOCKS(NVML_FI_DEV_NVLINK_PLR_XMIT_RETRY_BLOCKSNVML_FI_MAXNVML_NVLINK_STATE_INACTIVENVML_NVLINK_STATE_ACTIVENVML_NVLINK_STATE_SLEEP*NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_100US)NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_50USNVML_C2C_POWER_STATE_FULL_POWERNVML_C2C_POWER_STATE_LOW_POWER!NVML_GPU_VIRTUALIZATION_MODE_NONE(NVML_GPU_VIRTUALIZATION_MODE_PASSTHROUGH!NVML_GPU_VIRTUALIZATION_MODE_VGPU&NVML_GPU_VIRTUALIZATION_MODE_HOST_VGPU&NVML_GPU_VIRTUALIZATION_MODE_HOST_VSGAra  Lockr_  r  r9  rW  _nvmlVgpuVmIdType_tNVML_VGPU_VM_ID_DOMAIN_IDNVML_VGPU_VM_ID_UUIDr  &NVML_GRID_LICENSE_FEATURE_CODE_UNKNOWN#NVML_GRID_LICENSE_FEATURE_CODE_VGPU)NVML_GRID_LICENSE_FEATURE_CODE_NVIDIA_RTX+NVML_GRID_LICENSE_FEATURE_CODE_VWORKSTATION%NVML_GRID_LICENSE_FEATURE_CODE_GAMING&NVML_GRID_LICENSE_FEATURE_CODE_COMPUTEr8  _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_COUNTr0  -NVML_VGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPU NVML_VGPU_DRIVER_CAP_WARM_UPDATENVML_VGPU_DRIVER_CAP_COUNTr2  *NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU5NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES2NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES*NVML_DEVICE_VGPU_CAP_READ_DEVICE_BUFFER_BW+NVML_DEVICE_VGPU_CAP_WRITE_DEVICE_BUFFER_BW%NVML_DEVICE_VGPU_CAP_DEVICE_STREAMING%NVML_DEVICE_VGPU_CAP_MINI_QUARTER_GPU-NVML_DEVICE_VGPU_CAP_COMPUTE_MEDIA_ENGINE_GPU NVML_DEVICE_VGPU_CAP_WARM_UPDATE+NVML_DEVICE_VGPU_CAP_HOMOGENEOUS_PLACEMENTS.NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_SUPPORTED,NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_ENABLEDNVML_DEVICE_VGPU_CAP_COUNTr+  1NVML_VGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED/NVML_VGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZEDr4  NVML_VGPU_VM_COMPATIBILITY_NONENVML_VGPU_VM_COMPATIBILITY_COLD$NVML_VGPU_VM_COMPATIBILITY_HIBERNATE NVML_VGPU_VM_COMPATIBILITY_SLEEPNVML_VGPU_VM_COMPATIBILITY_LIVEr5  "NVML_VGPU_COMPATIBILITY_LIMIT_NONE)NVML_VGPU_COMPATIBILITY_LIMIT_HOST_DRIVER*NVML_VGPU_COMPATIBILITY_LIMIT_GUEST_DRIVER!NVML_VGPU_COMPATIBILITY_LIMIT_GPU#NVML_VGPU_COMPATIBILITY_LIMIT_OTHERr  NVML_HOST_VGPU_MODE_NON_SRIOVNVML_HOST_VGPU_MODE_SRIOV _nvmlConfComputeGpusReadyState_t'NVML_CC_ACCEPTING_CLIENT_REQUESTS_FALSE&NVML_CC_ACCEPTING_CLIENT_REQUESTS_TRUE_nvmlConfComputeGpuCaps_t"NVML_CC_SYSTEM_GPUS_CC_NOT_CAPABLENVML_CC_SYSTEM_GPUS_CC_CAPABLE_nvmlConfComputeCpuCaps_tNVML_CC_SYSTEM_CPU_CAPS_NONENVML_CC_SYSTEM_CPU_CAPS_AMD_SEV!NVML_CC_SYSTEM_CPU_CAPS_INTEL_TDX#NVML_CC_SYSTEM_CPU_CAPS_AMD_SEV_SNP$NVML_CC_SYSTEM_CPU_CAPS_AMD_SNP_VTOM_nvmlConfComputeDevToolsMode_t NVML_CC_SYSTEM_DEVTOOLS_MODE_OFFNVML_CC_SYSTEM_DEVTOOLS_MODE_ONNVML_CC_SYSTEM_MULTIGPU_NONE&NVML_CC_SYSTEM_MULTIGPU_PROTECTED_PCIENVML_CC_SYSTEM_MULTIGPU_NVLE&NVML_CC_SYSTEM_ENVIRONMENT_UNAVAILABLENVML_CC_SYSTEM_ENVIRONMENT_SIMNVML_CC_SYSTEM_ENVIRONMENT_PROD_nvmlConfComputeCcFeature_tNVML_CC_SYSTEM_FEATURE_DISABLEDNVML_CC_SYSTEM_FEATURE_ENABLED0_nvmlConfComputeCcKeyRotationThreshAttackerAdv_t2NVML_CC_KEY_ROTATION_THRESH_ATTACKER_ADVANTAGE_MIN2NVML_CC_KEY_ROTATION_THRESH_ATTACKER_ADVANTAGE_MAXr  r  r
  r  r=  rZ  r]  r&  r^  re  objectrf  rs  rw  	Structurerx  r  r&  ry  r  r  nvmlC2cModeInfo_v1r  r  r  r  r  r  r  nvmlPciInfoExt_v1r  r  r  r  r  r  r  r  nvmlMemory_v2r  r  r  r  r  rG  c_nvmlProcessInfo_tr  NVML_PROCESS_MODE_COMPUTENVML_PROCESS_MODE_GRAPHICSNVML_PROCESS_MODE_MPSr  r  rR  nvmlProcessDetailList_v1r  r  r  r  r  Unionr  r   r#  r&  r9  r6  r1  r>  r;  rC  rA  rD  r  rE  r%  rG  r*  !NVML_VGPU_PGPU_HETEROGENEOUS_MODENVML_VGPU_PGPU_HOMOGENEOUS_MODErM  r)  rO  rg  rQ  rY  r]  r  rc  rf  rh  r  rk  ra  rn  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_LICENSEDry  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  NVML_UUID_TYPE_NONErF  rG  r  r  r  r  r  r  r  r  r  #NVML_NVLINK_FIRMWARE_UCODE_TYPE_MSE%NVML_NVLINK_FIRMWARE_UCODE_TYPE_NETIR*NVML_NVLINK_FIRMWARE_UCODE_TYPE_NETIR_UPHY)NVML_NVLINK_FIRMWARE_UCODE_TYPE_NETIR_CLN)NVML_NVLINK_FIRMWARE_UCODE_TYPE_NETIR_DLNr  r  r  r  r  r  r  r   NVML_DEVICE_ADDRESSING_MODE_NONENVML_DEVICE_ADDRESSING_MODE_HMMNVML_DEVICE_ADDRESSING_MODE_ATSr  r  r  r  r  >NVML_PRM_COUNTER_ID_PPCNT_PHYSICAL_LAYER_CTRS_LINK_DOWN_EVENTSHNVML_PRM_COUNTER_ID_PPCNT_PHYSICAL_LAYER_CTRS_SUCCESSFUL_RECOVERY_EVENTSHNVML_PRM_COUNTER_ID_PPCNT_RECOVERY_CTRS_TOTAL_SUCCESSFUL_RECOVERY_EVENTS@NVML_PRM_COUNTER_ID_PPCNT_RECOVERY_CTRS_TIME_SINCE_LAST_RECOVERYHNVML_PRM_COUNTER_ID_PPCNT_RECOVERY_CTRS_TIME_BETWEEN_LAST_TWO_RECOVERIES5NVML_PRM_COUNTER_ID_PPCNT_PORTCOUNTERS_PORT_XMIT_WAIT'NVML_PRM_COUNTER_ID_PPCNT_PLR_RCV_CODES*NVML_PRM_COUNTER_ID_PPCNT_PLR_RCV_CODE_ERR4NVML_PRM_COUNTER_ID_PPCNT_PLR_RCV_UNCORRECTABLE_CODE(NVML_PRM_COUNTER_ID_PPCNT_PLR_XMIT_CODES.NVML_PRM_COUNTER_ID_PPCNT_PLR_XMIT_RETRY_CODES/NVML_PRM_COUNTER_ID_PPCNT_PLR_XMIT_RETRY_EVENTS)NVML_PRM_COUNTER_ID_PPCNT_PLR_SYNC_EVENTS&NVML_PRM_COUNTER_ID_PPRM_OPER_RECOVERYr  r  r  r  r  r  r{  nvmlEventTypeSingleBitEccErrornvmlEventTypeDoubleBitEccErrornvmlEventTypePStatenvmlEventTypeXidCriticalErrornvmlEventTypeClocknvmlEventTypePowerSourceChangenvmlEventMigConfigChange#nvmlEventTypeSingleBitEccErrorStorm nvmlEventTypeDramRetirementEvent"nvmlEventTypeDramRetirementFailure nvmlEventTypeNonFatalPoisonErrornvmlEventTypeFatalPoisonError nvmlEventTypeGpuUnavailableErrornvmlEventTypeGpuRecoveryActionnvmlEventTypeNonenvmlEventTypeAllnvmlClocksEventReasonGpuIdle.nvmlClocksEventReasonApplicationsClocksSetting&nvmlClocksEventReasonUserDefinedClocksnvmlClocksEventReasonSwPowerCapnvmlClocksEventReasonHwSlowdownnvmlClocksEventReasonSyncBoost&nvmlClocksEventReasonSwThermalSlowdown&nvmlClocksEventReasonHwThermalSlowdown)nvmlClocksEventReasonHwPowerBrakeSlowdown(nvmlClocksEventReasonDisplayClockSettingnvmlClocksEventReasonNonenvmlClocksEventReasonAllnvmlClocksThrottleReasonGpuIdle1nvmlClocksThrottleReasonApplicationsClocksSetting)nvmlClocksThrottleReasonUserDefinedClocks"nvmlClocksThrottleReasonSwPowerCap"nvmlClocksThrottleReasonHwSlowdown!nvmlClocksThrottleReasonSyncBoost)nvmlClocksThrottleReasonSwThermalSlowdown)nvmlClocksThrottleReasonHwThermalSlowdown,nvmlClocksThrottleReasonHwPowerBrakeSlowdown+nvmlClocksThrottleReasonDisplayClockSettingnvmlClocksThrottleReasonNonenvmlClocksThrottleReasonAllr  r  r  "nvmlSystemEventTypeGpuDriverUnbind nvmlSystemEventTypeGpuDriverBindnvmlSystemEventTypeCountr  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r"  r-  r1  "NVML_VGPU_SCHEDULER_POLICY_UNKNOWN&NVML_VGPU_SCHEDULER_POLICY_BEST_EFFORT&NVML_VGPU_SCHEDULER_POLICY_EQUAL_SHARE&NVML_VGPU_SCHEDULER_POLICY_FIXED_SHAREr`  rK  NVML_VGPU_SCHEDULER_ARR_DEFAULTNVML_VGPU_SCHEDULER_ARR_DISABLENVML_VGPU_SCHEDULER_ARR_ENABLE(NVML_VGPU_SCHEDULER_ENGINE_TYPE_GRAPHICS&NVML_VGPU_SCHEDULER_ENGINE_TYPE_NVENC1&NVML_VGPU_SCHEDULER_ENGINE_TYPE_NVENC0r6  r9  r:  r=  rC  rN  rP  rR  rS  rT  rW  rb  nvmlVgpuTypeIdInfo_v1rf  r  ri  nvmlActiveVgpuInstanceInfo_v1rl  nvmlVgpuSchedulerState_v1rm  nvmlVgpuSchedulerStateInfo_v1rn  nvmlVgpuSchedulerLogInfo_v1ro  !nvmlVgpuCreatablePlacementInfo_v1rp  rq  rs  rt  ru  rz  NVML_DEVICE_MIG_DISABLENVML_DEVICE_MIG_ENABLE!NVML_GPU_INSTANCE_PROFILE_1_SLICE!NVML_GPU_INSTANCE_PROFILE_2_SLICE!NVML_GPU_INSTANCE_PROFILE_3_SLICE!NVML_GPU_INSTANCE_PROFILE_4_SLICE!NVML_GPU_INSTANCE_PROFILE_7_SLICE!NVML_GPU_INSTANCE_PROFILE_8_SLICE!NVML_GPU_INSTANCE_PROFILE_6_SLICE&NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV1&NVML_GPU_INSTANCE_PROFILE_2_SLICE_REV1&NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV2%NVML_GPU_INSTANCE_PROFILE_1_SLICE_GFX%NVML_GPU_INSTANCE_PROFILE_2_SLICE_GFX%NVML_GPU_INSTANCE_PROFILE_4_SLICE_GFX'NVML_GPU_INSTANCE_PROFILE_1_SLICE_NO_ME'NVML_GPU_INSTANCE_PROFILE_2_SLICE_NO_ME(NVML_GPU_INSTANCE_PROFILE_1_SLICE_ALL_ME(NVML_GPU_INSTANCE_PROFILE_2_SLICE_ALL_MENVML_GPU_INSTANCE_PROFILE_COUNTr  r  r  r  r  r  r  %NVML_COMPUTE_INSTANCE_PROFILE_1_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_2_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_3_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_4_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_7_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_8_SLICE%NVML_COMPUTE_INSTANCE_PROFILE_6_SLICE*NVML_COMPUTE_INSTANCE_PROFILE_1_SLICE_REV1#NVML_COMPUTE_INSTANCE_PROFILE_COUNT+NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_SHARED*NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_COUNTr  r  r  r  r  r  NVML_GPU_UTILIZATION_DOMAIN_GPUNVML_GPU_UTILIZATION_DOMAIN_FBNVML_GPU_UTILIZATION_DOMAIN_VIDNVML_GPU_UTILIZATION_DOMAIN_BUSr  r  r  NVML_THERMAL_TARGET_NONENVML_THERMAL_TARGET_GPUNVML_THERMAL_TARGET_MEMORY NVML_THERMAL_TARGET_POWER_SUPPLYNVML_THERMAL_TARGET_BOARDNVML_THERMAL_TARGET_VCD_BOARDNVML_THERMAL_TARGET_VCD_INLETNVML_THERMAL_TARGET_VCD_OUTLETNVML_THERMAL_TARGET_ALLNVML_THERMAL_TARGET_UNKNOWNNVML_THERMAL_CONTROLLER_NONE$NVML_THERMAL_CONTROLLER_GPU_INTERNALNVML_THERMAL_CONTROLLER_ADM1032NVML_THERMAL_CONTROLLER_ADT7461NVML_THERMAL_CONTROLLER_MAX6649NVML_THERMAL_CONTROLLER_MAX1617NVML_THERMAL_CONTROLLER_LM99NVML_THERMAL_CONTROLLER_LM89NVML_THERMAL_CONTROLLER_LM64NVML_THERMAL_CONTROLLER_G781NVML_THERMAL_CONTROLLER_ADT7473!NVML_THERMAL_CONTROLLER_SBMAX6649 NVML_THERMAL_CONTROLLER_VBIOSEVTNVML_THERMAL_CONTROLLER_OS'NVML_THERMAL_CONTROLLER_NVSYSCON_CANOAS%NVML_THERMAL_CONTROLLER_NVSYSCON_E551 NVML_THERMAL_CONTROLLER_MAX6649R NVML_THERMAL_CONTROLLER_ADT7473SNVML_THERMAL_CONTROLLER_UNKNOWNr  r  r  NVML_THERMAL_COOLER_SIGNAL_NONE!NVML_THERMAL_COOLER_SIGNAL_TOGGLE#NVML_THERMAL_COOLER_SIGNAL_VARIABLE NVML_THERMAL_COOLER_SIGNAL_COUNTr  NVML_THERMAL_COOLER_TARGET_NONENVML_THERMAL_COOLER_TARGET_GPU!NVML_THERMAL_COOLER_TARGET_MEMORY'NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY&NVML_THERMAL_COOLER_TARGET_GPU_RELATEDr  r  r  r  r%  r  r  r  r  r  r  r  *NVML_CC_CEC_ATTESTATION_REPORT_NOT_PRESENT&NVML_CC_CEC_ATTESTATION_REPORT_PRESENTr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r!  r%  r+  r.  r0  r1  r4  r7  r6  r;  r>  r?  rB  rE  rL  rN  rP  rU  rT  rX  rZ  rY  r]  r`  rb  rf  re  rj  rm  ro  rt  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r!  r#  r&  r(  r+  r,  r-  r.  r6  r7  r0  r9  r:  r;  r>  rE  rI  rK  rL  rM  rO  rP  rN  rQ  rU  rX  rZ  r]  r^  r_  r`  ra  rd  rg  rk  rl  ro  rq  rt  rv  rw  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(  r.  r/  r1  r3  r5  r7  r@  rB  rF  rL  rM  rP  rR  rT  rW  rY  r[  r]  r`  r'  rd  rf  ri  rl  rp  rs  rt  rv  rx  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  r  r   r  r  r  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  r5  r7  r8  r:  r;  r@  rB  rE  rH  rJ  rL  rO  rQ  rT  rW  rX  r[  r\  r`  rj  NVML_POWER_MIZER_MODE_ADAPTIVE0NVML_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCENVML_POWER_MIZER_MODE_AUTO3NVML_POWER_MIZER_MODE_PREFER_CONSISTENT_PERFORMANCErg  rl  ro  rp  nvmlClockOffset_v1ru  rw  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  NVML_GPM_METRIC_GRAPHICS_UTILNVML_GPM_METRIC_SM_UTILNVML_GPM_METRIC_SM_OCCUPANCYNVML_GPM_METRIC_INTEGER_UTILNVML_GPM_METRIC_ANY_TENSOR_UTIL NVML_GPM_METRIC_DFMA_TENSOR_UTIL NVML_GPM_METRIC_HMMA_TENSOR_UTIL NVML_GPM_METRIC_DMMA_TENSOR_UTIL NVML_GPM_METRIC_IMMA_TENSOR_UTILNVML_GPM_METRIC_DRAM_BW_UTILNVML_GPM_METRIC_FP64_UTILNVML_GPM_METRIC_FP32_UTILNVML_GPM_METRIC_FP16_UTILNVML_GPM_METRIC_PCIE_TX_PER_SECNVML_GPM_METRIC_PCIE_RX_PER_SECNVML_GPM_METRIC_NVDEC_0_UTILNVML_GPM_METRIC_NVDEC_1_UTILNVML_GPM_METRIC_NVDEC_2_UTILNVML_GPM_METRIC_NVDEC_3_UTILNVML_GPM_METRIC_NVDEC_4_UTILNVML_GPM_METRIC_NVDEC_5_UTILNVML_GPM_METRIC_NVDEC_6_UTILNVML_GPM_METRIC_NVDEC_7_UTILNVML_GPM_METRIC_NVJPG_0_UTILNVML_GPM_METRIC_NVJPG_1_UTILNVML_GPM_METRIC_NVJPG_2_UTILNVML_GPM_METRIC_NVJPG_3_UTILNVML_GPM_METRIC_NVJPG_4_UTILNVML_GPM_METRIC_NVJPG_5_UTILNVML_GPM_METRIC_NVJPG_6_UTILNVML_GPM_METRIC_NVJPG_7_UTILNVML_GPM_METRIC_NVOFA_0_UTILNVML_GPM_METRIC_NVOFA_1_UTIL'NVML_GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC'NVML_GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L0_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L0_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L1_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L1_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L2_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L2_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L3_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L3_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L4_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L4_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L5_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L5_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L6_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L6_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L7_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L7_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L8_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L8_TX_PER_SEC$NVML_GPM_METRIC_NVLINK_L9_RX_PER_SEC$NVML_GPM_METRIC_NVLINK_L9_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L10_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L10_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L11_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L11_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L12_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L12_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L13_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L13_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L14_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L14_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L15_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L15_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L16_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L16_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L17_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L17_TX_PER_SEC$NVML_GPM_METRIC_C2C_TOTAL_TX_PER_SEC$NVML_GPM_METRIC_C2C_TOTAL_RX_PER_SEC#NVML_GPM_METRIC_C2C_DATA_TX_PER_SEC#NVML_GPM_METRIC_C2C_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK0_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK0_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK0_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK0_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK1_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK1_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK1_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK1_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK2_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK2_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK2_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK2_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK3_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK3_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK3_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK3_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK4_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK4_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK4_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK4_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK5_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK5_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK5_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK5_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK6_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK6_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK6_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK6_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK7_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK7_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK7_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK7_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK8_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK8_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK8_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK8_DATA_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK9_TOTAL_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK9_TOTAL_RX_PER_SEC)NVML_GPM_METRIC_C2C_LINK9_DATA_TX_PER_SEC)NVML_GPM_METRIC_C2C_LINK9_DATA_RX_PER_SEC+NVML_GPM_METRIC_C2C_LINK10_TOTAL_TX_PER_SEC+NVML_GPM_METRIC_C2C_LINK10_TOTAL_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK10_DATA_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK10_DATA_RX_PER_SEC+NVML_GPM_METRIC_C2C_LINK11_TOTAL_TX_PER_SEC+NVML_GPM_METRIC_C2C_LINK11_TOTAL_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK11_DATA_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK11_DATA_RX_PER_SEC+NVML_GPM_METRIC_C2C_LINK12_TOTAL_TX_PER_SEC+NVML_GPM_METRIC_C2C_LINK12_TOTAL_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK12_DATA_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK12_DATA_RX_PER_SEC+NVML_GPM_METRIC_C2C_LINK13_TOTAL_TX_PER_SEC+NVML_GPM_METRIC_C2C_LINK13_TOTAL_RX_PER_SEC*NVML_GPM_METRIC_C2C_LINK13_DATA_TX_PER_SEC*NVML_GPM_METRIC_C2C_LINK13_DATA_RX_PER_SEC!NVML_GPM_METRIC_HOSTMEM_CACHE_HIT"NVML_GPM_METRIC_HOSTMEM_CACHE_MISS!NVML_GPM_METRIC_PEERMEM_CACHE_HIT"NVML_GPM_METRIC_PEERMEM_CACHE_MISSNVML_GPM_METRIC_DRAM_CACHE_HITNVML_GPM_METRIC_DRAM_CACHE_MISSNVML_GPM_METRIC_NVENC_0_UTILNVML_GPM_METRIC_NVENC_1_UTILNVML_GPM_METRIC_NVENC_2_UTILNVML_GPM_METRIC_NVENC_3_UTIL(NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR0_CTXSW_REQUESTS(NVML_GPM_METRIC_GR0_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR0_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR1_CTXSW_REQUESTS(NVML_GPM_METRIC_GR1_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR1_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR2_CTXSW_REQUESTS(NVML_GPM_METRIC_GR2_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR2_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR3_CTXSW_REQUESTS(NVML_GPM_METRIC_GR3_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR3_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR4_CTXSW_REQUESTS(NVML_GPM_METRIC_GR4_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR4_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR5_CTXSW_REQUESTS(NVML_GPM_METRIC_GR5_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR5_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR6_CTXSW_REQUESTS(NVML_GPM_METRIC_GR6_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR6_CTXSW_ACTIVE_PCT(NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ELAPSED'NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ACTIVE"NVML_GPM_METRIC_GR7_CTXSW_REQUESTS(NVML_GPM_METRIC_GR7_CTXSW_CYCLES_PER_REQ$NVML_GPM_METRIC_GR7_CTXSW_ACTIVE_PCT!NVML_GPM_METRIC_SM_CYCLES_ELAPSED NVML_GPM_METRIC_SM_CYCLES_ACTIVE!NVML_GPM_METRIC_MMA_CYCLES_ACTIVE"NVML_GPM_METRIC_DMMA_CYCLES_ACTIVE"NVML_GPM_METRIC_HMMA_CYCLES_ACTIVE"NVML_GPM_METRIC_IMMA_CYCLES_ACTIVE"NVML_GPM_METRIC_DFMA_CYCLES_ACTIVENVML_GPM_METRIC_PCIE_TXNVML_GPM_METRIC_PCIE_RX%NVML_GPM_METRIC_INTEGER_CYCLES_ACTIVE"NVML_GPM_METRIC_FP64_CYCLES_ACTIVE"NVML_GPM_METRIC_FP32_CYCLES_ACTIVE"NVML_GPM_METRIC_FP16_CYCLES_ACTIVENVML_GPM_METRIC_NVLINK_L0_RXNVML_GPM_METRIC_NVLINK_L0_TXNVML_GPM_METRIC_NVLINK_L1_RXNVML_GPM_METRIC_NVLINK_L1_TXNVML_GPM_METRIC_NVLINK_L2_RXNVML_GPM_METRIC_NVLINK_L2_TXNVML_GPM_METRIC_NVLINK_L3_RXNVML_GPM_METRIC_NVLINK_L3_TXNVML_GPM_METRIC_NVLINK_L4_RXNVML_GPM_METRIC_NVLINK_L4_TXNVML_GPM_METRIC_NVLINK_L5_RXNVML_GPM_METRIC_NVLINK_L5_TXNVML_GPM_METRIC_NVLINK_L6_RXNVML_GPM_METRIC_NVLINK_L6_TXNVML_GPM_METRIC_NVLINK_L7_RXNVML_GPM_METRIC_NVLINK_L7_TXNVML_GPM_METRIC_NVLINK_L8_RXNVML_GPM_METRIC_NVLINK_L8_TXNVML_GPM_METRIC_NVLINK_L9_RXNVML_GPM_METRIC_NVLINK_L9_TXNVML_GPM_METRIC_NVLINK_L10_RXNVML_GPM_METRIC_NVLINK_L10_TXNVML_GPM_METRIC_NVLINK_L11_RXNVML_GPM_METRIC_NVLINK_L11_TXNVML_GPM_METRIC_NVLINK_L12_RXNVML_GPM_METRIC_NVLINK_L12_TXNVML_GPM_METRIC_NVLINK_L13_RXNVML_GPM_METRIC_NVLINK_L13_TXNVML_GPM_METRIC_NVLINK_L14_RXNVML_GPM_METRIC_NVLINK_L14_TXNVML_GPM_METRIC_NVLINK_L15_RXNVML_GPM_METRIC_NVLINK_L15_TXNVML_GPM_METRIC_NVLINK_L16_RXNVML_GPM_METRIC_NVLINK_L16_TXNVML_GPM_METRIC_NVLINK_L17_RXNVML_GPM_METRIC_NVLINK_L17_TXr  r  r  r  r  r  NVML_GPM_METRICS_GET_VERSIONr  r  r  r  r  r  r  r  r  r  "NVML_NVLINK_POWER_STATE_HIGH_SPEEDNVML_NVLINK_POWER_STATE_LOW#NVML_NVLINK_LOW_POWER_THRESHOLD_MIN#NVML_NVLINK_LOW_POWER_THRESHOLD_MAX%NVML_NVLINK_LOW_POWER_THRESHOLD_RESET'NVML_NVLINK_LOW_POWER_THRESHOLD_DEFAULTr  r  r  r  #NVML_GPU_FABRIC_STATE_NOT_SUPPORTED!NVML_GPU_FABRIC_STATE_NOT_STARTED!NVML_GPU_FABRIC_STATE_IN_PROGRESSNVML_GPU_FABRIC_STATE_COMPLETEDr  5NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_NOT_SUPPORTED,NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_TRUE-NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_FALSE-NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_DEGRADED_BW-NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW8NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_NOT_SUPPORTED/NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_TRUE0NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_FALSE0NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_RECOVERY0NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_RECOVERY9NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_NOT_SUPPORTED0NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_TRUE1NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_FALSE1NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_UNHEALTHY1NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_UNHEALTHYANVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_NOT_SUPPORTED8NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_TRUE9NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_FALSE9NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ACCESS_TIMEOUT_RECOVERY9NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ACCESS_TIMEOUT_RECOVERYANVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NOT_SUPPORTED8NVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NONEENVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INCORRECT_SYSGUIDHNVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INCORRECT_CHASSIS_SN@NVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_NO_PARTITIONHNVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INSUFFICIENT_NVLINKSGNVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INCOMPATIBLE_GPU_FWCNVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIURATION_INVALID_LOCATIONDNVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_INVALID_LOCATIONENVML_GPU_FABRIC_HEALTH_MASK_INCORRECT_CONFIGURATION_GPU_STATE_INVALID9NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_INCORRECT_CONFIGURATION9NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_INCORRECT_CONFIGURATION<NVML_GPU_FABRIC_HEALTH_MASK_PARTITION_ASSIGNED_NOT_SUPPORTED3NVML_GPU_FABRIC_HEALTH_MASK_PARTITION_ASSIGNED_TRUE4NVML_GPU_FABRIC_HEALTH_MASK_PARTITION_ASSIGNED_FALSE4NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_PARTITION_ASSIGNED4NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_PARTITION_ASSIGNED,NVML_GPU_FABRIC_HEALTH_SUMMARY_NOT_SUPPORTED&NVML_GPU_FABRIC_HEALTH_SUMMARY_HEALTHY(NVML_GPU_FABRIC_HEALTH_SUMMARY_UNHEALTHY/NVML_GPU_FABRIC_HEALTH_SUMMARY_LIMITED_CAPACITYr  r  c_nvmlGpuFabricInfoV_tr  r  r  r  NVML_GPU_NVLINK_BW_MODE_FULLNVML_GPU_NVLINK_BW_MODE_OFFNVML_GPU_NVLINK_BW_MODE_MINNVML_GPU_NVLINK_BW_MODE_HALF NVML_GPU_NVLINK_BW_MODE_3QUARTERNVML_GPU_NVLINK_BW_MODE_COUNTr  r  r  NVML_POWER_SCOPE_GPUNVML_POWER_SCOPE_MODULENVML_POWER_SCOPE_MEMORYr  nvmlPowerValue_v2r  r  r  r  NVML_DEV_CAP_EGMr  r  r  r  r  r	  r  r  r  r  r  r$  NVML_POWER_PROFILE_MAX_PNVML_POWER_PROFILE_MAX_QNVML_POWER_PROFILE_COMPUTENVML_POWER_PROFILE_MEMORY_BOUNDNVML_POWER_PROFILE_NETWORKNVML_POWER_PROFILE_BALANCED NVML_POWER_PROFILE_LLM_INFERENCENVML_POWER_PROFILE_LLM_TRAININGNVML_POWER_PROFILE_RBMNVML_POWER_PROFILE_DCPCIENVML_POWER_PROFILE_HMMA_SPARSENVML_POWER_PROFILE_HMMA_DENSE NVML_POWER_PROFILE_SYNC_BALANCEDNVML_POWER_PROFILE_HPCNVML_POWER_PROFILE_MIGNVML_POWER_PROFILE_MAXr  r  r#  r   r)  r&  r+  r*  "NVML_POWER_PROFILE_OPERATION_CLEAR NVML_POWER_PROFILE_OPERATION_SET.NVML_POWER_PROFILE_OPERATION_SET_AND_OVERWRITE NVML_POWER_PROFILE_OPERATION_MAX)nvmlWorkloadPowerProfileUpdateProfiles_v1r,  r/  r1  r3  r6  r7  r9  r;  r=  rA  r?  rB  rD  rE  rF  'NVML_POWER_SMOOTHING_NUM_PROFILE_PARAMS%NVML_POWER_SMOOTHING_MAX_NUM_PROFILES+NVML_POWER_SMOOTHING_ADMIN_OVERRIDE_NOT_SET4NVML_POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR/NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE1NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE7NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS8NVML_POWER_SMOOTHING_PROFILE_PARAM_SECONDARY_POWER_FLOOR=NVML_POWER_SMOOTHING_PROFILE_PARAM_PRIMARY_FLOOR_ACT_WIN_MULT=NVML_POWER_SMOOTHING_PROFILE_PARAM_PRIMARY_FLOOR_TAR_WIN_MULT;NVML_POWER_SMOOTHING_PROFILE_PARAM_PRIMARY_FLOOR_ACT_OFFSETrI  rH  rL  rJ  rM  rP  rQ  rR  rW  rZ  r[  r]  r_  r`  rc  rf  rg  NVML_RUSD_POLL_NONENVML_RUSD_POLL_CLOCKNVML_RUSD_POLL_PERFNVML_RUSD_POLL_MEMORYNVML_RUSD_POLL_POWERNVML_RUSD_POLL_THERMALNVML_RUSD_POLL_PCINVML_RUSD_POLL_FANNVML_RUSD_POLL_PROC_UTILNVML_RUSD_POLL_ALLrj  rh  rk  r  r  r  r  <module>   sV  
-
4
			


	
	

	
	
							
		
		
			!

			
	
	"	

														""""#

		

												
		
	
					


					
