
    
3jx                    M   S SK 7  S SKJr  S SKJr  S SKrS SKrS SKrS SKr\	r
S rSr\	rS rSrSrSrSrS	rS
rSrSrSrSrSr\rSrSrSrSrSrSr \	r!S r"Sr#Sr$Sr%Sr&S	r'S
r(Sr)Sr*\	r+S r,Sr-\	r.S r/Sr0Sr1Sr2Sr3\	r4S r5Sr6Sr7Sr8Sr9Sr:S	r;S
r<Sr=Sr>Sr?\?r@\	rAS rBSrCSrDSrESrFS	rG\	rHS rISrJSrKSrLS	rM\	rNS rOSrPSrQSrRSrSS	rTS
rU\	rVSrWSrXSrYSrZSr[Sr\Sr]Sr^Sr_\	r`S raSrbSrcSrdSre\	rfS rgSrhSriSrj\	rkS rlSrmSrn\	roS rpSrqSrr\	rsS rtSruSrv\	rwS rxSrySrzSr{Sr|\	r}S r~SrSrSrSr\	rS rSrSrSr\	rS rSrSrSrSrS	rS
rSrSrSrSrSrSrSrSrSrSr\	rS rSrSrSrSr\	rS rSrSrSrSrS	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrS rS!rS"rS#rS$rS%rS&rS'rS(r\	rS rSr\	rS rSr\	rS rSr\	rS rSrSr\	rS rSrSr\	rS rSrSr\	rS rSrSr\	rS rSrSrSrSrS	rS
rSr\	rS rSrSrSrSrS	rS
rSrSr\	rS rSrSrSrSrS	rSrSrSr\	rS rSrSrSr\	rS rSrSrSGr SGr\	GrS GrSGr\	GrS GrSGr\	GrS Gr	SGr
SGrSGrSGrS	GrS
GrSGrSGrSGrSGr\	GrS GrSGrSGr\	GrS GrSGrSGrS'GrS)GrG\GrS*Gr\	Gr S+Gr!SGr"SGr#SGr$SGr%SGr&S	Gr'\	Gr(S Gr)SGr*G\*Gr+SGr,SGr-SGr.S	Gr/S
Gr0\	Gr1SGr2SGr3SGr4S	Gr5S
Gr6SGr7SGr8SGr9SGr:SGr;S,Gr<\	Gr=S Gr>SGr?SGr@SGrASGrB\	GrCS GrDSGrESGrF\	GrGS GrHSGrI\	GrJS-GrKS.GrLS/GrM\	GrNS GrOSGrPSGrQSGrRSGrSS	GrTS
GrU\	GrVSGrWSGrXSGrYSGrZSGr[SGr\SGr]SGr^\	Gr_S Gr`SGra\	GrbS GrcSGrdSGreSGrfSGrgS	GrhS GriSGrjSGrkSGrlSGrmSGrnSGroS0GrpS1GrqS0GrrS0GrsSGrtS1GruS'GrvS0GrwS0GrxSGrySGrzSGr{SGr|SGr}SGr~G\" \	5      S2-   GrS2GrSGrS3GrS4GrS5GrG\" S65      Gr\	" S65      Gr SGrSGrSGrSGrS	GrS
GrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrS GrS!GrS"GrS#GrS$GrS%GrS&GrS'GrS7GrSGrS8GrS9GrS:GrSGrS;GrS<GrS=GrS)GrS>GrS?GrS@GrSAGrSBGrSCGrSDGrSEGrSFGrS*GrSGGrSHGrSIGrSJGrSKGrSLGrSMGrSNGrSOGrSPGrSQGrSRGrSSGrSGrSTGrSUGrSVGrSWGrSXGrSYGrSZGrS[GrS\GrS]GrS^GrS_GrS`GrSaGrSbGrS0GrScGrSdGrSeGrSfGrSgGrShGrSiGrSjGrSkGrSlGrSmGrSnGrSoGrSpGrSqGrS1GrSrGrSsGrStGrSuGrSvGrSwGrSxGrSyGrSzGrS{GrS|GrS}GrS~GrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGr SGrSGrSGrSGrSGrSGrSGrSGrSGr	SGr
SGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGr SGr!SGr"SGr#SGr$SGr%SGr&SGr'SGr(SGr)SGr*SGr+SGr,SGr-SGr.SGr/SGr0SGr1SGr2SGr3SGr4SGr5SGr6SGr7SGr8SGr9SGr:SGr;SGr<SGr=SGr>SGr?SGr@SGrASGrBSGrCSGrDSGrESGrFSGrGSGrHSGrISGrJSGrKSGrLSGrMSGrNSGrOSGrPSGrQSGrRSGrSSGrTSGrUSGrVSGrWSGrXSGrYSGrZSGr[SGr\SGr]SGr^SGr_SGr`SGraSGrbSGrcSGrdSGreSGrfSGrgSGrhSGriSGrjSGrkSGrlSGrmSGrnSGroSGrpSGrqSGrrSGrsSGrtSGruSGrvSGrwGS GrxGSGryGSGrzGSGr{GSGr|GSGr}GSGr~GSGrGSGrGS	GrGS
GrGSGrGSGrGSGrGSGrSGrS2GrGSGrGSGrGSGrGSGrGSGrGSGrGSGrGSGrGSGrGSGrGSGrGSGrG\GrG\GrGSGrGSGrGSGrGSGrGSGrGS GrGS!GrGS"GrGS#GrGS$GrGS%GrGS&GrGS'GrGS(GrGS)GrGS*GrGS+GrGS,GrGS-GrGS.GrGS/GrGS0GrGS1GrGS2GrGS3GrGS4GrGS5GrGS6GrGS7GrGS8GrGS9GrGS:GrGS;GrGS<GrGS=GrS GrSGrSGrS GrSGrSGrS GrSGrS GrSGrS GrSGrSGrSGrSGrSGq\GR                  " 5       GrS Gq\	Gr\	Gr\	GrS GrSGr\	GrS GrSGrSGrSGrSGrSGrG\GrS+GrGS>GrGS?GrGS@GrGSAGr\	GrS GrSGrSGrSGrSGrS	Gr\	GrS GrSGrSGr\	GrS GrSGrSGrSGrSGrS	GrS
GrSGrSGrSGrSGrSGrSGr\	GrS GrSGr\	GrS GrSGrSGrSGr SGr\	GrS GrSGrSGrSGrGSBGr\	GrS Gr	SGr
\	GrS GrSGr\	GrS GrSGr\	GrS GrSGrSGrSGrSGr\	GrS GrSGrS GrSGrSGrS GrSGrSGr\	Gr S Gr!SGr"\	Gr#S*Gr$STGr%SGr& " GSC GSDG\'5      Gr( " GSE GSFG\'5      Gr)GSG Gr*GSH Gr+G\+" 5         GSI Gr,G\-" 5       Gr.GSJ Gr/ " GSK GSLG\05      Gr1GSM Gr2GSN Gr3 " GSO GSPG\45      Gr5G\6" G\55      Gr7 " GSQ GSRG\45      Gr8 " GSS GSTG\85      Gr9 " GSU GSVG\85      Gr:GSWGr; " GSX GSYG\85      Gr< " GSZ GS[G\85      Gr= " GS\ GS]G\85      Gr> " GS^ GS_G\85      Gr? " GS` GSaG\45      Gr@G\6" G\@5      GrA " GSb GScG\85      GrBGSdGrC " GSe GSfG\85      GrD " GSg GShG\85      GrE " GSi GSjG\85      GrFGSkGrG " GSl GSmG\85      GrHSGrIS GrJ " GSn GSoG\85      GrK " GSp GSqG\85      GrL " GSr GSsG\85      GrM " GSt GSuG\85      GrN " GSv GSwG\85      GrOGSxGrP " GSy GSzG\85      GrQ " GS{ GS|G\45      GrRSGrS " GS} GS~G\45      GrT " GS GSG\85      GrUG\UGrVG\VGrW\	GrXS GrYSGrZSGr[SGr\SGr] " GS GSG\45      Gr^ " GS GSG\85      Gr_G\_Gr`GSGra " GS GSG\85      Grb " GS GSG\85      Grc " GS GSG\85      Grd " GS GSG\85      Gre " GS GSG\85      Grf " GS GSG\g5      Grh " GS GSG\85      Gri " GS GSG\85      Grj " GS GSG\85      GrkS GrlGSGrm " GS GSG\85      GrnGSGro " GS GSG\85      GrpGSGrq " GS GSG\85      Grr " GS GSG\85      GrsGSWGrt " GS GSG\85      GruGSWGrv " GS GSG\85      GrwGSGrxS GrySGrz " GS GSG\85      Gr{GSGr| " GS GSG\85      Gr}GSGr~ " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      GrGSGr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      GrGSGr " GS GSG\85      GrGSGr " GS GSG\85      GrS GrSGrSGrSGrSGrS	Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      GrGSGr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      GrGSWGrS>GrSGrS GrSGrSGr " GS GSG\g5      GrGSGr " GS GSG\85      GrGSGr " GS GSG\85      GrGSGr " GS GSG\85      GrGSWGr " GS GSG\85      GrSGrSGrSGrSGrS	GrSuGr " GS GSG\85      Gr " GS GSG\85      GrGSGr " GS GSG\85      GrGSGr " GS GSG\85      GrGS GrS GrSGrSGrGSWGr " GS GSG\85      GrGSWGr " GS GSG\85      GrS GrSGrSGrSvGrSwGrSxGrSGrGS;GrGS<GrGS=GrGSGrGSGrGSGrGSGrGSGr " GS GSG\85      Gr " GS GSG\85      Gr " GS GSG\85      Gr " GS  GSG\85      GrGS Gr " GS GSG\85      GrGS Gr " GS GSG\45      GrG\6" G\5      GrSGrSGrSGrSGrSGrSGrS2GrGSGrGS	GrS3GrGS
GrGSGrGSGrGSGrS GrG\G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\-  GrSGrSGrG\GrSGrSGrSGrSGrSGrSGrS2GrS GrG\G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\-  GrSGrSGrG\GrSGrSGrSGrSGrSGrSGrS2Gr S GrG\G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\-  G\ -  Gr " GS GSG\85      Gr " GS GSG\45      GrG\6" G\5      GrSGrSGrSGrGSGr	 " GS GSG\85      Gr
GSGr " GS GSG\85      GrGSGr " GS GSG\85      Gr " GS GSG\85      GrGSGr " GS GSG\85      GrGS GrGS GrGS GrGS GrGS  GrGS! GrGS" GrGS# Gr " GS$ GS%G\85      Gr " GS& GS'G\85      Gr " GS( GS)G\45      Gr " GS* GS+G\85      Gr " GS, GS-G\85      Gr " GS. GS/G\45      GrS Gr SGr!SGr"SGr#SGr$SGr%S Gr&SGr'SGr(SGr)SGr*SGr+ " GS0 GS1G\85      Gr, " GS2 GS3G\85      Gr- " GS4 GS5G\g5      Gr. " GS6 GS7G\85      Gr/ " GS8 GS9G\85      Gr0 " GS: GS;G\85      Gr1 " GS< GS=G\85      Gr2 " GS> GS?G\85      Gr3 " GS@ GSAG\g5      Gr4 " GSB GSCG\85      Gr5 " GSD GSEG\85      Gr6 " GSF GSGG\85      Gr7GSGr8 " GSH GSIG\85      Gr9GSGr: " GSJ GSKG\85      Gr;GSGr< " GSL GSMG\85      Gr=GSGr> " GSN GSOG\85      Gr?GSGr@ " GSP GSQG\85      GrAGSRGrB " GSS GSTG\85      GrCGSGrD " GSU GSVG\85      GrE " GSW GSXG\85      GrF " GSY GSZG\85      GrG " GS[ GS\G\85      GrH " GS] GS^G\45      GrI " GS_ GS`G\85      GrJS GrKSGrLS GrMSGrNSGrOSGrPSGrQS	GrRS
GrSSGrTSGrUSGrVSGrWSGrXSGrYSGrZSGr[SGr\SGr]SGr^SGr_ " GSa GSbG\45      Gr` " GSc GSdG\45      GraGSeGrb " GSf GSgG\85      Grc " GSh GSiG\45      Grd " GSj GSkG\45      GreG\6" G\e5      GrfS GrgSGrhSGriSGrjSGrkS	GrlS
GrmSGrnSGroSGrpS GrqSGrr " GSl GSmG\45      Grs " GSn GSoG\45      GrtGSpGru " GSq GSrG\85      Grv " GSs GStG\45      GrwSGrxS GrySGrzSGr{SGr| " GSu GSvG\45      Gr} " GSw GSxG\45      Gr~SGrS GrSGrSGrSGrSGrSGrSGrSGrSGrS6GrS GrSGrSGrSGrSGrS	GrS
GrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrS6Gr " GSy GSzG\45      Gr " GS{ GS|G\45      Gr\	GrS GrSGrSGrSGr\	GrSGrSGrSGrSGrG\G\-  G\-  Gr " GS} GS~G\85      GrGSGrGS Gr " GS GSG\45      GrG\6" G\5      Gr " GS GSG\45      Gr " GS GSG\45      GrGS
GrGSGrSGrGSGrGS
GrS GrSGr " GS GSG\45      GrGSGr " GS GSG\45      Gr " GS GSG\45      Gr " GS GSG\45      Gr " GS GSG\45      Gr " GS GSG\45      Gr " GS GSG\45      GrGSGr " GS GSG\45      GrGSGrGS GrGS GrGS GrGS GrGS GrGS GrG\GS 5       GrG\GS 5       GrGS GrGS GrG\GS 5       GrG\GS 5       GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrG\GS 5       GrG\GS 5       GrG\GS 5       GrG\GS 5       GrG\GS 5       Gr " GS GSG\85      GrGSGrG\GS 5       Gr " GS GSG\85      GrGSGrG\GS 5       GrGS GrGS GrGS GrGS GrGS GrG\GS 5       GrG\GS 5       Gr\	" 5       4GS jGrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrG\GS 5       GrG\GS 5       GrG\GS 5       GrGS GrGS GrGS GrGS GrGS GrGS Gr GS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS Gr	GS Gr
GS GrGS GrGS Gr " GS GSG\85      GrGSGrGS GrGS GrGS GrGS Gr\	" 5       \	" 5       4GS jGr\	" 5       4GS jGrGS Gr " GS GSG\85      GrGSGrGS GrG\4GS jGrGS GrGS GrGS GrGS GrGS GrGS Gr GS Gr!GS Gr"GS Gr#GS Gr$GS Gr%GS Gr&GS Gr'GS Gr(GS Gr)GS  Gr*GSGS jGr+GS Gr,GS Gr-GS Gr.GS Gr/GS Gr0GS Gr1GS Gr2GS	 Gr3GS
 Gr4GS Gr5GS Gr6GS Gr7GS Gr8GS Gr9GS Gr:GS Gr;GS Gr<GS Gr=GS Gr>GS Gr?GS Gr@G\GS 5       GrAGS GrBGS GrCG\GS 5       GrDGS GrEGS GrFG\GS 5       GrGG\GS 5       GrHGS GrIGS  GrJGS! GrKGS" GrLGS# GrMGS$ GrNGS% GrOGS& GrPGS' GrQGS( GrRGS) GrSGS* GrTGS+ GrUGS, GrVGS- GrWGS. GrXG\T" 5       4GS/ jGrYGS0 GrZGS1 Gr[GS2 Gr\GS3 Gr]GS4 Gr^GS5 Gr_GS6 Gr`GS7 GraGS8 GrbGS9 GrcGS: GrdGS; GreGS< GrfGS= GrgGS> GrhGS? GriGS@ GrjGSA GrkGSB GrlGSC GrmGSD GrnGSE GroGSF GrpGSG GrqGSH GrrGSI GrsGSJ GrtGSK GruGSL GrvGSM GrwGSN GrxGSO GryGSP GrzGSQ Gr{GSR Gr|GSS Gr}GST Gr~GSU GrGSV GrGSW GrGSX GrGSY GrGSZ GrGS[ GrGS\ GrGS] GrGS^ GrGS_ GrGS` GrGSa GrGSb GrGSc GrGSd GrGSe GrGSf GrGSg GrGSh GrGSi GrGSj GrGSk GrGSl GrGSm GrGSn GrGSGSo jGrGS>GSp jGrGSq GrGSr GrGSs GrGSt GrGSu GrGSv GrGSw GrG\GSx 5       GrG\GSy 5       GrGSz GrGS{ GrGS| GrGS} GrG\GS~ 5       GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrG\GS 5       GrG\GS 5       GrG\GS 5       GrG\GS 5       GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrG\GS 5       GrGS GrGS GrGS GrGS GrGS GrGSGS jGr\	" 5       \	" 5       4GS jGrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrG\GS 5       GrGS GrGS GrGS GrGS GrGS GrGSGS jGrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS?GS jGrGS GrG\GrG\GrGS GrGS GrGS GrGS GrGS GrGS Gr GS GrGS GrGS?GS jGrG\GrGS GrGS GrGS GrGS GrGS Gr	GS Gr
GS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS GrGS Gr G\~" 5       4GS jGr!GS Gr"G\" 5       4GS jGr#\	" 5       \	" 5       4GS jGr$\	Gr%S Gr&SGr'SGr(SGr) " GS GSG\85      Gr*GS Gr+GS Gr, " GS GSG\85      Gr-GSGr.GS Gr/GS Gr0GS  Gr1GS Gr2GS Gr3G\4" 5       G\4" 5       4GS jGr5GS Gr6GS Gr7G\4" 5       G\4" 5       4GS jGr8GS Gr9GS Gr:GS	 Gr;GS
 Gr<GS Gr=GS Gr>GS Gr?GS Gr@GS GrAGS GrBGS GrCGS GrDSGrESGrFSGrGSGrHS	GrIS
GrJSGrKSGrLSGrMSGrNSGrOSGrPSGrQSGrRSGrSS'GrTS7GrUSGrVS8GrWS9GrXS:GrYSGrZS;Gr[S)Gr\S>Gr]S?Gr^S@Gr_SAGr`SBGraSCGrbSDGrcS*GrdSGGreSPGrfSQGrgSRGrhSSGriSGrjSTGrkSUGrlSVGrmSWGrnSXGroSYGrpSZGrqS[GrrS\GrsS]GrtS^GruS_GrvS`GrwSaGrxSbGryS0GrzScGr{SdGr|SeGr}SfGr~SgGrShGrSiGrSjGrSkGrSlGrSmGrSnGrSoGrSpGrSqGrS1GrSrGrSuGrSvGrSwGrSxGrSyGrSzGrS{GrS|GrS}GrS~GrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGr SGrSGrSGrSGrSGrSGrSGrSGrSGr	SGr
SGrSGrSGrSGrSGrSGrSGrSGrSGrSGrSGrGS GrGSGrGSGrGSGrGSGrGSGrGSGrGSGrGSGrGS	GrGS
Gr GSGr!GSGr"GSGr#GSGr$SGr%S2Gr&GSGr'GSGr(GSGr)GSGr*GSGr+GSGr,GSGr-GSGr.GSGr/GSGr0GSGr1GSGr2GSGr3GSGr4GSGr5GSGr6GSGr7GS Gr8GS!Gr9GS"Gr:GS#Gr;GS$Gr<GS%Gr=GS&Gr>GS'Gr?GS(Gr@GS)GrAGS*GrBGS+GrCGS,GrDGS-GrEGS.GrFGS/GrGGS0GrHGS1GrIGS2GrJGS3GrKGS4GrLGS5GrMGS6GrNGS7GrOGS8GrPGS9GrQGS:GrRGS;GrSGS<GrTGS=GrUGSGrVGSGrWGSGrXGSGrYGSGrZGSGr[GSGr\GSGr]GSGr^GSGr_GSGr`GSGraGSGrbGSGrcGSGrdGSGreGSGrfGS GrgGS!GrhGS"GriGS#GrjGS$GrkGS%GrlGS&GrmGS'GrnGS(GroGS)GrpGS*GrqGS+GrrGS,Grs " GS- GSTG\85      Gr9 " GS. GS/G\45      GrtG\6" G\t5      Gru " GS0 GS1G\45      Grv " GS2 GS3G\85      Grw " GS4 GS5G\85      GrxSGry " GS6 GS7G\85      GrzSGr{GS8 Gr|GS9 Gr}GS: Gr~GS; GrGS< GrGS= GrGS> GrGS? GrS GrSGrSGrGS@GrS,GrG\Gr " GSA GSBG\45      GrGSC GrSGr\	GrS GrSGrSGrSGr " GSD GSEG\85      GrS GrSGrSGrS GrSGrS GrSGrSGrSGrSGrS GrSGrSGrSGrSGrS GrSGrSGrS
GrSGrS GrSGrSGrSGrSGrS	GrS
GrSGrG\GrSGrSGrSGrS GrSGrSGrSGrSGrS GrSGrSGrSGrGSFGr " GSG GSHG\85      GrG\Gr " GSI GSJG\85      GrGSKGrGSL GrGSM GrS GrSGrSGrSGrSGrS	GrGSN GrGSO Gr\	GrS GrSGrSGrSGrSGr " GSP GSQG\85      GrGSRGrG\4GSS jGr " GST GSUG\85      GrGSVGrGSW GrSGrGSWGr " GSX GSYG\85      GrGSZ Gr " GS[ GS\G\85      Gr " GS] GS^G\85      GrGS_GrGS`GrGSa GrSGr " GSb GScG\85      Gr " GSd GSeG\85      GrSGrS GrSGrSGrSGrSGrS	GrS
GrSGrSGrSGrSGrSGrSGrSGrSGrSGrGS_Gr " GSf GSgG\85      GrGShGr " GSi GSjG\85      GrGSkGr " GSl GSmG\85      GrGSnGr " GSo GSpG\85      GrS GrSGrSGrSGrGSnGr  " GSq GSrG\85      GrGSs GrGSt GrGSu GrGSv GrGSw GrGSx GrGSy GrGSz Gr	GSWGr
 " GS{ GS|G\85      GrGS} GrGS~ GrGS GrGS GrSGrS	GrS,GrS GrSGrSGrSGrSGrS	GrS
GrSGrGSWGr " GS GSG\85      GrGSGr " GS GSG\85      GrGS GrGS Gr GS Gr! " GS GSG\85      Gr" " GS GSG\85      Gr#GSGr$GS Gr%GS Gr&GS Gr'GS Gr(G\GS 5       Gr)GS Gr*GS Gr+S Gr,SGr-SGr.SGr/SGr0SGr1SGr2SGr3SGr4GSGr5GSGr6 " GS GSG\85      Gr7GS Gr8 " GS GSG\85      Gr9GS Gr:g(      )*)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(  i)  i*  i+  i,  i-  i.  i/  )r   )r   r	   )r
   l        c                       \ rS rSrSrg)NVMLLibraryMismatchErrori   N__name__
__module____qualname____firstlineno____static_attributes__r      @/home/wildlama/miniconda3/lib/python3.13/site-packages/pynvml.pyr  r        r  r  c                       \ rS rSr\" 5       r0 \S_\S_\S_\	S_\
S_\S_\S_\S	_\S
_\S_\S_\S_\S_\S_\S_\S_\S_\S\S\S0ErS rS rS rSrg)	NVMLErrori  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                     U [         :X  a  [         R                  R                  X5      n [        R	                  U 5      nXl        U$ )zi
Maps value to a proper subclass of NVMLError.
See _extractNVMLErrorsAsClasses function for more details
)r  _valClassMappingget	Exception__new__value)typr  objs      r  r  NVMLError.__new__  s<    
 ),,00<C$	
r  c                 *    U R                   [        R                  ;  a9  [        [	        U R                   5      5      [        R                  U R                   '   [        R                  U R                      $ ! [         a    SU R                   -  s $ f = f)NzNVML Error with code %d)r  r  _errcode_to_stringstrnvmlErrorStringselfs    r  __str__NVMLError.__str__  sn    	:zz!=!==;>tzz?Z;[	,,TZZ8//

;; 	:,tzz99	:s   A3A6 6BBc                 4    U R                   UR                   :H  $ N)r  )r(  others     r  __eq__NVMLError.__eq__%  s    zzU[[((r  r  N)r  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  r    s   v
 
#(:
 	!
 	!(B	

 	'(=
 	
 	%(;
 	&(E
 	%(;
 		
 	(A
 	%(G
 	&(<
 	%(;
 	
  	"(>!
" 	$(W#
$ 	+,Z(=)
,	:)r  r  c                 l    U [         R                  ;  a  [        SU -  5      e[         R                  U    $ )NznvmlErrorCode %s is not valid)r  r  
ValueError)nvmlErrorCodes    r  nvmlExceptionClassrH  (  s2    I6668=HII%%m44r  c            	         [         R                  [           n [        U 5       Vs/ s H  oR	                  S5      (       d  M  UPM     nnU H  nS[
        R                  " UR                  SS5      S5      R                  SS5      -   n[        X5      nS n[        U[        4SU" U5      05      n[        Ul        [        XU5        U[        R                  U'   M     gs  snf )aT  
Generates a hierarchy of classes on top of NVMLError class.

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

NVMLError is a parent class. Each NVML_ERROR_* gets it's own subclass.
e.g. NVML_ERROR_ALREADY_INITIALIZED will be turned into NVMLError_AlreadyInitialized
NVML_ERROR_
NVMLError_ _c                    ^  U 4S jnU$ )Nc                 4   > [         R                  U T5      nU$ r,  )r  r  )r   argsr!  vals      r  new9_extractNVMLErrorsAsClasses.<locals>.gen_new.<locals>.new>  s    ''S1
r  r  )rQ  rR  s   ` r  gen_new,_extractNVMLErrorsAsClasses.<locals>.gen_new=  s     Jr  r  N)sysmodulesr  dir
startswithstringcapwordsreplacegetattrtyper  r  setattrr  )this_modulexnvmlErrorsNameserr_name
class_nameerr_valrT  new_error_classs           r  _extractNVMLErrorsAsClassesrg  -  s     ++h'K"%k"2R"2Qll=6Qq"2OR#!FOOH4D4D]TV4WY\$]$e$efikm$nn
+0	
 zI<)WWEU9VW%-"9.=	""7+ $ Ss   C C c                 0    U [         :w  a  [        U 5      eU $ r,  )NVML_SUCCESSr  )rets    r  _nvmlCheckReturnrk  H  s    |nJr  c                 Z   U [         ;   a	  [         U    $ [        R                  5          [        S :X  a  [	        [
        5      e [        [        U 5      [         U '   [         U    [        R                  5         $ ! [         a    [	        [        5      ef = f! [        R                  5         f = fr,  )
_nvmlGetFunctionPointer_cachelibLoadLockacquirenvmlLibr  r1  r]  releaseAttributeErrorr=  )names    r  _nvmlGetFunctionPointerrt  O  s     ,,,T22tO455	;29'42H)$/06
 		  	;9::	; 	s   B A7 7BB B*c                        \ rS rSrS rS rSrg)nvmlFriendlyObjectig  c                 2    U H  n[        XX   5        M     g r,  )r_  )r(  
dictionaryra  s      r  __init__nvmlFriendlyObject.__init__h  s    ADZ]+ r  c                 6    U R                   R                  5       $ r,  )__dict__r)  r'  s    r  r)  nvmlFriendlyObject.__str__k  s    }}$$&&r  r  N)r  r  r  r  ry  r)  r  r  r  r  rv  rv  g  s    ,'r  rv  c                     0 nU R                    H<  nUS   n[        X5      n[        U[        5      (       a  UR	                  5       OUX'   M>     [        U5      nU$ Nr   )_fields_r]  
isinstancebytesdecoderv  )structdra  keyr  r!  s         r  nvmlStructToFriendlyObjectr  n  sT    
A__d$#-eU#;#;	 
 Q
CJr  c                     UR                    HS  nUS   nU R                  U   n[        R                  S:  a  [	        XUR                  5       5        MG  [	        XU5        MU     U$ )Nr   r	  )r  r|  rV  version_infor_  encode)r!  modelra  r  r  s        r  nvmlFriendlyObjectToStructr  y  sV    ^^dS!t#E/E&  Lr  c                       \ rS rSrSrg)struct_c_nvmlUnit_ti  r  Nr  r  r  r  r  r    r  r  r  c                   B   ^  \ rS rSrSr0 rS rU 4S jrU 4S jrSr	U =r
$ )_PrintableStructurei  a  
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                 X   / nU R                    Hk  nUS   n[        X5      nSnX0R                  ;   a  U R                  U   nOSU R                  ;   a  U R                  S   nUR                  SU-   X44-  5        Mm     U R                  R
                  S-   SR                  U5      -   S-   $ )Nr   z%s	<default>z%s: (z, ))r  r]  _fmt_append	__class__r  join)r(  resultra  r  r  fmts         r  r)  _PrintableStructure.__str__  s    AA$CD&ECjj jjo

*jj-MM6C<C<78  ~~&&,		&0AACGGr  c                    > [         [        U ]  U5      n[        U[        5      (       a'  [        U[
        5      (       a  U$ UR                  5       $ U$ r,  )superr  __getattribute__r  r  r%  r  )r(  rs  resr  s      r  r  $_PrintableStructure.__getattribute__  sG    '?E
 c5!!#s##
::<
r  c                 v   > [        U[        5      (       a  UR                  5       n[        [        U ]  X5        g r,  )r  r%  r  r  r  __setattr__)r(  rs  r  r  s      r  r  _PrintableStructure.__setattr__  s-    eS!! LLNE!44TAr  r  )r  r  r  r  __doc__r  r)  r  r  r  __classcell__r  s   @r  r  r    s&    $ EH
B Br  r  c                   H    \ rS rSrS\S-  4S\S-  4S\S-  4S\S-  4/rSrg)	c_nvmlUnitInfo_ti  rs  r.   idserialfirmwareVersionr  Nr  r  r  r  c_charr  r  r  r  r  r  r    9    	"	v{	6B;	FRK(	Hr  r  c                       \ rS rSrS\4/rSrg)c_nvmlC2cModeInfo_v1_ti  isC2cEnabledr  Nr  r  r  r  c_uintr  r  r  r  r  r  r    s    	 Hr  r  i  c                   *    \ rS rSrS\S-  4S\4/rSrg)c_nvmlLedState_ti  causer/   colorr  N)r  r  r  r  r  _nvmlLedColor_tr  r  r  r  r  r  r    s    	&3,	/"Hr  r  c                   6    \ rS rSrS\S-  4S\4S\4S\4/rSrg)	c_nvmlPSUInfo_ti  stater/   currentvoltagepowerr  N)r  r  r  r  r  r  r  r  r  r  r  r  r    s-    	&3,	F	F	&	Hr  r  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlUnitFanInfo_ti  speedr  r  N)r  r  r  r  r  _nvmlFanState_tr  r  r  r  r  r  r    s    	&	/"Hr  r  c                   *    \ rS rSrS\S-  4S\4/rSrg)c_nvmlUnitFanSpeeds_ti  fansr#   countr  N)r  r  r  r  r  r  r  r  r  r  r  r  r    s    	$r)*	&Hr  r  c                       \ rS rSrSrg)struct_c_nvmlDevice_ti  r  Nr  r  r  r  r  r    r  r  r  c                   j    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\\-  4/	rSSSSSSSSS.rSr	g)nvmlPciInfoExt_v1_ti  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  r  N)
r  r  r  r  r  r  "NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZEr  r  r  r  r  r  r  r    sw    	F	6		6		6"	f	V	&==>
H  ('''''''	Er  r  i@  c                   j    \ rS rSrS\\-  4S\4S\4S\4S\4S\4S\4S	\4S
\4S\4/
rSSSSSS.rSr	g)nvmlPciInfo_v2_ti  r  r  r  r  r  r  	reserved0	reserved1	reserved2	reserved3r  r  r  r  r  r  r  r  r  N)
r  r  r  r  r  %NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZEr  r  r  r  r  r  r  r  r    sx    	&@@A	6		6	 
6"	f	f	f	fH  (''''Er  r  c            	       ^    \ rS rSrS\\-  4S\4S\4S\4S\4S\4S\\-  4/rS	S
S
S	S	S.r	Sr
g)nvmlPciInfo_ti  busIdLegacyr  r  r  r  r  r  r  r  r  r  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r    sj     
!FFG	6		6	 
6" 
&==>H  (''''Er  r  c                   *    \ rS rSrS\4S\\-  4/rSrg)!c_nvmlSystemDriverBranchInfo_v1_ti3  r  branchr  N)	r  r  r  r  r  r  &NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZEr  r  r  r  r  r  r  3  s    	F	6BBCHr  r  iT  c                   *    \ rS rSrS\4S\\-  4/rSrg)c_nvmlExcludedDeviceInfo_ti;  pciuuidr  N)	r  r  r  r  r  r  NVML_DEVICE_UUID_BUFFER_SIZEr  r  r  r  r  r  r  ;  s    		667Hr  r  c                   0    \ rS rSrS\4S\\-  4S\4/rSr	g)c_nvmlCPERCursor_v1_tiD  cperTypeMaskr  handler  N)
r  r  r  r  r  r  r  c_ulonglongr  r  r  r  r  r  r  D  s'    	 	667	;Hr  r  c                   6    \ rS rSrS\4S\" \5      4S\4/rSr	g)c_nvmlGetCPER_v1_tiK  cursorbuffer
bufferSizer  N)
r  r  r  r  r  POINTERc_ubyter  r  r  r  r  r  r  r  K  s'    	()	77#$	vHr  r  c                   $    \ rS rSrS\4S\4/rSrg)nvmlNvLinkUtilizationControl_tiR  units	pktfilterr  N)r  r  r  r  "_nvmlNvLinkUtilizationCountUnits_t%_nvmlNvLinkUtilizationCountPktTypes_tr  r  r  r  r  r  r  R  s    	45	;<Hr  r  c                   2    \ rS rSrS\4S\4S\4/rSS0rSrg)	c_nvmlMemory_tiX  totalfreeusedr  %d Br  Nr  r  r  r  r  r  r  r  r  r  r  r  r  X  s-    	+		H
 &!Er  r  c                   >    \ rS rSrS\4S\4S\4S\4S\4/rSS0rS	rg
)c_nvmlMemory_v2_ti`  r  r   reservedr  r  r  r  r  N	r  r  r  r  r  r  r  r  r  r  r  r  r  r  `  s=    	F	+	[!		H &!Er  r  i(  c                   2    \ rS rSrS\4S\4S\4/rSS0rSrg)	c_nvmlBAR1Memory_til  	bar1Totalbar1Freebar1Usedr  r  r  Nr  r  r  r  r
  r
  l  s-    	k"	[!	[!H
 &!Er  r
  c                   $    \ rS rSrS\4S\4/rSrg)nvmlClkMonFaultInfo_tit  clkApiDomainclkDomainFaultMaskr  Nr  r  r  r  r  r  t  s    (%v.Hr  r  c                   0    \ rS rSrS\4S\4S\\-  4/rSrg)nvmlClkMonStatus_ti{  bGlobalStatusclkMonListSize
clkMonListr  N)	r  r  r  r  r  r  MAX_CLK_DOMAINSr  r  r  r  r  r  r  {  s'     &)!6*4FGHr  r  c                   8    \ rS rSrS\4S\4S\4S\4/rSS0rSrg)	c_nvmlProcessInfo_v2_ti  pidusedGpuMemorygpuInstanceIdcomputeInstanceIdr  r  Nr  r  r  r  r  r    s4    		+&	&!	f%	H f%Er  r  c                   6    \ rS rSrS\4S\4S\4S\4S\4/rSrg)	c_nvmlProcessDetail_v1_ti  r  r  r  r  usedGpuCcProtectedMemoryr  Nr  r  r  r  r  r  r  r  r  r  r  r  r    s0    		+&	&!	f%	#[1Hr  r  c                   D    \ rS rSrS\4S\4S\4S\" \5      4/rSS0r	Sr
g)	c_nvmlProcessDetailList_v1_ti  r  modenumProcArrayEntries	procArrayr  r  N)r  r  r  r  r  _nvmlProcessMode_tr  r  r  r  r  r  r  r  r#  r#    s<    	F	#$	'	g678	H #F+Er  r#  i  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlBridgeChipInfo_ti  r^  	fwVersionr  N)r  r  r  r  _nvmlBridgeChipType_tr  r  r  r  r  r  r)  r)    s    	&'	fHr  r)  c                   *    \ rS rSrS\4S\S-  4/rSrg)c_nvmlBridgeChipHierarchy_ti  bridgeCountbridgeChipInfor   r  N)r  r  r  r  r  r)  r  r  r  r  r  r-  r-    s    		1C78Hr  r-  c                   0    \ rS rSrS\4S\4S\4S\4/rSrg)c_nvmlEccErrorCounts_ti  l1Cachel2CachedeviceMemoryregisterFiler  Nr  r  r  r  r  r  r  r  r  r  r1  r1    s)    	K 	K 	%	%	Hr  r1  c                   ,    \ rS rSrS\4S\4/rSS0rSrg)c_nvmlUtilization_ti  gpumemoryr  z%d %%r  Nr  r  r  r  r  r  r  r  r  r  r  r8  r8    s$    		6H '"Er  r8  c                   *    \ rS rSrS\4S\S-  4/rSrg)c_nvmlHwbcEntry_ti  hwbcIdr  r   r  N)r  r  r  r  r  r  r  r  r  r  r  r=  r=    s    	6	FRK(Hr  r=  c                   B    \ rS rSrS\4S\4S\4S\4S\4S\	4S\
4/rS	rg
)c_nvmlValue_ti  dValuiValulValullValsllValsiValusValr  N)r  r  r  r  c_doubler  c_ulongr  
c_longlongc_intc_ushortr  r  r  r  r  r@  r@    sA    		&	'	;	:	%	(Hr  r@  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlSample_ti  	timeStampsampleValuer  N)r  r  r  r  r  r@  r  r  r  r  r  rN  rN    s    	k"	&Hr  rN  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlViolationTime_ti  referenceTimeviolationTimer  Nr6  r  r  r  rR  rR    s    	+&	+&Hr  rR  c                   B    \ rS rSrS\4S\4S\4S\4S\4S\4S\4/r	S	r
g
)c_nvmlFieldValue_ti  fieldIdscopeId	timestamplatencyUsec	valueType
nvmlReturnr  r  N)r  r  r  r  c_uint32c_int64_nvmlValueType_t_nvmlReturn_tr@  r  r  r  r  r  rV  rV    sB    	H	H	g	 	&'	}%	- Hr  rV  i  c                   D   ^  \ rS rSrS\4S\\-  4S\4/rU 4S jrSr	U =r
$ )!c_nvmlNvlinkSupportedBwModes_v1_ti  r  bwModestotalBwModesc                 0   > [         [        U ]  [        S9  g Nr  )r  rb  ry  nvmlNvlinkSupportedBwModes_v1r(  r  s    r  ry  *c_nvmlNvlinkSupportedBwModes_v1_t.__init__      /?He?fr  r  )r  r  r  r  r  c_uint8$NVML_NVLINK_TOTAL_SUPPORTED_BW_MODESr  ry  r  r  r  s   @r  rb  rb    s4    	F	GBBC	!Hg gr  rb  i  c                   >   ^  \ rS rSrS\4S\4S\4/rU 4S jrSrU =r	$ )c_nvmlNvlinkGetBwMode_v1_ti  r  bIsBestbwModec                 0   > [         [        U ]  [        S9  g rf  )r  ro  ry  nvmlNvlinkGetBwMode_v1ri  s    r  ry  #c_nvmlNvlinkGetBwMode_v1_t.__init__      ($8AW8Xr  r  
r  r  r  r  r  rl  r  ry  r  r  r  s   @r  ro  ro    s.    	F	F	7HY Yr  ro  c                   >   ^  \ rS rSrS\4S\4S\4/rU 4S jrSrU =r	$ )c_nvmlNvlinkSetBwMode_v1_ti  r  bSetBestrq  c                 0   > [         [        U ]  [        S9  g rf  )r  rx  ry  nvmlNvlinkSetBwMode_v1ri  s    r  ry  #c_nvmlNvlinkSetBwMode_v1_t.__init__  ru  r  r  rv  r  s   @r  rx  rx    s.    	F	V	7HY Yr  rx  c                   $    \ rS rSrS\4S\4/rSrg) c_nvmlVgpuHeterogeneousMode_v1_ti  r  r$  r  Nr  r  r  r  r~  r~    s    	F	Hr  r~  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlVgpuPlacementId_v1_ti%  r  placementIdr  Nr  r  r  r  r  r  %  s    	F	Hr  r  c                   <    \ rS rSrS\4S\4S\4S\" \5      4/rSrg)c_nvmlVgpuPlacementList_v1_ti-  r  r  placementSizeplacementIdsr  Nr  r  r  r  r  r  r  r  r  r  r  r  r  -  s-    	F	&	&!	)	Hr  r  c                   B    \ rS rSrS\4S\4S\4S\" \5      4S\4/rSrg)	c_nvmlVgpuPlacementList_v2_ti:  r  r  r  r  r$  r  Nr  r  r  r  r  r  :  s5    	F	&!	&	)	Hr  r  i   c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlVgpuTypeBar1Info_v1_tiE  r  bar1Sizer  Nr!  r  r  r  r  r  E  s    	F	[!Hr  r  i  c                   <    \ rS rSrS\4S\4S\4S\4S\4S\4/rSrg	)
%c_nvmlVgpuInstanceUtilizationSample_tiM  vgpuInstancerO  smUtilmemUtilencUtildecUtilr  N)	r  r  r  r  _nvmlVgpuInstance_tr  r@  r  r  r  r  r  r  r  M  s:    	,-	k"	=!	M"	M"	M"Hr  r  c            	       H    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4/rS
rg)&c_nvmlVgpuInstanceUtilizationInfo_v1_tiW  rO  r  r  r  r  r  jpgUtilofaUtilr  N)	r  r  r  r  r  r  r@  r  r  r  r  r  r  r  W  sJ    	k"	,-	=!	M"	M"	M"	M"	M"	Hr  r  c                   B    \ rS rSrS\4S\4S\4S\4S\" \5      4/r	Sr
g)	'c_nvmlVgpuInstancesUtilizationInfo_v1_tic  r  sampleValTypevgpuInstanceCountlastSeenTimeStampvgpuUtilArrayr  N)r  r  r  r  r  r_  r  r  r  r  r  r  r  r  r  r  c  s8    	F	*+	f%	k*	'"HIJHr  r  i   c            	       N    \ rS rSrS\4S\4S\\-  4S\4S\4S\4S\4S	\4/r	S
r
g)$c_nvmlVgpuProcessUtilizationSample_tin  r  r  processNamerO  r  r  r  r  r  N)r  r  r  r  r  r  r  NVML_VGPU_NAME_BUFFER_SIZEr  r  r  r  r  r  r  r  n  sO    	,-		!;;<	k"	6	F	F	F	Hr  r  c                   Z    \ rS rSrS\\-  4S\4S\4S\4S\4S\4S\4S	\4S
\4S\4/
r	Sr
g)%c_nvmlVgpuProcessUtilizationInfo_v1_tiz  r  rO  r  r  r  r  r  r  r  r  r  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  z  s_    	!;;<	k"	,-		6	F	F	F	F	FHr  r  c                   <    \ rS rSrS\4S\4S\4S\" \5      4/rSr	g)'c_nvmlVgpuProcessesUtilizationInfo_v1_ti  r  vgpuProcessCountr  vgpuProcUtilArrayr  N)
r  r  r  r  r  r  r  r  r  r  r  r  r  r  r    s/    	F	V$	k*	g&KLM	Hr  r  c                   $    \ rS rSrS\4S\4/rSrg)nvmlVgpuRuntimeState_v1_ti  r  sizer  Nr!  r  r  r  r  r    s    	F	Hr  r  c                   B    \ rS rSrS\4S\4S\4S\4S\4S\4S\4/rS	rg
)c_nvmlVgpuLicenseExpiry_ti  yearmonthdayhourminsecstatusr  N	r  r  r  r  r]  c_uint16rl  r  r  r  r  r  r  r    A    	H	H	H	H	H	H	GHr  r  c                   *    \ rS rSrS\4S\4S\4/rSrg)c_nvmlVgpuLicenseInfo_ti  
isLicensedlicenseExpirycurrentStater  N)	r  r  r  r  rl  r  r  r  r  r  r  r  r  r    s"    	G$	56	F#Hr  r  c            	       H    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4/rS
rg)c_nvmlEncoderSession_ti  	sessionIdr  r  	codecTypehResolutionvResolution
averageFpsencodeLatencyr  Nr  r  r  r  r  r  r  r  r  r  r  r  r    sI    	f		,-	f			v	&!	Hr  r  c                   <    \ rS rSrS\4S\4S\4S\4S\4S\4/rSrg	)
 c_nvmlProcessUtilizationSample_ti  r  rO  r  r  r  r  r  Nr!  r  r  r  r  r    s8    		k"	6	F	F	FHr  r  c            	       H    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4/rS
rg)!c_nvmlProcessUtilizationInfo_v1_ti  rO  r  r  r  r  r  r  r  r  Nr  r  r  r  r  r  r  r  r  r  r  r  r    sH    	k"		6	F	F	F	F	F	Hr  r  c                   <    \ rS rSrS\4S\4S\4S\" \5      4/rSr	g)#c_nvmlProcessesUtilizationInfo_v1_ti  r  processSamplesCountr  procUtilArrayr  N)
r  r  r  r  r  r  r  r  r  r  r  r  r  r  r    s/    	F	'	k*	'"CDE	Hr  r  c                   B    \ rS rSrS\4S\4S\4S\4S\4S\4S\4/rS	rg
)c_nvmlGridLicenseExpiry_ti  r  r  r  r  r  r  r  r  Nr  r  r  r  r  r    r  r  r  c                   H    \ rS rSrS\4S\4S\\-  4S\\-  4S\4S\4/r	Sr
g	)
 c_nvmlGridLicensableFeature_v4_ti  featureCodefeatureStatelicenseInfoproductNamefeatureEnabledr  r  N)r  r  r  r  _nvmlGridLicenseFeatureCode_tr  r  NVML_GRID_LICENSE_BUFFER_SIZEr  r  r  r  r  r  r  r    sG    	89	6"	6$AAB	6$AAB	6"	45Hr  r  c                   0    \ rS rSrS\4S\4S\\-  4/rSr	g)!c_nvmlGridLicensableFeatures_v4_ti  isGridLicenseSupportedlicensableFeaturesCountgridLicensableFeaturesr  N)
r  r  r  r  rK  r  r  #NVML_GRID_LICENSE_FEATURE_MAX_COUNTr  r  r  r  r  r  r    s(    	!E*	"F+	!$DGj$jkHr  r  c                   B    \ rS rSrS\4S\4S\\-  4S\\-  4S\4/rSr	g)	 c_nvmlGridLicensableFeature_v3_ti  r  r  r  r  r  r  N
r  r  r  r  r  r  r  r  r  r  r  r  r  r  r    s>    	56	 	!>>?	!>>?	6"Hr  r  c                   0    \ rS rSrS\4S\4S\\-  4/rSr	g)!c_nvmlGridLicensableFeatures_v3_ti  r  r  r  r  N)
r  r  r  r  rK  r  r  r  r  r  r  r  r  r  r    (    	!5)	"F+	!#CFi#ijHr  r  c                   <    \ rS rSrS\4S\4S\\-  4S\\-  4/rSr	g) c_nvmlGridLicensableFeature_v2_ti  r  r  r  r  r  Nr  r  r  r  r  r    s6    	56	 	!>>?	!>>?	Hr  r  c                   0    \ rS rSrS\4S\4S\\-  4/rSr	g)!c_nvmlGridLicensableFeatures_v2_ti  r  r  r  r  N)
r  r  r  r  rK  r  r  r  r  r  r  r  r  r  r    r  r  r  c                   0    \ rS rSrS\4S\4S\\-  4/rSr	g)c_nvmlGridLicensableFeature_ti  r  r  r  r  Nr  r  r  r  r  r    s(    	56	 	!>>?Hr  r  c                   0    \ rS rSrS\4S\4S\\-  4/rSr	g)c_nvmlGridLicensableFeatures_ti!  r  r  r  r  N)
r  r  r  r  rK  r  r  r  r  r  r  r  r  r  r  !  s(    	!5)	"F+	!#@Cf#fgHr  r  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlMarginTemperature_v1_ti(  r  marginTemperaturer  N)r  r  r  r  r  rK  r  r  r  r  r  r  r  (  s    	F	e$Hr  r  c                   0    \ rS rSrS\\-  4S\\-  4/rSr	g)c_nvmlUUIDValue_ti7  r%  r  r  N)
r  r  r  r  r  NVML_DEVICE_UUID_ASCII_LENr  NVML_DEVICE_UUID_BINARY_LENr  r  r  r  r  r  r  7  s%    	&556	'778Hr  r  i4  c                   >   ^  \ rS rSrS\4S\4S\4/rU 4S jrSrU =r	$ )c_nvmlUUID_ti>  r  r^  r  c                 0   > [         [        U ]  [        S9  g rf  )r  r  ry  nvmlUUID_v1ri  s    r  ry  c_nvmlUUID_t.__init__E  s    lD*;*?r  r  )
r  r  r  r  r  r  r  ry  r  r  r  s   @r  r  r  >  s/    	F		#$H@ @r  r  c                   8   ^  \ rS rSrS\4S\4/rU 4S jrSrU =r	$ )c_nvmlPdi_tiI  r  r  c                 0   > [         [        U ]  [        S9  g rf  )r  r  ry  
nvmlPdi_v1ri  s    r  ry  c_nvmlPdi_t.__init__O  s    k4)*)=r  r  
r  r  r  r  r  r  r  ry  r  r  r  s   @r  r  r  I  s$    	F	+H
> >r  r  c                   >   ^  \ rS rSrS\4S\4S\4/rU 4S jrSrU =r$ )c_nvmlRepairStatus_tiS  r  bChannelRepairPendingbTpcRepairPendingc                 0   > [         [        U ]  [        S9  g rf  )r  r   ry  nvmlRepairStatus_v1ri  s    r  ry  c_nvmlRepairStatus_t.__init__Z  s    "D2;N2Or  r  	r  r  r  r  r  r  ry  r  r  r  s   @r  r   r   S  s.    	F	 &)	f%HP Pr  r   c                   8   ^  \ rS rSrS\4S\4/rU 4S jrSrU =r$ )c_nvmlNvLinkInfo_v1_ti^  r  isNvleEnabledc                 0   > [         [        U ]  [        S9  g rf  )r  r  ry  nvmlNvLinkInfo_v1ri  s    r  ry  c_nvmlNvLinkInfo_v1_t.__init__d      #T3<M3Nr  r  r  r  s   @r  r  r  ^  s&    	F	&!H
O Or  r  c                   0    \ rS rSrS\4S\4S\4S\4/rSrg)c_nvmlNvlinkFirmwareVersion_tin  	ucodeTypemajorminorsubMinorr  N)r  r  r  r  rl  r  r  r  r  r  r  r  r  n  s)    	g	&	&	V	Hr  r  c                   *    \ rS rSrS\\-  4S\4/rSrg)c_nvmlNvlinkFirmwareInfo_tiv  r  numValidEntriesr  N)	r  r  r  r  r  #NVML_NVLINK_FIRMWARE_VERSION_LENGTHr  r  r  r  r  r  r  r  v  s     	9<__`	F#Hr  r  iL c                   >   ^  \ rS rSrS\4S\4S\4/rU 4S jrSrU =r	$ )c_nvmlNvLinkInfo_v2_ti}  r  r	  firmwareInfoc                 0   > [         [        U ]  [        S9  g rf  )r  r  ry  nvmlNvLinkInfo_v2ri  s    r  ry  c_nvmlNvLinkInfo_v2_t.__init__  r  r  r  )
r  r  r  r  r  r  r  ry  r  r  r  s   @r  r  r  }  s/    	F	&!	34HO Or  r  i  c                   H   ^  \ rS rSrS\4S\4S\\-  4/rSU 4S jjrSr	U =r
$ )c_nvmlPRMTLV_v1_ti  dataSizer  datac                 *   > [         [        U ]  USS9  g )Nr   )r   r  )r  r  ry  )r(  r  r  s     r  ry  c_nvmlPRMTLV_v1_t.__init__  s    /a/Hr  r  r,   )r  r  r  r  r]  r  NVML_PRM_DATA_MAX_SIZEr  ry  r  r  r  s   @r  r  r    s4    	X	8	112H
I Ir  r  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlDeviceReadWritePRM_v1rt  byrefrk  r  c_infofnrj  s       r  r&  r&    s%    	 !<	=B
VU6]
#CSr  c                   8   ^  \ rS rSrS\4S\4/rU 4S jrSrU =r$ )c_nvmlDeviceAddressingMode_ti  r  r  c                 0   > [         [        U ]  [        S9  g rf  )r  r-  ry  nvmlDeviceAddressingMode_v1ri  s    r  ry  %c_nvmlDeviceAddressingMode_t.__init__  s    *D:C^:_r  r  r  r  s   @r  r-  r-    s&    	F	&H
` `r  r-  c                   8   ^  \ rS rSrS\4S\4/rU 4S jrSrU =r$ )c_nvmlUnrepairableMemory_v1_ti  r  unrepairableMemoryc                 0   > [         [        U ]  [        S9  g rf  )r  r2  ry  nvmlUnrepairableMemory_v1ri  s    r  ry  &c_nvmlUnrepairableMemory_v1_t.__init__      +T;D];^r  r  r  r  s   @r  r2  r2    s&    	F	v&H_ _r  r2  i0  i1  i2  i3  i  c                   6   ^  \ rS rSrS\4/rSU 4S jjrSrU =r$ )c_nvmlPRMCounterInput_v1_ti  	localPortc                 (   > [         [        U ]  US9  g )N)r:  )r  r9  ry  )r(  portr  s     r  ry  #c_nvmlPRMCounterInput_v1_t.__init__  s    ($848Hr  r  r,   )	r  r  r  r  r]  r  ry  r  r  r  s   @r  r9  r9    s    	hHI Ir  r9  c                   >   ^  \ rS rSrS\4S\4S\4/rU 4S jrSr	U =r
$ )c_nvmlPRMCounterValue_v1_ti  r  
outputTypeoutputValuec                 D   > [         [        U ]  [        R                  S9  g )N)r  )r  r?  ry  pynvmlri  ri  s    r  ry  #c_nvmlPRMCounterValue_v1_t.__init__  s    ($8@S@S8Tr  r  )r  r  r  r  r`  r_  r@  r  ry  r  r  r  s   @r  r?  r?    s/    	=!	'(	&H
U Ur  r?  c                   F   ^  \ rS rSrS\4S\4S\4/r\S4U 4S jjr	Sr
U =r$ )c_nvmlPRMCounter_v1_ti  	counterId
inputValuerA  Nc                 (   > [         [        U ]  XS9  g )N)rG  rH  )r  rF  ry  )r(  ctrIdinDatar  s      r  ry  c_nvmlPRMCounter_v1_t.__init__  s    #T3e3Wr  r  )r  r  r  r  r]  r9  r?  r  NVML_PRM_COUNTER_ID_NONEry  r  r  r  s   @r  rF  rF    s7    	h	12	23H
 6d X Xr  rF  c                   H   ^  \ rS rSrS\4S\" \5      4/rSU 4S jjrSr	U =r
$ )c_nvmlPRMCounterList_v1_ti  numCounterscountersc                 (   > [         [        U ]  XS9  g )N)rP  rQ  )r  rO  ry  )r(  numctrsr  s      r  ry  "c_nvmlPRMCounterList_v1_t.__init__  s    '7C7Wr  r  r,  )r  r  r  r  r]  r  rF  r  ry  r  r  r  s   @r  rO  rO    s,    	!	W234HX Xr  rO  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlDeviceReadPRMCounters_v1r'  r)  s       r  rW  rW    s%    	 !?	@B
VU6]
#CSr  c                   &    \ rS rSrS\4/rSS0rSrg)c_nvmlBBXTimeData_v1_ti  timeRunz
%d secondsr  Nr;  r  r  r  rY  rY    s    	FH %Er  rY  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceGetBBXTimeData_v1)rY  rt  r(  rk  )r  
c_timeDatar+  rj  s       r  r\  r\    s4    ')J	 !>	?B
VU:&
'CSr  c                       \ rS rSrSrg)struct_c_nvmlEventSet_ti  r  Nr  r  r  r  r_  r_    r  r  r_  i      i   i    i @  i   c                   >    \ rS rSrS\4S\4S\4S\4S\4/rSS0rSr	g	)
c_nvmlEventData_tiQ  r  	eventType	eventDatar  r  r  r  N)
r  r  r  r  c_nvmlDevice_tr  r  r  r  r  r  r  r  rb  rb  Q  s=    	>"	k"	k"	&!	f%H (#Er  rb  c                       \ rS rSrSrg)struct_c_nvmlSystemEventSet_ti[  r  Nr  r  r  r  rg  rg  [  r  r  rg  c                   8   ^  \ rS rSrS\4S\4/rU 4S jrSrU =r	$ )&c_nvmlSystemEventSetCreateRequest_v1_tie  r  setc                 0   > [         [        U ]  [        S9  g rf  )r  ri  ry  "nvmlSystemEventSetCreateRequest_v1ri  s    r  ry  /c_nvmlSystemEventSetCreateRequest_v1_t.__init__k  s    4dDMoDpr  r  
r  r  r  r  r  c_nvmlSystemEventSet_tr  ry  r  r  r  s   @r  ri  ri  e  s'    	F	&'H
q qr  ri  c                   8   ^  \ rS rSrS\4S\4/rU 4S jrSrU =r	$ )$c_nvmlSystemEventSetFreeRequest_v1_tio  r  rj  c                 0   > [         [        U ]  [        S9  g rf  )r  rq  ry   nvmlSystemEventSetFreeRequest_v1ri  s    r  ry  -c_nvmlSystemEventSetFreeRequest_v1_t.__init__u      2DBKkBlr  r  rn  r  s   @r  rq  rq  o  s'    	F	&'H
m mr  rq  c                   >   ^  \ rS rSrS\4S\4S\4/rU 4S jrSr	U =r
$ )%c_nvmlSystemRegisterEventRequest_v1_tiy  r  
eventTypesrj  c                 0   > [         [        U ]  [        S9  g rf  )r  rw  ry  !nvmlSystemRegisterEventRequest_v1ri  s    r  ry  .c_nvmlSystemRegisterEventRequest_v1_t.__init__      3TCLmCnr  r  )r  r  r  r  r  r  ro  r  ry  r  r  r  s   @r  rw  rw  y  s/    	F	{#	&'Ho or  rw  c                   ,    \ rS rSrS\4S\4/rSS0rSrg)c_nvmlSystemEventData_v1_ti  rc  gpuIdr  r  N)	r  r  r  r  r  r  r  r  r  r  r  r  r~  r~    s%    	k"	&H (#Er  r~  c                   \   ^  \ rS rSrS\4S\4S\4S\" \5      4S\4S\4/rU 4S jr	S	r
U =r$ )
$c_nvmlSystemEventSetWaitRequest_v1_ti  r  	timeoutmsrj  r!  r   numEventc                 0   > [         [        U ]  [        S9  g rf  )r  r  ry   nvmlSystemEventSetWaitRequest_v1ri  s    r  ry  -c_nvmlSystemEventSetWaitRequest_v1_t.__init__  ru  r  r  )r  r  r  r  r  ro  r  r~  r  ry  r  r  r  s   @r  r  r    sM    	F	f	&'	345	V	VHm mr  r  c                 @    [        S5      nU" U 5      n[        U5        g)zl
C API binding for c_nvmlSystemEventSetFree
:param req: reference of c_nvmlSystemEventSetCreateRequest_v1_t
nvmlSystemEventSetCreateNrt  rk  reqr+  rj  s      r  c_nvmlSystemEventSetCreater         
 
!!;	<B
S'CSr  c                 @    [        S5      nU" U 5      n[        U5        g)zj
C API binding for c_nvmlSystemEventSetFree
:param req: reference of c_nvmlSystemEventSetFreeRequest_v1_t
nvmlSystemEventSetFreeNr  r  s      r  c_nvmlSystemEventSetFreer    s     
 
!!9	:B
S'CSr  c                 @    [        S5      nU" U 5      n[        U5        g)zk
C API binding for nvmlSystemRegisterEvents
:param req: reference of c_nvmlSystemRegisterEventRequest_v1_t
nvmlSystemRegisterEventsNr  r  s      r  c_nvmlSystemRegisterEventsr    r  r  c                 X    [        S5      nU" U 5      nU[        :X  a  U$ [        U5        g)zh
C API binding for nvmlSystemEventSetWait
:param req: reference of c_nvmlSystemEventSetWaitRequest_v1_t
nvmlSystemEventSetWaitN)rt  r:  rk  r  s      r  c_nvmlSystemEventSetWaitr    s.    
 
!!9	:B
S'C
  
Sr  c                     U [         :w  a  [        [        5      e[        5       nXl        SUl        [        [        U5      5        UR
                  (       d  [        [        5      eUR
                  $ )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)	rl  r  $NVML_ERROR_ARGUMENT_VERSION_MISMATCHri  r  rj  r  r(  rC  )r  r  s     r  r  r    sY     44<== 1
2CKCGuSz* 77)**77Nr  c                     U [         :w  a  [        [        5      e[        5       nXl        Xl        [        [        U5      5        g)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)rs  r  r  rq  r  rj  r  r(  )r  	setHandler  s      r  r  r    s7     22<==
.
0CKGU3Z(r  c                     U [         :w  a  [        [        5      e[        5       nXl        Xl        X#l        [        [        U5      5        g)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)	rz  r  r  rw  r  rx  rj  r  r(  )r  rx  r  r  s       r  r  r    s<     33<==
/
1CKNGuSz*r  c                 \   U [         :w  a  [        [        5      e[        5       nXl        X%l        Xl        X5l        XEl        [        [        U5      5      nU[        :X  a  / $ / n[        UR                  5       H/  nUR                  X8   R                  X8   R                   S.5        M1     U$ )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.
)rc  r  )r  r  r  r  r  r  rj  r!  r   r  r(  r:  ranger  r  rc  r  )	r  r  	timeoutMsrd  eventDataSizer  rj  eventsis	            r  r  r    s     22<==
.
0CKMGH L
"5:
.C
  	 F3<< "//\''
 	 !
 Mr  c            	       H    \ rS rSrS\4S\4S\4S\4S\4S\4S\S	-  4/rS
rg)c_nvmlAccountingStats_ti	  gpuUtilizationmemoryUtilizationmaxMemoryUsagetime	startTime	isRunningr  r   r  Nr!  r  r  r  r  r  	  sE    	6"	f%	;'		k"	f	VaZ Hr  r  c                   T    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\4S\4/
rSrg)c_nvmlAccountingStats_v2_ti'	  r  r  r  r  r  sampleCount
sumGpuUtil	sumFbUtilr  r  r  Nr!  r  r  r  r  r  '	  sX    		f	6"	f%	;'		{#	k"		k"Hr  r  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlVgpuVersion_ti5	  
minVersion
maxVersionr  Nr  r  r  r  r  r  5	  s    v&v&Hr  r  c                   l    \ rS rSrS\4S\4S\4S\\-  4S\\-  4S\S-  4S	\4S
\4S\4S\\-  4/
r	Sr
g)c_nvmlVgpuMetadata_ti:	  r  revisionguestInfoStateguestDriverVersionhostDriverVersionr  r   vgpuVirtualizationCapsguestVgpuVersionopaqueDataSize
opaqueDatar  N)r  r  r  r  r  _nvmlVgpuGuestInfoState_tr  r  #NVML_VGPU_METADATA_OPAQUE_DATA_SIZEr  r  r  r  r  r  r  :	  sp    F#V$!#<=%v0V'VW$f/U&UVVaZ()62#V,!6*v(KKL
Hr  r  c            
       Z    \ rS rSrS\4S\4S\\-  4S\4S\S-  4S\4S	\4S
\\-  4/r	Sr
g)c_nvmlVgpuPgpuMetadata_tiG	  r  r  r  pgpuVirtualizationCapsr  r   hostSupportedVgpuRanger  r  r  N)r  r  r  r  r  r  r  r  (NVML_VGPU_PGPU_METADATA_OPAQUE_DATA_SIZEr  r  r  r  r  r  r  G	  sZ    F#V$$f/U&UV)62VaZ()+>?!6*v(PPQHr  r  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlVgpuPgpuCompatibility_tiR	  vgpuVmCompatibilitycompatibilityLimitCoder  N)r  r  r  r  _nvmlVgpuVmCompatibility_t%_nvmlVgpuPgpuCompatibilityLimitCode_tr  r  r  r  r  r  r  R	  s    &(BC)+PQHr  r  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlVgpuSchedDataWithARR_tik	  	avgFactor	timeslicer  Nr  r  r  r  r  r  k	      		Hr  r  c                       \ rS rSrS\4/rSrg)c_nvmlVgpuSchedData_tiq	  r  r  Nr  r  r  r  r  r  q	      	Hr  r  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlVgpuSchedulerParams_tiv	  vgpuSchedDataWithARRvgpuSchedDatar  N)r  r  r  r  r  r  r  r  r  r  r  r  r  v	  s    	!=>	!67Hr  r  c                   <    \ rS rSrS\4S\4S\4S\4S\4S\4/rSrg	)
c_nvmlVgpuSchedulerLogEntry_ti|	  rY  timeRunTotalrZ  swRunlistIdtargetTimeSlicecumulativePreemptionTimer  Nr  r  r  r  r  r  |	  s9    	4	4	4	/	4	#4Hr  r  c                   B    \ rS rSrS\4S\4S\4S\4S\4S\\-  4/rSr	g	)
c_nvmlVgpuSchedulerLog_ti	  engineIdschedulerPolicyarrModeschedulerParamsentriesCount
logEntriesr  N
r  r  r  r  r  r  r  !NVML_SCHEDULER_SW_MAX_LOG_ENTRIESr  r  r  r  r  r  r  	  sA    	F#	F#	F#	78	F#	9<]]^Hr  r  c                   *    \ rS rSrS\4S\4S\4/rSrg)c_nvmlVgpuSchedulerGetState_ti	  r  r  r  r  Nr  r  r  r  r  r  r  r  r  r  r  r  r  	  s"    	F#	F#	78Hr  r  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlVgpuSchedSetDataWithARR_ti	  r  	frequencyr  Nr  r  r  r  r  r  	  r  r  r  c                       \ rS rSrS\4/rSrg)c_nvmlVgpuSchedSetData_ti	  r  r  Nr  r  r  r  r  r  	  r  r  r  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlVgpuSchedulerSetParams_ti	  r  r  r  N)r  r  r  r  r  r  r  r  r  r  r  r  r  	  s    	!@A	!9:Hr  r  c                   *    \ rS rSrS\4S\4S\4/rSrg)c_nvmlVgpuSchedulerSetState_ti	  r  enableARRModer  r  Nr  r  r  r  r  r  r  r  r  r  r  r  r  	  s"    	F#	F#	:;Hr  r  c            	       N    \ rS rSrS\\-  4S\4S\4S\4S\4S\4S\4S	\4/rS
rg)!c_nvmlVgpuSchedulerCapabilities_ti	  supportedSchedulersmaxTimesliceminTimesliceisArrModeSupportedmaxFrequencyForARRminFrequencyForARRmaxAvgFactorForARRminAvgFactorForARRr  N)r  r  r  r  r  *NVML_SUPPORTED_VGPU_SCHEDULER_POLICY_COUNTr  r  r  r  r  r  r  	  sO    	)S ST	'	'	'	'	'	'	'	Hr  r  c                   6    \ rS rSrS\4S\4S\" \5      4/rSrg)c_nvmlVgpuTypeIdInfo_v1_ti	  r  	vgpuCountvgpuTypeIdsr  Nr  r  r  r  r   r   	  s%    	F	f	(Hr  r   c                   *    \ rS rSrS\4S\4S\4/rSrg)c_nvmlVgpuTypeMaxInstance_v1_ti	  r  
vgpuTypeIdmaxInstancePerGIr  Nr  r  r  r  r  r  	  s!    	F	v	V$Hr  r  c                   6    \ rS rSrS\4S\4S\" \5      4/rSrg)!c_nvmlActiveVgpuInstanceInfo_v1_ti	  r  r  vgpuInstancesr  Nr  r  r  r  r  r  	  s%    	F	f	'&/*Hr  r  c                   6    \ rS rSrS\4S\4S\4S\4S\4/rSrg)	c_nvmlVgpuSchedulerState_v1_ti	  r  r  r  r  r  r  Nr  r  r  r  r  r  	  s2    	F	V	F#	&!	:;Hr  r  c                   6    \ rS rSrS\4S\4S\4S\4S\4/rSrg)	!c_nvmlVgpuSchedulerStateInfo_v1_ti	  r  r  r  r  r  r  Nr  r  r  r  r  r  	  s2    	F#	F#	F#	F#	78Hr  r  c            	       H    \ rS rSrS\4S\4S\4S\4S\4S\4S\\-  4/rS	r	g
)c_nvmlVgpuSchedulerLogInfo_v1_ti	  r  r  r  r  r  r  r  r  Nr  r  r  r  r  r  	  sI    	F#	F#	F#	F#	78	F#	9<]]^Hr  r  i% c                   B    \ rS rSrS\4S\4S\4S\" \5      4S\4/rSrg)	%c_nvmlVgpuCreatablePlacementInfo_v1_ti	  r  r  r  r  r  r  Nr  r  r  r  r  r  	  s5    	F	v	&	)	&!Hr  r  c                   0    \ rS rSrS\4S\4S\4S\4/rSrg)!c_nvmlVgpuSchedulerStateInfo_v2_ti
  r  r  r  r  r  Nr  r  r  r  r  r  
  )    	F#	F#	F#	F#	Hr  r  c                   B    \ rS rSrS\4S\4S\4S\4S\4S\4S\4/rS	rg
) c_nvmlVgpuSchedulerLogEntry_v2_ti
  rY  r  rZ  r  r  r  weightr  Nr  r  r  r  r  r  
  sA    	4	4	4	/	4	#4	/Hr  r  c                   B    \ rS rSrS\4S\4S\4S\4S\4S\\-  4/rSrg	)
c_nvmlVgpuSchedulerLogInfo_v2_ti
  r  r  r  r  r  r  r  N)	r  r  r  r  r  r  r  r  r  r  r  r  r  r  
  s@    	F#	F#	F#	F#	F#	<?``aHr  r  c                   0    \ rS rSrS\4S\4S\4S\4/rSrg)c_nvmlVgpuSchedulerState_v2_ti!
  r  r  r  r  r  Nr  r  r  r  r  r  !
  r  r  r  c                   *    \ rS rSrS\4S\4S\4/rSrg)c_nvmlFBCStats_ti)
  sessionsCount
averageFPSaverageLatencyr  Nr  r  r  r  r  r  )
  s!     &)v&!6*Hr  r  c                   `    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\4S\4S\4S\4/rSrg)c_nvmlFBCSession_ti/
  r  r  r  displayOrdinalsessionTypesessionFlagshMaxResolutionvMaxResolutionr  r  r  r   r  Nr  r  r  r  r"  r"  /
  si    	f		,-	6"		 	6"	6"			v	6"Hr  r"  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlGpuInstancePlacement_tiW
  startr  r  Nr  r  r  r  r)  r)  W
      &! Hr  r)  c                   Z    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\4S\4S\4/rSrg)c_nvmlGpuInstanceProfileInfo_ti\
  r  isP2pSupported
sliceCountinstanceCountmultiprocessorCountcopyEngineCountdecoderCountencoderCount	jpegCountofaCountmemorySizeMBr  Nr!  r  r  r  r-  r-  \
  s`    v!6*v& &)&/"F+((f%V$-Hr  r-  i  c                      ^  \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\4S\4S\4S\4S\\-  4/rU 4S jr	Sr
U =r$ )!c_nvmlGpuInstanceProfileInfo_v2_til
  r  r  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  rs  c                 0   > [         [        U ]  [        S9  g rf  )r  r9  ry  nvmlGpuInstanceProfileInfo_v2ri  s    r  ry  *c_nvmlGpuInstanceProfileInfo_v2_t.__init__|
  rk  r  r  )r  r  r  r  r  r  r  NVML_DEVICE_NAME_V2_BUFFER_SIZEr  ry  r  r  r  s   @r  r9  r9  l
  s    F#v!6*v& &)&/"F+((f%V$-"AABHg gr  r9  c                   0    \ rS rSrS\4S\4S\4S\4/rSrg)c_nvmlGpuInstanceInfo_ti
  r  r  	profileId	placementr  N)	r  r  r  r  re  r  r)  r  r  r  r  r  r?  r?  
  s)    >*vf%:;Hr  r?  c                       \ rS rSrSrg)struct_c_nvmlGpuInstance_ti
  r  Nr  r  r  r  rC  rC  
  r  r  rC  c                   $    \ rS rSrS\4S\4/rSrg) c_nvmlComputeInstancePlacement_ti
  r*  r  r  Nr  r  r  r  rE  rE  
  r+  r  rE  c            
       N    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\4/	rSrg)"c_nvmlComputeInstanceProfileInfo_ti
  r  r/  r0  r1  sharedCopyEngineCountsharedDecoderCountsharedEncoderCountsharedJpegCountsharedOfaCountr  Nr  r  r  r  rG  rG  
  sP    vv& &)&/(&1%v.%v."F+!6*	Hr  rG  i  c                   t   ^  \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\4S\4S\\-  4/rU 4S jrSr	U =r
$ )%c_nvmlComputeInstanceProfileInfo_v2_ti
  r  r  r/  r0  r1  rH  rI  rJ  rK  rL  rs  c                 0   > [         [        U ]  [        S9  g rf  )r  rN  ry  !nvmlComputeInstanceProfileInfo_v2ri  s    r  ry  .c_nvmlComputeInstanceProfileInfo_v2_t.__init__
  r|  r  r  )r  r  r  r  r  r  r=  r  ry  r  r  r  s   @r  rN  rN  
  ss    F#vv& &)&/(&1%v.%v."F+!6*"AABHo or  rN  c                   6    \ rS rSrS\4S\4S\4S\4S\4/rSr	g)	c_nvmlComputeInstanceInfo_ti
  r  gpuInstancer  r@  rA  r  N)
r  r  r  r  re  c_nvmlGpuInstance_tr  rE  r  r  r  r  r  rS  rS  
  s2    >* 34vf%>?	Hr  rS  c                   2    \ rS rSrS\S4S\4S\4S\4/rSrg)	$c_nvmlGpuDynamicPstatesUtilization_ti
  
bIsPresentr   
percentageincThresholddecThresholdr  Nr  r  r  r  rW  rW  
  s+    vq)v&((*Hr  rW  c                   *    \ rS rSrS\4S\\-  4/rSrg)c_nvmlGpuDynamicPstatesInfo_ti
  flagsutilizationr  N)	r  r  r  r  r  rW  NVML_MAX_GPU_UTILIZATIONSr  r  r  r  r  r]  r]  
  s!    &! DG` `acHr  r]  c                   6    \ rS rSrS\4S\4S\4S\4S\4/rSrg)	c_nvmlGpuThermalSensor_ti
  
controllerdefaultMinTempdefaultMaxTempcurrentTemptargetr  N)r  r  r  r  rK  r  r  r  r  r  rb  rb  
  s1    u%!5)!5)&5!	#Hr  rb  c                   *    \ rS rSrS\4S\\-  4/rSrg)c_nvmlGpuThermalSettings_ti
  r  sensorr  N)	r  r  r  r  r  rb   NVML_MAX_THERMAL_SENSORS_PER_GPUr  r  r  r  r  ri  ri  
  s!    &!36VVWYHr  ri  c                   0    \ rS rSrS\4S\4S\4S\4/rSrg)c_nvmlCoolerInfo_ti
  r  indexcoolerControlTypecoolerTargetr  N)	r  r  r  r  r  _nvmlCoolerControl_t_nvmlCoolerTarget_tr  r  r  r  r  rm  rm  
  s+    F#&!$&:;!45Hr  rm  c                     [        5       n[        Ul        SUl        [	        S5      nU" U [        U5      5      n[        U5        UR                  UR                  /$ )Nr   nvmlDeviceGetCoolerInfo)	rm  nvmlCoolerInfo_v1r  rn  rt  r(  rk  ro  rp  )r  c_coolerInfor+  rj  s       r  rt  rt    sU    %'L,LL	 !:	;B
VU<(
)CS**L,E,EFFr  c                       \ rS rSrSrg)struct_c_nvmlComputeInstance_ti  r  Nr  r  r  r  rx  rx    r  r  rx  c            
       N    \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\4/	rSrg)c_nvmlDeviceAttributesi   r1  rH  rI  rJ  rK  rL  gpuInstanceSliceCountcomputeInstanceSliceCountr7  r  Nr!  r  r  r  rz  rz     sQ    &/(&1%v.%v."F+!6*(&1,f5-	Hr  rz  c                   6    \ rS rSrS\4S\4S\4S\4S\4/rSrg)	 c_nvmlRowRemapperHistogramValuesi,  maxhighpartiallownoner  Nr  r  r  r  r~  r~  ,  s/     F# 	Hr  r~  i   c                   *    \ rS rSrS\4S\4S\4/rSrg)c_nvmlConfComputeSystemState_ti<  environment	ccFeaturedevToolsModer  Nr  r  r  r  r  r  <  s!    'f%(Hr  r  i  c                   J   ^  \ rS rSrS\4S\4S\4S\4S\4/rU 4S jrSrU =r$ )	$c_nvmlSystemConfComputeSettings_v1_tiD  r  r  r  r  multiGpuModec                 0   > [         [        U ]  [        S9  g rf  )r  r  ry   nvmlSystemConfComputeSettings_v1ri  s    r  ry  -c_nvmlSystemConfComputeSettings_v1_t.__init__K  ru  r  r  r  r  s   @r  r  r  D  s>    F#'f%((	Hm mr  r  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlConfComputeSystemCaps_tiN  cpuCapsgpusCapsr  Nr  r  r  r  r  r  N  s    F#V$Hr  r  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlConfComputeMemSizeInfo_tiS  protectedMemSizeKibunprotectedMemSizeKibr  Nr6  r  r  r  r  r  S  s    &4(+6Hr  r  c                   <    \ rS rSrS\4S\4S\\-  4S\\-  4/rSr	g)!c_nvmlConfComputeGpuCertificate_tiX  certChainSizeattestationCertChainSize	certChainattestationCertChainr  N)
r  r  r  r  r  rl  NVML_GPU_CERT_CHAIN_SIZE$NVML_GPU_ATTESTATION_CERT_CHAIN_SIZEr  r  r  r  r  r  r  X  s5     &)+V4g(@@A'3W)WXHr  r  c                   N    \ rS rSrS\4S\4S\4S\\-  4S\\-  4S\\-  4/r	Sr
g	)
'c_nvmlConfComputeGpuAttestationReport_ti_  isCecAttestationReportPresentattestationReportSizececAttestationReportSizenonceattestationReportcecAttestationReportr  N)r  r  r  r  r  rl  NVML_CC_GPU_CEC_NONCE_SIZE#NVML_CC_GPU_ATTESTATION_REPORT_SIZE'NVML_CC_GPU_CEC_ATTESTATION_REPORT_SIZEr  r  r  r  r  r  r  _  sK    0&9(&1+V4'$>>?$g0S&ST'3Z)Z[Hr  r  c                   $    \ rS rSrS\4S\4/rSrg).c_nvmlConfComputeSetKeyRotationThresholdInfo_tih  r  maxAttackerAdvantager  Nr  r  r  r  r  rI  r  r  r  r  r  r  r  h  s    F#'1Hr  r  c                   $    \ rS rSrS\4S\4/rSrg).c_nvmlConfComputeGetKeyRotationThresholdInfo_tin  r  attackerAdvantager  Nr  r  r  r  r  r  n  s    F#$g.Hr  r  c                 \   ^  [        T 5      U 4S j5       n[        R                  S:  a  U$ T $ )aH  
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                    > U  Vs/ s H*  n[        U[        5      (       a  UR                  5       OUPM,     n nT" U 0 UD6n[        U[        5      (       a'  [        U[        5      (       a  U$ UR	                  5       $ U$ s  snf r,  )r  r%  r  r  r  )rP  kwargsargr  funcs       r  wrapper convertStrBytes.<locals>.wrapper~  sy     JNN#
3 4 4

#=ND#F# c5!!#s##
::<
 Os   1A?r	  )r   rV  r  r  r  s   ` r  convertStrBytesr  u  s5     4[  4Kr  c                 0   ^  [        T 5      U 4S j5       nU$ )Nc                  h   >  T" U 0 UD6$ ! [          a    [        STR                  -   S-   5      ef = f)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  )rP  r  r  s     r  r  'throwOnVersionMismatch.<locals>.wrapper  s_    	h((() 	h* ,O RVQ^Q^,_ bg,g h h	hs    &1r   r  s   ` r  throwOnVersionMismatchr    s"    
4[h h Nr  c                     [        5         [        S5      nU" U 5      n[        U5        [        R	                  5         [
        S-  q[        R                  5         g )NnvmlInitWithFlagsr   )_LoadNvmlLibraryrt  rk  rn  ro  _nvmlLib_refcountrq  )r^  r+  rj  s      r  r  r    sN    
 
!!4	5B
U)CS r  c                      [        S5        g r  )r  r  r  r  nvmlInitr    s    ar  c            	         [         S:X  a  [        R                  5          [         S:X  a}   [        R                  SS S:X  a@   [        [        R                  R                  [        R                  " SS5      S5      5      q O[        S
5      q  [         S:X  a  [        [        5        [        R                  5         gg! [         aH  n [        [        R                  R                  [        R                  " SS5      S	5      5      q  Sn A N|Sn A ff = f! [         a  n [        [        5         Sn A NSn A ff = f! [        R                  5         f = f)z-
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)rp  rn  ro  rV  platformCDLLospathr  getenvOSErrorrk  r<  rq  )oses    r  r  r    s    	4	"4CRa(E1M&*277<<		(L8Y[n+o&pG #'':"; tO$%AB !5 	  ' M '+277<<		.Rd8e  hK  ,L  'MGM  C$%ABBC !sj   
D8 D >B= D8 D D8 =
D>D
D 	D8 
DD 
D5D0+D8 0D55D8 8Ec                      [        S5      n U " 5       n[        U5        [        R                  5         S[        :  a	  [        S-  q[        R                  5         g )NnvmlShutdownr   r   )rt  rk  rn  ro  r  rq  )r+  rj  s     r  r  r    sN     
!	0B
$CS 	Qr  c                 B    [        S5      n[        Ul        U" U 5      nU$ )Nr&  )rt  c_char_prestype)r  r+  rj  s      r  r&  r&    s"    	 !2	3BBJ
V*CJr  c                      [        [        5      n [        S5      nU" U [        [        5      5      n[	        U5        U R
                  $ )NnvmlSystemGetNVMLVersion)create_string_buffer$NVML_SYSTEM_NVML_VERSION_BUFFER_SIZErt  r  rk  r  	c_versionr+  rj  s      r  r  r    s<    $%IJI	 !;	<B
YCD
ECS??r  c                  |    [        5       n [        S5      nU" [        U 5      5      n[        U5        U R                  $ )NnvmlSystemGetCudaDriverVersionrK  rt  r(  rk  r  c_cuda_versionr+  rj  s      r  r  r    s7    WN	 !A	BB
U>"
#CSr  c                  |    [        5       n [        S5      nU" [        U 5      5      n[        U5        U R                  $ )N!nvmlSystemGetCudaDriverVersion_v2r  r  s      r  r  r    s7    WN	 !D	EB
U>"
#CSr  c                     [        S5      n[        S5      nU" [        U 5      U[        S5      5      n[        U5        UR                  $ )Nr`  nvmlSystemGetProcessName)r  rt  r  rk  r  )r  c_namer+  rj  s       r  r  r    s?    !$'F	 !;	<B
VC[&&,
/CS<<r  c                      [        [        5      n [        S5      nU" U [        [        5      5      n[	        U5        U R
                  $ )NnvmlSystemGetDriverVersion)r  r  rt  r  rk  r  r  s      r  r  r    s<    $%KLI	 !=	>B
YEF
GCS??r  c                  *   [        S5      n S n[        S5      nU" [        U 5      S 5      nU[        :w  a  U[        :w  a  [        U5      eU R                  S:X  a  / $ [        U R                  -  nU" 5       nU" [        U 5      U5      n[        U5        U$ )Nr   nvmlSystemGetHicVersion)	r  rt  r(  ri  r7  r  r  r=  rk  )c_counthicsr+  rj  	hic_arrays        r  r  r    s    QiGD	 !:	;B U7^T
"C 
		,	,n 		!GMM1I;D
U7^T
"CSKr  c                      [        S5      n [        U l        [        S5      nU" [	        U 5      [        [        5      5      n[        U5        U $ )Nr   nvmlSystemGetDriverBranch)r  SystemDriverBranchInfo_v1r  rt  r(  r  r  rk  )c_branchInfor+  rj  s      r  r  r  ,  sD    4Q7L4L
!"=
>B
U< &)O"P
QCSr  c                 R    [        S5      nU" [        U 5      5      n[        U5        g )NnvmlSystemGetCPER_v1r'  )cperr+  rj  s      r  r  r  4  s"    	 !7	8B
U4[/CSr  c                  |    [        5       n [        S5      nU" [        U 5      5      n[        U5        U R                  $ )NnvmlUnitGetCountr  rt  r(  rk  r  r  r+  rj  s      r  r  r  :  s4    hG	 !3	4B
U7^
CS==r  c                     [        U 5      n[        5       n[        S5      nU" U[        U5      5      n[	        U5        U$ )NnvmlUnitGetHandleByIndex)r  c_nvmlUnit_trt  r(  rk  )rn  c_indexunitr+  rj  s        r  r  r  A  s:    UmG>D	 !;	<B
WeDk
"CSKr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlUnitGetUnitInfo)r  rt  r(  rk  r  r*  r+  rj  s       r  r  r  I  s2    F	 !6	7B
T5=
!CSMr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlUnitGetLedState)r  rt  r(  rk  )r  c_stater+  rj  s       r  r  r  P  s2    !G	 !6	7B
T5>
"CSNr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlUnitGetPsuInfo)r  rt  r(  rk  r  s       r  r  r  W  s2    F	 !5	6B
T5=
!CSMr  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  $ )NnvmlUnitGetTemperaturer  )r  r^  c_tempr+  rj  s        r  r  r  ^  s<    XF	 !9	:B
T6$<v
/CS<<r  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlUnitGetFanSpeedInfo)r  rt  r(  rk  )r  c_speedsr+  rj  s       r  r	  r	  e  s2    $&H	 !:	;B
T5?
#CSOr  c                     [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  [        n[        U5        UR                  $ )Nr   nvmlUnitGetDevices)r  rt  r(  r7  ri  rk  r  )r  r  r+  rj  s       r  nvmlUnitGetDeviceCountr  m  sH    QiG	 !5	6B
T5>4
(C++S==r  c                     [        [        U 5      5      n[        UR                  -  nU" 5       n[	        S5      nU" U [        U5      U5      n[        U5        U$ )Nr  )r  r  re  r  rt  r(  rk  )r  r  device_array	c_devicesr+  rj  s         r  r  r  w  sR    +D12G!GMM1LI	 !5	6B
T5>9
-CSr  c                  |    [        5       n [        S5      nU" [        U 5      5      n[        U5        U R                  $ )NnvmlDeviceGetCount_v2r  r  s      r  nvmlDeviceGetCountr    s4    hG	 !8	9B
U7^
CS==r  c                     [        U 5      n[        5       n[        S5      nU" U[        U5      5      n[	        U5        U$ )NnvmlDeviceGetHandleByIndex_v2r  re  rt  r(  rk  )rn  r  r  r+  rj  s        r  nvmlDeviceGetHandleByIndexr    s;    UmGF	 !@	AB
WeFm
$CSMr  c                     [        U 5      n[        5       n[        S5      nU" U[        U5      5      n[	        U5        U$ )NnvmlDeviceGetHandleBySerialr  re  rt  r(  rk  )r  c_serialr  r+  rj  s        r  r  r    s>     HF	 !>	?B
XuV}
%CSMr  c                     [        U 5      n[        5       n[        S5      nU" U[        U5      5      n[	        U5        U$ )NnvmlDeviceGetHandleByUUIDr  )r  c_uuidr  r+  rj  s        r  r  r    s;    d^FF	 !<	=B
VU6]
#CSMr  c                 0   [        5       nXl        U[        :X  a  XR                  l        O/U[
        :X  a%  [        UR                  R                  U [        5        [        5       n[        S5      nU" [        U5      [        U5      5      n[        U5        U$ )NnvmlDeviceGetHandleByUUIDV)r  r^  NVML_UUID_TYPE_ASCIIr  r%  NVML_UUID_TYPE_BINARYmemmover  r  re  rt  r(  rk  )r  r^  r  r  r+  rj  s         r  r   r     su    ^FK##	&	&""D*EFF	 !=	>B
U6]E&M
*CSMr  c                     [        U 5      n[        5       n[        S5      nU" U[        U5      5      n[	        U5        U$ )N nvmlDeviceGetHandleByPciBusId_v2r  )pciBusIdc_busIdr  r+  rj  s        r  nvmlDeviceGetHandleByPciBusIdr(    s<    x GF	 !C	DB
WeFm
$CSMr  c                     [        [        5      n[        S5      nU" X[        [        5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetName)r  r=  rt  r  rk  r  )r  r  r+  rj  s       r  r*  r*    <    !"ABF	 !4	5B
VV$CD
ECS<<r  c                   *    \ rS rSrS\4S\\-  4/rSrg)c_nvmlDevicePerfModes_v1_ti  r  r%  r  N	r  r  r  r  r  r  NVML_PERF_MODES_BUFFER_SIZEr  r  r  r  r  r-  r-        	F	445Hr  r-  i c                     [        5       n[        Ul        [        S5      nU" U [	        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetPerformanceModes)r-  nvmlDevicePerfModes_v1r  rt  r(  rk  r%  )r  	perfModesr+  rj  s       r  r2  r2    s@    *,I.I	 !@	AB
VU9%
&CS==r  c                   *    \ rS rSrS\4S\\-  4/rSrg)"c_nvmlDeviceCurrentClockFreqs_v1_ti  r  r%  r  Nr.  r  r  r  r6  r6    r0  r  r6  c                     [        5       n[        Ul        [        S5      nU" U [	        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetCurrentClockFreqs)r6  nvmlDeviceCurrentClockFreqs_v1r  rt  r(  rk  r%  )r  currentClockFreqsr+  rj  s       r  r8  r8    sE    :< >	 !A	BB
VU,-
.CS   r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetBoardIdr  )r  c_idr+  rj  s       r  r<  r<    s6    8D	 !7	8B
VU4[
!CS::r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetMultiGpuBoardr  )r  
c_multiGpur+  rj  s       r  r?  r?    s9    J	 !=	>B
VU:&
'CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetBrand)_nvmlBrandType_trt  r(  rk  r  )r  c_typer+  rj  s       r  rB  rB    s7    F	 !5	6B
VU6]
#CS<<r  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceGetC2cModeInfoV)r  rt  r(  rk  r)  s       r  nvmlDeviceGetC2cModeInfoV1rG    s2    #%F	 !<	=B
VU6]
#CSMr  c                     [        U 5      $ r,  )rG  r  s    r  rF  rF        %f--r  c                     [        [        5      n[        S5      nU" X[        [        5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetBoardPartNumber)r  #NVML_DEVICE_PART_NUMBER_BUFFER_SIZErt  r  rk  r  )r  c_part_numberr+  rj  s       r  rL  rL    s>    ()LMM	 !?	@B
VF+N$O
PCSr  c                     [        [        5      n[        S5      nU" X[        [        5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetSerial)r  NVML_DEVICE_SERIAL_BUFFER_SIZErt  r  rk  r  )r  r  r+  rj  s       r  rP  rP    s<    #$BCH	 !6	7B
Vv&DE
FCS>>r  c                     [        U5      [        LnU(       a  UO
[        U5      n[        S5      nU" X5      nU(       a  U$ [	        U5        UR
                  $ )NnvmlDeviceGetModuleId)r^  r  r(  rt  rk  r  )r  moduleIdisReferencemoduleIdRefr+  rj  s         r  rS  rS    sL    x..K)(uXK	 !8	9B
V
!C
~~r  c                     [         U-  nU" 5       n[        S5      nU" X[        U5      [        U5      5      n[	        U5        U$ )NnvmlDeviceGetMemoryAffinityr  rt  r(  _nvmlAffinityScope_trk  )r  nodeSetSizescopeaffinity_array
c_affinityr+  rj  s          r  rX  rX    sF     ;.N!J	 !>	?B
V%
"35I%5P
QCSr  c                     [         U-  nU" 5       n[        S5      nU" X[        U5      [        U5      5      n[	        U5        U$ )N#nvmlDeviceGetCpuAffinityWithinScoperY  )r  
cpuSetSizer\  r]  r^  r+  rj  s          r  r`  r`  '  sF     :-N!J	 !F	GB
Vz!24H4O
PCSr  c                 v    [         U-  nU" 5       n[        S5      nU" X[        U5      5      n[        U5        U$ )NnvmlDeviceGetCpuAffinity)r  rt  r(  rk  )r  ra  r]  r^  r+  rj  s         r  rc  rc  /  s>     :-N!J	 !;	<B
Vz!2
3CSr  c                 @    [        S5      nU" U 5      n[        U5        g )NnvmlDeviceSetCpuAffinityr  r  r+  rj  s      r  re  re  7  s!    	 !;	<B
V*CSr  c                 @    [        S5      nU" U 5      n[        U5        g )NnvmlDeviceClearCpuAffinityr  rf  s      r  rh  rh  =  s!    	 !=	>B
V*CSr  c                 ~    [        S5      n[        5       nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetNumaNodeIdrt  rK  r(  rk  r  )r  r+  noderj  s       r  rj  rj  C  s6    	 !:	;B7D
VU4[
!CS::r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetAddressingMode)r-  rt  r(  rk  r  )r  c_moder+  rj  s       r  rn  rn  J  s7    )+F	 !>	?B
VU6]
#CS<<r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetMinorNumberr  )r  c_minor_numberr+  rj  s       r  rq  rq  Q  s9    XN	 !;	<B
VU>*
+CSr  c                     [        [        5      n[        S5      nU" X[        [        5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetUUID)r  NVML_DEVICE_UUID_V2_BUFFER_SIZErt  r  rk  r  )r  r  r+  rj  s       r  rt  rt  X  r+  r  c                     [        [        5      n[        S5      nU" U [        U5      U[	        [        5      5      n[        U5        UR                  $ )NnvmlDeviceGetInforomVersion)r  'NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZErt  _nvmlInforomObject_tr  rk  r  )r  infoRomObjectr  r+  rj  s        r  rw  rw  `  sJ    $%LMI	 !>	?B
V)-8F#JKMCS??r  c                     [        [        5      n[        S5      nU" X[        [        5      5      n[	        U5        UR
                  $ )N nvmlDeviceGetInforomImageVersion)r  rx  rt  r  rk  r  r  r  r+  rj  s       r  r|  r|  j  s<    $%LMI	 !C	DB
V'N O
PCS??r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N)nvmlDeviceGetInforomConfigurationChecksumr  )r  
c_checksumr+  rj  s       r  r  r  s  s9    J	 !L	MB
VU:&
'CSr  c                 @    [        S5      nU" U 5      n[        U5        g )NnvmlDeviceValidateInforomr  rf  s      r  r  r  {  s!    	 !<	=B
V*CSr  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  UR
                  /$ )NnvmlDeviceGetLastBBXFlushTime)r  rI  rt  r(  rk  r  )r  c_timestampc_durationUsr+  rj  s        r  r  r    sR    -K9L	 !@	AB
VU;'|)<
=CS|1122r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetDisplayMode_nvmlEnableState_trt  r(  rk  r  r  ro  r+  rj  s       r  r  r    7    !F	 !;	<B
VU6]
#CS<<r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetDisplayActiver  r  s       r  r  r    s7    !F	 !=	>B
VU6]
#CS<<r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetPersistenceModer  )r  r  r+  rj  s       r  r  r    s7     "G	 !?	@B
VU7^
$CS==r  c                 @    [        S5      nU" X5      n[        U5        g )NnvmlDeviceGetPciInfoExtr  r)  s       r  r  r    s"    	 !:	;B
V
CSr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceGetPciInfo_v3r  rt  r(  rk  r)  s       r  r  r    s1    _F	 !:	;B
VU6]
#CSMr  c                     [        U 5      $ r,  )r  rI  s    r  nvmlDeviceGetPciInfor    s    "6**r  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetClockInfor  rt  _nvmlClockType_tr(  rk  r  r  r^  c_clockr+  rj  s        r  r  r    s>    hG	 !9	:B
V%d+U7^
<CS==r  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetMaxClockInfor  r  s        r  r  r    s>    hG	 !<	=B
V%d+U7^
<CS==r  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetApplicationsClockr  r  s        r  r  r    s>    hG	 !A	BB
V%d+U7^
<CS==r  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  $ )N"nvmlDeviceGetMaxCustomerBoostClockr  r  s        r  r  r    s>    hG	 !E	FB
V%d+U7^
<CS==r  c                     [        5       n[        S5      nU" U [        U5      [        U5      [	        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetClock)r  rt  r  _nvmlClockId_tr(  rk  r  )r  r^  r  r  r+  rj  s         r  r  r    sE    hG	 !5	6B
V%d+^B-?w
PCS==r  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  $ )N%nvmlDeviceGetDefaultApplicationsClockr  r  s        r  r  r    s>    hG	 !H	IB
V%d+U7^
<CS==r  c                 l   [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  / $ U[        :X  ak  [         UR
                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR
                  5       H  nUR                  XW   5        M     U$ [        U5      e)Nr   "nvmlDeviceGetSupportedMemoryClocks
r  rt  r(  ri  r7  r  rk  r  r  r  )r  r  r+  rj  clocks_arrayc_clocksprocsr  s           r  r  r    s    QiG	 !E	FB
VU7^T
*C|	
-
--> w2w}}%ALL% &  nr  c                    [        S5      n[        S5      nU" U [        U5      [        U5      S 5      nU[        :X  a  / $ U[        :X  au  [         UR
                  -  nU" 5       nU" U [        U5      [        U5      U5      n[        U5        / n[        UR
                  5       H  nUR                  Xh   5        M     U$ [        U5      e)Nr   $nvmlDeviceGetSupportedGraphicsClocksr  )	r  memoryClockMHzr  r+  rj  r  r  r  r  s	            r  r  r    s    QiG	 !G	HB
VVN+U7^T
BC|	
-
--> /wJw}}%ALL% &  nr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetFanSpeedr  )r  c_speedr+  rj  s       r  r  r    s6    hG	 !8	9B
VU7^
$CS==r  c                 ~    [        5       n[        S5      nU" X[        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetFanSpeed_v2r  r  fanr  r+  rj  s        r  r  r    s6    hG	 !;	<B
V%.
)CS==r  c                   *    \ rS rSrS\4S\4S\4/rSrg)c_nvmlFanSpeedInfo_ti$  r  r  r  r  Nr  r  r  r  r  r  $  s     	F		&Hr  r  c                     [        5       nSUl        [        Ul        [	        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   nvmlDeviceGetFanSpeedRPM)r  r  nvmlFanSpeedInfo_v1r  rt  r(  rk  r  )r  
c_fanSpeedr+  rj  s       r  r  r  -  sI    %'JJN,J	 !;	<B
VU:&
'CSr  c                 ~    [        5       n[        S5      nU" X[        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetTargetFanSpeedr  r  s        r  r  r  6  s6    hG	 !>	?B
V%.
)CS==r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetNumFansr  )r  	c_numFansr+  rj  s       r  r  r  =  s7    I	 !7	8B
VU9%
&CS??r  c                 J    [        S5      nU" X5      n[        U5        [        $ )NnvmlDeviceSetDefaultFanSpeed_v2rt  rk  ri  )r  rn  r+  rj  s       r  r  r  D  s%    	 !B	CB
V
CSr  c                 ,   [        U5      [        L=(       d    [        U5      [        LnU(       a  UO
[        U5      nU(       a  UO
[        U5      n[        S5      nU" XU5      n[	        U5        U(       a  [
        $ UR                  UR                  /$ )NnvmlDeviceGetMinMaxFanSpeedr^  r  r(  rt  rk  ri  r  )r  minSpeedmaxSpeedrU  minSpeedRefmaxSpeedRefr+  rj  s           r  r  r  J  sq    >/RT(^65QK)(uXK)(uXK	 !>	?B
V+
.CS&<LX^^X^^,LLr  c                     [        U5      [        LnU(       a  UO
[        U5      n[        S5      nU" XU5      n[	        U5        U(       a  [
        $ UR                  $ )N nvmlDeviceGetFanControlPolicy_v2r  )r  r  fanControlPolicyrU  fanControlPolicyRefr+  rj  s          r  r  r  S  sW    '(6K.9*uEU?V	 !C	DB
V-
.CS&<B,<,B,BBr  c                 ^    [        S5      nU" X[        U5      5      n[        U5        [        $ )NnvmlDeviceSetFanControlPolicy)rt  _nvmlFanControlPolicy_trk  ri  )r  r  r  r+  rj  s        r  r  r  [  s.    	 !@	AB
V12BC
DCSr  c                   *    \ rS rSrS\4S\4S\4/rSrg)c_nvmlTemperature_v1_tia  r  
sensorTypetemperaturer  N)	r  r  r  r  r  _nvmlTemperatureSensors_trK  r  r  r  r  r  r  r  a  s"    	F	01	Hr  r  c                     [        5       n[        Ul        [        U5      Ul        [        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetTemperatureV)	r  nvmlTemperature_v1r  r  r  rt  r(  rk  r  r  rj  r  r+  rj  s        r  nvmlDeviceGetTemperatureV1r  i  sM    #%F'FN1&9F	 !<	=B
VU6]
#CSr  c                 J    U[         :X  a  [        X5      $ [        [        5      er,  )r  r  r  r  )r  rj  r  s      r  r  r  r  s"    $$)&99<==r  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetTemperature)r  rt  r  r(  rk  r  r  s        r  r  r  y  s>    XF	 !;	<B
V.v6f
FCS<<r  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  $ )N!nvmlDeviceGetTemperatureThreshold)r  rt  _nvmlTemperatureThresholds_tr(  rk  r  )r  	thresholdr  r+  rj  s        r  r  r    s>    XF	 !D	EB
V1)<eFm
LCS<<r  c                     [        5       nX#l        [        S5      nU" U [        U5      [	        U5      5      n[        U5        g )N!nvmlDeviceSetTemperatureThreshold)r  r  rt  r  r(  rk  )r  r  tempr  r+  rj  s         r  r  r    s<    XFL	 !D	EB
V1)<eFm
LCSr  c                     [        5       n[        Ul        [        S5      nU" U [	        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetMarginTemperature)r  nvmlMarginTemperature_v1r  rt  r(  rk  r  )r  c_marginTempInfor+  rj  s       r  r  r    sE    357	 !A	BB
VU+,
-CS---r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetPowerState_nvmlPstates_trt  r(  rk  r  r  c_pstater+  rj  s       r  r  r    s7    H	 !:	;B
VU8_
%CS>>r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetPerformanceStater  r  s       r  r  r    s7    H	 !@	AB
VU8_
%CS>>r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N nvmlDeviceGetPowerManagementModer  )r  
c_pcapModer+  rj  s       r  r  r    s:    #%J	 !C	DB
VU:&
'CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N!nvmlDeviceGetPowerManagementLimitr  r  c_limitr+  rj  s       r  r  r    s6    hG	 !D	EB
VU7^
$CS==r  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )N,nvmlDeviceGetPowerManagementLimitConstraintsr  )r  
c_minLimit
c_maxLimitr+  rj  s        r  r  r    sR    JJ	 !O	PB
VU:&j(9
:CSj..//r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N(nvmlDeviceGetPowerManagementDefaultLimitr  r  s       r  r  r    s6    hG	 !K	LB
VU7^
$CS==r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetEnforcedPowerLimitr  r  s       r  r  r    s6    hG	 !B	CB
VU7^
$CS==r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetPowerUsager  )r  c_wattsr+  rj  s       r  r  r    s6    hG	 !:	;B
VU7^
$CS==r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N#nvmlDeviceGetTotalEnergyConsumption)c_uint64rt  r(  rk  r  )r  c_millijoulesr+  rj  s       r  r  r    s9    JM	 !F	GB
VU=)
*CSr  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )NnvmlDeviceGetGpuOperationMode)_nvmlGpuOperationMode_trt  r(  rk  r  r  c_currStatec_pendingStater+  rj  s        r  r  r    sT    )+K,.N	 !@	AB
VU;'~)>
?CS~3344r  c                     [        U 5      S   $ r  r  rI  s    r  $nvmlDeviceGetCurrentGpuOperationModer        (033r  c                     [        U 5      S   $ Nr   r  rI  s    r  $nvmlDeviceGetPendingGpuOperationModer    r  r  c                     U(       d  [        5       n[        S5      nO[        5       nXl        [        S5      nU" U [	        U5      5      n[        U5        U$ )NnvmlDeviceGetMemoryInfonvmlDeviceGetMemoryInfo_v2)r  rt  r  r  r(  rk  )r  r  c_memoryr+  rj  s        r  r  r    sN    !#$%>?$&"$%AB
VU8_
%CSOr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceGetBAR1MemoryInfo)r
  rt  r(  rk  )r  c_bar1_memoryr+  rj  s       r  r  r    s4    &(M	 !>	?B
VU=)
*CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetComputeMode)_nvmlComputeMode_trt  r(  rk  r  r  s       r  r   r     r  r  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  4$ )N"nvmlDeviceGetCudaComputeCapabilityr  )r  c_majorc_minorr+  rj  s        r  r#  r#    sL    gGgG	 !E	FB
VU7^U7^
4CSMM7==))r  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )NnvmlDeviceGetEccModer  r  s        r  r'  r'    sT    $&K')N	 !7	8B
VU;'~)>
?CS~3344r  c                     [        U 5      S   $ r  r'  rI  s    r  nvmlDeviceGetCurrentEccModer*        '**r  c                     [        U 5      S   $ r  r)  rI  s    r  nvmlDeviceGetPendingEccModer-    r+  r  c                     [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  /$ )NnvmlDeviceGetDefaultEccModer  )r  c_defaultStater+  rj  s       r  r/  r/     s=    ')N	 !>	?B
VU>*
+CS  !!r  c                     [        5       n[        S5      nU" U [        U5      [        U5      [	        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetTotalEccErrors)r  rt  _nvmlMemoryErrorType_t_nvmlEccCounterType_tr(  rk  r  )r  	errorTypecounterTyper  r+  rj  s         r  r2  r2  '  sI    mG	 !>	?B
V+I6&{3U7^ECS==r  c                     [        5       n[        S5      nU" U [        U5      [        U5      [	        U5      5      n[        U5        U$ )NnvmlDeviceGetDetailedEccErrors)r1  rt  r3  r4  r(  rk  )r  r5  r6  c_countsr+  rj  s         r  r8  r8  0  sE    %'H	 !A	BB
V+I6&{3U8_FCSOr  c           	          [        5       n[        S5      nU" U [        U5      [        U5      [	        U5      [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetMemoryErrorCounter)r  rt  r3  r4  _nvmlMemoryLocation_tr(  rk  r  )r  r5  r6  locationTyper  r+  rj  s          r  r;  r;  9  sS    mG	 !B	CB
V#I.";/"<07^	C
 S==r  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceGetUtilizationRates)r8  rt  r(  rk  )r  c_utilr+  rj  s       r  r?  r?  D  s2     "F	 !@	AB
VU6]
#CSMr  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )NnvmlDeviceGetEncoderUtilizationr  r  r@  c_samplingPeriodr+  rj  s        r  rB  rB  K  R    XFx	 !B	CB
VU6]E*:$;
<CSLL*0011r  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )NnvmlDeviceGetDecoderUtilizationr  rC  s        r  rG  rG  S  rE  r  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )NnvmlDeviceGetJpgUtilizationr  rC  s        r  rI  rI  [  R    XFx	 !>	?B
VU6]E*:$;
<CSLL*0011r  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )NnvmlDeviceGetOfaUtilizationr  rC  s        r  rL  rL  c  rJ  r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetPcieReplayCounterr  )r  c_replayr+  rj  s       r  rN  rN  k  s6    xH	 !A	BB
VU8_
%CS>>r  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )NnvmlDeviceGetDriverModel_nvmlDriverModel_trt  r(  rk  r  r  c_currModelc_pendingModelr+  rj  s        r  nvmlDeviceGetDriverModel_v1rW  r  sT    $&K')N	 !;	<B
VU;'~)>
?CS~3344r  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )NnvmlDeviceGetDriverModel_v2rR  rT  s        r  rY  rY  z  sT    $&K')N	 !>	?B
VU;'~)>
?CS~3344r  c                     [        U 5      $ r,  )rY  rI  s    r  rQ  rQ    s    &v..r  c                     [        U 5      S   $ r  rQ  rI  s    r  nvmlDeviceGetCurrentDriverModelr]        #F+A..r  c                     [        U 5      S   $ r  r\  rI  s    r  nvmlDeviceGetPendingDriverModelr`    r^  r  c                     [        [        5      n[        S5      nU" X[        [        5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetVbiosVersion)r  %NVML_DEVICE_VBIOS_VERSION_BUFFER_SIZErt  r  rk  r  r}  s       r  rb  rb    s<    $%JKI	 !<	=B
V'L M
NCS??r  c                    [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  / $ U[        :X  a  UR
                  S-  S-   Ul        [        UR
                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR
                  5       HF  n[        XW   5      nUR                  [        R
                  :X  a  S Ul
        UR                  U5        MH     U$ [        U5      e)Nr   'nvmlDeviceGetComputeRunningProcesses_v2r   r   r  rt  r(  ri  r7  r  r  rk  r  r  r  "NVML_VALUE_NOT_AVAILABLE_ulonglongr  r  	r  r  r+  rj  
proc_arrayc_procsr  r  r!  s	            r  re  re    s    QiG	 !J	KB
VU7^T
*C|	
-
-  )A-+gmm;
,w1w}}%A,WZ8C!!%G%M%MM$(!LL &  nr  c                    [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  / $ U[        :X  a  UR
                  S-  S-   Ul        [        UR
                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR
                  5       HF  n[        XW   5      nUR                  [        R
                  :X  a  S Ul
        UR                  U5        MH     U$ [        U5      e)Nr   'nvmlDeviceGetComputeRunningProcesses_v3r   r   r  rt  r(  ri  r7  r  c_nvmlProcessInfo_v3_trk  r  r  r  rg  r  r  rh  s	            r  rl  rl    s    QiG	 !J	KB
VU7^T
*C|	
-
-  )A-+gmm;
, w1w}}%A,WZ8C!!%G%M%MM$(!LL &  nr  c                     [        U 5      $ r,  )rl  rI  s    r  $nvmlDeviceGetComputeRunningProcessesrp    s    26::r  c                    [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  / $ U[        :X  a  UR
                  S-  S-   Ul        [        UR
                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR
                  5       HF  n[        XW   5      nUR                  [        R
                  :X  a  S Ul
        UR                  U5        MH     U$ [        U5      e)Nr   (nvmlDeviceGetGraphicsRunningProcesses_v2r   r   rf  rh  s	            r  rr  rr    s    QiG	 !K	LB
VU7^T
*C|	
-
-  )A-+gmm;
,w1w}}%A,WZ8C!!%G%M%MM$(!LL &  nr  c                    [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  / $ U[        :X  a  UR
                  S-  S-   Ul        [        UR
                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR
                  5       HF  n[        XW   5      nUR                  [        R
                  :X  a  S Ul
        UR                  U5        MH     U$ [        U5      e)Nr   (nvmlDeviceGetGraphicsRunningProcesses_v3r   r   rm  rh  s	            r  rt  rt    s    QiG	 !K	LB
VU7^T
*C|	
-
-  )A-+gmm;
, w1w}}%A,WZ8C!!%G%M%MM$(!LL &  nr  c                     [        U 5      $ r,  )rt  rI  s    r  %nvmlDeviceGetGraphicsRunningProcessesrv    s    3F;;r  c                     [        U 5      $ r,  )*nvmlDeviceGetMPSComputeRunningProcesses_v3rI  s    r  'nvmlDeviceGetMPSComputeRunningProcessesry     s    5f==r  c                    [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  / $ U[        :X  a  UR
                  S-  S-   Ul        [        UR
                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR
                  5       HF  n[        XW   5      nUR                  [        R
                  :X  a  S Ul
        UR                  U5        MH     U$ [        U5      e)Nr   *nvmlDeviceGetMPSComputeRunningProcesses_v2r   r   rf  rh  s	            r  r{  r{  $      QiG	 !M	NB
VU7^T
*C|	
-
-  )A-+gmm;
, w1w}}%A,WZ8C!!%G%M%MM$(!LL &  nr  c                    [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  / $ U[        :X  a  UR
                  S-  S-   Ul        [        UR
                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR
                  5       HF  n[        XW   5      nUR                  [        R
                  :X  a  S Ul
        UR                  U5        MH     U$ [        U5      e)Nr   rx  r   r   rm  rh  s	            r  rx  rx  F  r|  r  c                 d   [        5       nXl        X#l        [        S5      nU" U [	        U5      5      nU[
        :X  a  / $ U[        :X  a  [        UR                  -  n[        U" 5       [        [        5      5      Ul        U" U [	        U5      5      n[        U5        / n[        UR                  5       Hm  nUR                  U   n	U	R                  [        R                   :X  a  S U	l        U	R"                  [        R                   :X  a  S U	l        UR%                  U	5        Mo     U$ ['        U5      e)N%nvmlDeviceGetRunningProcessDetailList)c_nvmlProcessDetailList_tr  r$  rt  r(  ri  r7  r  r%  castr  r&  rk  r  r  rg  r  r   r  r  )
r  r  r$  c_processDetailListr+  rj  rj  r  r  r!  s
             r  r  r  h  s   35")#	 !H	IB VU./
0C|	
-
-*-@-T-TT(,g['BZ:[(\% 234*>>?A%//2C!!%G%M%MM$(!,,0R0X0XX/3,LL @  nr  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )N%nvmlDeviceGetAutoBoostedClocksEnabledr  )r  c_isEnabledc_defaultIsEnabledr+  rj  s        r  r  r    sW    $&K+-	 !H	IB
VU;'/A)B
CCS17788r  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlUnitSetLedState)rt  r  rk  )r  r  r+  rj  s       r  r  r    s)    	 !6	7B
T?5)
*CSr  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlDeviceSetPersistenceModert  r  rk  r  r$  r+  rj  s       r  r  r    s*    	 !?	@B
V'-
.CSr  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlDeviceSetComputeMode)rt  r!  rk  r  s       r  r  r    s*    	 !;	<B
V'-
.CSr  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlDeviceSetEccModer  r  s       r  r  r    s*    	 !7	8B
V'-
.CSr  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlDeviceClearEccErrorCounts)rt  r4  rk  )r  r6  r+  rj  s       r  r  r    s*    	 !@	AB
V*;7
8CSr  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlDeviceSetDriverModel)rt  rS  rk  )r  r  r+  rj  s       r  r  r    s*    	 !;	<B
V'.
/CSr  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )N%nvmlDeviceSetAutoBoostedClocksEnabledr  )r  enabledr+  rj  s       r  r  r    s*    	 !H	IB
V'0
1CSr  c                 h    [        S5      nU" U [        U5      [        U5      5      n[        U5        g )N,nvmlDeviceSetDefaultAutoBoostedClocksEnabled)rt  r  r  rk  )r  r  r^  r+  rj  s        r  r  r    s0    	 !O	PB
V'0&-
@CSr  c                 h    [        S5      nU" U [        U5      [        U5      5      n[        U5        g )NnvmlDeviceSetGpuLockedClocksrt  r  rk  )r  minGpuClockMHzmaxGpuClockMHzr+  rj  s        r  r  r    s0    	 !?	@B
VVN+VN-C
DCSr  c                 @    [        S5      nU" U 5      n[        U5        g )NnvmlDeviceResetGpuLockedClocksr  rf  s      r  r  r    s!    	 !A	BB
V*CSr  c                 h    [        S5      nU" U [        U5      [        U5      5      n[        U5        g )NnvmlDeviceSetMemoryLockedClocksr  )r  minMemClockMHzmaxMemClockMHzr+  rj  s        r  r  r    s0    	 !B	CB
VVN+VN-C
DCSr  c                 @    [        S5      nU" U 5      n[        U5        g )N!nvmlDeviceResetMemoryLockedClocksr  rf  s      r  r  r    !    	 !D	EB
V*CSr  c                     [        U5      [        LnU(       a  UO
[        U5      n[        S5      nU" X5      n[	        U5        U(       a  [
        $ U$ )NnvmlDeviceGetClkMonStatus)r^  r  r(  rt  rk  ri  )r  c_clkMonInforU  c_clkMonInfoRefr+  rj  s         r  r  r    sJ    |$,>>K&1lu\7JO	 !<	=B
V
%CS&<8L8r  c                 h    [        S5      nU" U [        U5      [        U5      5      n[        U5        g )NnvmlDeviceSetApplicationsClocksr  )r  r  maxGraphicsClockMHzr+  rj  s        r  r  r    s1    	 !B	CB
VVN+V4G-H
ICSr  c                 @    [        S5      nU" U 5      n[        U5        g )N!nvmlDeviceResetApplicationsClocksr  rf  s      r  r  r    r  r  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )N!nvmlDeviceSetPowerManagementLimitr  )r  limitr+  rj  s       r  r  r    s(    	 !D	EB
VVE]
#CSr  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlDeviceSetGpuOperationMode)rt  r  rk  r  s       r  r  r    s*    	 !@	AB
V,T2
3CSr  c                  h    [        S5      n [        5       nU " [        U5      5      n[        U5        U$ )NnvmlEventSetCreate)rt  c_nvmlEventSet_tr(  rk  )r+  eventSetrj  s      r  r  r    s0    	 !5	6B!H
U8_
CSOr  c                 V    [        S5      nU" U [        U5      U5      n[        U5        g )NnvmlDeviceRegisterEvents)rt  r  rk  )r  rx  r  r+  rj  s        r  r  r    s+    	 !;	<B
V[,h
7CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N nvmlDeviceGetSupportedEventTypesr  rt  r(  rk  r  )r  c_eventTypesr+  rj  s       r  r  r    s9    =L	 !C	DB
VU<(
)CSr  c                 ~    [        S5      n[        5       nU" U [        U5      [        U5      5      n[	        U5        U$ )NnvmlEventSetWait_v2)rt  rb  r(  r  rk  )r  r  r+  r!  rj  s        r  r  r    s9    	 !6	7BD
XuT{F9$5
6CSKr  c                     [        X5      $ r,  )r  )r  r  s     r  nvmlEventSetWaitr  $  s    x33r  c                 @    [        S5      nU" U 5      n[        U5        g )NnvmlEventSetFreer  )r  r+  rj  s      r  r  r  (  s!    	 !3	4B
X,CSr  c                     [        S5      n[        5       nU" X[        U5      5      n[        U5        UR                  S:g  $ )NnvmlDeviceOnSameBoardr   rk  )handle1handle2r+  onSameBoardrj  s        r  r  r  /  s>    	 !8	9B'K
Wu[1
2CS"#r  c                 ~    [        S5      n[        5       nU" U [        U5      5      n[        U5        UR                  $ )N#nvmlDeviceGetCurrPcieLinkGenerationrt  r  r(  rk  r  r  r+  genrj  s       r  r  r  7  s6    	 !F	GB
(C
VU3Z
 CS99r  c                 ~    [        S5      n[        5       nU" U [        U5      5      n[        U5        UR                  $ )N"nvmlDeviceGetMaxPcieLinkGenerationr  r  s       r  r  r  ?  s6    	 !E	FB
(C
VU3Z
 CS99r  c                 ~    [        S5      n[        5       nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetCurrPcieLinkWidthr  r  r+  widthrj  s       r  r  r  G  s6    	 !A	BBHE
VU5\
"CS;;r  c                 ~    [        S5      n[        5       nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetMaxPcieLinkWidthr  r  s       r  r  r  O  s6    	 !@	ABHE
VU5\
"CS;;r  c                 ~    [        S5      n[        5       nU" U [        U5      5      n[        U5        UR                  $ )N%nvmlDeviceGetGpuMaxPcieLinkGenerationr  r  s       r  r  r  V  s6    	 !H	IB
(C
VU3Z
 CS99r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N+nvmlDeviceGetSupportedClocksThrottleReasonsr  r  	c_reasonsr+  rj  s       r  r  r  _  s7    }I	 !N	OB
VU9%
&CS??r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N(nvmlDeviceGetSupportedClocksEventReasonsr  r  s       r  r  r  f  s7    }I	 !K	LB
VU9%
&CS??r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N)nvmlDeviceGetCurrentClocksThrottleReasonsr  r  s       r  r  r  o  s7    }I	 !L	MB
VU9%
&CS??r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N&nvmlDeviceGetCurrentClocksEventReasonsr  r  s       r  r  r  v  s7    }I	 !I	JB
VU9%
&CS??r  c                 ~    [        S5      n[        5       nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetIndexr  )r  r+  r  rj  s       r  r  r  ~  s6    	 !5	6BhG
VU7^
$CS==r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetAccountingModer  r  s       r  r  r    s7    !F	 !>	?B
VU6]
#CS<<r  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlDeviceSetAccountingModer  r  s       r  r  r    s*    	 !>	?B
V'-
.CSr  c                 @    [        S5      nU" U 5      n[        U5        g )NnvmlDeviceClearAccountingPidsr  rf  s      r  r  r    s!    	 !@	AB
V*CSr  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  [        R                  :X  a  S Ul        U$ )NnvmlDeviceGetAccountingStats)r  rt  r  r(  rk  r  rg  r  r  r  statsr+  rj  s        r  r  r    sU    #%E	 !?	@B
VVC[%,
/CS B H HH#Lr  c                     [        5       n[        U5      Ul        [        S5      nU" U [	        U5      5      n[        U5        U$ )NnvmlDeviceGetAccountingStats_v2)r  r  r  rt  r(  rk  r  s        r  r  r    s=    &(EsEI	 !B	CB
VU5\
"CSLr  c                     [        [        U 5      5      n[         UR                  -  " 5       n[        S5      nU" U [	        U5      U5      n[        U5        [        [        [        USUR                   5      5      $ )NnvmlDeviceGetAccountingPidsr   )	r  !nvmlDeviceGetAccountingBufferSizer  rt  r(  rk  listmapint)r  r  pidsr+  rj  s        r  r  r    se    4V<=EU[[ #D	 !>	?B
VU5\4
(CSCa,-..r  c                     [        5       n[        S5      nU" U [        U5      5      n[        U5        [	        UR
                  5      $ )Nr  )r  rt  r(  rk  r  r  )r  r  r+  rj  s       r  r  r    s>    J	 !D	EB
VU:&
'CSz  r  c                    [        U5      n[        S5      n[        S5      nU" X[        U5      S 5      nU[        :w  a  U[
        :w  a  [        U5      eUR                  S-  S-   Ul        [        UR                  -  nU" 5       nU" X[        U5      U5      n[        U5        [        [        [        USUR                   5      5      $ )Nr   nvmlDeviceGetRetiredPagesr   r   )_nvmlPageRetirementCause_tr  rt  r(  ri  r7  r  r  r  rk  r  r  r  )r  sourceFilterc_sourcer  r+  rj  
page_arrayc_pagess           r  r  r    s    ),7HQiG	 !<	=B VuW~t
4C 
		,	,n
 MMA%)GMw}},JlG
VuW~w
7CSC7==1233r  c                    [        U5      n[        S5      n[        S5      nU" X[        U5      S 5      nU[        :w  a  U[
        :w  a  [        U5      eUR                  S-  S-   Ul        [        UR                  -  nU" 5       n[        UR                  -  nU" 5       n	U" X[        U5      Xy5      n[        U5        [        UR                  5       V
s/ s H  n
[        Xz   5      [        X   5      S.PM      sn
$ s  sn
f )Nr   nvmlDeviceGetRetiredPages_v2r   r   )addressrY  )r  r  rt  r(  ri  r7  r  r  r  rk  r  r  )r  r  r  r  r+  rj  r  r   times_arrayc_timesr  s              r  r  r    s    ),7HQiG	 !?	@B VuW~t
4C 
		,	,n
 MMA%)GMw}},JlG-KmG
VuW~w
@CSSXY`YfYfSgiSga#gj/GJISgiiis   %C<c                     [        5       n[        S5      nU" U [        U5      5      n[        U5        [	        UR
                  5      $ )N&nvmlDeviceGetRetiredPagesPendingStatus)r  rt  r(  rk  r  r  )r  	c_pendingr+  rj  s       r  r  r    s=    "$I	 !I	JB
VU9%
&CSyr  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        [        UR                  5      $ )NnvmlDeviceGetAPIRestriction)r  rt  _nvmlRestrictedAPI_tr(  rk  r  r  )r  apiTypec_permissionr+  rj  s        r  r
  r
    sG    %'L	 !>	?B
V)'2E,4G
HCS|!!""r  c                 h    [        S5      nU" U [        U5      [        U5      5      n[        U5        g )NnvmlDeviceSetAPIRestriction)rt  r  r  rk  )r  r  isRestrictedr+  rj  s        r  r  r    s2    	 !>	?B
V)'24F|4T
UCSr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceGetBridgeChipInfo)r-  rt  r(  rk  )r  bridgeHierarchyr+  rj  s       r  r  r    s4    13O	 !>	?B
VU?+
,CSr  c           	         [        U5      n[        U5      n[        S5      n[        5       n[	        S5      nU" XU[        U5      [        U5      S 5      nU[        :w  a  [        U5      eUR                  [        -  n	U	" 5       n
U" XU[        U5      [        U5      U
5      n[        U5        UR                  U
SUR                   4$ )Nr   nvmlDeviceGetSamples)_nvmlSamplingType_tr  r  r_  rt  r(  ri  r  r  rN  rk  )r  sampling_typerO  c_sampling_typec_time_stampc_sample_countc_sample_value_typer+  rj  sampleArray	c_sampless              r  r  r    s    )-8Oy)LAYN*,	 !7	8B VlE:M4NPUVdPegk
lC 	|n &&7KI
VlU;N5OQVWeQfhq
rCS%%y>3G3G'HIIr  c                     [        U5      n[        5       n[        S5      nU" X[        U5      5      n[	        U5        U$ )NnvmlDeviceGetViolationStatus)_nvmlPerfPolicyType_trR  rt  r(  rk  )r  perfPolicyTypec_perfPolicy_type
c_violTimer+  rj  s         r  r  r    sA    -n=&(J	 !?	@B Vj(9
:CSr  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetPcieThroughput)r  rt  _nvmlPcieUtilCounter_tr(  rk  r  )r  counterr@  r+  rj  s        r  r%  r%  $  s>    XF	 !>	?B
V+G4eFm
DCS<<r  c                    [        S5      n[        S5      nU" U [        U5      S 5      nU[        :w  a  [	        U5      e[
        UR                  -  nU" 5       nU" U [        U5      U5      n[        U5        [        USUR                   5      $ )Nr   nvmlSystemGetTopologyGpuSet	r  rt  r(  ri  r  re  r  rk  r  )	cpuNumberr  r+  rj  r  r  s         r  r)  r)  +  s    QiG	 !>	?B Yg
-C
ln!GMM1LI
Yg	
2CS	!GMM*++r  c                    [        S5      n[        S5      nU" X[        U5      S 5      nU[        :w  a  [	        U5      e[
        UR                  -  nU" 5       nU" X[        U5      U5      n[        U5        [        USUR                   5      $ )Nr    nvmlDeviceGetTopologyNearestGpusr*  )r  levelr  r+  rj  r  r  s          r  r-  r-  ;  s    QiG	 !C	DB VE'ND
1C
ln "GMM1LI
VE'NI
6CS	!GMM*++r  c                 ~    [        5       n[        S5      nU" X[        U5      5      n[        U5        UR                  $ )N#nvmlDeviceGetTopologyCommonAncestor)_nvmlGpuTopologyLevel_trt  r(  rk  r  )device1device2c_levelr+  rj  s        r  r0  r0  L  s7    %'G	 !F	GB
WuW~
.CS==r  c           	          [        5       n[        5       n[        S5      nU" XU[        U5      [        U5      5      n[        U5        UR                  UR                  4$ )N%nvmlDeviceGetNvLinkUtilizationCounterr  )r  linkr'  c_rxcounterc_txcounterr+  rj  s          r  r6  r6  T  sT    -K-K	 !H	IB
V7E+$6k8J
KCS{0011r  c                 B    [        S5      nU" XX#5      n[        U5        g )N(nvmlDeviceFreezeNvLinkUtilizationCounterr  )r  r7  r'  freezer+  rj  s         r  r;  r;  ]  s$    	 !K	LB
V7
+CSr  c                 B    [        S5      nU" XU5      n[        U5        g )N'nvmlDeviceResetNvLinkUtilizationCounterr  )r  r7  r'  r+  rj  s        r  r>  r>  d  s$    	 !J	KB
V7
#CSr  c                 X    [        S5      nU" XU[        U5      U5      n[        U5        g )N%nvmlDeviceSetNvLinkUtilizationControlr'  )r  r7  r'  controlresetr+  rj  s          r  r@  r@  k  s,    	 !H	IB
V7E'NE
:CSr  c                 l    [        5       n[        S5      nU" XU[        U5      5      n[        U5        U$ )N%nvmlDeviceGetNvLinkUtilizationControl)r  rt  r(  rk  )r  r7  r'  	c_controlr+  rj  s         r  rD  rD  r  s6    .0I	 !H	IB
V7E)$4
5CSr  c                     [        5       n[        S5      nU" XU[        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetNvLinkCapabilityr  )r  r7  
capabilityc_capResultr+  rj  s         r  rG  rG  y  s;    (K	 !@	AB
V:u['9
:CSr  c                     [        5       n[        S5      nU" XU[        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetNvLinkErrorCounterr  )r  r7  r'  c_resultr+  rj  s         r  rK  rK    s8    }H	 !B	CB
V7E(O
4CS>>r  c                 @    [        S5      nU" X5      n[        U5        g )N"nvmlDeviceResetNvLinkErrorCountersr  )r  r7  r+  rj  s       r  rN  rN    s"    	 !E	FB
V
CSr  c                 j    [        5       n[        S5      nU" X[        U5      5      n[        U5        U$ )N#nvmlDeviceGetNvLinkRemotePciInfo_v2r  )r  r7  c_pcir+  rj  s        r   nvmlDeviceGetNvLinkRemotePciInforR    s1    OE	 !F	GB
V5<
(CSLr  c                 ~    [        5       n[        S5      nU" X[        U5      5      n[        U5        UR                  $ )N#nvmlDeviceGetNvLinkRemoteDeviceType)_nvmlNvLinkDeviceType_trt  r(  rk  r  )r  r7  rD  r+  rj  s        r  rT  rT    s7    $&F	 !F	GB
V5=
)CS<<r  c                 ~    [        5       n[        S5      nU" X[        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetNvLinkStater  )r  r7  
c_isActiver+  rj  s        r  rW  rW    s9    J	 !;	<B
V5,
-CSr  c                 ~    [        5       n[        S5      nU" X[        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetNvLinkVersionr  )r  r7  r  r+  rj  s        r  rZ  rZ    s7    I	 !=	>B
V5+
,CS??r  c                 T    [        S5      nU" [        U 5      U5      n[        U5        g )NnvmlDeviceModifyDrainStatert  pointerrk  )pciInfonewStater+  rj  s       r  r\  r\    s)    	 !=	>B
WWx
(CSr  c                     [        5       n[        S5      nU" [        U 5      [        U5      5      n[	        U5        UR
                  $ )NnvmlDeviceQueryDrainState)r  rt  r^  r(  rk  r  )r_  
c_newStater+  rj  s       r  rb  rb    s>    J	 !<	=B
WWuZ0
1CSr  c                 R    [        S5      nU" [        U 5      5      n[        U5        g )NnvmlDeviceRemoveGpur]  r_  r+  rj  s      r  re  re    s'    	 !6	7B
WW
CSr  c                 R    [        S5      nU" [        U 5      5      n[        U5        g )NnvmlDeviceDiscoverGpusr]  rf  s      r  rh  rh    s'    	 !9	:B
WW
CSr  c                 2   [         [        U5      -  nU" 5       n[        S5      n[        U5       H  u  pV Uu  X5   l        X5   l        M     U" U [        [        U5      5      [        U5      5      n[        U5        U$ ! [         a    XcU   l         Me  f = f)NnvmlDeviceGetFieldValues
rV  lenrt  	enumeraterW  rX  	TypeErrorc_int32r(  rk  r  fieldIds
values_arrvaluesr+  r  rW  rj  s           r  rj  rj    s    #c(m3J\F	 !;	<B)
	(5<2VY	 1 * VWS]+U6]
;CSM  	( '1I	(   A??BBc                 2   [         [        U5      -  nU" 5       n[        S5      n[        U5       H  u  pV Uu  X5   l        X5   l        M     U" U [        [        U5      5      [        U5      5      n[        U5        U$ ! [         a    XcU   l         Me  f = f)NnvmlDeviceClearFieldValuesrk  rp  s           r  rv  rv    s    #c(m3J\F	 !=	>B)
	(5<2VY	 1 * VWS]+U6]
;CSM  	( '1I	(rt  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetVirtualizationModer  )r  c_virtualization_moder+  rj  s       r  rx  rx    s;    'M	 !B	CB
VU01
2CS &&&r  c                 (    [        S5      nU" X5      $ )NnvmlDeviceSetVirtualizationModert  )r  virtualization_moder+  s      r  r{  r{    s    	 !B	CBf**r  c                     [        S5      n[        Ul        [        S5      nU" U [	        U5      5      n[        U5        UR                  $ )Nr   "nvmlDeviceGetVgpuHeterogeneousModer~  VgpuHeterogeneousMode_v1r  rt  r(  rk  r$  )r  c_vgpuHeterogeneousModer+  rj  s       r  r  r    sG    >qA&>#	 !E	FB
VU23
4CS"'''r  c                     [        S5      n[        Ul        Xl        [	        S5      nU" U [        U5      5      n[        U5        [        $ )Nr   "nvmlDeviceSetVgpuHeterogeneousModer~  r  r  r$  rt  r(  rk  ri  )r  heterogeneous_moder  r+  rj  s        r  r  r    sG    >qA&>##5 	 !E	FB
VU23
4CSr  c                     [        S5      n[        Ul        [        S5      nU" U [	        U5      5      n[        U5        UR                  $ )Nr   nvmlVgpuInstanceGetPlacementId)r  VgpuPlacementId_v1r  rt  r(  rk  r  )r  c_placementr+  rj  s       r  r  r    sD    ,Q/K,K	 !A	BB
\5-
.CS"""r  c                    [        S5      n[        S5      nU" X[        U5      5      n[        U5        US:X  a-  [	        5       n[
        Ul        UR                  Ul        X'l	        O+US:X  a  [        5       n[        Ul        O[        [        5      e[         UR                  -  nU" 5       Ul        [        S5      nU" X[        U5      5      n[        U5        U$ )Nr   nvmlVgpuTypeGetMaxInstancesr   r   (nvmlDeviceGetVgpuTypeSupportedPlacements)r  rt  r(  rk  r  VgpuPlacementList_v2r  r  r  r$  r  VgpuPlacementList_v1r  r  r  )	r  r  r$  r  c_max_instancesr+  rj  c_vgpu_placementsc_placementss	            r  r  r    s    QiO
!"?
@B
V!7
8CS!|8:$8!"1"7"7!%	A8:$8!<==O111L%1^"
!"L
MB
V'8!9
:CSr  c                    [        S5      n[        S5      nU" X[        U5      5      n[        U5        US:X  a'  [	        5       n[
        Ul        UR                  Ul        OUS:X  a  [        5       n[        Ul        [         UR                  -  nU" 5       Wl        [        S5      nU" X[        U5      5      n[        U5        U$ )Nr   r  r   r   (nvmlDeviceGetVgpuTypeCreatablePlacements)r  rt  r(  rk  r  r  r  r  r  r  r  r  )r  r  r  r  r+  rj  r  r  s           r  r  r    s    QiO
!"?
@B
V!7
8CS!|8:$8!"1"7"7	A8:$8!O111L%1^"
!"L
MB
V'8!9
:CSr  c                     [        5       n[        S5      nU" [        U 5      [        U5      5      n[	        U5        UR
                  $ )NnvmlGetVgpuDriverCapabilities)r  rt  _nvmlVgpuDriverCapability_tr(  rk  r  )rH  rI  r+  rj  s       r  r  r  1  s?    (K	 !@	AB
(4eK6H
ICSr  c                     [        5       n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  $ )NnvmlDeviceGetVgpuCapabilities)r  rt  _nvmlDeviceVgpuCapability_tr(  rk  r  )r  rH  rI  r+  rj  s        r  r  r  8  sA    (K	 !@	AB
V0<eK>P
QCSr  c                 `    [        S5      nU" U [        U5      U5      n[        U5        [        $ )NnvmlDeviceSetVgpuCapabilities)rt  r  rk  ri  )r  rH  r  r+  rj  s        r  r  r  ?  s/    	 !@	AB
V0<e
DCSr  c                 J    [        S5      nU" U 5      n[        U5        [        $ )NnvmlDeviceVgpuForceGspUnloadr  rf  s      r  r  r  E  s$    	 !?	@B
V*CSr  c                 l   [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  / $ U[        :X  ak  [
        UR                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR                  5       H  nUR                  XW   5        M     U$ [        U5      e)Nr   nvmlDeviceGetSupportedVgpusr  rt  r(  ri  r7  _nvmlVgpuTypeId_tr  rk  r  r  r  r  c_vgpu_countr+  rj  vgpu_type_ids_arrayc_vgpu_type_idsvgpusr  s           r  r  r  K      !9L
!"?
@B
VU<($
/C|	
-
-/,2D2DD-/ |,o>|))*ALL+, + nr  c                 l   [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  / $ U[        :X  ak  [
        UR                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR                  5       H  nUR                  XW   5        M     U$ [        U5      e)Nr   nvmlDeviceGetCreatableVgpusr  r  s           r  r  r  e  r  r  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   #nvmlVgpuTypeGetGpuInstanceProfileIdr  )r  c_profile_idr+  rj  s       r  r  r    s;    !9L
!"G
HB
Z|,
-CSr  c                     [        [        5      n[        [        5      n[        S5      nU" X[	        U5      5      n[        U5        UR                  $ )NnvmlVgpuTypeGetClassr  NVML_DEVICE_NAME_BUFFER_SIZEr  rt  r(  rk  r  )r  c_classc_buffer_sizer+  rj  s        r  r  r    sF    "#?@G78M
!"8
9B
Z%"6
7CS==r  c                     [        [        5      n[        [        5      n[        S5      nU" X[	        U5      5      n[        U5        UR                  $ )NnvmlVgpuTypeGetNamer  )r  r  r  r+  rj  s        r  r  r    sF    !">?F78M
!"7
8B
Z}!5
6CS<<r  c                     [        S5      n[        S5      n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  4$ )Nr   nvmlVgpuTypeGetDeviceIDr  )r  c_device_idc_subsystem_idr+  rj  s        r  r  r    sV     ^K ^N
!";
<B
Z{+U>-B
CCS~3344r  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   nvmlVgpuTypeGetFramebufferSizer  )r  	c_fb_sizer+  rj  s       r  r  r    s9    AI
!"B
CB
Zy)
*CS??r  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   nvmlVgpuTypeGetNumDisplayHeadsr  )r  c_num_headsr+  rj  s       r  r  r    s;    )K
!"B
CB
Z{+
,CSr  c                     [        S5      n[        S5      n[        S5      nU" U S[        U5      [        U5      5      n[        U5        UR                  UR                  4$ )Nr   nvmlVgpuTypeGetResolutionr  )r  c_xdimc_ydimr+  rj  s        r  r  r    sR    AYFAYF
!"=
>B
ZE&M5=
9CSLL&,,''r  c                     [        [        5      n[        [        5      n[        S5      nU" XU5      n[	        U5        UR
                  $ )NnvmlVgpuTypeGetLicense)r  r  r  rt  rk  r  )r  	c_licenser  r+  rj  s        r  r  r    sA    $%BCI89M
!":
;B
ZM
2CS??r  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   nvmlVgpuTypeGetFrameRateLimitr  )r  c_frl_configr+  rj  s       r  r  r    s;    !9L
!"A
BB
Z|,
-CSr  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   nvmlVgpuTypeGetGspHeapSizer  )r  
c_gsp_heapr+  rj  s       r  r  r    s;    J
!">
?B
Zz*
+CSr  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   nvmlVgpuTypeGetFbReservationr  )r  c_fb_reservationr+  rj  s       r  r  r    s=    ay
!"@
AB
Z/0
1CS!!!r  c                     [        5       n[        Ul        [        S5      nU" U [	        U5      5      n[        U5        U$ )N#nvmlVgpuInstanceGetRuntimeStateSize)r  VgpuRuntimeState_v1r  rt  r(  rk  )r  c_runtime_stater+  rj  s       r  r  r    s<    /1O1O
!"G
HB
\51
2CSr  c                     [        S5      n[        S5      nU" X[        U5      5      n[        U5        UR                  $ )Nr   r  r  )r  r  r  r+  rj  s        r  r  r    s;    QiO
!"?
@B
V!7
8CS   r  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr    nvmlVgpuTypeGetMaxInstancesPerVmr  )r  c_max_instances_per_vmr+  rj  s       r  r  r    s=    #AY
!"D
EB
Z56
7CS!'''r  c                     [        S5      n[        Ul        [        S5      nU" U [	        U5      5      n[        U5        U$ )Nr   nvmlVgpuTypeGetBAR1Info)r  VgpuTypeBar1Info_v1r  rt  r(  rk  )r  
c_bar1Infor+  rj  s       r  r  r    s>    ,Q/J,J
!";
<B
Zz*
+CSr  c                 l   [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a  / $ U[        :X  ak  [
        UR                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR                  5       H  nUR                  XW   5        M     U$ [        U5      e)Nr   nvmlDeviceGetActiveVgpus)r  rt  r(  ri  r7  r  r  rk  r  r  r  )r  r  r+  rj  vgpu_instance_arrayc_vgpu_instancesr  r  s           r  r  r    s    !9L
!"<
=B
VU<($
/C|	
-
-1L4F4FF.0 |,.>?|))*ALL),- + nr  c                     [        [        5      n[        [        5      n[        S5      n[	        S5      nU" U [        U5      U[        U5      5      n[        U5        UR                  UR                  4$ )Nr   nvmlVgpuInstanceGetVmID)r  r  r  r  rt  r(  rk  r  )r  c_vm_idr  c_vm_id_typer+  rj  s         r  r  r    sb    "#?@G89M1IL
!";
<B
\5>=%:M
NCSMM<--..r  c                     [        [        5      n[        [        5      n[        S5      nU" U [	        U5      U5      n[        U5        UR                  $ )NnvmlVgpuInstanceGetUUIDr  r  r  rt  r(  rk  r  r  r  r  r+  rj  s        r  r  r    sG    !">?F78M
!";
<B
\5=-
8CS<<r  c                     [        [        5      n[        [        5      n[        S5      nU" U [	        U5      U5      n[        U5        UR                  $ )NnvmlVgpuInstanceGetMdevUUIDr  r  s        r  r  r    sG    !">?F78M
!"?
@B
\5=-
8CS<<r  c                     [        [        5      n[        [        5      n[        S5      nU" U [	        U5      U5      n[        U5        UR                  $ )N"nvmlVgpuInstanceGetVmDriverVersion)r  r  r  rt  r(  rk  r  )r  c_driver_versionr  r+  rj  s        r  r  r  (  sL    +,RSABM
!"F
GB
\5!12M
BCS!!!r  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr    nvmlVgpuInstanceGetLicenseStatusr  )r  c_license_statusr+  rj  s       r  r  r  2  s=    ay
!"D
EB
\5!12
3CS!!!r  c                 j    [        S5      n[        5       nU" U [        U5      5      n[        U5        U$ )N!nvmlVgpuInstanceGetLicenseInfo_v2)rt  r  r(  rk  )r  r+  c_license_inforj  s       r  r  r  9  s4    
!"E
FB,.N
\50
1CSr  c                     [        U 5      $ r,  )r  )r  s    r  nvmlVgpuInstanceGetLicenseInfor  @  s    ,\::r  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   !nvmlVgpuInstanceGetFrameRateLimitr  )r  c_frlr+  rj  s       r  r  r  C  s8    1IE
!"E
FB
\5<
(CS;;r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlVgpuInstanceGetEccModer  r  ro  r+  rj  s       r  r  r  J  s7    !F	 !=	>B
\5=
)CS<<r  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   nvmlVgpuInstanceGetTyper  )r  c_vgpu_typer+  rj  s       r  r  r  Q  s;    )K
!";
<B
\5-
.CSr  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   "nvmlVgpuInstanceGetEncoderCapacityr  )r  c_encoder_capacityr+  rj  s       r  r  r  X  s=    $Q
!"F
GB
\5!34
5CS###r  c                 (    [        S5      nU" X5      $ )N"nvmlVgpuInstanceSetEncoderCapacityr|  )r  encoder_capacityr+  s      r  r  r  _  s    
!"F
GBl--r  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr   nvmlVgpuInstanceGetFbUsager  )r  
c_fb_usager+  rj  s       r  r  r  c  s;    J
!">
?B
\5,
-CSr  c                     [        S5      n[        S5      nU" U [        U5      [        U5      5      n[	        U5        UR
                  $ )Nr   nvmlVgpuTypeGetCapabilities)r  rt  _nvmlVgpuCapability_tr(  rk  r  )r  rH  c_cap_resultr+  rj  s        r  r  r  j  sC    !9L
!"?
@B
Z.z:E,<O
PCSr  c                     [        S5      n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )Nr    nvmlVgpuInstanceGetGpuInstanceIdr  )r  r=  r+  rj  s       r  r  r  q  s8    !9D
!"D
EB
\5;
'CSJJr  c           	          [        [        5      n[        S5      nU" X[        [	        [        5      5      5      n[        U5        UR                  $ )NnvmlVgpuInstanceGetGpuPciId)r  r  rt  r(  r  rk  r  )r  c_vgpuPciIdr+  rj  s       r  r  r  x  sC    &'IJK	 !>	?B
\f5W.X(Y
ZCSr  c                 v   [        S5      n[        U5      n[        5       n[        S5      nU" X[	        U5      [	        U5      S 5      nU[
        :X  a  / $ U[        :X  aQ  UR                  [        -  nU" 5       nU" X[	        U5      [	        U5      U5      n[        U5        USUR                   $ [        U5      e)Nr   nvmlDeviceGetVgpuUtilization)r  r  r_  rt  r(  ri  r7  r  r  rk  r  )	r  rO  r  r  r  r+  rj  r  r  s	            r  r  r    s    !9Ly)L*,
!"@
AB
V5)<#=u\?RTX
YC|	
-
-"((+PPM	 u-@'A5CVXab<--.. nr  c                    [        U5      n[        S5      n[        Ul        [	        5       Ul        [        S5      Ul        X#l        [        S5      nU" U [        U5      5      nU[        :X  a  / $ U[        :X  aL  UR                  [        -  nU" 5       nXsl        U" U [        U5      5      n[        U5        USUR                   $ [!        U5      e)Nr   )nvmlDeviceGetVgpuInstancesUtilizationInfo)r  r  VgpuInstancesUtilizationInfo_v1r  r_  r  r  r  r  rt  r(  ri  r7  r  r  rk  r  )r  rO  r  c_vgpuUtilInfor+  rj  r  r  s           r  r  r    s    y)L<Q?N<N#3#5N '-ayN$'3$
!"M
NB
VU>*
+C|	
-
-$669__M	'0$ ~./>;;<< nr  c                     [        5       n[        S5      nU" XU[        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetP2PStatus)_nvmlGpuP2PStatus_trt  r(  rk  r  )r2  r3  p2pIndexc_p2pstatusr+  rj  s         r  r  r    s<    %'K	 !9	:B
Whk(:
;CSr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )N&nvmlDeviceGetGridLicensableFeatures_v4)r  rt  r(  rk  )r  c_get_grid_licensable_featuresr+  rj  s       r  r  r    s6    %F%H"	 !I	JB
VU9:
;CS*+r  c                     [        U 5      $ r,  )r  rI  s    r  #nvmlDeviceGetGridLicensableFeaturesr    s    1&99r  c                     US LnU(       d  [         [        -  " 5       n[        S5      nU" X5      n[        U5        U(       a  [        $ UR
                  $ )NnvmlDeviceGetGspFirmwareVersion)r  "NVML_GSP_FIRMWARE_VERSION_BUF_SIZErt  rk  ri  r  )r  r  isUserDefinedr+  rj  s        r  r!  r!    sK    4'M>>A	 !B	CB
V
CS(<;gmm;r  c                     [        U5      [        LnU(       a  UO
[        U5      nU(       a  UO
[        U5      n[        S5      nU" XU5      n[	        U5        U(       a  [
        $ UR                  UR                  /$ )NnvmlDeviceGetGspFirmwareModer  )r  	isEnableddefaultModerU  isEnabledRefdefaultModeRefr+  rj  s           r  r%  r%    sg    y//K +9y1AL$/[U;5GN	 !?	@B
V>
2CS&<PY__k>O>O,PPr  c                     [        S5      n[        U5      n[        S5      nU" X[        U5      5      n[	        U5        UR
                  $ )Nr   nvmlDeviceGetEncoderCapacity)r  _nvmlEncoderQueryType_trt  r(  rk  r  )r  encoderQueryTyper   c_encoderQuery_typer+  rj  s         r  r+  r+    sI    $Q12BC	 !?	@B
V%0B*C
DCS###r  c                 :   [        S5      n[        U5      n[        S5      nU" X[        U5      S 5      nU[        :X  a  / $ U[
        :X  aG  UR                  [        -  nU" 5       nU" X[        U5      U5      n[        U5        USUR                   $ [        U5      e)Nr   #nvmlDeviceGetVgpuProcessUtilization)
r  r  rt  r(  ri  r7  r  r  rk  r  )r  rO  r  r  r+  rj  r  r  s           r  r0  r0    s    !9Ly)L
!"G
HB
V5#6
=C|	
-
-"((+OOM	 u\':IF<--.. nr  c                    [        U5      n[        S5      n[        Ul        [	        S5      Ul        X#l        [        S5      nU" U [        U5      5      nU[        :X  a  / $ U[        :X  aL  UR
                  [        -  nU" 5       nXsl        U" U [        U5      5      n[        U5        USUR
                   $ [        U5      e)Nr   )nvmlDeviceGetVgpuProcessesUtilizationInfo)r  r  VgpuProcessesUtilizationInfo_v1r  r  r  r  rt  r(  ri  r7  r  r  rk  r  )r  rO  r  c_vgpuProcUtilInfor+  rj  r  r  s           r  r2  r2    s    y)L@C!@*0)'+7(
!"M
NB
VU-.
/C|	
-
-(99<aaM	/8, 123->>?? nr  c                    [        S5      n[        S5      n[        S5      n[        S5      nU" U [        U5      [        U5      [        U5      5      n[        U5        UR                  UR                  UR                  4$ )Nr   nvmlDeviceGetEncoderStatsr  )r  c_encoderCountc_encodeFpsc_encoderLatencyr+  rj  s         r  r6  r6    sq     ^Na.K"1~	 !<	=B
VU>*E+,>FV@W
XCS  +"3"35E5K5KLLr  c                 x   [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a}  UR                  S:w  ak  [
        UR                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR                  5       H  nUR                  XW   5        M     U$ / $ [        U5      e)Nr   nvmlDeviceGetEncoderSessions
r  rt  r(  ri  r  r  rk  r  r  r  r  c_session_countr+  rj  session_array
c_sessionssessionsr  s           r  r;  r;  $  s    QiO
!"@
AB
VU?+T
2C|!!Q&2_5J5JJM&J VU?3Z@CS!H?001
. 2OI nr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceGetFBCStatsr  rt  r(  rk  )r  
c_fbcStatsr+  rj  s       r  rC  rC  >  s4    !#J	 !8	9B
VU:&
'CSr  c                 x   [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a}  UR                  S:w  ak  [
        UR                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR                  5       H  nUR                  XW   5        M     U$ / $ [        U5      e)Nr   nvmlDeviceGetFBCSessions
r  rt  r(  ri  r  r"  rk  r  r  r  r=  s           r  rG  rG  E  s    QiO
!"<
=B
VU?+T
2C|!!Q&.1F1FFM&J VU?3Z@CS!H?001
. 2OI nr  c                    [        S5      n[        S5      n[        S5      n[        S5      nU" U [        U5      [        U5      [        U5      5      n[        U5        UR                  UR                  UR                  4$ )Nr   nvmlVgpuInstanceGetEncoderStatsr  )r  r7  r8  r9  r+  rj  s         r  rJ  rJ  _  sq    #AN#AK#A
!"C
DB
\50%2DeL\F]
^CS  +"3"35E5K5KLLr  c                 x   [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a}  UR                  S:w  ak  [
        UR                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR                  5       H  nUR                  XW   5        M     U$ / $ [        U5      e)Nr   "nvmlVgpuInstanceGetEncoderSessionsr<  r  r>  r+  rj  r?  r@  rA  r  s           r  rL  rL  h  s    QiO
!"F
GB
\514
8C|!!Q&2_5J5JJM&J \5#9:FCS!H?001
. 2OI nr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlVgpuInstanceGetFBCStatsrD  )r  rE  r+  rj  s       r  rO  rO    s4    !#J	 !>	?B
\5,
-CSr  c                 x   [        S5      n[        S5      nU" U [        U5      S 5      nU[        :X  a}  UR                  S:w  ak  [
        UR                  -  nU" 5       nU" U [        U5      U5      n[        U5        / n[        UR                  5       H  nUR                  XW   5        M     U$ / $ [        U5      e)Nr   nvmlVgpuInstanceGetFBCSessionsrH  rM  s           r  rQ  rQ    s    QiO
!"B
CB
\514
8C|!!Q&.1F1FFM&J \5#9:FCS!H?001
. 2OI nr  c                 $   [        S5      n[        U5      n[        S5      nU" U S [        U5      U5      nU[        :X  aG  UR
                  [        -  nU" 5       nU" X[        U5      U5      n[        U5        USUR
                   $ [        U5      e)Nr   nvmlDeviceGetProcessUtilization)	r  r  rt  r(  r7  r  r  rk  r  )r  rO  r  r  r+  rj  r  r  s           r  rS  rS    s    QiGy)L
!"C
DB
VT5><
8C++mm&FFM	 E'NLA7==)) nr  c                 l   [        U5      n[        S5      n[        Ul        [	        S5      Ul        X#l        [        S5      nU" U [        U5      5      nU[        :X  aL  UR
                  [        -  nU" 5       nXsl        U" U [        U5      5      n[        U5        USUR
                   $ [        U5      e)Nr   %nvmlDeviceGetProcessesUtilizationInfo)r  r  ProcessesUtilizationInfo_v1r  r  r  r  rt  r(  r7  r  r  rk  r  )r  rO  r  c_processesUtilInfor+  rj  r  r  s           r  rU  rU    s    y)L=a@"=.4Qi+,8)
!"I
JB
VU./
0C++)==@aaM	,5) 234.BBCC nr  c                     [        S5      n[        5       n[        S5      nU" U [        U5      [        U5      5      nU[        :X  a)  U" U [        U5      [        U5      5      n[        U5        U$ [        U5      e)NnvmlVgpuInstanceGetMetadatar   )rt  r  r  r(  r7  rk  r  )r  r+  c_vgpuMetadatac_bufferSizerj  s        r  rY  rY    su    	 !>	?B)+N!9L \50%2E
FC++u^4eL6IJ  nr  c                     [        S5      n[        5       n[        S5      nU" U [        U5      [        U5      5      nU[        :X  a)  U" U [        U5      [        U5      5      n[        U5        U$ [        U5      e)NnvmlDeviceGetVgpuMetadatar   )rt  r  r  r(  r7  rk  r  )r  r+  c_vgpuPgpuMetadatar[  rj  s        r  r]  r]    sx    	 !<	=B13!9L VU-.l0C
DC++12E,4GH  nr  c                     [        S5      n[        5       nU" [        U 5      [        U5      [        U5      5      n[        U5        U$ )NnvmlGetVgpuCompatibility)rt  r  r(  rk  )vgpuMetadatapgpuMetadatar+  c_vgpuPgpuCompatibilityrj  s        r  r`  r`    sB    	 !;	<B;=
U< %"5u=T7U
VCS""r  c                 .   [        S5      n[        [        5      n[        S5      nU" U [	        U5      [	        U5      5      nU[
        :X  a(  U" U [	        U5      [	        U5      5      n[        U5        O[        U5      eUR                  UR                  4$ )NnvmlDeviceGetPgpuMetadataStringr   )	rt  r  r  r  r(  r7  rk  r  r  )r  r+  c_pgpuMetadatar[  rj  s        r  re  re    s    	 !B	CB)*RSN!9L VU>*E,,?
@C++~.l0CDn  ,"4"455r  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceGetVgpuSchedulerLog)r  rt  r(  rk  )r  c_vgpu_sched_logr+  rj  s       r  rh  rh    s6    /1	 !@	AB
VU+,
-CSr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceGetVgpuSchedulerState)r  rt  r(  rk  )r  c_vgpu_sched_stater+  rj  s       r  rk  rk    s6    68	 !B	CB
VU-.
/CSr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )N&nvmlDeviceGetVgpuSchedulerCapabilities)r  rt  r(  rk  )r  c_vgpu_sched_capsr+  rj  s       r  rn  rn    s6    9;	 !I	JB
VU,-
.CSr  c                 ^    [        S5      nU" U [        U5      5      n[        U5        [        $ )NnvmlDeviceSetVgpuSchedulerStatert  r(  rk  ri  )r  sched_stater+  rj  s       r  rq  rq    s,    	 !B	CB
VU;'
(CSr  c                 \    [        S5      nU" [        U 5      5      n[        U5        [        $ )NnvmlSetVgpuVersionrr  )vgpuVersionr+  rj  s      r  ru  ru  #  s*    	 !5	6B
U;
 CSr  c                 2   U S L=(       d    US LnU(       d  [        5       n [        5       n[        S5      nU" [        U 5      [        U5      5      n[        U5        U(       a  [        $ U R
                  U R                  4UR
                  UR                  4/$ )NnvmlGetVgpuVersion)r  rt  r(  rk  ri  r  r  )	supportedr  r#  r+  rj  s        r  rx  rx  )  s    d*Dt0CM')	%'	 !5	6B
U9uW~
.CS(< E	0D0D090D0D0F070B0B070B0B0D/E Er  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N!nvmlVgpuInstanceGetAccountingModer  r  s       r  r{  r{  6  s7    !F	 !D	EB
\5=
)CS<<r  c                    [        5       n[        S5      nU" U [        U5      S 5      nU[        :X  aD  UR                  [         -  nU" 5       nU" U [        U5      [        U5      5      n[        U5        X4$ [        U5      e)N!nvmlVgpuInstanceGetAccountingPids)r  rt  r(  r7  r  rk  r  )r  
c_pidCountr+  rj  r  
c_pidArrays         r  r}  r}  =  s~    J	 !D	EB
\5,d
3C++ &&/ ]
uZ0%
2CD ## nr  c                 j    [        5       n[        S5      nU" X[        U5      5      n[        U5        U$ )N"nvmlVgpuInstanceGetAccountingStats)r  rt  r(  rk  )r  r  c_accountingStatsr+  rj  s        r  r  r  J  s6    /1	 !E	FB
\&7 8
9CSr  c                 J    [        S5      nU" U 5      n[        U5        [        $ )N#nvmlVgpuInstanceClearAccountingPidsr  )r  r+  rj  s      r  r  r  Q  s%    	 !F	GB
\
CSr  c                    SUl         [        S5      nU" U [        U5      5      nU[        :X  a  U$ U[        :X  a>  [
        UR                   -  nU" 5       Ul        U" U [        U5      5      n[        U5        U$ [        U5      e)Nr    nvmlGpuInstanceGetCreatableVgpus)	r  rt  r(  ri  r7  r  r  rk  r  )rT  c_vgpusr+  rj  r  s        r  r  r  W  s~    G
!"D
EB
[%.
)C|
-
-/'2C2CC13eGn-nr  c                     [        5       n[        Ul        Xl        [	        S5      nU" [        U5      5      n[        U5        UR                  $ )N)nvmlVgpuTypeGetMaxInstancesPerGpuInstance)r  nvmlVgpuTypeMaxInstance_v1r  r  rt  r(  rk  r  )r  r  r+  rj  s       r  r  r  i  sF    46O8O!+
!"M
NB
U?#
$CS+++r  c                    [        S5      Ul        [        S5      nU" U [        U5      5      nU[        :X  a  U$ U[
        :X  a>  [        UR                  -  nU" 5       Ul        U" U [        U5      5      n[        U5        U$ [        U5      e)Nr   nvmlGpuInstanceGetActiveVgpus)
r  r  rt  r(  ri  r7  r  r	  rk  r  )rT  c_vgpu_instance_infor+  rj  r  s        r  r  r  r  s    %+AY"
!"A
BB
[% 45
6C|##
-
-14H4R4RR-@-B* e$89:##nr  c                 V    [        S5      nU" U [        U5      5      n[        U5        U$ )N$nvmlGpuInstanceSetVgpuSchedulerStater'  )rT  rs  r+  rj  s       r  r  r    s+    	 !G	HB
[%,
-CSJr  c                 V    [        S5      nU" U [        U5      5      n[        U5        U$ )N$nvmlGpuInstanceGetVgpuSchedulerStater'  )rT  c_vgpu_sched_state_infor+  rj  s       r  r  r    s-    	 !G	HB
[% 78
9CS""r  c                 V    [        S5      nU" U [        U5      5      n[        U5        U$ )N"nvmlGpuInstanceGetVgpuSchedulerLogr'  )rT  c_vgpu_sched_log_infor+  rj  s       r  r  r    s-    	 !E	FB
[% 56
7CS  r  c                 P   [        5       n[        Ul        UR                  Ul        [	        S5      nU" [        U5      5      n[        U5        UR                  Ul        [        UR                  -  nU" 5       Ul
        [	        S5      nU" U [        U5      5      n[        U5        U$ )Nr  -nvmlGpuInstanceGetVgpuTypeCreatablePlacements)r  r  r  r  rt  r(  rk  r  r  r  r  )rT  r  r  r+  rj  r  s         r  r  r    s    46O8O!2!=!=O
!"M
NB
U?#
$CS->>O<<<L%1^"
!"Q
RB
[% 12
3CSr  c                     [        S5      n[        Ul        [        S5      nU" U [	        U5      5      n[        U5        UR                  $ )Nr   'nvmlGpuInstanceGetVgpuHeterogeneousModer  )rT  r  r+  rj  s       r  r  r    sG    >qA&>#	 !J	KB
[% 78
9CS"'''r  c                     [        S5      n[        Ul        Xl        [	        S5      nU" U [        U5      5      n[        U5        [        $ )Nr   'nvmlGpuInstanceSetVgpuHeterogeneousModer  )rT  r  r  r+  rj  s        r  r  r    sG    >qA&>##5 	 !J	KB
[% 78
9CSr  c                 V    [        S5      nU" U [        U5      5      n[        U5        U$ )N"nvmlDeviceGetVgpuSchedulerState_v2r'  )r  c_vgpu_sched_state_info_v2r+  rj  s       r  r  r    s-    	 !E	FB
VU56
7CS%%r  c                 V    [        S5      nU" U [        U5      5      n[        U5        U$ )N'nvmlGpuInstanceGetVgpuSchedulerState_v2r'  )rT  r  r+  rj  s       r  r  r    s-    	 !J	KB
[% :;
<CS%%r  c                 V    [        S5      nU" U [        U5      5      n[        U5        U$ )N nvmlDeviceGetVgpuSchedulerLog_v2r'  )r  c_vgpu_sched_log_info_v2r+  rj  s       r  r  r    s-    	 !C	DB
VU34
5CS##r  c                 V    [        S5      nU" U [        U5      5      n[        U5        U$ )N%nvmlGpuInstanceGetVgpuSchedulerLog_v2r'  )rT  r  r+  rj  s       r  r  r    s-    	 !H	IB
[% 89
:CS##r  c                 ^    [        S5      nU" U [        U5      5      n[        U5        [        $ )N"nvmlDeviceSetVgpuSchedulerState_v2rr  )r  sched_state_v2r+  rj  s       r  r  r    s,    	 !E	FB
VU>*
+CSr  c                 ^    [        S5      nU" U [        U5      5      n[        U5        [        $ )N'nvmlGpuInstanceSetVgpuSchedulerState_v2rr  )rT  r  r+  rj  s       r  r  r    s,    	 !J	KB
[%/
0CSr  c                  |    [        5       n [        S5      nU" [        U 5      5      n[        U5        U R                  $ )NnvmlGetExcludedDeviceCountr  r  s      r  r  r    s4    hG	 !=	>B
U7^
CS==r  c                     [        U 5      n[        5       n[        S5      nU" U[        U5      5      n[	        U5        U$ )N nvmlGetExcludedDeviceInfoByIndex)r  r  rt  r(  rk  )rn  r  infor+  rj  s        r  r  r    s;    UmG%'D	 !C	DB
WeDk
"CSKr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetHostVgpuMode)_nvmlHostVgpuMode_trt  r(  rk  r  )r  c_host_vgpu_moder+  rj  s       r  r  r    s<    *,	 !<	=B
VU+,
-CS!!!r  c                 ~    [        5       n[        S5      nU" X[        U5      5      n[        U5        UR                  $ )NnvmlDeviceSetMigModer  )r  r$  c_activationStatusr+  rj  s        r  r  r    s;    	 !7	8B
V5!34
5CS###r  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )NnvmlDeviceGetMigModer  )r  c_currentModec_pendingModer+  rj  s        r  r  r    sR    HMHM	 !7	8B
VU=)5+?
@CS!4!455r  c                     US:X  a  [        5       n[        S5      nO+US:X  a  [        5       n[        S5      nO[        [        5      eU" X[        U5      5      n[        U5        U$ )Nr   $nvmlDeviceGetGpuInstanceProfileInfoVr   #nvmlDeviceGetGpuInstanceProfileInfo)r9  rt  r-  r  r=  r(  rk  )r  profiler  r*  r+  rj  s         r  r  r    s_    !|24$%KL	A/1$%JK566
VeFm
,CSMr  c                 j    [        5       n[        S5      nU" X[        U5      5      n[        U5        U$ )N(nvmlDeviceGetGpuInstanceProfileInfoByIdV)r9  rt  r(  rk  )r  r@  r*  r+  rj  s        r  'nvmlDeviceGetGpuInstanceProfileInfoByIdr    s2    .0F	 !K	LB
Vf
.CSMr  c                 ~    [        5       n[        S5      nU" X[        U5      5      n[        U5        UR                  $ )N)nvmlDeviceGetGpuInstanceRemainingCapacityr  )r  r@  r  r+  rj  s        r  r  r     s6    hG	 !L	MB
Vg
/CS==r  c                 L    [        S5      nU" XX#5      n[        U5        [        $ )N-nvmlDeviceGetGpuInstancePossiblePlacements_v2r  )r  r@  placementsRefcountRefr+  rj  s         r  *nvmlDeviceGetGpuInstancePossiblePlacementsr  '  s'    	 !P	QB
V
8CSr  c                 j    [        5       n[        S5      nU" X[        U5      5      n[        U5        U$ )NnvmlDeviceCreateGpuInstancerU  rt  r(  rk  )r  r@  
c_instancer+  rj  s        r  r  r  -  s4    $&J	 !>	?B
Vj 1
2CSr  c                 l    [        5       n[        S5      nU" XU[        U5      5      n[        U5        U$ )N(nvmlDeviceCreateGpuInstanceWithPlacementr  )r  r@  rA  r  r+  rj  s         r  r  r  4  s6    $&J	 !K	LB
V	5+<
=CSr  c                 J    [        S5      nU" U 5      n[        U5        [        $ )NnvmlGpuInstanceDestroyr  )rT  r+  rj  s      r  r  r  ;  s$    	 !9	:B
[/CSr  c                 L    [        S5      nU" XX#5      n[        U5        [        $ )NnvmlDeviceGetGpuInstancesr  )r  r@  gpuInstancesRefr  r+  rj  s         r  r  r  A  s'    	 !<	=B
V
:CSr  c                 j    [        5       n[        S5      nU" X[        U5      5      n[        U5        U$ )NnvmlDeviceGetGpuInstanceByIdr  )r  r  r  r+  rj  s        r  r  r  G  s4    $&J	 !?	@B
VE*$5
6CSr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlGpuInstanceGetInfo)r?  rt  r(  rk  )rT  r*  r+  rj  s       r  r  r  N  s2    $&F	 !9	:B
[%-
(CSMr  c                     US:X  a  [        5       n[        S5      nO+US:X  a  [        5       n[        S5      nO[        [        5      eU" XU[        U5      5      n[        U5        U$ )Nr   -nvmlGpuInstanceGetComputeInstanceProfileInfoVr   ,nvmlGpuInstanceGetComputeInstanceProfileInfo)rN  rt  rG  r  r=  r(  rk  )r  r  
engProfiler  r*  r+  rj  s          r  r  r  U  sa    !|68$%TU	A35$%ST566
Vj%-
8CSMr  c                 ~    [        5       n[        S5      nU" X[        U5      5      n[        U5        UR                  $ )N2nvmlGpuInstanceGetComputeInstanceRemainingCapacityr  )rT  r@  r  r+  rj  s        r  r  r  e  s6    hG	 !U	VB
[U7^
4CS==r  c                 L    [        S5      nU" XX#5      n[        U5        [        $ )N3nvmlGpuInstanceGetComputeInstancePossiblePlacementsr  )rT  r@  r  r  r+  rj  s         r  r  r  l  s'    	 !V	WB
[]
=CSr  c                 j    [        5       n[        S5      nU" X[        U5      5      n[        U5        U$ )N$nvmlGpuInstanceCreateComputeInstancec_nvmlComputeInstance_trt  r(  rk  )rT  r@  r  r+  rj  s        r  r  r  r  s4    (*J	 !G	HB
[U:%6
7CSr  c                 l    [        5       n[        S5      nU" XU[        U5      5      n[        U5        U$ )N1nvmlGpuInstanceCreateComputeInstanceWithPlacementr  )rT  r@  rA  r  r+  rj  s         r  r  r  y  s6    (*J	 !T	UB
[Yj0A
BCSr  c                 J    [        S5      nU" U 5      n[        U5        [        $ )NnvmlComputeInstanceDestroyr  )computeInstancer+  rj  s      r  r  r    s%    	 !=	>B
_
CSr  c                 L    [        S5      nU" XX#5      n[        U5        [        $ )N"nvmlGpuInstanceGetComputeInstancesr  )rT  r@  computeInstancesRefr  r+  rj  s         r  r  r    s(    	 !E	FB
[%8
CCSr  c                 j    [        5       n[        S5      nU" X[        U5      5      n[        U5        U$ )N%nvmlGpuInstanceGetComputeInstanceByIdr  )rT  r  r  r+  rj  s        r  r  r    s4    (*J	 !H	IB
[U:->
?CSr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlComputeInstanceGetInfo_v2)rS  rt  r(  rk  )r  r*  r+  rj  s       r  r  r    s2    (*F	 !@	AB
_eFm
,CSMr  c                     [        U 5      $ r,  )r  )r  s    r  nvmlComputeInstanceGetInfor    s    (99r  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceIsMigDeviceHandle)r  rt  r(  rk  )r  c_isMigDevicer+  rj  s       r  r  r    s3    HM	 !>	?B
VU=)
*CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetGpuInstanceIdr  )r  c_gpuInstanceIdr+  rj  s       r  r  r    s9    hO	 !=	>B
VU?+
,CS   r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetComputeInstanceIdr  )r  c_computeInstanceIdr+  rj  s       r  r  r    s;     (	 !A	BB
VU./
0CS$$$r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetMaxMigDeviceCountr  )r  r  r+  rj  s       r  r  r    6    hG	 !A	BB
VU7^
$CS==r  c                     [        U5      n[        5       n[        S5      nU" X[        U5      5      n[	        U5        U$ )N#nvmlDeviceGetMigDeviceHandleByIndexr  )r  rn  r  	migDevicer+  rj  s         r  r  r    s=    UmG I	 !F	GB
VeI.
/CSr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )N,nvmlDeviceGetDeviceHandleFromMigDeviceHandle)re  rt  r(  rk  )r 	  r  r+  rj  s       r  r	  r	    s2    F	 !O	PB
Yf
&CSMr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )NnvmlDeviceGetAttributes_v2)rz  rt  r(  rk  )r  c_attrsr+  rj  s       r  r	  r	    s2    $&G	 !=	>B
VU7^
$CSNr  c                     [        U 5      $ r,  )r	  )r  s    r  nvmlDeviceGetAttributesr	    rJ  r  c           	      :   [        S5      n[        5       n[        5       n[        5       n[        5       nU" U [        U5      [        U5      [        U5      [        U5      5      n[        U5        UR                  UR                  UR                  UR                  4$ )NnvmlDeviceGetRemappedRowsr  )r  r+  c_corrc_unc
c_bpending
c_bfailurerj  s          r  r		  r		    sx    	 !<	=BXFHEJJ
VU6]E%L%
2CU:EV
WCSLL%++z'7'79I9IJJr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )N!nvmlDeviceGetRowRemapperHistogram)r~  rt  r(  rk  )r  c_valsr+  rj  s       r  r	  r	    s2    -/F	 !D	EB
VU6]
#CSMr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetArchitecture)_nvmlDeviceArchitecture_trt  r(  rk  r  )r  archr+  rj  s       r  r	  r	    s7    $&D	 !<	=B
VU4[
!CS::r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetBusType)_nvmlBusType_trt  r(  rk  r  )r  	c_busTyper+  rj  s       r  r	  r	    s8     I	 !7	8B
VU9%
&CS??r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetIrqNumr  )r  c_irqNumr+  rj  s       r  r	  r	    s6    xH	 !6	7B
VU8_
%CS>>r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetNumGpuCoresr  )r  
c_numCoresr+  rj  s       r  r	  r	    s9    J	 !;	<B
VU:&
'CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetPowerSource)_nvmlPowerSource_trt  r(  rk  r  )r  c_powerSourcer+  rj  s       r  r 	  r 	    s:    &(M	 !;	<B
VU=)
*CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetMemoryBusWidthr  )r  c_memBusWidthr+  rj  s       r  r$	  r$	    s9    HM	 !>	?B
VU=)
*CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetPcieLinkMaxSpeed)_nvmlPcieLinkMaxSpeed_trt  r(  rk  r  r  r  r+  rj  s       r  r'	  r'	    s7    %'G	 !@	AB
VU7^
$CS==r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N$nvmlDeviceGetAdaptiveClockInfoStatus)_nvmlAdaptiveClockInfoStatus_trt  r(  rk  r  )r  c_adaptiveClockInfoStatusr+  rj  s       r  r+	  r+	    s<     > @	 !G	HB
VU45
6CS$***r  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetPcieSpeedr  r)	  s       r  r/	  r/	    s6    hG	 !9	:B
VU7^
$CS==r  c                     [        U5      [        LnU(       a  UO
[        U5      n[        S5      nU" X5      n[	        U5        U(       a  [
        $ U$ )NnvmlDeviceGetDynamicPstatesInfo)r^  r]  r(  rt  rk  ri  )r  c_dynamicpstatesinforU  dynamicpstatesinfoRefr+  rj  s         r  r1	  r1	  "  sO    +,4QQK4?0UK_E`	 !B	CB
V
+CS&<@,@@r  c                 L    [        S5      nU" XU5      n[        U5        [        $ )NnvmlDeviceSetFanSpeed_v2r  )r  rn  r  r+  rj  s        r  r5	  r5	  +  s'    	 !;	<B
VE
"CSr  c                     [        U5      [        LnU(       a  UO
[        U5      n[        S5      nU" XU5      n[	        U5        U(       a  [
        $ UR                  S S  $ )NnvmlDeviceGetThermalSettings)r^  ri  r(  rt  rk  ri  rj  )r  sensorindexc_thermalsettingsrU  thermalsettingsRefr+  rj  s          r  r7	  r7	  1  s]    ()1KKK.9*uEV?W	 !?	@B
V"4
5CS&<G,=,D,DQ,GGr  c                 T   [        U5      [        L=(       d    [        U5      [        LnU(       a  UO
[        U5      nU(       a  UO
[        U5      n[        S5      nU" U [	        U5      [	        U5      Xg5      n	[        U	5        U(       a  [        $ UR                  UR                  4$ )N nvmlDeviceGetMinMaxClockOfPState)r^  r  r(  rt  r  rk  ri  r  )
r  	clockTypepstateminClockMHzmaxClockMHzrU  minClockMHzRefmaxClockMHzRefr+  rj  s
             r  r<	  r<	  9  s    $F2X[8IQW8WK$/[U;5GN$/[U;5GN	 !C	DB
V%i02B62JN
kCS&<R[->->@Q@Q,RRr  c                   *    \ rS rSrS\4S\4S\4/rSrg) c_nvmlDevicePowerMizerModes_v1_tiH  currentModer$  supportedPowerMizerModesr  N)r  r  r  r  _nvmlPowerMizerMode_tr  r  r  r  r  rD	  rD	  H  s$    	-.	&'	#%:;Hr  rD	  c                 ,    [        S5      nU" X5      nU$ )NnvmlDeviceGetPowerMizerMode_v1r|  r  r  r+  rj  s       r  rI	  rI	  O      	 !A	BB
V
CJr  c                 ,    [        S5      nU" X5      nU$ )NnvmlDeviceSetPowerMizerMode_v1r|  rJ	  s       r  rM	  rM	  T  rK	  r  c                   <    \ rS rSrS\4S\4S\4S\4S\4S\4/rSr	g	)
c_nvmlClockOffset_tiY  r  r^  r>	  clockOffsetMHzminClockOffsetMHzmaxClockOffsetMHzr  N)
r  r  r  r  r  r  r  rK  r  r  r  r  r  rO	  rO	  Y  s:    	F	!"	>"	5!	e$	e$Hr  rO	  c                 4    [        S5      nU" X5      n[        $ )NnvmlDeviceGetClockOffsetsrt  ri  rJ	  s       r  rT	  rT	  e      	 !<	=B
V
Cr  c                 4    [        S5      nU" X5      n[        $ )NnvmlDeviceSetClockOffsetsrU	  rJ	  s       r  rX	  rX	  j  rV	  r  c                    / n[        [        5      n[        [         5      UR                  -  n[        UR                  -  nU" 5       n[        S5      nU" XU5      n[        U5        U H   nU[        :w  d  M  UR                  U5        M"     U$ )N'nvmlDeviceGetSupportedPerformanceStates)	r  NVML_MAX_GPU_PERF_PSTATESsizeofr  r  rt  rk  NVML_PSTATE_UNKNOWNr  )	r  pstatesr  c_sizepstates_array	c_pstatesr+  rj  r  s	            r  rZ	  rZ	  o  s    G./GF^GMM)F #W]]2MI	 !J	KB
V
'CS''NN5!  Nr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetGpcClkVfOffsetro  rt  r(  rk  r  r  offsetr+  rj  s       r  rc	  rc	    6    YF	 !>	?B
VU6]
#CS<<r  c                 `    [        U5      n[        S5      nU" X5      n[        U5        [        $ )NnvmlDeviceSetGpcClkVfOffsetro  rt  rk  ri  r  rf	  c_offsetr+  rj  s        r  ri	  ri	    .    vH	 !>	?B
V
CSr  c                 ,   [        U5      [        L=(       d    [        U5      [        LnU(       a  UO
[        U5      nU(       a  UO
[        U5      n[        S5      nU" XU5      n[	        U5        U(       a  [
        $ UR                  UR                  4$ )N!nvmlDeviceGetGpcClkMinMaxVfOffsetr^  rK  r(  rt  rk  ri  r  r  	minOffset	maxOffsetrU  minOffsetRefmaxOffsetRefr+  rj  s           r  ro	  ro	    ss    	?%/RT)_E5QK +9y1AL +9y1AL	 !D	EB
V<
0CS&<NY__ioo,NNr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetMemClkVfOffsetrd	  re	  s       r  rw	  rw	    rg	  r  c                 `    [        U5      n[        S5      nU" X5      n[        U5        [        $ )NnvmlDeviceSetMemClkVfOffsetrj	  rk	  s        r  ry	  ry	    rm	  r  c                 ,   [        U5      [        L=(       d    [        U5      [        LnU(       a  UO
[        U5      nU(       a  UO
[        U5      n[        S5      nU" XU5      n[	        U5        U(       a  [
        $ UR                  UR                  4$ )N!nvmlDeviceGetMemClkMinMaxVfOffsetrp	  rq	  s           r  r{	  r{	    ss    	?%/RT)_E5QK +9y1AL +9y1AL	 !D	EB
V<
0CS&<NY__ioo,NNr  c                 `    [        U 5      n[        S5      nU" U5      n[        U5        [        $ )N&nvmlSystemSetConfComputeGpusReadyStater  rt  rk  ri  )r  r  r+  rj  s       r  r}	  r}	    s-    UmG	 !I	JB
W+CSr  c                  |    [        5       n [        S5      nU" [        U 5      5      n[        U5        U R                  $ )N&nvmlSystemGetConfComputeGpusReadyStater  r  r+  rj  s      r  r	  r	    s4    hG	 !I	JB
U7^
CS==r  c                  h    [        5       n [        S5      nU" [        U 5      5      n[        U5        U $ )N$nvmlSystemGetConfComputeCapabilities)r  rt  r(  rk  )c_ccSysCapsr+  rj  s      r  r	  r	    s2    /1K	 !G	HB
U;
 CSr  c                  h    [        5       n [        S5      nU" [        U 5      5      n[        U5        U $ )NnvmlSystemGetConfComputeState)r  rt  r(  rk  r	  s      r  r	  r	    s0    ,.G	 !@	AB
U7^
CSNr  c                 (    [        S5      nU" U 5      $ )N nvmlSystemGetConfComputeSettingsr|  )settingsr+  s     r  r	  r	    s    	 !C	DBh<r  c                 J    [        S5      nU" X5      n[        U5        [        $ )N*nvmlDeviceSetConfComputeUnprotectedMemSizer  r  c_ccMemSizer+  rj  s       r  r	  r	    s%    	 !M	NB
V
!CSr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )N#nvmlDeviceGetConfComputeMemSizeInfo)r  rt  r(  rk  r	  s       r  r	  r	    s4    02K	 !F	GB
VU;'
(CSr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )N,nvmlDeviceGetConfComputeProtectedMemoryUsage)r  rt  r(  rk  )r  r  r+  rj  s       r  r	  r	    s2    H	 !O	PB
VU8_
%CSOr  c                 j    [        5       n[        S5      nU" U [        U5      5      n[        U5        U$ )N&nvmlDeviceGetConfComputeGpuCertificate)r  rt  r(  rk  )r  c_certr+  rj  s       r  r	  r	    s2    .0F	 !I	JB
VU6]
#CSMr  c                     [        5       n[        [        U5      -  " U6 n[        USU5        [	        S5      nU" U [        U5      5      n[        U5        U$ )Nr  ,nvmlDeviceGetConfComputeGpuAttestationReport)r  rl  rl  r_  rt  r(  rk  )r  c_noncec_attestReportc_nonce_arrr+  rj  s         r  r	  r	    sS    <>NS\)W6KNG[1	 !O	PB
VU>*
+CSr  c                     [        S5      n[        Ul        Xl        [	        S5      nU" [        U5      5      n[        U5        [        $ )Nr   0nvmlSystemSetConfComputeKeyRotationThresholdInfo)r  )ConfComputeSetKeyRotationThresholdInfo_v1r  r  rt  r(  rk  ri  )max_atk_advc_keyRotationThrInfor+  rj  s       r  r	  r	    sE    I!L#L 0;-	 !S	TB
U'(
)CSr  c                      [        S5      n [        U l        [        S5      nU" [	        U 5      5      n[        U5        U $ )Nr   0nvmlSystemGetConfComputeKeyRotationThresholdInfo)r  )ConfComputeGetKeyRotationThresholdInfo_v1r  rt  r(  rk  )r	  r+  rj  s      r  r	  r	     s?    I!L#L 	 !S	TB
U'(
)CSr  i4  i5  i6  i7  i8  i9  i:  i;  i<  i=  i>  i?  i@  iA  iB  iC  iD  iE  iF  iG  iH  iI  iJ  iK  iL  iM  c                   H    \ rS rSrS\S-  4S\S-  4S\S-  4S\S-  4/rSrg)	r  i@  rs  r.   r  r  r  r  Nr  r  r  r  r  r  @  r  r  c                       \ rS rSrSrg)struct_c_nvmlGpmSample_tiH  r  Nr  r  r  r  r	  r	  H  r  r  r	  c                   *    \ rS rSrS\4S\4S\4/rSrg)c_metricInfo_tiL  	shortNamelongNamer  r  N)r  r  r  r  r  r  r  r  r  r  r	  r	  L  s!    	h	X	Hr  r	  c                   0    \ rS rSrS\4S\4S\4S\4/rSr	g)c_nvmlGpmMetric_tiS  metricIdr\  r  
metricInfor  N)
r  r  r  r  r  r`  rH  r	  r  r  r  r  r  r	  r	  S  s)    	V	}%	(	~&	Hr  r	  c                   <    \ rS rSrS\4S\4S\4S\4S\\-  4/rSr	g)	c_nvmlGpmMetricsGet_ti[  r  
numMetricssample1sample2metricsr  N)
r  r  r  r  r  c_nvmlGpmSample_tr	  NVML_GPM_METRIC_MAXr  r  r  r  r  r	  r	  [  s:    	F	v	%&	%&	%(;;<Hr  r	  c                   $    \ rS rSrS\4S\4/rSrg)c_nvmlGpmSupport_tif  r  isSupportedDevicer  Nr  r  r  r  r	  r	  f  s    	F	f%Hr  r	  c                 T    [        S5      nU" [        U 5      5      n[        U5        U $ )NnvmlGpmMetricsGetr'  )
metricsGetr+  rj  s      r  r	  r	  p  s*    	 !4	5B
U:
CSr  c                 @    [        S5      nU" U 5      n[        U5        g )NnvmlGpmSampleFreer  	gpmSampler+  rj  s      r  r	  r	  v  s!    	 !4	5B
Y-CS
r  c                  h    [        5       n [        S5      nU" [        U 5      5      n[        U5        U $ )NnvmlGpmSampleAlloc)r	  rt  r(  rk  r	  s      r  r	  r	  |  s2    !#I	 !5	6B
U9
CSr  c                 B    [        S5      nU" X5      n[        U5        U$ )NnvmlGpmSampleGetr  )r  r	  r+  rj  s       r  r	  r	    s%    	 !3	4B
V
CSr  c                 D    [        S5      nU" XU5      n[        U5        U$ )NnvmlGpmMigSampleGetr  )r  r  r	  r+  rj  s        r  r	  r	    s'    	 !6	7B
VI
.CSr  c                     [        5       n[        Ul        [        S5      nU" U [	        U5      5      n[        U5        U$ )NnvmlGpmQueryDeviceSupport)r	  NVML_GPM_SUPPORT_VERSIONr  rt  r(  rk  )r  
gpmSupportr+  rj  s       r  r	  r	    s<    #%J1J	 !<	=B
VU:&
'CSr  c                 `    [        U5      n[        S5      nU" X5      n[        U5        [        $ )NnvmlGpmSetStreamingEnabledr~	  )r  r  r  r+  rj  s        r  r	  r	    s.    UmG	 !=	>B
V
CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlGpmQueryIfStreamingEnabledr  )r  r  r+  rj  s       r  r	  r	    r  r  i  c                       \ rS rSrS\4/rSrg)c_nvmlNvLinkPowerThres_ti  lowPwrThresholdr  Nr  r  r  r  r	  r	    s    	F#Hr  r	  c                 ~    [        5       nXl        [        S5      nU" U [        U5      5      n[	        U5        [
        $ )N*nvmlDeviceSetNvLinkDeviceLowPowerThreshold)r	  r	  rt  r(  rk  ri  )r  l1thresholdr*  r+  rj  s        r  r	  r	    s9    %'F(	 !M	NB
VU6]
#CSr  c                   6    \ rS rSrS\\-  4S\4S\4S\4/r	Sr
g)c_nvmlGpuFabricInfo_ti  clusterUuidr  cliqueIdr  r  N)r  r  r  r  rl  r  r`  r]  _nvmlGpuFabricState_tr  r  r  r  r  r	  r	    s0    	">>?	=!	X	'(	Hr  r	  i$  c                   V   ^  \ rS rSrS\4S\\-  4S\4S\4S\	4S\4/r
U 4S jrS	rU =r$ )
c_nvmlGpuFabricInfo_v2_ti   r  r	  r  r	  r  
healthMaskc                 0   > [         [        U ]  [        S9  g rf  )r  r	  ry  nvmlGpuFabricInfo_v2ri  s    r  ry  !c_nvmlGpuFabricInfo_v2_t.__init__
      &6?S6Tr  r  r  r  r  r  r  rl  NVML_GPU_FABRIC_UUID_LENr`  r]  r	  r  ry  r  r  r  s   @r  r	  r	     sM    	F	"::;	=!	X	'(	x HU Ur  r	  c                   \   ^  \ rS rSrS\4S\\-  4S\4S\4S\	4S\4S\4/r
U 4S	 jrS
rU =r$ )c_nvmlGpuFabricInfo_v3_ti  r  r	  r  r	  r  r	  healthSummaryc                 0   > [         [        U ]  [        S9  g rf  )r  r	  ry  nvmlGpuFabricInfo_v3ri  s    r  ry  !c_nvmlGpuFabricInfo_v3_t.__init__  r	  r  r  r	  r  s   @r  r	  r	    sU    	F	"::;	=!	X	'(	x 	'"HU Ur  r	  i(  c                 J    [        S5      nU" X5      n[        U5        [        $ )NnvmlDeviceGetGpuFabricInfor  r  gpuFabricInfor+  rj  s       r  r	  r	     s%    	 !=	>B
V
#CSr  c                 J    [        S5      nU" X5      n[        U5        [        $ )NnvmlDeviceGetGpuFabricInfoVr  r	  s       r  r	  r	  &  s%    	 !>	?B
V
#CSr  c                 J    [        S5      nU" U 5      n[        U5        [        $ )NnvmlSystemSetNvlinkBwModer  r$  r+  rj  s      r  r	  r	  6  s$    	 !<	=B
T(CSr  c                  |    [        5       n [        S5      nU" [        U 5      5      n[        U5        U R                  $ )NnvmlSystemGetNvlinkBwModer  r	  s      r  r	  r	  <  s3    8D	 !<	=B
U4[/CS::r  c                   2    \ rS rSrS\4S\4S\4/rSS0rSrg)	c_nvmlPowerValue_v2_tiJ  r  
powerScopepowerValueMwr  r  r  N)	r  r  r  r  r  _nvmlPowerScopeType_tr  r  r  r  r  r  r	  r	  J  s.    	F	,-	 H
 &!Er  r	  i  c                     [        U5      n[        5       n[        U5      Ul        XEl        [        U5      Ul        [        S5      nU" U [        U5      5      n[        $ )N$nvmlDeviceSetPowerManagementLimit_v2)	r	  r	  r  r  r	  r	  rt  r(  ri  )r  r	  
powerLimitr  c_powerScopec_powerValuer+  rj  s           r  r	  r	  T  sU    (4L(*L!'?L* &z 2L	 !G	HB
VU<(
)Cr  c                   z   ^  \ rS rSrS\4S\4S\4S\4S\4S\4S\4S	\4S
\4S\4S\4S\4S\4/rU 4S jrSrU =r	$ )c_nvmlEccSramErrorStatus_v1_ti^  r  aggregateUncParityaggregateUncSecDedaggregateCorvolatileUncParityvolatileUncSecDedvolatileCoraggregateUncBucketL2aggregateUncBucketSmaggregateUncBucketPcieaggregateUncBucketMcuaggregateUncBucketOtherbThresholdExceededc                 0   > [         [        U ]  [        S9  g rf  )r  r	  ry  nvmlEccSramErrorStatus_v1ri  s    r  ry  &c_nvmlEccSramErrorStatus_v1_t.__init__o  r7  r  r  r  r  s   @r  r	  r	  ^  s~    	F	{+	{+	%	k*	k*	$	-	-	!;/	 +.	"K0	v&H _ _r  r	  ih  c                 J    [        S5      nU" X5      n[        U5        [        $ )NnvmlDeviceGetSramEccErrorStatusr  )r  r  r+  rj  s       r  r
  r
  s  s%    	 !B	CB
V
CSr  c                   8   ^  \ rS rSrS\4S\4/rU 4S jrSrU =r$ )c_nvmlDeviceCapabilities_v1_ti|  r  capMaskc                 0   > [         [        U ]  [        S9  g rf  )r  r
  ry  nvmlDeviceCapabilities_v1ri  s    r  ry  &c_nvmlDeviceCapabilities_v1_t.__init__  r7  r  r  r  r  s   @r  r
  r
  |  s&    	F	FH
_ _r  r
  c                 (    [        S5      nU" X5      $ )NnvmlDeviceGetCapabilitiesr|  )r  capsr+  s      r  r
  r
    s    	 !<	=Bfr  c            	       h   ^  \ rS rSrS\4S\S-  4S\S-  4S\4S\4S\4S	\4S
\4/rU 4S jrSrU =r	$ )c_nvmlPlatformInfo_v1_ti  r  ibGuidr   rackGuidchassisPhysicalSlotNumbercomputeSlotIndex	nodeIndexpeerTyperT  c                 0   > [         [        U ]  [        S9  g rf  )r  r
  ry  nvmlPlatformInfo_v1ri  s    r  ry   c_nvmlPlatformInfo_v1_t.__init__      %t5>Q5Rr  r  
r  r  r  r  r  r  r  ry  r  r  r  s   @r  r
  r
    s^    	F	6B;	Vb[!	$f-	V$	f	V	V	HS Sr  r
  c            	       h   ^  \ rS rSrS\4S\S-  4S\S-  4S\4S\4S\4S	\4S
\4/rU 4S jrSrU =r	$ )c_nvmlPlatformInfo_v2_ti  r  r
  r   chassisSerialNumber
slotNumber	trayIndexhostIdr
  rT  c                 0   > [         [        U ]  [        S9  g rf  )r  r&
  ry  nvmlPlatformInfo_v2ri  s    r  ry   c_nvmlPlatformInfo_v2_t.__init__  r#
  r  r  r$
  r  s   @r  r&
  r&
    s^    	F	6B;	,	v	f	6	V	V	HS Sr  r&
  i,  i,  c                 J    [        S5      nU" X5      n[        U5        [        $ )NnvmlDeviceGetPlatformInfor  )r  platformInfor+  rj  s       r  r/
  r/
    s%    	 !<	=B
V
"CSr  c                   $    \ rS rSrS\\-  4/rSrg)c_nvmlHostname_v1_ti  r  r  N)r  r  r  r  r   NVML_DEVICE_HOSTNAME_BUFFER_SIZEr  r  r  r  r  r2
  r2
    s    	&;;<Hr  r2
  c                   $    \ rS rSrS\S-  4/rSrg)c_nvmlMask255_ti  maskr   r  Nr  r  r  r  r5
  r5
    s    	!Hr  r5
  c                   D   ^  \ rS rSrS\4S\4S\4S\4/rU 4S jrSrU =r	$ )#c_nvmlWorkloadPowerProfileInfo_v1_ti  r  r@  priorityconflictingmaskc                 0   > [         [        U ]  [        S9  g rf  )r  r8
  ry  nvmlWorkloadPowerProfileInfo_v1ri  s    r  ry  ,c_nvmlWorkloadPowerProfileInfo_v1_t.__init__  s    14AJiAjr  r  
r  r  r  r  r  r5
  r  ry  r  r  r  s   @r  r8
  r8
    s6    	F	f	V	O,	Hk kr  r8
  i+ c                   D   ^  \ rS rSrS\4S\4S\\-  4/rU 4S jr	Sr
U =r$ )+c_nvmlWorkloadPowerProfileProfilesInfo_v1_ti  r  perfProfilesMaskperfProfilec                 0   > [         [        U ]  [        S9  g rf  )r  r@
  ry  'nvmlWorkloadPowerProfileProfilesInfo_v1ri  s    r  ry  4c_nvmlWorkloadPowerProfileProfilesInfo_v1_t.__init__  s    94IRyIzr  r  )r  r  r  r  r  r5
  r8
   NVML_WORKLOAD_POWER_MAX_PROFILESr  ry  r  r  r  s   @r  r@
  r@
    s5    	F	_-	;>^^_H{ {r  r@
  id  c                   D   ^  \ rS rSrS\4S\4S\4S\4/rU 4S jrSrU =r	$ ).c_nvmlWorkloadPowerProfileCurrentProfiles_v1_ti  r  rA
  requestedProfilesMaskenforcedProfilesMaskc                 0   > [         [        U ]  [        S9  g rf  )r  rH
  ry  *nvmlWorkloadPowerProfileCurrentProfiles_v1ri  s    r  ry  7c_nvmlWorkloadPowerProfileCurrentProfiles_v1_t.__init__      <dLUL  	Ar  r  r>
  r  s   @r  rH
  rH
    s6    	F	_-	 /2	1	HA Ar  rH
  i$  c                   8   ^  \ rS rSrS\4S\4/rU 4S jrSrU =r	$ )0c_nvmlWorkloadPowerProfileRequestedProfiles_v1_ti  r  rI
  c                 0   > [         [        U ]  [        S9  g rf  )r  rP
  ry  ,nvmlWorkloadPowerProfileRequestedProfiles_v1ri  s    r  ry  9c_nvmlWorkloadPowerProfileRequestedProfiles_v1_t.__init__  s    >N  XDN  	Er  r  r>
  r  s   @r  rP
  rP
    s&    	F	 /2H
E Er  rP
  c                   $    \ rS rSrS\4S\4/rSrg)-c_nvmlWorkloadPowerProfileUpdateProfiles_v1_ti  	operationupdateProfilesMaskr  N)r  r  r  r  r  r5
  r  r  r  r  r  rU
  rU
    s    	f	/Hr  rU
  c                 J    [        S5      nU" X5      n[        U5        [        $ )N-nvmlDeviceWorkloadPowerProfileGetProfilesInfor  )r  profilesInfor+  rj  s       r  rY
  rY
    s%    	 !P	QB
V
"CSr  c                 J    [        S5      nU" X5      n[        U5        [        $ )N0nvmlDeviceWorkloadPowerProfileGetCurrentProfilesr  )r  currentProfilesr+  rj  s       r  r\
  r\
    s%    	 !S	TB
V
%CSr  c                 J    [        S5      nU" X5      n[        U5        [        $ )N2nvmlDeviceWorkloadPowerProfileSetRequestedProfilesr  r  requestedProfilesr+  rj  s       r  r_
  r_
    s%    	 !U	VB
V
'CSr  c                 J    [        S5      nU" X5      n[        U5        [        $ )N4nvmlDeviceWorkloadPowerProfileClearRequestedProfilesr  r`
  s       r  rc
  rc
    s%    	 !W	XB
V
'CSr  c                 J    [        S5      nU" X5      n[        U5        [        $ )N/nvmlDeviceWorkloadPowerProfileUpdateProfiles_v1r  )r  updateProfilesr+  rj  s       r  re
  re
     s%    	 !R	SB
V
$CSr  c                 J    [        S5      nU" X5      n[        U5        [        $ )N#nvmlDeviceGetNvlinkSupportedBwModesr  )r  supportedBwModesr+  rj  s       r  rh
  rh
  &  s%    	 !F	GB
V
&CSr  c                 J    [        S5      nU" X5      n[        U5        [        $ )NnvmlDeviceGetNvlinkBwModer  )r  	getBwModer+  rj  s       r  rk
  rk
  ,  %    	 !<	=B
V
CSr  c                 J    [        S5      nU" X5      n[        U5        [        $ )NnvmlDeviceSetNvlinkBwModer  )r  	setBwModer+  rj  s       r  ro
  ro
  2  rm
  r  c                   8   ^  \ rS rSrS\4S\4/rU 4S jrSrU =r	$ )c_nvmlDramEncryptionInfo_ti:  r  encryptionStatec                 0   > [         [        U ]  [        S9  g rf  )r  rr
  ry  nvmlDramEncryptionInfo_v1ri  s    r  ry  #c_nvmlDramEncryptionInfo_t.__init__@  s    ($8AZ8[r  r  )
r  r  r  r  r  r  r  ry  r  r  r  s   @r  rr
  rr
  :  s'    	F	/0H
\ \r  rr
  c                     [        5       n[        5       n[        S5      nU" U [        U5      [        U5      5      n[        U5        UR                  UR                  /$ )NnvmlDeviceGetDramEncryptionMode)rr
  rt  r(  rk  rs
  r  s        r  rx
  rx
  C  sT    ,.K/1N	 !B	CB
VU;'~)>
?CS'')G)GHHr  c                     [        U 5      S   $ r  rx
  rI  s    r  &nvmlDeviceGetCurrentDramEncryptionModer{
  L      *62155r  c                     [        U 5      S   $ r  rz
  rI  s    r  &nvmlDeviceGetPendingDramEncryptionModer~
  P  r|
  r  c                 t    [        S5      n[        5       nXl        U" U [        U5      5      n[	        U5        g )NnvmlDeviceSetDramEncryptionMode)rt  rr
  rs
  r(  rk  )r  r$  r+  c_dramEncryptionModerj  s        r  r
  r
  S  s9    	 !B	CB57+/(
VU/0
1CSr  c                   8   ^  \ rS rSrS\4S\4/rU 4S jrSrU =r$ )c_nvmlPowerSmoothingState_v1_tii  r  r  c                 0   > [         [        U ]  [        S9  g rf  )r  r
  ry  nvmlPowerSmoothingState_v1ri  s    r  ry  'c_nvmlPowerSmoothingState_v1_t.__init__o  s    ,d<E_<`r  r  r  r  s   @r  r
  r
  i  s&    	F	&H
a ar  r
  c                   D   ^  \ rS rSrS\4S\4S\4S\4/rU 4S jrSrU =r	$ ) c_nvmlPowerSmoothingProfile_v1_tis  r  r@  paramIdr  c                 0   > [         [        U ]  [        S9  g rf  )r  r
  ry  nvmlPowerSmoothingProfile_v1ri  s    r  ry  )c_nvmlPowerSmoothingProfile_v1_t.__init__{  s    .>Gc>dr  r  )
r  r  r  r  r  rH  r  ry  r  r  r  s   @r  r
  r
  s  s6    	F	f	F	(	He er  r
  c                 @    [        S5      nU" X5      n[        U5        g )N-nvmlDevicePowerSmoothingActivatePresetProfiler  r  r  r+  rj  s       r  r
  r
  ~  s    	 !P	QB
V
CSr  c                 @    [        S5      nU" X5      n[        U5        g )N0nvmlDevicePowerSmoothingUpdatePresetProfileParamr  r
  s       r  r
  r
    s    	 !S	TB
V
CSr  c                 @    [        S5      nU" X5      n[        U5        g )N nvmlDevicePowerSmoothingSetStater  )r  r  r+  rj  s       r  r
  r
    s    	 !C	DB
V
CSr  c                   B    \ rS rSrS\4S\4S\4S\4S\4S\4S\4/rS	rg
)-c_nvmlEccSramUniqueUncorrectedErrorEntry_v1_ti  r  locationsublocationextlocationr  isParityr  r  Nr  r  r  r  r
  r
    sA    		V			F	V	&Hr  r
  c                   J   ^  \ rS rSrS\4S\4S\" \5      4/rU 4S jrSr	U =r
$ ).c_nvmlEccSramUniqueUncorrectedErrorCounts_v1_ti  r  
entryCountentriesc                 0   > [         [        U ]  [        S9  g rf  )r  r
  ry  *nvmlEccSramUniqueUncorrectedErrorCounts_v1ri  s    r  ry  7c_nvmlEccSramUniqueUncorrectedErrorCounts_v1_t.__init__  rN
  r  r  )r  r  r  r  r  r  r
  r  ry  r  r  r  s   @r  r
  r
    s4    	F	v	GIJKHA Ar  r
  c                 J    [        S5      nU" X5      n[        U5        [        $ )N0nvmlDeviceGetSramUniqueUncorrectedEccErrorCountsr  )r  countsr+  rj  s       r  r
  r
    s%    	 !S	TB
V
CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetPdi)r  rt  r(  rk  r  )r  c_pdir+  rj  s       r  r
  r
    s6    ME	 !3	4B
VU5\
"CS;;r  c                 J    [        S5      nU" X5      n[        U5        [        $ )NnvmlDeviceGetNvLinkInfor  rJ	  s       r  r
  r
    s%    	 !:	;B
V
CSr  c                     [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  UR
                  /$ )NnvmlDeviceGetRepairStatus)r   rt  r(  rk  r  r  r  c_statusr+  rj  s       r  r
  r
    sD    #%H	 !<	=B
VU8_
%CS**H,F,FGGr  c                 t    [        5       n[        S5      nXl        U" U [        U5      5      n[	        U5        g )NnvmlDeviceSetHostname_v1)r2
  rt  r  r(  rk  )r  hostname
c_hostnamer+  rj  s        r  r
  r
    s7    $&J	 !;	<B
VU:&
'CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )NnvmlDeviceGetHostname_v1)r2
  rt  r(  rk  r  )r  r
  r+  rj  s       r  r
  r
    s:    $&J	 !;	<B
VU:&
'CSr  c                 ~    [        5       n[        S5      nU" U [        U5      5      n[        U5        UR                  $ )N&nvmlDeviceGetUnrepairableMemoryFlag_v1)r2  rt  r(  rk  r3  r
  s       r  r
  r
    s9    ,.H	 !I	JB
VU8_
%CS&&&r  l    c                   @   ^  \ rS rSrS\4S\4/rSS0rU 4S jrSr	U =r
$ )c_nvmlRusdSettings_v1_ti  r  pollMaskz0x%016Xc                 @   > [         [        U ]  5         [        U l        g r,  )r  r
  ry  nvmlRusdSettings_v1r  ri  s    r  ry   c_nvmlRusdSettings_v1_t.__init__  s    %t57*r  rg  )r  r  r  r  r  r  r  r  ry  r  r  r  s   @r  r
  r
    s0    	F	[!H #E+ +r  r
  c                 T    [        S5      nU" U [        U5      5      n[        U5        g )NnvmlDeviceSetRusdSettings_v1r'  )r  r	  r+  rj  s       r  r
  r
    s%    	 !?	@B
VU8_
%CSr  c                   <    \ rS rSrS\4S\4S\4S\4S\4S\4/rSrg	)
c_nvmlRemappedRowsInfo_v2_ti  corrActiveRemapscorrInactiveRemapsuncActiveRemapsuncInactiveRemapsbPendingbfailureOccurredr  Nr  r  r  r  r
  r
    s9    	V$	v&	F#	f%	V	V$Hr  r
  c                 B    [        S5      nU" X5      n[        U5        U$ )NnvmlDeviceGetRemappedRows_v2r  rJ	  s       r  r
  r
    s$    	 !?	@B
V
CSJr  r,  )r   r   )NN(;  ctypesctypes.utilr   	functoolsr   rV  r  	threadingrZ  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_COUNTrU  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_COUNTr4  NVML_VOLATILE_ECCNVML_AGGREGATE_ECCNVML_ECC_COUNTER_TYPE_COUNTr3   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_COUNTrS  NVML_DRIVER_WDDMNVML_DRIVER_WDMNVML_DRIVER_MCDMr[	  r  NVML_PSTATE_0NVML_PSTATE_1NVML_PSTATE_2NVML_PSTATE_3NVML_PSTATE_4NVML_PSTATE_5NVML_PSTATE_6NVML_PSTATE_7NVML_PSTATE_8NVML_PSTATE_9NVML_PSTATE_10NVML_PSTATE_11NVML_PSTATE_12NVML_PSTATE_13NVML_PSTATE_14NVML_PSTATE_15r]	  ry  NVML_INFOROM_OEMNVML_INFOROM_ECCNVML_INFOROM_POWERNVML_INFOROM_DENNVML_INFOROM_COUNTr`  ri  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  NVML_ERROR_IN_USErC  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_SUPPORTEDrD  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_0NVML_NVLINK_VERSION_6_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_COUNTr1  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_UNKNOWNr	  NVML_DEVICE_ARCH_KEPLERNVML_DEVICE_ARCH_MAXWELLNVML_DEVICE_ARCH_PASCALNVML_DEVICE_ARCH_VOLTANVML_DEVICE_ARCH_TURINGNVML_DEVICE_ARCH_AMPERENVML_DEVICE_ARCH_ADANVML_DEVICE_ARCH_HOPPERNVML_DEVICE_ARCH_BLACKWELLNVML_DEVICE_ARCH_RUBINNVML_DEVICE_ARCH_UNKNOWNr	  NVML_BUS_TYPE_UNKNOWNNVML_BUS_TYPE_PCINVML_BUS_TYPE_PCIENVML_BUS_TYPE_FPCINVML_BUS_TYPE_AGPr!	  NVML_POWER_SOURCE_ACNVML_POWER_SOURCE_BATTERYNVML_POWER_SOURCE_UNDERSIZEDr,	  +NVML_ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED*NVML_ADAPTIVE_CLOCKING_INFO_STATUS_ENABLED_nvmlClockLimitId_tNVML_CLOCK_LIMIT_ID_RANGE_STARTNVML_CLOCK_LIMIT_ID_TDPNVML_CLOCK_LIMIT_ID_UNLIMITEDr(	   NVML_PCIE_LINK_MAX_SPEED_INVALID!NVML_PCIE_LINK_MAX_SPEED_2500MBPS!NVML_PCIE_LINK_MAX_SPEED_5000MBPS!NVML_PCIE_LINK_MAX_SPEED_8000MBPS"NVML_PCIE_LINK_MAX_SPEED_16000MBPS"NVML_PCIE_LINK_MAX_SPEED_32000MBPS"NVML_PCIE_LINK_MAX_SPEED_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_MAXrZ  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,NVML_GPU_RECOVERY_ACTION_RECOVER_IMEX_DOMAINnvmlFlagDefaultnvmlFlagForceNVML_INIT_FLAG_NO_GPUSNVML_INIT_FLAG_NO_ATTACHNVML_INIT_FLAG_FORCE_INITNVML_MAX_GPC_COUNTrx  r  ru  r  r  r  r=  rQ  rM  'NVML_DEVICE_GPU_PART_NUMBER_BUFFER_SIZErc  r  r  r  r  r  r\	  r  r  +NVML_DEVICE_GPU_FRU_PART_NUMBER_BUFFER_SIZEr/  !NVML_DEVICE_PCI_BUS_ID_LEGACY_FMTNVML_DEVICE_PCI_BUS_ID_FMTr  rg  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_DEV_NVLINK_GET_DATA_RATENVML_FI_DEV_MMA_STALL_PERCENTNVML_FI_DEV_MCLK_SWITCH_TYPE1NVML_FI_DEV_MCLK_MIN_SWITCH_INTERVAL_MILLISECONDS1NVML_FI_PWR_SMOOTHING_SOC_POWER_SMOOTHING_ENABLED&NVML_FI_DEV_REMAPPED_ROWS_COR_INACTIVE&NVML_FI_DEV_REMAPPED_ROWS_UNC_INACTIVENVML_FI_MAX#NVML_MCLK_SWITCH_TYPE_NOT_SUPPORTEDNVML_MCLK_SWITCH_TYPE_DEFERREDNVML_MCLK_SWITCH_TYPE_RUNTIME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_VSGArp  Lockrn  r  r  r  _nvmlVgpuVmIdType_tNVML_VGPU_VM_ID_DOMAIN_IDNVML_VGPU_VM_ID_UUIDr  &NVML_GRID_LICENSE_FEATURE_CODE_UNKNOWN#NVML_GRID_LICENSE_FEATURE_CODE_VGPU)NVML_GRID_LICENSE_FEATURE_CODE_NVIDIA_RTX+NVML_GRID_LICENSE_FEATURE_CODE_VWORKSTATION%NVML_GRID_LICENSE_FEATURE_CODE_GAMING&NVML_GRID_LICENSE_FEATURE_CODE_COMPUTErl  _nvmlGridLicenseExpiryStatus_t&NVML_GRID_LICENSE_EXPIRY_NOT_AVAILABLE NVML_GRID_LICENSE_EXPIRY_INVALIDNVML_GRID_LICENSE_EXPIRY_VALID'NVML_GRID_LICENSE_EXPIRY_NOT_APPLICABLE"NVML_GRID_LICENSE_EXPIRY_PERMANENTr	  NVML_VGPU_CAP_NVLINK_P2PNVML_VGPU_CAP_GPUDIRECT"NVML_VGPU_CAP_MULTI_VGPU_EXCLUSIVENVML_VGPU_CAP_EXCLUSIVE_TYPENVML_VGPU_CAP_EXCLUSIVE_SIZENVML_VGPU_CAP_COUNTr  -NVML_VGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPU NVML_VGPU_DRIVER_CAP_WARM_UPDATENVML_VGPU_DRIVER_CAP_COUNTr  *NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU5NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES2NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES*NVML_DEVICE_VGPU_CAP_READ_DEVICE_BUFFER_BW+NVML_DEVICE_VGPU_CAP_WRITE_DEVICE_BUFFER_BW%NVML_DEVICE_VGPU_CAP_DEVICE_STREAMING%NVML_DEVICE_VGPU_CAP_MINI_QUARTER_GPU-NVML_DEVICE_VGPU_CAP_COMPUTE_MEDIA_ENGINE_GPU NVML_DEVICE_VGPU_CAP_WARM_UPDATE+NVML_DEVICE_VGPU_CAP_HOMOGENEOUS_PLACEMENTS.NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_SUPPORTED,NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_ENABLEDNVML_DEVICE_VGPU_CAP_COUNTr  1NVML_VGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED/NVML_VGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZEDr  NVML_VGPU_VM_COMPATIBILITY_NONENVML_VGPU_VM_COMPATIBILITY_COLD$NVML_VGPU_VM_COMPATIBILITY_HIBERNATE NVML_VGPU_VM_COMPATIBILITY_SLEEPNVML_VGPU_VM_COMPATIBILITY_LIVEr  "NVML_VGPU_COMPATIBILITY_LIMIT_NONE)NVML_VGPU_COMPATIBILITY_LIMIT_HOST_DRIVER*NVML_VGPU_COMPATIBILITY_LIMIT_GUEST_DRIVER!NVML_VGPU_COMPATIBILITY_LIMIT_GPU#NVML_VGPU_COMPATIBILITY_LIMIT_OTHERr  NVML_HOST_VGPU_MODE_NON_SRIOVNVML_HOST_VGPU_MODE_SRIOV _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  rH  rg  rk  r0  rm  rt  objectrv  r  r  	Structurer  r  r  r  r  r  nvmlC2cModeInfo_v1r  r  r  r  r  re  r  nvmlPciInfoExt_v1r  r  r  r  r  NVML_CPER_ACCESS_TYPE_GPUNVML_CPER_CURSOR_HANDLE_INITr  r  r  r  r  nvmlMemory_v2r
  r  r  r  r  rn  c_nvmlProcessInfo_tr'  NVML_PROCESS_MODE_COMPUTENVML_PROCESS_MODE_GRAPHICSNVML_PROCESS_MODE_MPSNVML_PROCESS_MODE_ALLNVML_PROCESS_MODE_MAXr  r#  r  nvmlProcessDetailList_v1r)  r-  r1  r8  r=  Unionr@  rN  rR  rV  rm  rh  rb  rs  ro  r{  rx  r~  r  r  r  r  r  !NVML_VGPU_PGPU_HETEROGENEOUS_MODENVML_VGPU_PGPU_HOMOGENEOUS_MODEr  r  r  r  r  r  r  r  r  r  r  r3  r  r  r  NVML_GRID_LICENSE_STATE_UNKNOWN%NVML_GRID_LICENSE_STATE_UNINITIALIZED/NVML_GRID_LICENSE_STATE_UNLICENSED_UNRESTRICTED-NVML_GRID_LICENSE_STATE_UNLICENSED_RESTRICTED"NVML_GRID_LICENSE_STATE_UNLICENSED NVML_GRID_LICENSE_STATE_LICENSEDr  r  r  r  r  rV  r  r  r  r  r  r  r  r  r  r  r  r  r  NVML_UUID_TYPE_NONEr!  r"  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-  r5  r2  rM  >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_RECOVERYr9  r?  rF  rO  rW  rY  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nvmlClocksThrottleReasonAllrb  rg  ro  "nvmlSystemEventTypeGpuDriverUnbind nvmlSystemEventTypeGpuDriverBindnvmlSystemEventTypeCountrl  ri  rs  rq  rz  rw  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  "NVML_VGPU_SCHEDULER_POLICY_UNKNOWN&NVML_VGPU_SCHEDULER_POLICY_BEST_EFFORT&NVML_VGPU_SCHEDULER_POLICY_EQUAL_SHARE&NVML_VGPU_SCHEDULER_POLICY_FIXED_SHAREr  r  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_NVENC0r  r  r  r  r  r  r  r  r  r  r  r   nvmlVgpuTypeIdInfo_v1r  r  r  nvmlActiveVgpuInstanceInfo_v1r  nvmlVgpuSchedulerState_v1r  nvmlVgpuSchedulerStateInfo_v1r  nvmlVgpuSchedulerLogInfo_v1r  !nvmlVgpuCreatablePlacementInfo_v1r  r  r  r  r  r"  NVML_DEVICE_MIG_DISABLENVML_DEVICE_MIG_ENABLE!NVML_GPU_INSTANCE_PROFILE_1_SLICE!NVML_GPU_INSTANCE_PROFILE_2_SLICE!NVML_GPU_INSTANCE_PROFILE_3_SLICE!NVML_GPU_INSTANCE_PROFILE_4_SLICE!NVML_GPU_INSTANCE_PROFILE_7_SLICE!NVML_GPU_INSTANCE_PROFILE_8_SLICE!NVML_GPU_INSTANCE_PROFILE_6_SLICE&NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV1&NVML_GPU_INSTANCE_PROFILE_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_3_SLICE_GFXNVML_GPU_INSTANCE_PROFILE_COUNTr)  r-  r;  r9  r?  rC  rU  %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_7_SLICE_NVL#NVML_COMPUTE_INSTANCE_PROFILE_COUNT+NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_SHARED*NVML_COMPUTE_INSTANCE_ENGINE_PROFILE_COUNTrE  rG  rP  rN  rS  r`  NVML_GPU_UTILIZATION_DOMAIN_GPUNVML_GPU_UTILIZATION_DOMAIN_FBNVML_GPU_UTILIZATION_DOMAIN_VIDNVML_GPU_UTILIZATION_DOMAIN_BUSrW  r]  rk  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_UNKNOWNrb  ri  rq  NVML_THERMAL_COOLER_SIGNAL_NONE!NVML_THERMAL_COOLER_SIGNAL_TOGGLE#NVML_THERMAL_COOLER_SIGNAL_VARIABLE NVML_THERMAL_COOLER_SIGNAL_COUNTrr  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_RELATEDrm  ru  rt  rx  r  rz  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  r  r  r  r	  r  r  r  r  r  r  r   r(  r*  r-  r3  r2  r6  r9  r8  r<  r?  rB  rG  rF  rL  rP  rS  rX  r`  rc  re  rh  rj  rn  rq  rt  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r'  r*  r-  r/  r2  r8  r;  r?  rB  rG  rI  rL  rN  rW  rY  rQ  r]  r`  rb  re  rl  rp  rr  rt  rv  ry  r{  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r%  r)  r-  r0  r6  r;  r>  r@  rD  rG  rK  rN  rR  rT  rW  rZ  r\  rb  re  rh  rj  rv  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r%  r+  r0  r2  r6  r;  rC  rG  rJ  rL  rO  rQ  rS  rU  rY  r]  r`  re  rh  rk  rn  rq  ru  rx  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r	  r	  r		  r	  r	  r	  r	  r	  r 	  r$	  r'	  r+	  r/	  r1	  r5	  r7	  r<	  rG	  NVML_POWER_MIZER_MODE_ADAPTIVE0NVML_POWER_MIZER_MODE_PREFER_MAXIMUM_PERFORMANCENVML_POWER_MIZER_MODE_AUTO3NVML_POWER_MIZER_MODE_PREFER_CONSISTENT_PERFORMANCErD	  rI	  rM	  rO	  nvmlClockOffset_v1rT	  rX	  rZ	  rc	  ri	  rK  ro	  rw	  ry	  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_NVLINK_L18_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L18_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L19_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L19_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L20_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L20_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L21_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L21_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L22_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L22_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L23_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L23_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L24_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L24_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L25_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L25_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L26_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L26_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L27_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L27_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L28_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L28_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L29_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L29_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L30_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L30_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L31_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L31_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L32_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L32_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L33_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L33_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L34_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L34_TX_PER_SEC%NVML_GPM_METRIC_NVLINK_L35_RX_PER_SEC%NVML_GPM_METRIC_NVLINK_L35_TX_PER_SEC!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_TXNVML_GPM_METRIC_NVLINK_L18_RXNVML_GPM_METRIC_NVLINK_L18_TXNVML_GPM_METRIC_NVLINK_L19_RXNVML_GPM_METRIC_NVLINK_L19_TXNVML_GPM_METRIC_NVLINK_L20_RXNVML_GPM_METRIC_NVLINK_L20_TXNVML_GPM_METRIC_NVLINK_L21_RXNVML_GPM_METRIC_NVLINK_L21_TXNVML_GPM_METRIC_NVLINK_L22_RXNVML_GPM_METRIC_NVLINK_L22_TXNVML_GPM_METRIC_NVLINK_L23_RXNVML_GPM_METRIC_NVLINK_L23_TXNVML_GPM_METRIC_NVLINK_L24_RXNVML_GPM_METRIC_NVLINK_L24_TXNVML_GPM_METRIC_NVLINK_L25_RXNVML_GPM_METRIC_NVLINK_L25_TXNVML_GPM_METRIC_NVLINK_L26_RXNVML_GPM_METRIC_NVLINK_L26_TXNVML_GPM_METRIC_NVLINK_L27_RXNVML_GPM_METRIC_NVLINK_L27_TXNVML_GPM_METRIC_NVLINK_L28_RXNVML_GPM_METRIC_NVLINK_L28_TXNVML_GPM_METRIC_NVLINK_L29_RXNVML_GPM_METRIC_NVLINK_L29_TXNVML_GPM_METRIC_NVLINK_L30_RXNVML_GPM_METRIC_NVLINK_L30_TXNVML_GPM_METRIC_NVLINK_L31_RXNVML_GPM_METRIC_NVLINK_L31_TXNVML_GPM_METRIC_NVLINK_L32_RXNVML_GPM_METRIC_NVLINK_L32_TXNVML_GPM_METRIC_NVLINK_L33_RXNVML_GPM_METRIC_NVLINK_L33_TXNVML_GPM_METRIC_NVLINK_L34_RXNVML_GPM_METRIC_NVLINK_L34_TXNVML_GPM_METRIC_NVLINK_L35_RXNVML_GPM_METRIC_NVLINK_L35_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_MEMORYNVML_POWER_SCOPE_GPU_BASENVML_POWER_SCOPE_COUNTr	  nvmlPowerValue_v2r	  r	  r
  r
  NVML_DEV_CAP_EGMr
  r
  r
  r
  r&
  r!
  r,
  r/
  r3
  r2
  r5
  rF
  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<
  r8
  rD
  r@
  rL
  rH
  rR
  rP
  "NVML_POWER_PROFILE_OPERATION_CLEAR NVML_POWER_PROFILE_OPERATION_SET.NVML_POWER_PROFILE_OPERATION_SET_AND_OVERWRITE NVML_POWER_PROFILE_OPERATION_MAX)nvmlWorkloadPowerProfileUpdateProfiles_v1rU
  rY
  r\
  r_
  rc
  re
  rh
  rk
  ro
  ru
  rr
  rx
  r{
  r~
  r
  '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_OFFSETr
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  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_ALLr
  r
  r
  r
  r
  r  r  r  <module>r     s9  @  $  
 	       !" !" !" !"!"!" !" !" !" !" !# !# !? !# !# !# !# !# !# % +, #+, #+, "+, "+, '+, (+, '+, #+,  "     %& %& !%& %& "%&   !  ! %& " %& "&' ##$       . "   !  !  !  !  #)  !" !" !" !" !"    !  !  !  !  !  !  ! (. %+. !+. "+. #+. #+/ $+/ #+/ &+/ (+/ !%+ "$% $%  $% $% !$%   "& "& "& "&           %&  %& "%&     #$ #$ #$ #$  #$                   '('( '( '( '( '( '( '( '( '( ') ') ') ') ') ') ') ') ') "') ') ') ') !') !') ') $') ') ') ') ') #'*   +, (+,     "#"# "## <= 9<= /<=   <= *<= +<=          ! %& "#$   !"                  #$    $& !%' "          !               "#                        &       
      '( $(L %$% !,- *$% "   "         !   &        ) ) ) !' .8 +-7 * ", ", ",   %/  %/ !%/ !%/ !%/ "%/ "%/ "% $(  $(  $( $( $( $( $( $%    !' '( '( "'( $'( "+, (/0 ,  % % %    02 '/1 /1 /1 &/1 $/1 /1 /1 /1 #/1 '/1 %/1 "/1 %/2 /1 /0 #/5f~/C #/2 (/3 +/3  '9 !&8 %0_ " &r
 
 $% #$  $% #$ #$ #$ #$ #$ #$ #% #% #% #% #% #% #% #% #% #% #% #% #% #% #% #% #% #% #%  $& #% #%  02 */1 */1 */1 */1 */1 *02 - 02 */1 */1 */1 */1 */1 *02 - 02 (/1 (/1 (/1 (/1 (/1 (/1 + 02 */1 */1 */1 */1 */1 *02 - )+ "(* "(* "(* "(* "(* "(* % )+ "(* "(* "(* "(* "(* "(* % -/ ,. ,. ",. #,. ',. #,. (,. )   (* $ (*  ')  ')  ')  ')  ')  ') $ !#  #% "$  #% +- ( 02 */1 */1 */1 */2 +/2 + 03 */2 */2 */2 */2 +/2 + 03 (/2 (/2 (/2 (/2 )/2 ) 03 */2 */2 */2 */2 +/2 + ), "(+ "(+ "(+ "(+ #(+ # ), "(+ "(+ "(+ "(+ #(+ # (+  '*  '*  '*  '* !'* ! ), %(+ %(+ $(+ $ #& "% "% "%  '* # -0 ) 14 *03 *03 *03 *03 *03 *03 *03 *03 *03 *03 +03 +03 -03 "03 $03 03 03 03 03 "03 &03 '03 03 03 03 )03 $03 %03 03  03 03 &03 "03 &03 !03 !03 &03 03 03 03 03 03 03 03 !03 '03 '03 &03 &03 03 := 5:= *;> %;> #;> $;> ";> %;> 0;> .;> #;> *;> +;> 4;> &;> 8;> 4;> -;> &;> &;>  ;> );> &;> &;> #;> *;> ,;> 0;> ;> ";> &;> %;> #;> ;> !;> %;>  ;> &;> &;> &;> &;> &;> &;> &;> &;> &;> &;> ';> ';> ';> ';> ';> 'BE BE BE +BE &BE 'BE 3BE 3BE =BE -BE /BE *BE ,BE 0BE +BE 6BE 1BE 3BE 7;X ,;] *;> 1;> 1;> 7;> %;> #! BE )BE +BE 2BE 1BE 'BE 5BE 3BE 8BE 8BE 6BE :BE ?BE ?BE =BE )BE )BE )BE )BE #BE "BE (BE  BE BE BE 1BE 1BE &BE &BE '* #&) &)  !     -. *-. ) #$ !"  ,- !+, (+, !+, &+, & nn          & ./ &./ #./ )./ +./ %./ &!( ,. &,.  ,. ,. ',. " ./ ./ ./ "./ ./ ./ $ 23 -23  23 $ 9: *9: 59: 29: *9: +9: %9: %9: -9:  9: +9; .9; ,9; " 45 145 /# *- *- *- $*-  *- (. %.1 ".1 ).1 *.1 !.8 # "# "# #)  *+ ')* &" %& "!" "   "# $% !&' #'( $!' #$  "#   )* &  )* &!" "# $ "# !" 39 057 257 2 &* "	y 	+)	 +)Z5
>2   !% 0' '		) 	*+2B) 2Bh* 0 
  * ) - / 	I 	./- .  * .' .(;  & !4     / , %8 "( ""+ " ", "I 
  "&0 & 0 ,       y ,#6 , 9 $ 0 "5 0 #- #+ 	E 	( / 	, 	 (* $ ) g(; g # Y!4 Y # Y!4 Y':  % !4   #6  ! &' !&' #6  ! "5    ,? 
-@ 
.A  #- 
+> 
,? .A  #-  3    	 3 	 34 23 %23 /23 -23 "23  1 
0 
': 
(; 
*=  ) 	 3 	': (; ': (; ': (; $7 %8 #6  %          @& @ 
>% >   P. P  O/ O .1 #-0 %-0 *-0 )-0 )-0 #$7 !4   O/ O  I+ I '(  &' &' ' `#6 ` & _$7 _  AB >KL HKN HCF @KN H8; 5*- '-0 *7: 4+. (14 .25 /,/ ))- &I!4 IU!4 UX/ XX 3 X
&0 &	i 	23 &8 &8 &8 &8 &8 &8 &8 &8 #&8  &8 "&8  &8 &8  &8 &8 (9*H)I*H)I +>)> +=	)=
 +I)I +H)H +C)C +N)N +K	)K +M
)M +K)K +H)H +K)K +I)I & -? 1C .1_ &,> ,> ,> ,> &,> &,> ),> (,> 2K2N3O2`3a 3R3R 3R	3R
 3Q3Q 3Y3Y 3Y3Y 3\3\ 3[	3[  0B 4F 14e )/A "/A "/A !/A )/A )/A ,/A +/A 2N2Q3R2c3d 3U3U 3U	3U
 3T3T 3\3\ 3\3\ 3_3_ 3^	3^ $+ $	I 	 !>? %7 "%7   %. "q-@ q $-  m+> m %. !o,? o$!4 $ $-  m+> m
 *) +$B	1 	!4 ) 
. 	2 	I  +, "*+ &*+ &*+ & /0 *.1 ! %& $% $% ./ (./ &./ &#6 / 
% $7 2 $7 &9 2 
U $7 
(; 
 3  " %8  ' (;  !* $7  & (;  !* 	&9 	 ( ,?  %. !(; 	': 	&9 $7 y ,     ), !), !), !), !), !), !), !), &), &), &+. %+. %+. %+. '+. '+. (+/ (-1 %-1 9 
Y  !+ g(; g&i 	 	89 -0 %-0 %-0 %-0 %-0 %-0 %-0 %-0 *-0 )-0 #.1 +-0 *y 

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