* [gentoo-commits] repo/proj/guru:dev commit in: sys-process/nvtop/, sys-process/nvtop/files/
@ 2020-06-13 15:28 Rui Huang
0 siblings, 0 replies; 2+ messages in thread
From: Rui Huang @ 2020-06-13 15:28 UTC (permalink / raw
To: gentoo-commits
commit: 30ae0e1985f7a2df19a95ccdad3c84662bb76601
Author: Huang Rui <vowstar <AT> gmail <DOT> com>
AuthorDate: Sat Jun 13 15:24:53 2020 +0000
Commit: Rui Huang <vowstar <AT> gmail <DOT> com>
CommitDate: Sat Jun 13 15:28:06 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=30ae0e19
sys-process/nvtop: new package
Nvtop stands for NVidia TOP, a (h)top like task monitor for NVIDIA GPUs. It can
handle multiple GPUs and print information about them in a htop familiar way.
Package-Manager: Portage-2.3.100, Repoman-2.3.22
Signed-off-by: Huang Rui <vowstar <AT> gmail.com>
sys-process/nvtop/Manifest | 1 +
sys-process/nvtop/files/nvtop-1.0.0-add-nvml.patch | 1020 ++++++++++++++++++++
.../nvtop/files/nvtop-1.0.0-fix-ncurses.patch | 162 ++++
sys-process/nvtop/metadata.xml | 18 +
sys-process/nvtop/nvtop-1.0.0.ebuild | 56 ++
5 files changed, 1257 insertions(+)
diff --git a/sys-process/nvtop/Manifest b/sys-process/nvtop/Manifest
new file mode 100644
index 0000000..a588775
--- /dev/null
+++ b/sys-process/nvtop/Manifest
@@ -0,0 +1 @@
+DIST nvtop-1.0.0.tar.gz 95427 BLAKE2B d54c166adb250222d2a0c848b64b62677e63845aeb4598dfb330661f5951c21043897c170abef8e9d86ad6c89a6792f1238c4dd8d86faeb4d098bf16b19c1beb SHA512 904daef1ef87a9730bda62fbea18766840bd3d38d2b51715b42c8429737519b71d3857dc342f5cd9fb66763f42ee296e57825ca6aa67d2d0accd2b8f1c7e894b
diff --git a/sys-process/nvtop/files/nvtop-1.0.0-add-nvml.patch b/sys-process/nvtop/files/nvtop-1.0.0-add-nvml.patch
new file mode 100644
index 0000000..a1c5cd1
--- /dev/null
+++ b/sys-process/nvtop/files/nvtop-1.0.0-add-nvml.patch
@@ -0,0 +1,1020 @@
+diff --git a/include/nvml.h b/include/nvml.h
+new file mode 100644
+index 0000000..ed7c3e0
+--- /dev/null
++++ b/include/nvml.h
+@@ -0,0 +1,1014 @@
++#ifndef __nvml_nvml_h__
++#define __nvml_nvml_h__
++#ifdef __cplusplus
++extern "C" {
++#endif
++#if defined _WINDOWS
++ #if !defined NVML_STATIC_IMPORT
++ #if defined NVML_LIB_EXPORT
++ #define DECLDIR __declspec(dllexport)
++ #else
++ #define DECLDIR __declspec(dllimport)
++ #endif
++ #else
++ #define DECLDIR
++ #endif
++#else
++ #define DECLDIR
++#endif
++#define NVML_API_VERSION 10
++#define NVML_API_VERSION_STR "10"
++#define nvmlInit nvmlInit_v2
++#define nvmlDeviceGetPciInfo nvmlDeviceGetPciInfo_v3
++#define nvmlDeviceGetCount nvmlDeviceGetCount_v2
++#define nvmlDeviceGetHandleByIndex nvmlDeviceGetHandleByIndex_v2
++#define nvmlDeviceGetHandleByPciBusId nvmlDeviceGetHandleByPciBusId_v2
++#define nvmlDeviceGetNvLinkRemotePciInfo nvmlDeviceGetNvLinkRemotePciInfo_v2
++#define nvmlDeviceRemoveGpu nvmlDeviceRemoveGpu_v2
++#define nvmlDeviceGetGridLicensableFeatures nvmlDeviceGetGridLicensableFeatures_v3
++#define NVML_VALUE_NOT_AVAILABLE (-1)
++typedef struct nvmlDevice_st* nvmlDevice_t;
++#define NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZE 32
++#define NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZE 16
++typedef struct nvmlPciInfo_st
++{
++ char busIdLegacy[NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZE];
++ unsigned int domain;
++ unsigned int bus;
++ unsigned int device;
++ unsigned int pciDeviceId;
++ unsigned int pciSubSystemId;
++ char busId[NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZE];
++} nvmlPciInfo_t;
++#define NVML_DEVICE_PCI_BUS_ID_LEGACY_FMT "%04X:%02X:%02X.0"
++#define NVML_DEVICE_PCI_BUS_ID_FMT "%08X:%02X:%02X.0"
++#define NVML_DEVICE_PCI_BUS_ID_FMT_ARGS(pciInfo) (pciInfo)->domain, \
++ (pciInfo)->bus, \
++ (pciInfo)->device
++typedef struct nvmlEccErrorCounts_st
++{
++ unsigned long long l1Cache;
++ unsigned long long l2Cache;
++ unsigned long long deviceMemory;
++ unsigned long long registerFile;
++} nvmlEccErrorCounts_t;
++typedef struct nvmlUtilization_st
++{
++ unsigned int gpu;
++ unsigned int memory;
++} nvmlUtilization_t;
++typedef struct nvmlMemory_st
++{
++ unsigned long long total;
++ unsigned long long free;
++ unsigned long long used;
++} nvmlMemory_t;
++typedef struct nvmlBAR1Memory_st
++{
++ unsigned long long bar1Total;
++ unsigned long long bar1Free;
++ unsigned long long bar1Used;
++}nvmlBAR1Memory_t;
++typedef struct nvmlProcessInfo_st
++{
++ unsigned int pid;
++ unsigned long long usedGpuMemory;
++} nvmlProcessInfo_t;
++typedef enum nvmlBridgeChipType_enum
++{
++ NVML_BRIDGE_CHIP_PLX = 0,
++ NVML_BRIDGE_CHIP_BRO4 = 1
++}nvmlBridgeChipType_t;
++#define NVML_NVLINK_MAX_LINKS 6
++typedef enum nvmlNvLinkUtilizationCountUnits_enum
++{
++ NVML_NVLINK_COUNTER_UNIT_CYCLES = 0,
++ NVML_NVLINK_COUNTER_UNIT_PACKETS = 1,
++ NVML_NVLINK_COUNTER_UNIT_BYTES = 2,
++ NVML_NVLINK_COUNTER_UNIT_RESERVED = 3,
++ NVML_NVLINK_COUNTER_UNIT_COUNT
++} nvmlNvLinkUtilizationCountUnits_t;
++typedef enum nvmlNvLinkUtilizationCountPktTypes_enum
++{
++ NVML_NVLINK_COUNTER_PKTFILTER_NOP = 0x1,
++ NVML_NVLINK_COUNTER_PKTFILTER_READ = 0x2,
++ NVML_NVLINK_COUNTER_PKTFILTER_WRITE = 0x4,
++ NVML_NVLINK_COUNTER_PKTFILTER_RATOM = 0x8,
++ NVML_NVLINK_COUNTER_PKTFILTER_NRATOM = 0x10,
++ NVML_NVLINK_COUNTER_PKTFILTER_FLUSH = 0x20,
++ NVML_NVLINK_COUNTER_PKTFILTER_RESPDATA = 0x40,
++ NVML_NVLINK_COUNTER_PKTFILTER_RESPNODATA = 0x80,
++ NVML_NVLINK_COUNTER_PKTFILTER_ALL = 0xFF
++} nvmlNvLinkUtilizationCountPktTypes_t;
++typedef struct nvmlNvLinkUtilizationControl_st
++{
++ nvmlNvLinkUtilizationCountUnits_t units;
++ nvmlNvLinkUtilizationCountPktTypes_t pktfilter;
++} nvmlNvLinkUtilizationControl_t;
++typedef enum nvmlNvLinkCapability_enum
++{
++ NVML_NVLINK_CAP_P2P_SUPPORTED = 0,
++ NVML_NVLINK_CAP_SYSMEM_ACCESS = 1,
++ NVML_NVLINK_CAP_P2P_ATOMICS = 2,
++ NVML_NVLINK_CAP_SYSMEM_ATOMICS= 3,
++ NVML_NVLINK_CAP_SLI_BRIDGE = 4,
++ NVML_NVLINK_CAP_VALID = 5,
++ NVML_NVLINK_CAP_COUNT
++} nvmlNvLinkCapability_t;
++typedef enum nvmlNvLinkErrorCounter_enum
++{
++ NVML_NVLINK_ERROR_DL_REPLAY = 0,
++ NVML_NVLINK_ERROR_DL_RECOVERY = 1,
++ NVML_NVLINK_ERROR_DL_CRC_FLIT = 2,
++ NVML_NVLINK_ERROR_DL_CRC_DATA = 3,
++ NVML_NVLINK_ERROR_COUNT
++} nvmlNvLinkErrorCounter_t;
++typedef enum nvmlGpuLevel_enum
++{
++ NVML_TOPOLOGY_INTERNAL = 0,
++ NVML_TOPOLOGY_SINGLE = 10,
++ NVML_TOPOLOGY_MULTIPLE = 20,
++ NVML_TOPOLOGY_HOSTBRIDGE = 30,
++ NVML_TOPOLOGY_NODE = 40,
++ NVML_TOPOLOGY_SYSTEM = 50,
++} nvmlGpuTopologyLevel_t;
++#define NVML_TOPOLOGY_CPU NVML_TOPOLOGY_NODE
++typedef enum nvmlGpuP2PStatus_enum
++{
++ NVML_P2P_STATUS_OK = 0,
++ NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED,
++ NVML_P2P_STATUS_GPU_NOT_SUPPORTED,
++ NVML_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED,
++ NVML_P2P_STATUS_DISABLED_BY_REGKEY,
++ NVML_P2P_STATUS_NOT_SUPPORTED,
++ NVML_P2P_STATUS_UNKNOWN
++} nvmlGpuP2PStatus_t;
++typedef enum nvmlGpuP2PCapsIndex_enum
++{
++ NVML_P2P_CAPS_INDEX_READ = 0,
++ NVML_P2P_CAPS_INDEX_WRITE,
++ NVML_P2P_CAPS_INDEX_NVLINK,
++ NVML_P2P_CAPS_INDEX_ATOMICS,
++ NVML_P2P_CAPS_INDEX_PROP,
++ NVML_P2P_CAPS_INDEX_UNKNOWN
++}nvmlGpuP2PCapsIndex_t;
++#define NVML_MAX_PHYSICAL_BRIDGE (128)
++typedef struct nvmlBridgeChipInfo_st
++{
++ nvmlBridgeChipType_t type;
++ unsigned int fwVersion;
++}nvmlBridgeChipInfo_t;
++typedef struct nvmlBridgeChipHierarchy_st
++{
++ unsigned char bridgeCount;
++ nvmlBridgeChipInfo_t bridgeChipInfo[NVML_MAX_PHYSICAL_BRIDGE];
++}nvmlBridgeChipHierarchy_t;
++typedef enum nvmlSamplingType_enum
++{
++ NVML_TOTAL_POWER_SAMPLES = 0,
++ NVML_GPU_UTILIZATION_SAMPLES = 1,
++ NVML_MEMORY_UTILIZATION_SAMPLES = 2,
++ NVML_ENC_UTILIZATION_SAMPLES = 3,
++ NVML_DEC_UTILIZATION_SAMPLES = 4,
++ NVML_PROCESSOR_CLK_SAMPLES = 5,
++ NVML_MEMORY_CLK_SAMPLES = 6,
++ NVML_SAMPLINGTYPE_COUNT
++}nvmlSamplingType_t;
++typedef enum nvmlPcieUtilCounter_enum
++{
++ NVML_PCIE_UTIL_TX_BYTES = 0,
++ NVML_PCIE_UTIL_RX_BYTES = 1,
++ NVML_PCIE_UTIL_COUNT
++} nvmlPcieUtilCounter_t;
++typedef enum nvmlValueType_enum
++{
++ NVML_VALUE_TYPE_DOUBLE = 0,
++ NVML_VALUE_TYPE_UNSIGNED_INT = 1,
++ NVML_VALUE_TYPE_UNSIGNED_LONG = 2,
++ NVML_VALUE_TYPE_UNSIGNED_LONG_LONG = 3,
++ NVML_VALUE_TYPE_SIGNED_LONG_LONG = 4,
++ NVML_VALUE_TYPE_COUNT
++}nvmlValueType_t;
++typedef union nvmlValue_st
++{
++ double dVal;
++ unsigned int uiVal;
++ unsigned long ulVal;
++ unsigned long long ullVal;
++ signed long long sllVal;
++}nvmlValue_t;
++typedef struct nvmlSample_st
++{
++ unsigned long long timeStamp;
++ nvmlValue_t sampleValue;
++}nvmlSample_t;
++typedef enum nvmlPerfPolicyType_enum
++{
++ NVML_PERF_POLICY_POWER = 0,
++ NVML_PERF_POLICY_THERMAL = 1,
++ NVML_PERF_POLICY_SYNC_BOOST = 2,
++ NVML_PERF_POLICY_BOARD_LIMIT = 3,
++ NVML_PERF_POLICY_LOW_UTILIZATION = 4,
++ NVML_PERF_POLICY_RELIABILITY = 5,
++ NVML_PERF_POLICY_TOTAL_APP_CLOCKS = 10,
++ NVML_PERF_POLICY_TOTAL_BASE_CLOCKS = 11,
++ NVML_PERF_POLICY_COUNT
++}nvmlPerfPolicyType_t;
++typedef struct nvmlViolationTime_st
++{
++ unsigned long long referenceTime;
++ unsigned long long violationTime;
++}nvmlViolationTime_t;
++typedef enum nvmlEnableState_enum
++{
++ NVML_FEATURE_DISABLED = 0,
++ NVML_FEATURE_ENABLED = 1
++} nvmlEnableState_t;
++#define nvmlFlagDefault 0x00
++#define nvmlFlagForce 0x01
++typedef enum nvmlBrandType_enum
++{
++ NVML_BRAND_UNKNOWN = 0,
++ NVML_BRAND_QUADRO = 1,
++ NVML_BRAND_TESLA = 2,
++ NVML_BRAND_NVS = 3,
++ NVML_BRAND_GRID = 4,
++ NVML_BRAND_GEFORCE = 5,
++ NVML_BRAND_TITAN = 6,
++ NVML_BRAND_COUNT
++} nvmlBrandType_t;
++typedef enum nvmlTemperatureThresholds_enum
++{
++ NVML_TEMPERATURE_THRESHOLD_SHUTDOWN = 0,
++ NVML_TEMPERATURE_THRESHOLD_SLOWDOWN = 1,
++ NVML_TEMPERATURE_THRESHOLD_MEM_MAX = 2,
++ NVML_TEMPERATURE_THRESHOLD_GPU_MAX = 3,
++ NVML_TEMPERATURE_THRESHOLD_COUNT
++} nvmlTemperatureThresholds_t;
++typedef enum nvmlTemperatureSensors_enum
++{
++ NVML_TEMPERATURE_GPU = 0,
++ NVML_TEMPERATURE_COUNT
++} nvmlTemperatureSensors_t;
++typedef enum nvmlComputeMode_enum
++{
++ NVML_COMPUTEMODE_DEFAULT = 0,
++ NVML_COMPUTEMODE_EXCLUSIVE_THREAD = 1,
++ NVML_COMPUTEMODE_PROHIBITED = 2,
++ NVML_COMPUTEMODE_EXCLUSIVE_PROCESS = 3,
++ NVML_COMPUTEMODE_COUNT
++} nvmlComputeMode_t;
++#define nvmlEccBitType_t nvmlMemoryErrorType_t
++#define NVML_SINGLE_BIT_ECC NVML_MEMORY_ERROR_TYPE_CORRECTED
++#define NVML_DOUBLE_BIT_ECC NVML_MEMORY_ERROR_TYPE_UNCORRECTED
++typedef enum nvmlMemoryErrorType_enum
++{
++ NVML_MEMORY_ERROR_TYPE_CORRECTED = 0,
++ NVML_MEMORY_ERROR_TYPE_UNCORRECTED = 1,
++ NVML_MEMORY_ERROR_TYPE_COUNT
++} nvmlMemoryErrorType_t;
++typedef enum nvmlEccCounterType_enum
++{
++ NVML_VOLATILE_ECC = 0,
++ NVML_AGGREGATE_ECC = 1,
++ NVML_ECC_COUNTER_TYPE_COUNT
++} nvmlEccCounterType_t;
++typedef enum nvmlClockType_enum
++{
++ NVML_CLOCK_GRAPHICS = 0,
++ NVML_CLOCK_SM = 1,
++ NVML_CLOCK_MEM = 2,
++ NVML_CLOCK_VIDEO = 3,
++ NVML_CLOCK_COUNT
++} nvmlClockType_t;
++typedef enum nvmlClockId_enum
++{
++ NVML_CLOCK_ID_CURRENT = 0,
++ NVML_CLOCK_ID_APP_CLOCK_TARGET = 1,
++ NVML_CLOCK_ID_APP_CLOCK_DEFAULT = 2,
++ NVML_CLOCK_ID_CUSTOMER_BOOST_MAX = 3,
++ NVML_CLOCK_ID_COUNT
++} nvmlClockId_t;
++typedef enum nvmlDriverModel_enum
++{
++ NVML_DRIVER_WDDM = 0,
++ NVML_DRIVER_WDM = 1
++} nvmlDriverModel_t;
++typedef enum nvmlPStates_enum
++{
++ NVML_PSTATE_0 = 0,
++ NVML_PSTATE_1 = 1,
++ NVML_PSTATE_2 = 2,
++ NVML_PSTATE_3 = 3,
++ NVML_PSTATE_4 = 4,
++ NVML_PSTATE_5 = 5,
++ NVML_PSTATE_6 = 6,
++ NVML_PSTATE_7 = 7,
++ NVML_PSTATE_8 = 8,
++ NVML_PSTATE_9 = 9,
++ NVML_PSTATE_10 = 10,
++ NVML_PSTATE_11 = 11,
++ NVML_PSTATE_12 = 12,
++ NVML_PSTATE_13 = 13,
++ NVML_PSTATE_14 = 14,
++ NVML_PSTATE_15 = 15,
++ NVML_PSTATE_UNKNOWN = 32
++} nvmlPstates_t;
++typedef enum nvmlGom_enum
++{
++ NVML_GOM_ALL_ON = 0,
++ NVML_GOM_COMPUTE = 1,
++ NVML_GOM_LOW_DP = 2
++} nvmlGpuOperationMode_t;
++typedef enum nvmlInforomObject_enum
++{
++ NVML_INFOROM_OEM = 0,
++ NVML_INFOROM_ECC = 1,
++ NVML_INFOROM_POWER = 2,
++ NVML_INFOROM_COUNT
++} nvmlInforomObject_t;
++typedef enum nvmlReturn_enum
++{
++ NVML_SUCCESS = 0,
++ NVML_ERROR_UNINITIALIZED = 1,
++ NVML_ERROR_INVALID_ARGUMENT = 2,
++ NVML_ERROR_NOT_SUPPORTED = 3,
++ NVML_ERROR_NO_PERMISSION = 4,
++ NVML_ERROR_ALREADY_INITIALIZED = 5,
++ NVML_ERROR_NOT_FOUND = 6,
++ NVML_ERROR_INSUFFICIENT_SIZE = 7,
++ NVML_ERROR_INSUFFICIENT_POWER = 8,
++ NVML_ERROR_DRIVER_NOT_LOADED = 9,
++ NVML_ERROR_TIMEOUT = 10,
++ NVML_ERROR_IRQ_ISSUE = 11,
++ NVML_ERROR_LIBRARY_NOT_FOUND = 12,
++ NVML_ERROR_FUNCTION_NOT_FOUND = 13,
++ NVML_ERROR_CORRUPTED_INFOROM = 14,
++ NVML_ERROR_GPU_IS_LOST = 15,
++ NVML_ERROR_RESET_REQUIRED = 16,
++ NVML_ERROR_OPERATING_SYSTEM = 17,
++ NVML_ERROR_LIB_RM_VERSION_MISMATCH = 18,
++ NVML_ERROR_IN_USE = 19,
++ NVML_ERROR_MEMORY = 20,
++ NVML_ERROR_NO_DATA = 21,
++ NVML_ERROR_VGPU_ECC_NOT_SUPPORTED = 22,
++ NVML_ERROR_UNKNOWN = 999
++} nvmlReturn_t;
++typedef enum nvmlMemoryLocation_enum
++{
++ NVML_MEMORY_LOCATION_L1_CACHE = 0,
++ NVML_MEMORY_LOCATION_L2_CACHE = 1,
++ NVML_MEMORY_LOCATION_DRAM = 2,
++ NVML_MEMORY_LOCATION_DEVICE_MEMORY = 2,
++ NVML_MEMORY_LOCATION_REGISTER_FILE = 3,
++ NVML_MEMORY_LOCATION_TEXTURE_MEMORY = 4,
++ NVML_MEMORY_LOCATION_TEXTURE_SHM = 5,
++ NVML_MEMORY_LOCATION_CBU = 6,
++ NVML_MEMORY_LOCATION_SRAM = 7,
++ NVML_MEMORY_LOCATION_COUNT
++} nvmlMemoryLocation_t;
++typedef enum nvmlPageRetirementCause_enum
++{
++ NVML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS = 0,
++ NVML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR = 1,
++ NVML_PAGE_RETIREMENT_CAUSE_COUNT
++} nvmlPageRetirementCause_t;
++typedef enum nvmlRestrictedAPI_enum
++{
++ NVML_RESTRICTED_API_SET_APPLICATION_CLOCKS = 0,
++ NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKS = 1,
++ NVML_RESTRICTED_API_COUNT
++} nvmlRestrictedAPI_t;
++typedef enum nvmlGpuVirtualizationMode {
++ NVML_GPU_VIRTUALIZATION_MODE_NONE = 0,
++ NVML_GPU_VIRTUALIZATION_MODE_PASSTHROUGH = 1,
++ NVML_GPU_VIRTUALIZATION_MODE_VGPU = 2,
++ NVML_GPU_VIRTUALIZATION_MODE_HOST_VGPU = 3,
++ NVML_GPU_VIRTUALIZATION_MODE_HOST_VSGA = 4,
++} nvmlGpuVirtualizationMode_t;
++typedef enum nvmlHostVgpuMode_enum
++{
++ NVML_HOST_VGPU_MODE_NON_SRIOV = 0,
++ NVML_HOST_VGPU_MODE_SRIOV = 1
++} nvmlHostVgpuMode_t;
++typedef enum nvmlVgpuVmIdType {
++ NVML_VGPU_VM_ID_DOMAIN_ID = 0,
++ NVML_VGPU_VM_ID_UUID = 1,
++} nvmlVgpuVmIdType_t;
++typedef enum nvmlVgpuGuestInfoState_enum
++{
++ NVML_VGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED = 0,
++ NVML_VGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZED = 1,
++} nvmlVgpuGuestInfoState_t;
++typedef enum {
++ NVML_GRID_LICENSE_FEATURE_CODE_VGPU = 1,
++ NVML_GRID_LICENSE_FEATURE_CODE_VWORKSTATION = 2
++} nvmlGridLicenseFeatureCode_t;
++#define NVML_GRID_LICENSE_BUFFER_SIZE 128
++#define NVML_VGPU_NAME_BUFFER_SIZE 64
++#define NVML_GRID_LICENSE_FEATURE_MAX_COUNT 3
++#define NVML_VGPU_VIRTUALIZATION_CAP_MIGRATION 0:0
++#define NVML_VGPU_VIRTUALIZATION_CAP_MIGRATION_NO 0x0
++#define NVML_VGPU_VIRTUALIZATION_CAP_MIGRATION_YES 0x1
++#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION 0:0
++#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION_NO 0x0
++#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION_YES 0x1
++typedef unsigned int nvmlVgpuTypeId_t;
++typedef unsigned int nvmlVgpuInstance_t;
++typedef struct nvmlVgpuInstanceUtilizationSample_st
++{
++ nvmlVgpuInstance_t vgpuInstance;
++ unsigned long long timeStamp;
++ nvmlValue_t smUtil;
++ nvmlValue_t memUtil;
++ nvmlValue_t encUtil;
++ nvmlValue_t decUtil;
++} nvmlVgpuInstanceUtilizationSample_t;
++typedef struct nvmlVgpuProcessUtilizationSample_st
++{
++ nvmlVgpuInstance_t vgpuInstance;
++ unsigned int pid;
++ char processName[NVML_VGPU_NAME_BUFFER_SIZE];
++ unsigned long long timeStamp;
++ unsigned int smUtil;
++ unsigned int memUtil;
++ unsigned int encUtil;
++ unsigned int decUtil;
++} nvmlVgpuProcessUtilizationSample_t;
++typedef struct nvmlProcessUtilizationSample_st
++{
++ unsigned int pid;
++ unsigned long long timeStamp;
++ unsigned int smUtil;
++ unsigned int memUtil;
++ unsigned int encUtil;
++ unsigned int decUtil;
++} nvmlProcessUtilizationSample_t;
++typedef struct nvmlGridLicensableFeature_st
++{
++ nvmlGridLicenseFeatureCode_t featureCode;
++ unsigned int featureState;
++ char licenseInfo[NVML_GRID_LICENSE_BUFFER_SIZE];
++ char productName[NVML_GRID_LICENSE_BUFFER_SIZE];
++ unsigned int featureEnabled;
++} nvmlGridLicensableFeature_t;
++typedef struct nvmlGridLicensableFeatures_st
++{
++ int isGridLicenseSupported;
++ unsigned int licensableFeaturesCount;
++ nvmlGridLicensableFeature_t gridLicensableFeatures[NVML_GRID_LICENSE_FEATURE_MAX_COUNT];
++} nvmlGridLicensableFeatures_t;
++#define NVML_FI_DEV_ECC_CURRENT 1
++#define NVML_FI_DEV_ECC_PENDING 2
++#define NVML_FI_DEV_ECC_SBE_VOL_TOTAL 3
++#define NVML_FI_DEV_ECC_DBE_VOL_TOTAL 4
++#define NVML_FI_DEV_ECC_SBE_AGG_TOTAL 5
++#define NVML_FI_DEV_ECC_DBE_AGG_TOTAL 6
++#define NVML_FI_DEV_ECC_SBE_VOL_L1 7
++#define NVML_FI_DEV_ECC_DBE_VOL_L1 8
++#define NVML_FI_DEV_ECC_SBE_VOL_L2 9
++#define NVML_FI_DEV_ECC_DBE_VOL_L2 10
++#define NVML_FI_DEV_ECC_SBE_VOL_DEV 11
++#define NVML_FI_DEV_ECC_DBE_VOL_DEV 12
++#define NVML_FI_DEV_ECC_SBE_VOL_REG 13
++#define NVML_FI_DEV_ECC_DBE_VOL_REG 14
++#define NVML_FI_DEV_ECC_SBE_VOL_TEX 15
++#define NVML_FI_DEV_ECC_DBE_VOL_TEX 16
++#define NVML_FI_DEV_ECC_DBE_VOL_CBU 17
++#define NVML_FI_DEV_ECC_SBE_AGG_L1 18
++#define NVML_FI_DEV_ECC_DBE_AGG_L1 19
++#define NVML_FI_DEV_ECC_SBE_AGG_L2 20
++#define NVML_FI_DEV_ECC_DBE_AGG_L2 21
++#define NVML_FI_DEV_ECC_SBE_AGG_DEV 22
++#define NVML_FI_DEV_ECC_DBE_AGG_DEV 23
++#define NVML_FI_DEV_ECC_SBE_AGG_REG 24
++#define NVML_FI_DEV_ECC_DBE_AGG_REG 25
++#define NVML_FI_DEV_ECC_SBE_AGG_TEX 26
++#define NVML_FI_DEV_ECC_DBE_AGG_TEX 27
++#define NVML_FI_DEV_ECC_DBE_AGG_CBU 28
++#define NVML_FI_DEV_RETIRED_SBE 29
++#define NVML_FI_DEV_RETIRED_DBE 30
++#define NVML_FI_DEV_RETIRED_PENDING 31
++#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L0 32
++#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L1 33
++#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L2 34
++#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L3 35
++#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L4 36
++#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L5 37
++#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_TOTAL 38
++#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L0 39
++#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L1 40
++#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L2 41
++#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L3 42
++#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L4 43
++#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L5 44
++#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_TOTAL 45
++#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L0 46
++#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L1 47
++#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L2 48
++#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L3 49
++#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L4 50
++#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L5 51
++#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL 52
++#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L0 53
++#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L1 54
++#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L2 55
++#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L3 56
++#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L4 57
++#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L5 58
++#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_TOTAL 59
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L0 60
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L1 61
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L2 62
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L3 63
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L4 64
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L5 65
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_TOTAL 66
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L0 67
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L1 68
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L2 69
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L3 70
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L4 71
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L5 72
++#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_TOTAL 73
++#define NVML_FI_DEV_PERF_POLICY_POWER 74
++#define NVML_FI_DEV_PERF_POLICY_THERMAL 75
++#define NVML_FI_DEV_PERF_POLICY_SYNC_BOOST 76
++#define NVML_FI_DEV_PERF_POLICY_BOARD_LIMIT 77
++#define NVML_FI_DEV_PERF_POLICY_LOW_UTILIZATION 78
++#define NVML_FI_DEV_PERF_POLICY_RELIABILITY 79
++#define NVML_FI_DEV_PERF_POLICY_TOTAL_APP_CLOCKS 80
++#define NVML_FI_DEV_PERF_POLICY_TOTAL_BASE_CLOCKS 81
++#define NVML_FI_DEV_MEMORY_TEMP 82
++#define NVML_FI_DEV_TOTAL_ENERGY_CONSUMPTION 83
++#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L0 84
++#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L1 85
++#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L2 86
++#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L3 87
++#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L4 88
++#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L5 89
++#define NVML_FI_DEV_NVLINK_SPEED_MBPS_COMMON 90
++#define NVML_FI_DEV_NVLINK_LINK_COUNT 91
++#define NVML_FI_DEV_RETIRED_PENDING_SBE 92
++#define NVML_FI_DEV_RETIRED_PENDING_DBE 93
++#define NVML_FI_DEV_PCIE_REPLAY_COUNTER 94
++#define NVML_FI_DEV_PCIE_REPLAY_ROLLOVER_COUNTER 95
++#define NVML_FI_MAX 96
++typedef struct nvmlFieldValue_st
++{
++ unsigned int fieldId;
++ unsigned int unused;
++ long long timestamp;
++ long long latencyUsec;
++ nvmlValueType_t valueType;
++ nvmlReturn_t nvmlReturn;
++ nvmlValue_t value;
++} nvmlFieldValue_t;
++typedef struct nvmlUnit_st* nvmlUnit_t;
++typedef struct nvmlHwbcEntry_st
++{
++ unsigned int hwbcId;
++ char firmwareVersion[32];
++} nvmlHwbcEntry_t;
++typedef enum nvmlFanState_enum
++{
++ NVML_FAN_NORMAL = 0,
++ NVML_FAN_FAILED = 1
++} nvmlFanState_t;
++typedef enum nvmlLedColor_enum
++{
++ NVML_LED_COLOR_GREEN = 0,
++ NVML_LED_COLOR_AMBER = 1
++} nvmlLedColor_t;
++typedef struct nvmlLedState_st
++{
++ char cause[256];
++ nvmlLedColor_t color;
++} nvmlLedState_t;
++typedef struct nvmlUnitInfo_st
++{
++ char name[96];
++ char id[96];
++ char serial[96];
++ char firmwareVersion[96];
++} nvmlUnitInfo_t;
++typedef struct nvmlPSUInfo_st
++{
++ char state[256];
++ unsigned int current;
++ unsigned int voltage;
++ unsigned int power;
++} nvmlPSUInfo_t;
++typedef struct nvmlUnitFanInfo_st
++{
++ unsigned int speed;
++ nvmlFanState_t state;
++} nvmlUnitFanInfo_t;
++typedef struct nvmlUnitFanSpeeds_st
++{
++ nvmlUnitFanInfo_t fans[24];
++ unsigned int count;
++} nvmlUnitFanSpeeds_t;
++typedef struct nvmlEventSet_st* nvmlEventSet_t;
++#define nvmlEventTypeSingleBitEccError 0x0000000000000001LL
++#define nvmlEventTypeDoubleBitEccError 0x0000000000000002LL
++#define nvmlEventTypePState 0x0000000000000004LL
++#define nvmlEventTypeXidCriticalError 0x0000000000000008LL
++#define nvmlEventTypeClock 0x0000000000000010LL
++#define nvmlEventTypeNone 0x0000000000000000LL
++#define nvmlEventTypeAll (nvmlEventTypeNone \
++ | nvmlEventTypeSingleBitEccError \
++ | nvmlEventTypeDoubleBitEccError \
++ | nvmlEventTypePState \
++ | nvmlEventTypeClock \
++ | nvmlEventTypeXidCriticalError \
++ )
++typedef struct nvmlEventData_st
++{
++ nvmlDevice_t device;
++ unsigned long long eventType;
++ unsigned long long eventData;
++} nvmlEventData_t;
++#define nvmlClocksThrottleReasonGpuIdle 0x0000000000000001LL
++#define nvmlClocksThrottleReasonApplicationsClocksSetting 0x0000000000000002LL
++#define nvmlClocksThrottleReasonUserDefinedClocks nvmlClocksThrottleReasonApplicationsClocksSetting
++#define nvmlClocksThrottleReasonSwPowerCap 0x0000000000000004LL
++#define nvmlClocksThrottleReasonHwSlowdown 0x0000000000000008LL
++#define nvmlClocksThrottleReasonSyncBoost 0x0000000000000010LL
++#define nvmlClocksThrottleReasonSwThermalSlowdown 0x0000000000000020LL
++#define nvmlClocksThrottleReasonHwThermalSlowdown 0x0000000000000040LL
++#define nvmlClocksThrottleReasonHwPowerBrakeSlowdown 0x0000000000000080LL
++#define nvmlClocksThrottleReasonDisplayClockSetting 0x0000000000000100LL
++#define nvmlClocksThrottleReasonNone 0x0000000000000000LL
++#define nvmlClocksThrottleReasonAll (nvmlClocksThrottleReasonNone \
++ | nvmlClocksThrottleReasonGpuIdle \
++ | nvmlClocksThrottleReasonApplicationsClocksSetting \
++ | nvmlClocksThrottleReasonSwPowerCap \
++ | nvmlClocksThrottleReasonHwSlowdown \
++ | nvmlClocksThrottleReasonSyncBoost \
++ | nvmlClocksThrottleReasonSwThermalSlowdown \
++ | nvmlClocksThrottleReasonHwThermalSlowdown \
++ | nvmlClocksThrottleReasonHwPowerBrakeSlowdown \
++ | nvmlClocksThrottleReasonDisplayClockSetting \
++)
++typedef struct nvmlAccountingStats_st {
++ unsigned int gpuUtilization;
++ unsigned int memoryUtilization;
++ unsigned long long maxMemoryUsage;
++ unsigned long long time;
++ unsigned long long startTime;
++ unsigned int isRunning;
++ unsigned int reserved[5];
++} nvmlAccountingStats_t;
++typedef enum nvmlEncoderQueryType_enum
++{
++ NVML_ENCODER_QUERY_H264 = 0,
++ NVML_ENCODER_QUERY_HEVC = 1,
++}nvmlEncoderType_t;
++typedef struct nvmlEncoderSessionInfo_st
++{
++ unsigned int sessionId;
++ unsigned int pid;
++ nvmlVgpuInstance_t vgpuInstance;
++ nvmlEncoderType_t codecType;
++ unsigned int hResolution;
++ unsigned int vResolution;
++ unsigned int averageFps;
++ unsigned int averageLatency;
++}nvmlEncoderSessionInfo_t;
++typedef enum nvmlFBCSessionType_enum
++{
++ NVML_FBC_SESSION_TYPE_UNKNOWN = 0,
++ NVML_FBC_SESSION_TYPE_TOSYS,
++ NVML_FBC_SESSION_TYPE_CUDA,
++ NVML_FBC_SESSION_TYPE_VID,
++ NVML_FBC_SESSION_TYPE_HWENC,
++} nvmlFBCSessionType_t;
++typedef struct nvmlFBCStats_st
++{
++ unsigned int sessionsCount;
++ unsigned int averageFPS;
++ unsigned int averageLatency;
++} nvmlFBCStats_t;
++#define NVML_NVFBC_SESSION_FLAG_DIFFMAP_ENABLED 0x00000001
++#define NVML_NVFBC_SESSION_FLAG_CLASSIFICATIONMAP_ENABLED 0x00000002
++#define NVML_NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_NO_WAIT 0x00000004
++#define NVML_NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_INFINITE 0x00000008
++#define NVML_NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_TIMEOUT 0x00000010
++typedef struct nvmlFBCSessionInfo_st
++{
++ unsigned int sessionId;
++ unsigned int pid;
++ nvmlVgpuInstance_t vgpuInstance;
++ unsigned int displayOrdinal;
++ nvmlFBCSessionType_t sessionType;
++ unsigned int sessionFlags;
++ unsigned int hMaxResolution;
++ unsigned int vMaxResolution;
++ unsigned int hResolution;
++ unsigned int vResolution;
++ unsigned int averageFPS;
++ unsigned int averageLatency;
++} nvmlFBCSessionInfo_t;
++typedef enum nvmlDetachGpuState_enum
++{
++ NVML_DETACH_GPU_KEEP = 0,
++ NVML_DETACH_GPU_REMOVE,
++} nvmlDetachGpuState_t;
++typedef enum nvmlPcieLinkState_enum
++{
++ NVML_PCIE_LINK_KEEP = 0,
++ NVML_PCIE_LINK_SHUT_DOWN,
++} nvmlPcieLinkState_t;
++#define NVML_INIT_FLAG_NO_GPUS 1
++#define NVML_INIT_FLAG_NO_ATTACH 2
++nvmlReturn_t DECLDIR nvmlInit(void);
++nvmlReturn_t DECLDIR nvmlInitWithFlags(unsigned int flags);
++nvmlReturn_t DECLDIR nvmlShutdown(void);
++const DECLDIR char* nvmlErrorString(nvmlReturn_t result);
++#define NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZE 16
++#define NVML_DEVICE_UUID_BUFFER_SIZE 80
++#define NVML_DEVICE_PART_NUMBER_BUFFER_SIZE 80
++#define NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE 80
++#define NVML_SYSTEM_NVML_VERSION_BUFFER_SIZE 80
++#define NVML_DEVICE_NAME_BUFFER_SIZE 64
++#define NVML_DEVICE_SERIAL_BUFFER_SIZE 30
++#define NVML_DEVICE_VBIOS_VERSION_BUFFER_SIZE 32
++nvmlReturn_t DECLDIR nvmlSystemGetDriverVersion(char *version, unsigned int length);
++nvmlReturn_t DECLDIR nvmlSystemGetNVMLVersion(char *version, unsigned int length);
++nvmlReturn_t DECLDIR nvmlSystemGetCudaDriverVersion(int *cudaDriverVersion);
++nvmlReturn_t DECLDIR nvmlSystemGetCudaDriverVersion_v2(int *cudaDriverVersion);
++#define NVML_CUDA_DRIVER_VERSION_MAJOR(v) ((v)/1000)
++#define NVML_CUDA_DRIVER_VERSION_MINOR(v) (((v)%1000)/10)
++nvmlReturn_t DECLDIR nvmlSystemGetProcessName(unsigned int pid, char *name, unsigned int length);
++nvmlReturn_t DECLDIR nvmlUnitGetCount(unsigned int *unitCount);
++nvmlReturn_t DECLDIR nvmlUnitGetHandleByIndex(unsigned int index, nvmlUnit_t *unit);
++nvmlReturn_t DECLDIR nvmlUnitGetUnitInfo(nvmlUnit_t unit, nvmlUnitInfo_t *info);
++nvmlReturn_t DECLDIR nvmlUnitGetLedState(nvmlUnit_t unit, nvmlLedState_t *state);
++nvmlReturn_t DECLDIR nvmlUnitGetPsuInfo(nvmlUnit_t unit, nvmlPSUInfo_t *psu);
++nvmlReturn_t DECLDIR nvmlUnitGetTemperature(nvmlUnit_t unit, unsigned int type, unsigned int *temp);
++nvmlReturn_t DECLDIR nvmlUnitGetFanSpeedInfo(nvmlUnit_t unit, nvmlUnitFanSpeeds_t *fanSpeeds);
++nvmlReturn_t DECLDIR nvmlUnitGetDevices(nvmlUnit_t unit, unsigned int *deviceCount, nvmlDevice_t *devices);
++nvmlReturn_t DECLDIR nvmlSystemGetHicVersion(unsigned int *hwbcCount, nvmlHwbcEntry_t *hwbcEntries);
++nvmlReturn_t DECLDIR nvmlDeviceGetCount(unsigned int *deviceCount);
++nvmlReturn_t DECLDIR nvmlDeviceGetHandleByIndex(unsigned int index, nvmlDevice_t *device);
++nvmlReturn_t DECLDIR nvmlDeviceGetHandleBySerial(const char *serial, nvmlDevice_t *device);
++nvmlReturn_t DECLDIR nvmlDeviceGetHandleByUUID(const char *uuid, nvmlDevice_t *device);
++nvmlReturn_t DECLDIR nvmlDeviceGetHandleByPciBusId(const char *pciBusId, nvmlDevice_t *device);
++nvmlReturn_t DECLDIR nvmlDeviceGetName(nvmlDevice_t device, char *name, unsigned int length);
++nvmlReturn_t DECLDIR nvmlDeviceGetBrand(nvmlDevice_t device, nvmlBrandType_t *type);
++nvmlReturn_t DECLDIR nvmlDeviceGetIndex(nvmlDevice_t device, unsigned int *index);
++nvmlReturn_t DECLDIR nvmlDeviceGetSerial(nvmlDevice_t device, char *serial, unsigned int length);
++nvmlReturn_t DECLDIR nvmlDeviceGetCpuAffinity(nvmlDevice_t device, unsigned int cpuSetSize, unsigned long *cpuSet);
++nvmlReturn_t DECLDIR nvmlDeviceSetCpuAffinity(nvmlDevice_t device);
++nvmlReturn_t DECLDIR nvmlDeviceClearCpuAffinity(nvmlDevice_t device);
++nvmlReturn_t DECLDIR nvmlDeviceGetTopologyCommonAncestor(nvmlDevice_t device1, nvmlDevice_t device2, nvmlGpuTopologyLevel_t *pathInfo);
++nvmlReturn_t DECLDIR nvmlDeviceGetTopologyNearestGpus(nvmlDevice_t device, nvmlGpuTopologyLevel_t level, unsigned int *count, nvmlDevice_t *deviceArray);
++nvmlReturn_t DECLDIR nvmlSystemGetTopologyGpuSet(unsigned int cpuNumber, unsigned int *count, nvmlDevice_t *deviceArray);
++nvmlReturn_t DECLDIR nvmlDeviceGetP2PStatus(nvmlDevice_t device1, nvmlDevice_t device2, nvmlGpuP2PCapsIndex_t p2pIndex,nvmlGpuP2PStatus_t *p2pStatus);
++nvmlReturn_t DECLDIR nvmlDeviceGetUUID(nvmlDevice_t device, char *uuid, unsigned int length);
++nvmlReturn_t DECLDIR nvmlDeviceGetMinorNumber(nvmlDevice_t device, unsigned int *minorNumber);
++nvmlReturn_t DECLDIR nvmlDeviceGetBoardPartNumber(nvmlDevice_t device, char* partNumber, unsigned int length);
++nvmlReturn_t DECLDIR nvmlDeviceGetInforomVersion(nvmlDevice_t device, nvmlInforomObject_t object, char *version, unsigned int length);
++nvmlReturn_t DECLDIR nvmlDeviceGetInforomImageVersion(nvmlDevice_t device, char *version, unsigned int length);
++nvmlReturn_t DECLDIR nvmlDeviceGetInforomConfigurationChecksum(nvmlDevice_t device, unsigned int *checksum);
++nvmlReturn_t DECLDIR nvmlDeviceValidateInforom(nvmlDevice_t device);
++nvmlReturn_t DECLDIR nvmlDeviceGetDisplayMode(nvmlDevice_t device, nvmlEnableState_t *display);
++nvmlReturn_t DECLDIR nvmlDeviceGetDisplayActive(nvmlDevice_t device, nvmlEnableState_t *isActive);
++nvmlReturn_t DECLDIR nvmlDeviceGetPersistenceMode(nvmlDevice_t device, nvmlEnableState_t *mode);
++nvmlReturn_t DECLDIR nvmlDeviceGetPciInfo(nvmlDevice_t device, nvmlPciInfo_t *pci);
++nvmlReturn_t DECLDIR nvmlDeviceGetMaxPcieLinkGeneration(nvmlDevice_t device, unsigned int *maxLinkGen);
++nvmlReturn_t DECLDIR nvmlDeviceGetMaxPcieLinkWidth(nvmlDevice_t device, unsigned int *maxLinkWidth);
++nvmlReturn_t DECLDIR nvmlDeviceGetCurrPcieLinkGeneration(nvmlDevice_t device, unsigned int *currLinkGen);
++nvmlReturn_t DECLDIR nvmlDeviceGetCurrPcieLinkWidth(nvmlDevice_t device, unsigned int *currLinkWidth);
++nvmlReturn_t DECLDIR nvmlDeviceGetPcieThroughput(nvmlDevice_t device, nvmlPcieUtilCounter_t counter, unsigned int *value);
++nvmlReturn_t DECLDIR nvmlDeviceGetPcieReplayCounter(nvmlDevice_t device, unsigned int *value);
++nvmlReturn_t DECLDIR nvmlDeviceGetClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int *clock);
++nvmlReturn_t DECLDIR nvmlDeviceGetMaxClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int *clock);
++nvmlReturn_t DECLDIR nvmlDeviceGetApplicationsClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int *clockMHz);
++nvmlReturn_t DECLDIR nvmlDeviceGetDefaultApplicationsClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int *clockMHz);
++nvmlReturn_t DECLDIR nvmlDeviceResetApplicationsClocks(nvmlDevice_t device);
++nvmlReturn_t DECLDIR nvmlDeviceGetClock(nvmlDevice_t device, nvmlClockType_t clockType, nvmlClockId_t clockId, unsigned int *clockMHz);
++nvmlReturn_t DECLDIR nvmlDeviceGetMaxCustomerBoostClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int *clockMHz);
++nvmlReturn_t DECLDIR nvmlDeviceGetSupportedMemoryClocks(nvmlDevice_t device, unsigned int *count, unsigned int *clocksMHz);
++nvmlReturn_t DECLDIR nvmlDeviceGetSupportedGraphicsClocks(nvmlDevice_t device, unsigned int memoryClockMHz, unsigned int *count, unsigned int *clocksMHz);
++nvmlReturn_t DECLDIR nvmlDeviceGetAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t *isEnabled, nvmlEnableState_t *defaultIsEnabled);
++nvmlReturn_t DECLDIR nvmlDeviceSetAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t enabled);
++nvmlReturn_t DECLDIR nvmlDeviceSetDefaultAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t enabled, unsigned int flags);
++nvmlReturn_t DECLDIR nvmlDeviceGetFanSpeed(nvmlDevice_t device, unsigned int *speed);
++nvmlReturn_t DECLDIR nvmlDeviceGetFanSpeed_v2(nvmlDevice_t device, unsigned int fan, unsigned int * speed);
++nvmlReturn_t DECLDIR nvmlDeviceGetTemperature(nvmlDevice_t device, nvmlTemperatureSensors_t sensorType, unsigned int *temp);
++nvmlReturn_t DECLDIR nvmlDeviceGetTemperatureThreshold(nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, unsigned int *temp);
++nvmlReturn_t DECLDIR nvmlDeviceGetPerformanceState(nvmlDevice_t device, nvmlPstates_t *pState);
++nvmlReturn_t DECLDIR nvmlDeviceGetCurrentClocksThrottleReasons(nvmlDevice_t device, unsigned long long *clocksThrottleReasons);
++nvmlReturn_t DECLDIR nvmlDeviceGetSupportedClocksThrottleReasons(nvmlDevice_t device, unsigned long long *supportedClocksThrottleReasons);
++nvmlReturn_t DECLDIR nvmlDeviceGetPowerState(nvmlDevice_t device, nvmlPstates_t *pState);
++nvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementMode(nvmlDevice_t device, nvmlEnableState_t *mode);
++nvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementLimit(nvmlDevice_t device, unsigned int *limit);
++nvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementLimitConstraints(nvmlDevice_t device, unsigned int *minLimit, unsigned int *maxLimit);
++nvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementDefaultLimit(nvmlDevice_t device, unsigned int *defaultLimit);
++nvmlReturn_t DECLDIR nvmlDeviceGetPowerUsage(nvmlDevice_t device, unsigned int *power);
++nvmlReturn_t DECLDIR nvmlDeviceGetTotalEnergyConsumption(nvmlDevice_t device, unsigned long long *energy);
++nvmlReturn_t DECLDIR nvmlDeviceGetEnforcedPowerLimit(nvmlDevice_t device, unsigned int *limit);
++nvmlReturn_t DECLDIR nvmlDeviceGetGpuOperationMode(nvmlDevice_t device, nvmlGpuOperationMode_t *current, nvmlGpuOperationMode_t *pending);
++nvmlReturn_t DECLDIR nvmlDeviceGetMemoryInfo(nvmlDevice_t device, nvmlMemory_t *memory);
++nvmlReturn_t DECLDIR nvmlDeviceGetComputeMode(nvmlDevice_t device, nvmlComputeMode_t *mode);
++nvmlReturn_t DECLDIR nvmlDeviceGetCudaComputeCapability(nvmlDevice_t device, int *major, int *minor);
++nvmlReturn_t DECLDIR nvmlDeviceGetEccMode(nvmlDevice_t device, nvmlEnableState_t *current, nvmlEnableState_t *pending);
++nvmlReturn_t DECLDIR nvmlDeviceGetBoardId(nvmlDevice_t device, unsigned int *boardId);
++nvmlReturn_t DECLDIR nvmlDeviceGetMultiGpuBoard(nvmlDevice_t device, unsigned int *multiGpuBool);
++nvmlReturn_t DECLDIR nvmlDeviceGetTotalEccErrors(nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, unsigned long long *eccCounts);
++nvmlReturn_t DECLDIR nvmlDeviceGetDetailedEccErrors(nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, nvmlEccErrorCounts_t *eccCounts);
++nvmlReturn_t DECLDIR nvmlDeviceGetMemoryErrorCounter(nvmlDevice_t device, nvmlMemoryErrorType_t errorType,
++ nvmlEccCounterType_t counterType,
++ nvmlMemoryLocation_t locationType, unsigned long long *count);
++nvmlReturn_t DECLDIR nvmlDeviceGetUtilizationRates(nvmlDevice_t device, nvmlUtilization_t *utilization);
++nvmlReturn_t DECLDIR nvmlDeviceGetEncoderUtilization(nvmlDevice_t device, unsigned int *utilization, unsigned int *samplingPeriodUs);
++nvmlReturn_t DECLDIR nvmlDeviceGetEncoderCapacity (nvmlDevice_t device, nvmlEncoderType_t encoderQueryType, unsigned int *encoderCapacity);
++nvmlReturn_t DECLDIR nvmlDeviceGetEncoderStats (nvmlDevice_t device, unsigned int *sessionCount,
++ unsigned int *averageFps, unsigned int *averageLatency);
++nvmlReturn_t DECLDIR nvmlDeviceGetEncoderSessions(nvmlDevice_t device, unsigned int *sessionCount, nvmlEncoderSessionInfo_t *sessionInfos);
++nvmlReturn_t DECLDIR nvmlDeviceGetDecoderUtilization(nvmlDevice_t device, unsigned int *utilization, unsigned int *samplingPeriodUs);
++nvmlReturn_t DECLDIR nvmlDeviceGetFBCStats(nvmlDevice_t device, nvmlFBCStats_t *fbcStats);
++nvmlReturn_t DECLDIR nvmlDeviceGetFBCSessions(nvmlDevice_t device, unsigned int *sessionCount, nvmlFBCSessionInfo_t *sessionInfo);
++nvmlReturn_t DECLDIR nvmlDeviceGetDriverModel(nvmlDevice_t device, nvmlDriverModel_t *current, nvmlDriverModel_t *pending);
++nvmlReturn_t DECLDIR nvmlDeviceGetVbiosVersion(nvmlDevice_t device, char *version, unsigned int length);
++nvmlReturn_t DECLDIR nvmlDeviceGetBridgeChipInfo(nvmlDevice_t device, nvmlBridgeChipHierarchy_t *bridgeHierarchy);
++nvmlReturn_t DECLDIR nvmlDeviceGetComputeRunningProcesses(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_t *infos);
++nvmlReturn_t DECLDIR nvmlDeviceGetGraphicsRunningProcesses(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_t *infos);
++nvmlReturn_t DECLDIR nvmlDeviceOnSameBoard(nvmlDevice_t device1, nvmlDevice_t device2, int *onSameBoard);
++nvmlReturn_t DECLDIR nvmlDeviceGetAPIRestriction(nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t *isRestricted);
++nvmlReturn_t DECLDIR nvmlDeviceGetSamples(nvmlDevice_t device, nvmlSamplingType_t type, unsigned long long lastSeenTimeStamp,
++ nvmlValueType_t *sampleValType, unsigned int *sampleCount, nvmlSample_t *samples);
++nvmlReturn_t DECLDIR nvmlDeviceGetBAR1MemoryInfo(nvmlDevice_t device, nvmlBAR1Memory_t *bar1Memory);
++nvmlReturn_t DECLDIR nvmlDeviceGetViolationStatus(nvmlDevice_t device, nvmlPerfPolicyType_t perfPolicyType, nvmlViolationTime_t *violTime);
++nvmlReturn_t DECLDIR nvmlDeviceGetAccountingMode(nvmlDevice_t device, nvmlEnableState_t *mode);
++nvmlReturn_t DECLDIR nvmlDeviceGetAccountingStats(nvmlDevice_t device, unsigned int pid, nvmlAccountingStats_t *stats);
++nvmlReturn_t DECLDIR nvmlDeviceGetAccountingPids(nvmlDevice_t device, unsigned int *count, unsigned int *pids);
++nvmlReturn_t DECLDIR nvmlDeviceGetAccountingBufferSize(nvmlDevice_t device, unsigned int *bufferSize);
++nvmlReturn_t DECLDIR nvmlDeviceGetRetiredPages(nvmlDevice_t device, nvmlPageRetirementCause_t cause,
++ unsigned int *pageCount, unsigned long long *addresses);
++nvmlReturn_t DECLDIR nvmlDeviceGetRetiredPages_v2(nvmlDevice_t device, nvmlPageRetirementCause_t cause,
++ unsigned int *pageCount, unsigned long long *addresses, unsigned long long *timestamps);
++nvmlReturn_t DECLDIR nvmlDeviceGetRetiredPagesPendingStatus(nvmlDevice_t device, nvmlEnableState_t *isPending);
++nvmlReturn_t DECLDIR nvmlUnitSetLedState(nvmlUnit_t unit, nvmlLedColor_t color);
++nvmlReturn_t DECLDIR nvmlDeviceSetPersistenceMode(nvmlDevice_t device, nvmlEnableState_t mode);
++nvmlReturn_t DECLDIR nvmlDeviceSetComputeMode(nvmlDevice_t device, nvmlComputeMode_t mode);
++nvmlReturn_t DECLDIR nvmlDeviceSetEccMode(nvmlDevice_t device, nvmlEnableState_t ecc);
++nvmlReturn_t DECLDIR nvmlDeviceClearEccErrorCounts(nvmlDevice_t device, nvmlEccCounterType_t counterType);
++nvmlReturn_t DECLDIR nvmlDeviceSetDriverModel(nvmlDevice_t device, nvmlDriverModel_t driverModel, unsigned int flags);
++nvmlReturn_t DECLDIR nvmlDeviceSetGpuLockedClocks(nvmlDevice_t device, unsigned int minGpuClockMHz, unsigned int maxGpuClockMHz);
++nvmlReturn_t DECLDIR nvmlDeviceResetGpuLockedClocks(nvmlDevice_t device);
++nvmlReturn_t DECLDIR nvmlDeviceSetApplicationsClocks(nvmlDevice_t device, unsigned int memClockMHz, unsigned int graphicsClockMHz);
++nvmlReturn_t DECLDIR nvmlDeviceSetPowerManagementLimit(nvmlDevice_t device, unsigned int limit);
++nvmlReturn_t DECLDIR nvmlDeviceSetGpuOperationMode(nvmlDevice_t device, nvmlGpuOperationMode_t mode);
++nvmlReturn_t DECLDIR nvmlDeviceSetAPIRestriction(nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t isRestricted);
++nvmlReturn_t DECLDIR nvmlDeviceSetAccountingMode(nvmlDevice_t device, nvmlEnableState_t mode);
++nvmlReturn_t DECLDIR nvmlDeviceClearAccountingPids(nvmlDevice_t device);
++nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkState(nvmlDevice_t device, unsigned int link, nvmlEnableState_t *isActive);
++nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkVersion(nvmlDevice_t device, unsigned int link, unsigned int *version);
++nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkCapability(nvmlDevice_t device, unsigned int link,
++ nvmlNvLinkCapability_t capability, unsigned int *capResult);
++nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkRemotePciInfo(nvmlDevice_t device, unsigned int link, nvmlPciInfo_t *pci);
++nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkErrorCounter(nvmlDevice_t device, unsigned int link,
++ nvmlNvLinkErrorCounter_t counter, unsigned long long *counterValue);
++nvmlReturn_t DECLDIR nvmlDeviceResetNvLinkErrorCounters(nvmlDevice_t device, unsigned int link);
++nvmlReturn_t DECLDIR nvmlDeviceSetNvLinkUtilizationControl(nvmlDevice_t device, unsigned int link, unsigned int counter,
++ nvmlNvLinkUtilizationControl_t *control, unsigned int reset);
++nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkUtilizationControl(nvmlDevice_t device, unsigned int link, unsigned int counter,
++ nvmlNvLinkUtilizationControl_t *control);
++nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkUtilizationCounter(nvmlDevice_t device, unsigned int link, unsigned int counter,
++ unsigned long long *rxcounter, unsigned long long *txcounter);
++nvmlReturn_t DECLDIR nvmlDeviceFreezeNvLinkUtilizationCounter (nvmlDevice_t device, unsigned int link,
++ unsigned int counter, nvmlEnableState_t freeze);
++nvmlReturn_t DECLDIR nvmlDeviceResetNvLinkUtilizationCounter (nvmlDevice_t device, unsigned int link, unsigned int counter);
++nvmlReturn_t DECLDIR nvmlEventSetCreate(nvmlEventSet_t *set);
++nvmlReturn_t DECLDIR nvmlDeviceRegisterEvents(nvmlDevice_t device, unsigned long long eventTypes, nvmlEventSet_t set);
++nvmlReturn_t DECLDIR nvmlDeviceGetSupportedEventTypes(nvmlDevice_t device, unsigned long long *eventTypes);
++nvmlReturn_t DECLDIR nvmlEventSetWait(nvmlEventSet_t set, nvmlEventData_t * data, unsigned int timeoutms);
++nvmlReturn_t DECLDIR nvmlEventSetFree(nvmlEventSet_t set);
++nvmlReturn_t DECLDIR nvmlDeviceModifyDrainState (nvmlPciInfo_t *pciInfo, nvmlEnableState_t newState);
++nvmlReturn_t DECLDIR nvmlDeviceQueryDrainState (nvmlPciInfo_t *pciInfo, nvmlEnableState_t *currentState);
++nvmlReturn_t DECLDIR nvmlDeviceRemoveGpu (nvmlPciInfo_t *pciInfo, nvmlDetachGpuState_t gpuState, nvmlPcieLinkState_t linkState);
++nvmlReturn_t DECLDIR nvmlDeviceDiscoverGpus (nvmlPciInfo_t *pciInfo);
++nvmlReturn_t DECLDIR nvmlDeviceGetFieldValues(nvmlDevice_t device, int valuesCount, nvmlFieldValue_t *values);
++nvmlReturn_t DECLDIR nvmlDeviceGetVirtualizationMode(nvmlDevice_t device, nvmlGpuVirtualizationMode_t *pVirtualMode);
++nvmlReturn_t DECLDIR nvmlDeviceGetHostVgpuMode(nvmlDevice_t device, nvmlHostVgpuMode_t *pHostVgpuMode);
++nvmlReturn_t DECLDIR nvmlDeviceSetVirtualizationMode(nvmlDevice_t device, nvmlGpuVirtualizationMode_t virtualMode);
++nvmlReturn_t DECLDIR nvmlDeviceGetGridLicensableFeatures(nvmlDevice_t device, nvmlGridLicensableFeatures_t *pGridLicensableFeatures);
++nvmlReturn_t DECLDIR nvmlDeviceGetProcessUtilization(nvmlDevice_t device, nvmlProcessUtilizationSample_t *utilization,
++ unsigned int *processSamplesCount, unsigned long long lastSeenTimeStamp);
++nvmlReturn_t DECLDIR nvmlDeviceGetSupportedVgpus(nvmlDevice_t device, unsigned int *vgpuCount, nvmlVgpuTypeId_t *vgpuTypeIds);
++nvmlReturn_t DECLDIR nvmlDeviceGetCreatableVgpus(nvmlDevice_t device, unsigned int *vgpuCount, nvmlVgpuTypeId_t *vgpuTypeIds);
++nvmlReturn_t DECLDIR nvmlVgpuTypeGetClass(nvmlVgpuTypeId_t vgpuTypeId, char *vgpuTypeClass, unsigned int *size);
++nvmlReturn_t DECLDIR nvmlVgpuTypeGetName(nvmlVgpuTypeId_t vgpuTypeId, char *vgpuTypeName, unsigned int *size);
++nvmlReturn_t DECLDIR nvmlVgpuTypeGetDeviceID(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long *deviceID, unsigned long long *subsystemID);
++nvmlReturn_t DECLDIR nvmlVgpuTypeGetFramebufferSize(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long *fbSize);
++nvmlReturn_t DECLDIR nvmlVgpuTypeGetNumDisplayHeads(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *numDisplayHeads);
++nvmlReturn_t DECLDIR nvmlVgpuTypeGetResolution(nvmlVgpuTypeId_t vgpuTypeId, unsigned int displayIndex, unsigned int *xdim, unsigned int *ydim);
++nvmlReturn_t DECLDIR nvmlVgpuTypeGetLicense(nvmlVgpuTypeId_t vgpuTypeId, char *vgpuTypeLicenseString, unsigned int size);
++nvmlReturn_t DECLDIR nvmlVgpuTypeGetFrameRateLimit(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *frameRateLimit);
++nvmlReturn_t DECLDIR nvmlVgpuTypeGetMaxInstances(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, unsigned int *vgpuInstanceCount);
++nvmlReturn_t DECLDIR nvmlVgpuTypeGetMaxInstancesPerVm(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *vgpuInstanceCountPerVm);
++nvmlReturn_t DECLDIR nvmlDeviceGetActiveVgpus(nvmlDevice_t device, unsigned int *vgpuCount, nvmlVgpuInstance_t *vgpuInstances);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetVmID(nvmlVgpuInstance_t vgpuInstance, char *vmId, unsigned int size, nvmlVgpuVmIdType_t *vmIdType);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetUUID(nvmlVgpuInstance_t vgpuInstance, char *uuid, unsigned int size);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetVmDriverVersion(nvmlVgpuInstance_t vgpuInstance, char* version, unsigned int length);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetFbUsage(nvmlVgpuInstance_t vgpuInstance, unsigned long long *fbUsage);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetLicenseStatus(nvmlVgpuInstance_t vgpuInstance, unsigned int *licensed);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetType(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuTypeId_t *vgpuTypeId);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetFrameRateLimit(nvmlVgpuInstance_t vgpuInstance, unsigned int *frameRateLimit);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetEccMode(nvmlVgpuInstance_t vgpuInstance, nvmlEnableState_t *eccMode);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetEncoderCapacity(nvmlVgpuInstance_t vgpuInstance, unsigned int *encoderCapacity);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceSetEncoderCapacity(nvmlVgpuInstance_t vgpuInstance, unsigned int encoderCapacity);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetEncoderStats(nvmlVgpuInstance_t vgpuInstance, unsigned int *sessionCount,
++ unsigned int *averageFps, unsigned int *averageLatency);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetEncoderSessions(nvmlVgpuInstance_t vgpuInstance, unsigned int *sessionCount, nvmlEncoderSessionInfo_t *sessionInfo);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetFBCStats(nvmlVgpuInstance_t vgpuInstance, nvmlFBCStats_t *fbcStats);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetFBCSessions(nvmlVgpuInstance_t vgpuInstance, unsigned int *sessionCount, nvmlFBCSessionInfo_t *sessionInfo);
++typedef struct nvmlVgpuVersion_st
++{
++ unsigned int minVersion;
++ unsigned int maxVersion;
++} nvmlVgpuVersion_t;
++typedef struct nvmlVgpuMetadata_st
++{
++ unsigned int version;
++ unsigned int revision;
++ nvmlVgpuGuestInfoState_t guestInfoState;
++ char guestDriverVersion[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE];
++ char hostDriverVersion[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE];
++ unsigned int reserved[6];
++ unsigned int vgpuVirtualizationCaps;
++ unsigned int guestVgpuVersion;
++ unsigned int opaqueDataSize;
++ char opaqueData[4];
++} nvmlVgpuMetadata_t;
++typedef struct nvmlVgpuPgpuMetadata_st
++{
++ unsigned int version;
++ unsigned int revision;
++ char hostDriverVersion[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE];
++ unsigned int pgpuVirtualizationCaps;
++ unsigned int reserved[5];
++ nvmlVgpuVersion_t hostSupportedVgpuRange;
++ unsigned int opaqueDataSize;
++ char opaqueData[4];
++} nvmlVgpuPgpuMetadata_t;
++typedef enum nvmlVgpuVmCompatibility_enum
++{
++ NVML_VGPU_VM_COMPATIBILITY_NONE = 0x0,
++ NVML_VGPU_VM_COMPATIBILITY_COLD = 0x1,
++ NVML_VGPU_VM_COMPATIBILITY_HIBERNATE = 0x2,
++ NVML_VGPU_VM_COMPATIBILITY_SLEEP = 0x4,
++ NVML_VGPU_VM_COMPATIBILITY_LIVE = 0x8,
++} nvmlVgpuVmCompatibility_t;
++typedef enum nvmlVgpuPgpuCompatibilityLimitCode_enum
++{
++ NVML_VGPU_COMPATIBILITY_LIMIT_NONE = 0x0,
++ NVML_VGPU_COMPATIBILITY_LIMIT_HOST_DRIVER = 0x1,
++ NVML_VGPU_COMPATIBILITY_LIMIT_GUEST_DRIVER = 0x2,
++ NVML_VGPU_COMPATIBILITY_LIMIT_GPU = 0x4,
++ NVML_VGPU_COMPATIBILITY_LIMIT_OTHER = 0x80000000,
++} nvmlVgpuPgpuCompatibilityLimitCode_t;
++typedef struct nvmlVgpuPgpuCompatibility_st
++{
++ nvmlVgpuVmCompatibility_t vgpuVmCompatibility;
++ nvmlVgpuPgpuCompatibilityLimitCode_t compatibilityLimitCode;
++} nvmlVgpuPgpuCompatibility_t;
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetMetadata(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuMetadata_t *vgpuMetadata, unsigned int *bufferSize);
++nvmlReturn_t DECLDIR nvmlDeviceGetVgpuMetadata(nvmlDevice_t device, nvmlVgpuPgpuMetadata_t *pgpuMetadata, unsigned int *bufferSize);
++nvmlReturn_t DECLDIR nvmlGetVgpuCompatibility(nvmlVgpuMetadata_t *vgpuMetadata, nvmlVgpuPgpuMetadata_t *pgpuMetadata, nvmlVgpuPgpuCompatibility_t *compatibilityInfo);
++nvmlReturn_t DECLDIR nvmlDeviceGetPgpuMetadataString(nvmlDevice_t device, char *pgpuMetadata, unsigned int *bufferSize);
++nvmlReturn_t DECLDIR nvmlGetVgpuVersion(nvmlVgpuVersion_t *supported, nvmlVgpuVersion_t *current);
++nvmlReturn_t DECLDIR nvmlSetVgpuVersion(nvmlVgpuVersion_t *vgpuVersion);
++nvmlReturn_t DECLDIR nvmlDeviceGetVgpuUtilization(nvmlDevice_t device, unsigned long long lastSeenTimeStamp,
++ nvmlValueType_t *sampleValType, unsigned int *vgpuInstanceSamplesCount,
++ nvmlVgpuInstanceUtilizationSample_t *utilizationSamples);
++nvmlReturn_t DECLDIR nvmlDeviceGetVgpuProcessUtilization(nvmlDevice_t device, unsigned long long lastSeenTimeStamp,
++ unsigned int *vgpuProcessSamplesCount,
++ nvmlVgpuProcessUtilizationSample_t *utilizationSamples);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetAccountingMode(nvmlVgpuInstance_t vgpuInstance, nvmlEnableState_t *mode);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetAccountingPids(nvmlVgpuInstance_t vgpuInstance, unsigned int *count, unsigned int *pids);
++nvmlReturn_t DECLDIR nvmlVgpuInstanceGetAccountingStats(nvmlVgpuInstance_t vgpuInstance, unsigned int pid, nvmlAccountingStats_t *stats);
++typedef struct nvmlBlacklistDeviceInfo_st
++{
++ nvmlPciInfo_t pciInfo;
++ char uuid[NVML_DEVICE_UUID_BUFFER_SIZE];
++} nvmlBlacklistDeviceInfo_t;
++nvmlReturn_t DECLDIR nvmlGetBlacklistDeviceCount(unsigned int *deviceCount);
++nvmlReturn_t DECLDIR nvmlGetBlacklistDeviceInfoByIndex(unsigned int index, nvmlBlacklistDeviceInfo_t *info);
++#if defined(__NVML_API_VERSION_INTERNAL)
++#undef nvmlDeviceGetGridLicensableFeatures
++#undef nvmlDeviceRemoveGpu
++#undef nvmlDeviceGetNvLinkRemotePciInfo
++#undef nvmlDeviceGetPciInfo
++#undef nvmlDeviceGetCount
++#undef nvmlDeviceGetHandleByIndex
++#undef nvmlDeviceGetHandleByPciBusId
++#undef nvmlInit
++#endif
++#ifdef __cplusplus
++}
++#endif
++#endif
diff --git a/sys-process/nvtop/files/nvtop-1.0.0-fix-ncurses.patch b/sys-process/nvtop/files/nvtop-1.0.0-fix-ncurses.patch
new file mode 100644
index 0000000..cc0fc9b
--- /dev/null
+++ b/sys-process/nvtop/files/nvtop-1.0.0-fix-ncurses.patch
@@ -0,0 +1,162 @@
+diff --git a/cmake/modules/FindCurses.cmake b/cmake/modules/FindCurses.cmake
+index 1002813..1ce7131 100644
+--- a/cmake/modules/FindCurses.cmake
++++ b/cmake/modules/FindCurses.cmake
+@@ -1,46 +1,49 @@
+ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ # file Copyright.txt or https://cmake.org/licensing for details.
+
+-#.rst:
+-# FindCurses
+-# ----------
+-#
+-# Find the curses or ncurses include file and library.
+-#
+-# Result Variables
+-# ^^^^^^^^^^^^^^^^
+-#
+-# This module defines the following variables:
+-#
+-# ``CURSES_FOUND``
+-# True if Curses is found.
+-# ``CURSES_INCLUDE_DIRS``
+-# The include directories needed to use Curses.
+-# ``CURSES_LIBRARIES``
+-# The libraries needed to use Curses.
+-# ``CURSES_HAVE_CURSES_H``
+-# True if curses.h is available.
+-# ``CURSES_HAVE_NCURSES_H``
+-# True if ncurses.h is available.
+-# ``CURSES_HAVE_NCURSES_NCURSES_H``
+-# True if ``ncurses/ncurses.h`` is available.
+-# ``CURSES_HAVE_NCURSES_CURSES_H``
+-# True if ``ncurses/curses.h`` is available.
+-#
+-# Set ``CURSES_NEED_NCURSES`` to ``TRUE`` before the
+-# ``find_package(Curses)`` call if NCurses functionality is required.
+-# Set ``CURSES_NEED_WIDE`` to ``TRUE`` before the
+-# ``find_package(Curses)`` call if unicode functionality is required.
+-#
+-# Backward Compatibility
+-# ^^^^^^^^^^^^^^^^^^^^^^
+-#
+-# The following variable are provided for backward compatibility:
+-#
+-# ``CURSES_INCLUDE_DIR``
+-# Path to Curses include. Use ``CURSES_INCLUDE_DIRS`` instead.
+-# ``CURSES_LIBRARY``
+-# Path to Curses library. Use ``CURSES_LIBRARIES`` instead.
++#[=======================================================================[.rst:
++FindCurses
++----------
++
++Find the curses or ncurses include file and library.
++
++Result Variables
++^^^^^^^^^^^^^^^^
++
++This module defines the following variables:
++
++``CURSES_FOUND``
++ True if Curses is found.
++``CURSES_INCLUDE_DIRS``
++ The include directories needed to use Curses.
++``CURSES_LIBRARIES``
++ The libraries needed to use Curses.
++``CURSES_CFLAGS``
++ Parameters which ought be given to C/C++ compilers when using Curses.
++``CURSES_HAVE_CURSES_H``
++ True if curses.h is available.
++``CURSES_HAVE_NCURSES_H``
++ True if ncurses.h is available.
++``CURSES_HAVE_NCURSES_NCURSES_H``
++ True if ``ncurses/ncurses.h`` is available.
++``CURSES_HAVE_NCURSES_CURSES_H``
++ True if ``ncurses/curses.h`` is available.
++
++Set ``CURSES_NEED_NCURSES`` to ``TRUE`` before the
++``find_package(Curses)`` call if NCurses functionality is required.
++Set ``CURSES_NEED_WIDE`` to ``TRUE`` before the
++``find_package(Curses)`` call if unicode functionality is required.
++
++Backward Compatibility
++^^^^^^^^^^^^^^^^^^^^^^
++
++The following variable are provided for backward compatibility:
++
++``CURSES_INCLUDE_DIR``
++ Path to Curses include. Use ``CURSES_INCLUDE_DIRS`` instead.
++``CURSES_LIBRARY``
++ Path to Curses library. Use ``CURSES_LIBRARIES`` instead.
++#]=======================================================================]
+
+ include(CheckLibraryExists)
+
+@@ -55,7 +58,7 @@ else()
+ set(CURSES_NEED_NCURSES TRUE)
+ endif()
+
+-find_library(CURSES_CURSES_LIBRARY NAMES curses )
++find_library(CURSES_CURSES_LIBRARY NAMES curses)
+
+ find_library(CURSES_NCURSES_LIBRARY NAMES "${NCURSES_LIBRARY_NAME}" )
+ set(CURSES_USE_NCURSES FALSE)
+@@ -117,7 +120,7 @@ if(CURSES_USE_NCURSES)
+ if(CURSES_NCURSES_INCLUDE_PATH)
+ if (CURSES_NEED_WIDE)
+ find_path(CURSES_INCLUDE_PATH
+- NAMES ncursesw/ncurses.h ncursesw/curses.h
++ NAMES ncursesw/ncurses.h ncursesw/curses.h ncursesw.h cursesw.h
+ PATHS ${CURSES_NCURSES_INCLUDE_PATH}
+ NO_DEFAULT_PATH
+ )
+@@ -131,16 +134,18 @@ if(CURSES_USE_NCURSES)
+ endif()
+
+ if (CURSES_NEED_WIDE)
++ set(CURSES_TINFO_LIBRARY_NAME tinfow)
+ find_path(CURSES_INCLUDE_PATH
+- NAMES ncursesw/ncurses.h ncursesw/curses.h
++ NAMES ncursesw/ncurses.h ncursesw/curses.h ncursesw.h cursesw.h
+ HINTS "${_cursesParentDir}/include"
+ )
+ else()
++ set(CURSES_TINFO_LIBRARY_NAME tinfo)
+ find_path(CURSES_INCLUDE_PATH
+ NAMES ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h
+ HINTS "${_cursesParentDir}/include"
+ )
+- endif()
++ endif()
+
+ # Previous versions of FindCurses provided these values.
+ if(NOT DEFINED CURSES_LIBRARY)
+@@ -150,8 +155,8 @@ if(CURSES_USE_NCURSES)
+ CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}"
+ cbreak "" CURSES_NCURSES_HAS_CBREAK)
+ if(NOT CURSES_NCURSES_HAS_CBREAK)
+- find_library(CURSES_EXTRA_LIBRARY tinfo HINTS "${_cursesLibDir}")
+- find_library(CURSES_EXTRA_LIBRARY tinfo )
++ find_library(CURSES_EXTRA_LIBRARY "${CURSES_TINFO_LIBRARY_NAME}" HINTS "${_cursesLibDir}")
++ find_library(CURSES_EXTRA_LIBRARY "${CURSES_TINFO_LIBRARY_NAME}" )
+ endif()
+ else()
+ get_filename_component(_cursesLibDir "${CURSES_CURSES_LIBRARY}" PATH)
+@@ -237,10 +242,16 @@ if(CURSES_FORM_LIBRARY)
+ set(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_FORM_LIBRARY})
+ endif()
+
+-# Provide the *_INCLUDE_DIRS result.
++# Provide the *_INCLUDE_DIRS and *_CFLAGS results.
+ set(CURSES_INCLUDE_DIRS ${CURSES_INCLUDE_PATH})
+ set(CURSES_INCLUDE_DIR ${CURSES_INCLUDE_PATH}) # compatibility
+
++find_package(PkgConfig QUIET)
++if(PKG_CONFIG_FOUND)
++ pkg_check_modules(NCURSES QUIET ${NCURSES_LIBRARY_NAME})
++ set(CURSES_CFLAGS ${NCURSES_CFLAGS_OTHER})
++endif()
++
+ include(FindPackageHandleStandardArgs)
+ FIND_PACKAGE_HANDLE_STANDARD_ARGS(Curses DEFAULT_MSG
+ CURSES_LIBRARY CURSES_INCLUDE_PATH)
diff --git a/sys-process/nvtop/metadata.xml b/sys-process/nvtop/metadata.xml
new file mode 100644
index 0000000..7e64f7c
--- /dev/null
+++ b/sys-process/nvtop/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>vowstar@gmail.com</email>
+ <name>Huang Rui</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">Syllo/nvtop</remote-id>
+ </upstream>
+ <longdescription lang="en">
+ Nvtop stands for NVidia TOP, a (h)top like task monitor for NVIDIA GPUs.
+ It can handle multiple GPUs and print information about them in a htop
+ familiar way. Some fields are shown as N/A: Ask NVIDIA for better support
+ of your hardware! Compatibility issues: Does not work with nouveau driver
+ stack and older NVIDIA GPU for the time being.
+ </longdescription>
+</pkgmetadata>
diff --git a/sys-process/nvtop/nvtop-1.0.0.ebuild b/sys-process/nvtop/nvtop-1.0.0.ebuild
new file mode 100644
index 0000000..5d7ced8
--- /dev/null
+++ b/sys-process/nvtop/nvtop-1.0.0.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake-utils
+
+DESCRIPTION="NVIDIA GPUs htop like monitoring tool"
+HOMEPAGE="https://github.com/Syllo/nvtop"
+
+if [[ ${PV} == "9999" ]] ; then
+ EGIT_REPO_URI="https://github.com/Syllo/${PN}.git"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/Syllo/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="GPL-3"
+SLOT="0"
+
+IUSE="unicode debug"
+
+RDEPEND="
+ sys-libs/ncurses:0=[unicode?]
+ x11-drivers/nvidia-drivers
+"
+
+DEPEND="${RDEPEND}"
+
+BDEPEND="
+ virtual/pkgconfig
+"
+
+BUILD_DIR="${WORKDIR}/build"
+
+CMAKE_CONF="
+ !debug? ( -DCMAKE_BUILD_TYPE=Release )
+ debug? ( -DCMAKE_BUILD_TYPE=Debug )
+ unicode? ( -DCURSES_NEED_WIDE=TRUE )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.0.0-add-nvml.patch
+ "${FILESDIR}"/${PN}-1.0.0-fix-ncurses.patch
+)
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr"
+ -DNVML_INCLUDE_DIRS="${S}/include"
+ ${CMAKE_CONF}
+ )
+
+ cmake-utils_src_configure
+}
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [gentoo-commits] repo/proj/guru:dev commit in: sys-process/nvtop/, sys-process/nvtop/files/
@ 2020-12-04 19:21 Rui Huang
0 siblings, 0 replies; 2+ messages in thread
From: Rui Huang @ 2020-12-04 19:21 UTC (permalink / raw
To: gentoo-commits
commit: 56fd265a2378171fe7039fa93b98f0c4b162b9b6
Author: Huang Rui <vowstar <AT> gmail <DOT> com>
AuthorDate: Fri Dec 4 19:20:27 2020 +0000
Commit: Rui Huang <vowstar <AT> gmail <DOT> com>
CommitDate: Fri Dec 4 19:21:07 2020 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=56fd265a
sys-process/nvtop: drop 1.0.0
Package-Manager: Portage-3.0.11, Repoman-3.0.2
Signed-off-by: Huang Rui <vowstar <AT> gmail.com>
sys-process/nvtop/Manifest | 1 -
sys-process/nvtop/files/nvtop-1.0.0-add-nvml.patch | 1020 --------------------
.../nvtop/files/nvtop-1.0.0-fix-ncurses.patch | 162 ----
sys-process/nvtop/nvtop-1.0.0.ebuild | 53 -
4 files changed, 1236 deletions(-)
diff --git a/sys-process/nvtop/Manifest b/sys-process/nvtop/Manifest
index ddb1b057..4b81771c 100644
--- a/sys-process/nvtop/Manifest
+++ b/sys-process/nvtop/Manifest
@@ -1,3 +1,2 @@
DIST nvidia-settings-455.38.tar.bz2 1057087 BLAKE2B 81a287aecd2d0e788b0fe581c3dd10aa0f1fff19746b04a426a2ce9c7fa9dd9492cc5162c6bcd42496735c1b11482c3d9409aba5ec297e69afc19ddf11b1907c SHA512 56f5684ad3258c5449d747894a441aaef17403fc5406a3d61e0d7ffd983e908e3f909dc933b57dd9c98a47c4be7205c62157ce7097bf3937b3a8145e77fb354d
-DIST nvtop-1.0.0.tar.gz 95427 BLAKE2B d54c166adb250222d2a0c848b64b62677e63845aeb4598dfb330661f5951c21043897c170abef8e9d86ad6c89a6792f1238c4dd8d86faeb4d098bf16b19c1beb SHA512 904daef1ef87a9730bda62fbea18766840bd3d38d2b51715b42c8429737519b71d3857dc342f5cd9fb66763f42ee296e57825ca6aa67d2d0accd2b8f1c7e894b
DIST nvtop-1.1.0.tar.gz 96768 BLAKE2B eb99a7abd4794c3e3a8458c07d3ac634ef287ad2daaf6f47de950d987cd1ad781733268bcf559383771e573a764e52115b4f0a7008eb0ad9b4569db462002f36 SHA512 f3f6ed4858bc7dcc974df0f22107df6c21935b5f0ed52b2dc946c0dc00ac707adbfe1546a805fa997b8689f05ee7624b454e27d7df67a3035a708976ccf0030a
diff --git a/sys-process/nvtop/files/nvtop-1.0.0-add-nvml.patch b/sys-process/nvtop/files/nvtop-1.0.0-add-nvml.patch
deleted file mode 100644
index a1c5cd1a..00000000
--- a/sys-process/nvtop/files/nvtop-1.0.0-add-nvml.patch
+++ /dev/null
@@ -1,1020 +0,0 @@
-diff --git a/include/nvml.h b/include/nvml.h
-new file mode 100644
-index 0000000..ed7c3e0
---- /dev/null
-+++ b/include/nvml.h
-@@ -0,0 +1,1014 @@
-+#ifndef __nvml_nvml_h__
-+#define __nvml_nvml_h__
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+#if defined _WINDOWS
-+ #if !defined NVML_STATIC_IMPORT
-+ #if defined NVML_LIB_EXPORT
-+ #define DECLDIR __declspec(dllexport)
-+ #else
-+ #define DECLDIR __declspec(dllimport)
-+ #endif
-+ #else
-+ #define DECLDIR
-+ #endif
-+#else
-+ #define DECLDIR
-+#endif
-+#define NVML_API_VERSION 10
-+#define NVML_API_VERSION_STR "10"
-+#define nvmlInit nvmlInit_v2
-+#define nvmlDeviceGetPciInfo nvmlDeviceGetPciInfo_v3
-+#define nvmlDeviceGetCount nvmlDeviceGetCount_v2
-+#define nvmlDeviceGetHandleByIndex nvmlDeviceGetHandleByIndex_v2
-+#define nvmlDeviceGetHandleByPciBusId nvmlDeviceGetHandleByPciBusId_v2
-+#define nvmlDeviceGetNvLinkRemotePciInfo nvmlDeviceGetNvLinkRemotePciInfo_v2
-+#define nvmlDeviceRemoveGpu nvmlDeviceRemoveGpu_v2
-+#define nvmlDeviceGetGridLicensableFeatures nvmlDeviceGetGridLicensableFeatures_v3
-+#define NVML_VALUE_NOT_AVAILABLE (-1)
-+typedef struct nvmlDevice_st* nvmlDevice_t;
-+#define NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZE 32
-+#define NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZE 16
-+typedef struct nvmlPciInfo_st
-+{
-+ char busIdLegacy[NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZE];
-+ unsigned int domain;
-+ unsigned int bus;
-+ unsigned int device;
-+ unsigned int pciDeviceId;
-+ unsigned int pciSubSystemId;
-+ char busId[NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZE];
-+} nvmlPciInfo_t;
-+#define NVML_DEVICE_PCI_BUS_ID_LEGACY_FMT "%04X:%02X:%02X.0"
-+#define NVML_DEVICE_PCI_BUS_ID_FMT "%08X:%02X:%02X.0"
-+#define NVML_DEVICE_PCI_BUS_ID_FMT_ARGS(pciInfo) (pciInfo)->domain, \
-+ (pciInfo)->bus, \
-+ (pciInfo)->device
-+typedef struct nvmlEccErrorCounts_st
-+{
-+ unsigned long long l1Cache;
-+ unsigned long long l2Cache;
-+ unsigned long long deviceMemory;
-+ unsigned long long registerFile;
-+} nvmlEccErrorCounts_t;
-+typedef struct nvmlUtilization_st
-+{
-+ unsigned int gpu;
-+ unsigned int memory;
-+} nvmlUtilization_t;
-+typedef struct nvmlMemory_st
-+{
-+ unsigned long long total;
-+ unsigned long long free;
-+ unsigned long long used;
-+} nvmlMemory_t;
-+typedef struct nvmlBAR1Memory_st
-+{
-+ unsigned long long bar1Total;
-+ unsigned long long bar1Free;
-+ unsigned long long bar1Used;
-+}nvmlBAR1Memory_t;
-+typedef struct nvmlProcessInfo_st
-+{
-+ unsigned int pid;
-+ unsigned long long usedGpuMemory;
-+} nvmlProcessInfo_t;
-+typedef enum nvmlBridgeChipType_enum
-+{
-+ NVML_BRIDGE_CHIP_PLX = 0,
-+ NVML_BRIDGE_CHIP_BRO4 = 1
-+}nvmlBridgeChipType_t;
-+#define NVML_NVLINK_MAX_LINKS 6
-+typedef enum nvmlNvLinkUtilizationCountUnits_enum
-+{
-+ NVML_NVLINK_COUNTER_UNIT_CYCLES = 0,
-+ NVML_NVLINK_COUNTER_UNIT_PACKETS = 1,
-+ NVML_NVLINK_COUNTER_UNIT_BYTES = 2,
-+ NVML_NVLINK_COUNTER_UNIT_RESERVED = 3,
-+ NVML_NVLINK_COUNTER_UNIT_COUNT
-+} nvmlNvLinkUtilizationCountUnits_t;
-+typedef enum nvmlNvLinkUtilizationCountPktTypes_enum
-+{
-+ NVML_NVLINK_COUNTER_PKTFILTER_NOP = 0x1,
-+ NVML_NVLINK_COUNTER_PKTFILTER_READ = 0x2,
-+ NVML_NVLINK_COUNTER_PKTFILTER_WRITE = 0x4,
-+ NVML_NVLINK_COUNTER_PKTFILTER_RATOM = 0x8,
-+ NVML_NVLINK_COUNTER_PKTFILTER_NRATOM = 0x10,
-+ NVML_NVLINK_COUNTER_PKTFILTER_FLUSH = 0x20,
-+ NVML_NVLINK_COUNTER_PKTFILTER_RESPDATA = 0x40,
-+ NVML_NVLINK_COUNTER_PKTFILTER_RESPNODATA = 0x80,
-+ NVML_NVLINK_COUNTER_PKTFILTER_ALL = 0xFF
-+} nvmlNvLinkUtilizationCountPktTypes_t;
-+typedef struct nvmlNvLinkUtilizationControl_st
-+{
-+ nvmlNvLinkUtilizationCountUnits_t units;
-+ nvmlNvLinkUtilizationCountPktTypes_t pktfilter;
-+} nvmlNvLinkUtilizationControl_t;
-+typedef enum nvmlNvLinkCapability_enum
-+{
-+ NVML_NVLINK_CAP_P2P_SUPPORTED = 0,
-+ NVML_NVLINK_CAP_SYSMEM_ACCESS = 1,
-+ NVML_NVLINK_CAP_P2P_ATOMICS = 2,
-+ NVML_NVLINK_CAP_SYSMEM_ATOMICS= 3,
-+ NVML_NVLINK_CAP_SLI_BRIDGE = 4,
-+ NVML_NVLINK_CAP_VALID = 5,
-+ NVML_NVLINK_CAP_COUNT
-+} nvmlNvLinkCapability_t;
-+typedef enum nvmlNvLinkErrorCounter_enum
-+{
-+ NVML_NVLINK_ERROR_DL_REPLAY = 0,
-+ NVML_NVLINK_ERROR_DL_RECOVERY = 1,
-+ NVML_NVLINK_ERROR_DL_CRC_FLIT = 2,
-+ NVML_NVLINK_ERROR_DL_CRC_DATA = 3,
-+ NVML_NVLINK_ERROR_COUNT
-+} nvmlNvLinkErrorCounter_t;
-+typedef enum nvmlGpuLevel_enum
-+{
-+ NVML_TOPOLOGY_INTERNAL = 0,
-+ NVML_TOPOLOGY_SINGLE = 10,
-+ NVML_TOPOLOGY_MULTIPLE = 20,
-+ NVML_TOPOLOGY_HOSTBRIDGE = 30,
-+ NVML_TOPOLOGY_NODE = 40,
-+ NVML_TOPOLOGY_SYSTEM = 50,
-+} nvmlGpuTopologyLevel_t;
-+#define NVML_TOPOLOGY_CPU NVML_TOPOLOGY_NODE
-+typedef enum nvmlGpuP2PStatus_enum
-+{
-+ NVML_P2P_STATUS_OK = 0,
-+ NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED,
-+ NVML_P2P_STATUS_GPU_NOT_SUPPORTED,
-+ NVML_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED,
-+ NVML_P2P_STATUS_DISABLED_BY_REGKEY,
-+ NVML_P2P_STATUS_NOT_SUPPORTED,
-+ NVML_P2P_STATUS_UNKNOWN
-+} nvmlGpuP2PStatus_t;
-+typedef enum nvmlGpuP2PCapsIndex_enum
-+{
-+ NVML_P2P_CAPS_INDEX_READ = 0,
-+ NVML_P2P_CAPS_INDEX_WRITE,
-+ NVML_P2P_CAPS_INDEX_NVLINK,
-+ NVML_P2P_CAPS_INDEX_ATOMICS,
-+ NVML_P2P_CAPS_INDEX_PROP,
-+ NVML_P2P_CAPS_INDEX_UNKNOWN
-+}nvmlGpuP2PCapsIndex_t;
-+#define NVML_MAX_PHYSICAL_BRIDGE (128)
-+typedef struct nvmlBridgeChipInfo_st
-+{
-+ nvmlBridgeChipType_t type;
-+ unsigned int fwVersion;
-+}nvmlBridgeChipInfo_t;
-+typedef struct nvmlBridgeChipHierarchy_st
-+{
-+ unsigned char bridgeCount;
-+ nvmlBridgeChipInfo_t bridgeChipInfo[NVML_MAX_PHYSICAL_BRIDGE];
-+}nvmlBridgeChipHierarchy_t;
-+typedef enum nvmlSamplingType_enum
-+{
-+ NVML_TOTAL_POWER_SAMPLES = 0,
-+ NVML_GPU_UTILIZATION_SAMPLES = 1,
-+ NVML_MEMORY_UTILIZATION_SAMPLES = 2,
-+ NVML_ENC_UTILIZATION_SAMPLES = 3,
-+ NVML_DEC_UTILIZATION_SAMPLES = 4,
-+ NVML_PROCESSOR_CLK_SAMPLES = 5,
-+ NVML_MEMORY_CLK_SAMPLES = 6,
-+ NVML_SAMPLINGTYPE_COUNT
-+}nvmlSamplingType_t;
-+typedef enum nvmlPcieUtilCounter_enum
-+{
-+ NVML_PCIE_UTIL_TX_BYTES = 0,
-+ NVML_PCIE_UTIL_RX_BYTES = 1,
-+ NVML_PCIE_UTIL_COUNT
-+} nvmlPcieUtilCounter_t;
-+typedef enum nvmlValueType_enum
-+{
-+ NVML_VALUE_TYPE_DOUBLE = 0,
-+ NVML_VALUE_TYPE_UNSIGNED_INT = 1,
-+ NVML_VALUE_TYPE_UNSIGNED_LONG = 2,
-+ NVML_VALUE_TYPE_UNSIGNED_LONG_LONG = 3,
-+ NVML_VALUE_TYPE_SIGNED_LONG_LONG = 4,
-+ NVML_VALUE_TYPE_COUNT
-+}nvmlValueType_t;
-+typedef union nvmlValue_st
-+{
-+ double dVal;
-+ unsigned int uiVal;
-+ unsigned long ulVal;
-+ unsigned long long ullVal;
-+ signed long long sllVal;
-+}nvmlValue_t;
-+typedef struct nvmlSample_st
-+{
-+ unsigned long long timeStamp;
-+ nvmlValue_t sampleValue;
-+}nvmlSample_t;
-+typedef enum nvmlPerfPolicyType_enum
-+{
-+ NVML_PERF_POLICY_POWER = 0,
-+ NVML_PERF_POLICY_THERMAL = 1,
-+ NVML_PERF_POLICY_SYNC_BOOST = 2,
-+ NVML_PERF_POLICY_BOARD_LIMIT = 3,
-+ NVML_PERF_POLICY_LOW_UTILIZATION = 4,
-+ NVML_PERF_POLICY_RELIABILITY = 5,
-+ NVML_PERF_POLICY_TOTAL_APP_CLOCKS = 10,
-+ NVML_PERF_POLICY_TOTAL_BASE_CLOCKS = 11,
-+ NVML_PERF_POLICY_COUNT
-+}nvmlPerfPolicyType_t;
-+typedef struct nvmlViolationTime_st
-+{
-+ unsigned long long referenceTime;
-+ unsigned long long violationTime;
-+}nvmlViolationTime_t;
-+typedef enum nvmlEnableState_enum
-+{
-+ NVML_FEATURE_DISABLED = 0,
-+ NVML_FEATURE_ENABLED = 1
-+} nvmlEnableState_t;
-+#define nvmlFlagDefault 0x00
-+#define nvmlFlagForce 0x01
-+typedef enum nvmlBrandType_enum
-+{
-+ NVML_BRAND_UNKNOWN = 0,
-+ NVML_BRAND_QUADRO = 1,
-+ NVML_BRAND_TESLA = 2,
-+ NVML_BRAND_NVS = 3,
-+ NVML_BRAND_GRID = 4,
-+ NVML_BRAND_GEFORCE = 5,
-+ NVML_BRAND_TITAN = 6,
-+ NVML_BRAND_COUNT
-+} nvmlBrandType_t;
-+typedef enum nvmlTemperatureThresholds_enum
-+{
-+ NVML_TEMPERATURE_THRESHOLD_SHUTDOWN = 0,
-+ NVML_TEMPERATURE_THRESHOLD_SLOWDOWN = 1,
-+ NVML_TEMPERATURE_THRESHOLD_MEM_MAX = 2,
-+ NVML_TEMPERATURE_THRESHOLD_GPU_MAX = 3,
-+ NVML_TEMPERATURE_THRESHOLD_COUNT
-+} nvmlTemperatureThresholds_t;
-+typedef enum nvmlTemperatureSensors_enum
-+{
-+ NVML_TEMPERATURE_GPU = 0,
-+ NVML_TEMPERATURE_COUNT
-+} nvmlTemperatureSensors_t;
-+typedef enum nvmlComputeMode_enum
-+{
-+ NVML_COMPUTEMODE_DEFAULT = 0,
-+ NVML_COMPUTEMODE_EXCLUSIVE_THREAD = 1,
-+ NVML_COMPUTEMODE_PROHIBITED = 2,
-+ NVML_COMPUTEMODE_EXCLUSIVE_PROCESS = 3,
-+ NVML_COMPUTEMODE_COUNT
-+} nvmlComputeMode_t;
-+#define nvmlEccBitType_t nvmlMemoryErrorType_t
-+#define NVML_SINGLE_BIT_ECC NVML_MEMORY_ERROR_TYPE_CORRECTED
-+#define NVML_DOUBLE_BIT_ECC NVML_MEMORY_ERROR_TYPE_UNCORRECTED
-+typedef enum nvmlMemoryErrorType_enum
-+{
-+ NVML_MEMORY_ERROR_TYPE_CORRECTED = 0,
-+ NVML_MEMORY_ERROR_TYPE_UNCORRECTED = 1,
-+ NVML_MEMORY_ERROR_TYPE_COUNT
-+} nvmlMemoryErrorType_t;
-+typedef enum nvmlEccCounterType_enum
-+{
-+ NVML_VOLATILE_ECC = 0,
-+ NVML_AGGREGATE_ECC = 1,
-+ NVML_ECC_COUNTER_TYPE_COUNT
-+} nvmlEccCounterType_t;
-+typedef enum nvmlClockType_enum
-+{
-+ NVML_CLOCK_GRAPHICS = 0,
-+ NVML_CLOCK_SM = 1,
-+ NVML_CLOCK_MEM = 2,
-+ NVML_CLOCK_VIDEO = 3,
-+ NVML_CLOCK_COUNT
-+} nvmlClockType_t;
-+typedef enum nvmlClockId_enum
-+{
-+ NVML_CLOCK_ID_CURRENT = 0,
-+ NVML_CLOCK_ID_APP_CLOCK_TARGET = 1,
-+ NVML_CLOCK_ID_APP_CLOCK_DEFAULT = 2,
-+ NVML_CLOCK_ID_CUSTOMER_BOOST_MAX = 3,
-+ NVML_CLOCK_ID_COUNT
-+} nvmlClockId_t;
-+typedef enum nvmlDriverModel_enum
-+{
-+ NVML_DRIVER_WDDM = 0,
-+ NVML_DRIVER_WDM = 1
-+} nvmlDriverModel_t;
-+typedef enum nvmlPStates_enum
-+{
-+ NVML_PSTATE_0 = 0,
-+ NVML_PSTATE_1 = 1,
-+ NVML_PSTATE_2 = 2,
-+ NVML_PSTATE_3 = 3,
-+ NVML_PSTATE_4 = 4,
-+ NVML_PSTATE_5 = 5,
-+ NVML_PSTATE_6 = 6,
-+ NVML_PSTATE_7 = 7,
-+ NVML_PSTATE_8 = 8,
-+ NVML_PSTATE_9 = 9,
-+ NVML_PSTATE_10 = 10,
-+ NVML_PSTATE_11 = 11,
-+ NVML_PSTATE_12 = 12,
-+ NVML_PSTATE_13 = 13,
-+ NVML_PSTATE_14 = 14,
-+ NVML_PSTATE_15 = 15,
-+ NVML_PSTATE_UNKNOWN = 32
-+} nvmlPstates_t;
-+typedef enum nvmlGom_enum
-+{
-+ NVML_GOM_ALL_ON = 0,
-+ NVML_GOM_COMPUTE = 1,
-+ NVML_GOM_LOW_DP = 2
-+} nvmlGpuOperationMode_t;
-+typedef enum nvmlInforomObject_enum
-+{
-+ NVML_INFOROM_OEM = 0,
-+ NVML_INFOROM_ECC = 1,
-+ NVML_INFOROM_POWER = 2,
-+ NVML_INFOROM_COUNT
-+} nvmlInforomObject_t;
-+typedef enum nvmlReturn_enum
-+{
-+ NVML_SUCCESS = 0,
-+ NVML_ERROR_UNINITIALIZED = 1,
-+ NVML_ERROR_INVALID_ARGUMENT = 2,
-+ NVML_ERROR_NOT_SUPPORTED = 3,
-+ NVML_ERROR_NO_PERMISSION = 4,
-+ NVML_ERROR_ALREADY_INITIALIZED = 5,
-+ NVML_ERROR_NOT_FOUND = 6,
-+ NVML_ERROR_INSUFFICIENT_SIZE = 7,
-+ NVML_ERROR_INSUFFICIENT_POWER = 8,
-+ NVML_ERROR_DRIVER_NOT_LOADED = 9,
-+ NVML_ERROR_TIMEOUT = 10,
-+ NVML_ERROR_IRQ_ISSUE = 11,
-+ NVML_ERROR_LIBRARY_NOT_FOUND = 12,
-+ NVML_ERROR_FUNCTION_NOT_FOUND = 13,
-+ NVML_ERROR_CORRUPTED_INFOROM = 14,
-+ NVML_ERROR_GPU_IS_LOST = 15,
-+ NVML_ERROR_RESET_REQUIRED = 16,
-+ NVML_ERROR_OPERATING_SYSTEM = 17,
-+ NVML_ERROR_LIB_RM_VERSION_MISMATCH = 18,
-+ NVML_ERROR_IN_USE = 19,
-+ NVML_ERROR_MEMORY = 20,
-+ NVML_ERROR_NO_DATA = 21,
-+ NVML_ERROR_VGPU_ECC_NOT_SUPPORTED = 22,
-+ NVML_ERROR_UNKNOWN = 999
-+} nvmlReturn_t;
-+typedef enum nvmlMemoryLocation_enum
-+{
-+ NVML_MEMORY_LOCATION_L1_CACHE = 0,
-+ NVML_MEMORY_LOCATION_L2_CACHE = 1,
-+ NVML_MEMORY_LOCATION_DRAM = 2,
-+ NVML_MEMORY_LOCATION_DEVICE_MEMORY = 2,
-+ NVML_MEMORY_LOCATION_REGISTER_FILE = 3,
-+ NVML_MEMORY_LOCATION_TEXTURE_MEMORY = 4,
-+ NVML_MEMORY_LOCATION_TEXTURE_SHM = 5,
-+ NVML_MEMORY_LOCATION_CBU = 6,
-+ NVML_MEMORY_LOCATION_SRAM = 7,
-+ NVML_MEMORY_LOCATION_COUNT
-+} nvmlMemoryLocation_t;
-+typedef enum nvmlPageRetirementCause_enum
-+{
-+ NVML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS = 0,
-+ NVML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR = 1,
-+ NVML_PAGE_RETIREMENT_CAUSE_COUNT
-+} nvmlPageRetirementCause_t;
-+typedef enum nvmlRestrictedAPI_enum
-+{
-+ NVML_RESTRICTED_API_SET_APPLICATION_CLOCKS = 0,
-+ NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKS = 1,
-+ NVML_RESTRICTED_API_COUNT
-+} nvmlRestrictedAPI_t;
-+typedef enum nvmlGpuVirtualizationMode {
-+ NVML_GPU_VIRTUALIZATION_MODE_NONE = 0,
-+ NVML_GPU_VIRTUALIZATION_MODE_PASSTHROUGH = 1,
-+ NVML_GPU_VIRTUALIZATION_MODE_VGPU = 2,
-+ NVML_GPU_VIRTUALIZATION_MODE_HOST_VGPU = 3,
-+ NVML_GPU_VIRTUALIZATION_MODE_HOST_VSGA = 4,
-+} nvmlGpuVirtualizationMode_t;
-+typedef enum nvmlHostVgpuMode_enum
-+{
-+ NVML_HOST_VGPU_MODE_NON_SRIOV = 0,
-+ NVML_HOST_VGPU_MODE_SRIOV = 1
-+} nvmlHostVgpuMode_t;
-+typedef enum nvmlVgpuVmIdType {
-+ NVML_VGPU_VM_ID_DOMAIN_ID = 0,
-+ NVML_VGPU_VM_ID_UUID = 1,
-+} nvmlVgpuVmIdType_t;
-+typedef enum nvmlVgpuGuestInfoState_enum
-+{
-+ NVML_VGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED = 0,
-+ NVML_VGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZED = 1,
-+} nvmlVgpuGuestInfoState_t;
-+typedef enum {
-+ NVML_GRID_LICENSE_FEATURE_CODE_VGPU = 1,
-+ NVML_GRID_LICENSE_FEATURE_CODE_VWORKSTATION = 2
-+} nvmlGridLicenseFeatureCode_t;
-+#define NVML_GRID_LICENSE_BUFFER_SIZE 128
-+#define NVML_VGPU_NAME_BUFFER_SIZE 64
-+#define NVML_GRID_LICENSE_FEATURE_MAX_COUNT 3
-+#define NVML_VGPU_VIRTUALIZATION_CAP_MIGRATION 0:0
-+#define NVML_VGPU_VIRTUALIZATION_CAP_MIGRATION_NO 0x0
-+#define NVML_VGPU_VIRTUALIZATION_CAP_MIGRATION_YES 0x1
-+#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION 0:0
-+#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION_NO 0x0
-+#define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION_YES 0x1
-+typedef unsigned int nvmlVgpuTypeId_t;
-+typedef unsigned int nvmlVgpuInstance_t;
-+typedef struct nvmlVgpuInstanceUtilizationSample_st
-+{
-+ nvmlVgpuInstance_t vgpuInstance;
-+ unsigned long long timeStamp;
-+ nvmlValue_t smUtil;
-+ nvmlValue_t memUtil;
-+ nvmlValue_t encUtil;
-+ nvmlValue_t decUtil;
-+} nvmlVgpuInstanceUtilizationSample_t;
-+typedef struct nvmlVgpuProcessUtilizationSample_st
-+{
-+ nvmlVgpuInstance_t vgpuInstance;
-+ unsigned int pid;
-+ char processName[NVML_VGPU_NAME_BUFFER_SIZE];
-+ unsigned long long timeStamp;
-+ unsigned int smUtil;
-+ unsigned int memUtil;
-+ unsigned int encUtil;
-+ unsigned int decUtil;
-+} nvmlVgpuProcessUtilizationSample_t;
-+typedef struct nvmlProcessUtilizationSample_st
-+{
-+ unsigned int pid;
-+ unsigned long long timeStamp;
-+ unsigned int smUtil;
-+ unsigned int memUtil;
-+ unsigned int encUtil;
-+ unsigned int decUtil;
-+} nvmlProcessUtilizationSample_t;
-+typedef struct nvmlGridLicensableFeature_st
-+{
-+ nvmlGridLicenseFeatureCode_t featureCode;
-+ unsigned int featureState;
-+ char licenseInfo[NVML_GRID_LICENSE_BUFFER_SIZE];
-+ char productName[NVML_GRID_LICENSE_BUFFER_SIZE];
-+ unsigned int featureEnabled;
-+} nvmlGridLicensableFeature_t;
-+typedef struct nvmlGridLicensableFeatures_st
-+{
-+ int isGridLicenseSupported;
-+ unsigned int licensableFeaturesCount;
-+ nvmlGridLicensableFeature_t gridLicensableFeatures[NVML_GRID_LICENSE_FEATURE_MAX_COUNT];
-+} nvmlGridLicensableFeatures_t;
-+#define NVML_FI_DEV_ECC_CURRENT 1
-+#define NVML_FI_DEV_ECC_PENDING 2
-+#define NVML_FI_DEV_ECC_SBE_VOL_TOTAL 3
-+#define NVML_FI_DEV_ECC_DBE_VOL_TOTAL 4
-+#define NVML_FI_DEV_ECC_SBE_AGG_TOTAL 5
-+#define NVML_FI_DEV_ECC_DBE_AGG_TOTAL 6
-+#define NVML_FI_DEV_ECC_SBE_VOL_L1 7
-+#define NVML_FI_DEV_ECC_DBE_VOL_L1 8
-+#define NVML_FI_DEV_ECC_SBE_VOL_L2 9
-+#define NVML_FI_DEV_ECC_DBE_VOL_L2 10
-+#define NVML_FI_DEV_ECC_SBE_VOL_DEV 11
-+#define NVML_FI_DEV_ECC_DBE_VOL_DEV 12
-+#define NVML_FI_DEV_ECC_SBE_VOL_REG 13
-+#define NVML_FI_DEV_ECC_DBE_VOL_REG 14
-+#define NVML_FI_DEV_ECC_SBE_VOL_TEX 15
-+#define NVML_FI_DEV_ECC_DBE_VOL_TEX 16
-+#define NVML_FI_DEV_ECC_DBE_VOL_CBU 17
-+#define NVML_FI_DEV_ECC_SBE_AGG_L1 18
-+#define NVML_FI_DEV_ECC_DBE_AGG_L1 19
-+#define NVML_FI_DEV_ECC_SBE_AGG_L2 20
-+#define NVML_FI_DEV_ECC_DBE_AGG_L2 21
-+#define NVML_FI_DEV_ECC_SBE_AGG_DEV 22
-+#define NVML_FI_DEV_ECC_DBE_AGG_DEV 23
-+#define NVML_FI_DEV_ECC_SBE_AGG_REG 24
-+#define NVML_FI_DEV_ECC_DBE_AGG_REG 25
-+#define NVML_FI_DEV_ECC_SBE_AGG_TEX 26
-+#define NVML_FI_DEV_ECC_DBE_AGG_TEX 27
-+#define NVML_FI_DEV_ECC_DBE_AGG_CBU 28
-+#define NVML_FI_DEV_RETIRED_SBE 29
-+#define NVML_FI_DEV_RETIRED_DBE 30
-+#define NVML_FI_DEV_RETIRED_PENDING 31
-+#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L0 32
-+#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L1 33
-+#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L2 34
-+#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L3 35
-+#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L4 36
-+#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L5 37
-+#define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_TOTAL 38
-+#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L0 39
-+#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L1 40
-+#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L2 41
-+#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L3 42
-+#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L4 43
-+#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L5 44
-+#define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_TOTAL 45
-+#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L0 46
-+#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L1 47
-+#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L2 48
-+#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L3 49
-+#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L4 50
-+#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L5 51
-+#define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL 52
-+#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L0 53
-+#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L1 54
-+#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L2 55
-+#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L3 56
-+#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L4 57
-+#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L5 58
-+#define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_TOTAL 59
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L0 60
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L1 61
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L2 62
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L3 63
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L4 64
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_L5 65
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C0_TOTAL 66
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L0 67
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L1 68
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L2 69
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L3 70
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L4 71
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L5 72
-+#define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_TOTAL 73
-+#define NVML_FI_DEV_PERF_POLICY_POWER 74
-+#define NVML_FI_DEV_PERF_POLICY_THERMAL 75
-+#define NVML_FI_DEV_PERF_POLICY_SYNC_BOOST 76
-+#define NVML_FI_DEV_PERF_POLICY_BOARD_LIMIT 77
-+#define NVML_FI_DEV_PERF_POLICY_LOW_UTILIZATION 78
-+#define NVML_FI_DEV_PERF_POLICY_RELIABILITY 79
-+#define NVML_FI_DEV_PERF_POLICY_TOTAL_APP_CLOCKS 80
-+#define NVML_FI_DEV_PERF_POLICY_TOTAL_BASE_CLOCKS 81
-+#define NVML_FI_DEV_MEMORY_TEMP 82
-+#define NVML_FI_DEV_TOTAL_ENERGY_CONSUMPTION 83
-+#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L0 84
-+#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L1 85
-+#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L2 86
-+#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L3 87
-+#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L4 88
-+#define NVML_FI_DEV_NVLINK_SPEED_MBPS_L5 89
-+#define NVML_FI_DEV_NVLINK_SPEED_MBPS_COMMON 90
-+#define NVML_FI_DEV_NVLINK_LINK_COUNT 91
-+#define NVML_FI_DEV_RETIRED_PENDING_SBE 92
-+#define NVML_FI_DEV_RETIRED_PENDING_DBE 93
-+#define NVML_FI_DEV_PCIE_REPLAY_COUNTER 94
-+#define NVML_FI_DEV_PCIE_REPLAY_ROLLOVER_COUNTER 95
-+#define NVML_FI_MAX 96
-+typedef struct nvmlFieldValue_st
-+{
-+ unsigned int fieldId;
-+ unsigned int unused;
-+ long long timestamp;
-+ long long latencyUsec;
-+ nvmlValueType_t valueType;
-+ nvmlReturn_t nvmlReturn;
-+ nvmlValue_t value;
-+} nvmlFieldValue_t;
-+typedef struct nvmlUnit_st* nvmlUnit_t;
-+typedef struct nvmlHwbcEntry_st
-+{
-+ unsigned int hwbcId;
-+ char firmwareVersion[32];
-+} nvmlHwbcEntry_t;
-+typedef enum nvmlFanState_enum
-+{
-+ NVML_FAN_NORMAL = 0,
-+ NVML_FAN_FAILED = 1
-+} nvmlFanState_t;
-+typedef enum nvmlLedColor_enum
-+{
-+ NVML_LED_COLOR_GREEN = 0,
-+ NVML_LED_COLOR_AMBER = 1
-+} nvmlLedColor_t;
-+typedef struct nvmlLedState_st
-+{
-+ char cause[256];
-+ nvmlLedColor_t color;
-+} nvmlLedState_t;
-+typedef struct nvmlUnitInfo_st
-+{
-+ char name[96];
-+ char id[96];
-+ char serial[96];
-+ char firmwareVersion[96];
-+} nvmlUnitInfo_t;
-+typedef struct nvmlPSUInfo_st
-+{
-+ char state[256];
-+ unsigned int current;
-+ unsigned int voltage;
-+ unsigned int power;
-+} nvmlPSUInfo_t;
-+typedef struct nvmlUnitFanInfo_st
-+{
-+ unsigned int speed;
-+ nvmlFanState_t state;
-+} nvmlUnitFanInfo_t;
-+typedef struct nvmlUnitFanSpeeds_st
-+{
-+ nvmlUnitFanInfo_t fans[24];
-+ unsigned int count;
-+} nvmlUnitFanSpeeds_t;
-+typedef struct nvmlEventSet_st* nvmlEventSet_t;
-+#define nvmlEventTypeSingleBitEccError 0x0000000000000001LL
-+#define nvmlEventTypeDoubleBitEccError 0x0000000000000002LL
-+#define nvmlEventTypePState 0x0000000000000004LL
-+#define nvmlEventTypeXidCriticalError 0x0000000000000008LL
-+#define nvmlEventTypeClock 0x0000000000000010LL
-+#define nvmlEventTypeNone 0x0000000000000000LL
-+#define nvmlEventTypeAll (nvmlEventTypeNone \
-+ | nvmlEventTypeSingleBitEccError \
-+ | nvmlEventTypeDoubleBitEccError \
-+ | nvmlEventTypePState \
-+ | nvmlEventTypeClock \
-+ | nvmlEventTypeXidCriticalError \
-+ )
-+typedef struct nvmlEventData_st
-+{
-+ nvmlDevice_t device;
-+ unsigned long long eventType;
-+ unsigned long long eventData;
-+} nvmlEventData_t;
-+#define nvmlClocksThrottleReasonGpuIdle 0x0000000000000001LL
-+#define nvmlClocksThrottleReasonApplicationsClocksSetting 0x0000000000000002LL
-+#define nvmlClocksThrottleReasonUserDefinedClocks nvmlClocksThrottleReasonApplicationsClocksSetting
-+#define nvmlClocksThrottleReasonSwPowerCap 0x0000000000000004LL
-+#define nvmlClocksThrottleReasonHwSlowdown 0x0000000000000008LL
-+#define nvmlClocksThrottleReasonSyncBoost 0x0000000000000010LL
-+#define nvmlClocksThrottleReasonSwThermalSlowdown 0x0000000000000020LL
-+#define nvmlClocksThrottleReasonHwThermalSlowdown 0x0000000000000040LL
-+#define nvmlClocksThrottleReasonHwPowerBrakeSlowdown 0x0000000000000080LL
-+#define nvmlClocksThrottleReasonDisplayClockSetting 0x0000000000000100LL
-+#define nvmlClocksThrottleReasonNone 0x0000000000000000LL
-+#define nvmlClocksThrottleReasonAll (nvmlClocksThrottleReasonNone \
-+ | nvmlClocksThrottleReasonGpuIdle \
-+ | nvmlClocksThrottleReasonApplicationsClocksSetting \
-+ | nvmlClocksThrottleReasonSwPowerCap \
-+ | nvmlClocksThrottleReasonHwSlowdown \
-+ | nvmlClocksThrottleReasonSyncBoost \
-+ | nvmlClocksThrottleReasonSwThermalSlowdown \
-+ | nvmlClocksThrottleReasonHwThermalSlowdown \
-+ | nvmlClocksThrottleReasonHwPowerBrakeSlowdown \
-+ | nvmlClocksThrottleReasonDisplayClockSetting \
-+)
-+typedef struct nvmlAccountingStats_st {
-+ unsigned int gpuUtilization;
-+ unsigned int memoryUtilization;
-+ unsigned long long maxMemoryUsage;
-+ unsigned long long time;
-+ unsigned long long startTime;
-+ unsigned int isRunning;
-+ unsigned int reserved[5];
-+} nvmlAccountingStats_t;
-+typedef enum nvmlEncoderQueryType_enum
-+{
-+ NVML_ENCODER_QUERY_H264 = 0,
-+ NVML_ENCODER_QUERY_HEVC = 1,
-+}nvmlEncoderType_t;
-+typedef struct nvmlEncoderSessionInfo_st
-+{
-+ unsigned int sessionId;
-+ unsigned int pid;
-+ nvmlVgpuInstance_t vgpuInstance;
-+ nvmlEncoderType_t codecType;
-+ unsigned int hResolution;
-+ unsigned int vResolution;
-+ unsigned int averageFps;
-+ unsigned int averageLatency;
-+}nvmlEncoderSessionInfo_t;
-+typedef enum nvmlFBCSessionType_enum
-+{
-+ NVML_FBC_SESSION_TYPE_UNKNOWN = 0,
-+ NVML_FBC_SESSION_TYPE_TOSYS,
-+ NVML_FBC_SESSION_TYPE_CUDA,
-+ NVML_FBC_SESSION_TYPE_VID,
-+ NVML_FBC_SESSION_TYPE_HWENC,
-+} nvmlFBCSessionType_t;
-+typedef struct nvmlFBCStats_st
-+{
-+ unsigned int sessionsCount;
-+ unsigned int averageFPS;
-+ unsigned int averageLatency;
-+} nvmlFBCStats_t;
-+#define NVML_NVFBC_SESSION_FLAG_DIFFMAP_ENABLED 0x00000001
-+#define NVML_NVFBC_SESSION_FLAG_CLASSIFICATIONMAP_ENABLED 0x00000002
-+#define NVML_NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_NO_WAIT 0x00000004
-+#define NVML_NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_INFINITE 0x00000008
-+#define NVML_NVFBC_SESSION_FLAG_CAPTURE_WITH_WAIT_TIMEOUT 0x00000010
-+typedef struct nvmlFBCSessionInfo_st
-+{
-+ unsigned int sessionId;
-+ unsigned int pid;
-+ nvmlVgpuInstance_t vgpuInstance;
-+ unsigned int displayOrdinal;
-+ nvmlFBCSessionType_t sessionType;
-+ unsigned int sessionFlags;
-+ unsigned int hMaxResolution;
-+ unsigned int vMaxResolution;
-+ unsigned int hResolution;
-+ unsigned int vResolution;
-+ unsigned int averageFPS;
-+ unsigned int averageLatency;
-+} nvmlFBCSessionInfo_t;
-+typedef enum nvmlDetachGpuState_enum
-+{
-+ NVML_DETACH_GPU_KEEP = 0,
-+ NVML_DETACH_GPU_REMOVE,
-+} nvmlDetachGpuState_t;
-+typedef enum nvmlPcieLinkState_enum
-+{
-+ NVML_PCIE_LINK_KEEP = 0,
-+ NVML_PCIE_LINK_SHUT_DOWN,
-+} nvmlPcieLinkState_t;
-+#define NVML_INIT_FLAG_NO_GPUS 1
-+#define NVML_INIT_FLAG_NO_ATTACH 2
-+nvmlReturn_t DECLDIR nvmlInit(void);
-+nvmlReturn_t DECLDIR nvmlInitWithFlags(unsigned int flags);
-+nvmlReturn_t DECLDIR nvmlShutdown(void);
-+const DECLDIR char* nvmlErrorString(nvmlReturn_t result);
-+#define NVML_DEVICE_INFOROM_VERSION_BUFFER_SIZE 16
-+#define NVML_DEVICE_UUID_BUFFER_SIZE 80
-+#define NVML_DEVICE_PART_NUMBER_BUFFER_SIZE 80
-+#define NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE 80
-+#define NVML_SYSTEM_NVML_VERSION_BUFFER_SIZE 80
-+#define NVML_DEVICE_NAME_BUFFER_SIZE 64
-+#define NVML_DEVICE_SERIAL_BUFFER_SIZE 30
-+#define NVML_DEVICE_VBIOS_VERSION_BUFFER_SIZE 32
-+nvmlReturn_t DECLDIR nvmlSystemGetDriverVersion(char *version, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlSystemGetNVMLVersion(char *version, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlSystemGetCudaDriverVersion(int *cudaDriverVersion);
-+nvmlReturn_t DECLDIR nvmlSystemGetCudaDriverVersion_v2(int *cudaDriverVersion);
-+#define NVML_CUDA_DRIVER_VERSION_MAJOR(v) ((v)/1000)
-+#define NVML_CUDA_DRIVER_VERSION_MINOR(v) (((v)%1000)/10)
-+nvmlReturn_t DECLDIR nvmlSystemGetProcessName(unsigned int pid, char *name, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlUnitGetCount(unsigned int *unitCount);
-+nvmlReturn_t DECLDIR nvmlUnitGetHandleByIndex(unsigned int index, nvmlUnit_t *unit);
-+nvmlReturn_t DECLDIR nvmlUnitGetUnitInfo(nvmlUnit_t unit, nvmlUnitInfo_t *info);
-+nvmlReturn_t DECLDIR nvmlUnitGetLedState(nvmlUnit_t unit, nvmlLedState_t *state);
-+nvmlReturn_t DECLDIR nvmlUnitGetPsuInfo(nvmlUnit_t unit, nvmlPSUInfo_t *psu);
-+nvmlReturn_t DECLDIR nvmlUnitGetTemperature(nvmlUnit_t unit, unsigned int type, unsigned int *temp);
-+nvmlReturn_t DECLDIR nvmlUnitGetFanSpeedInfo(nvmlUnit_t unit, nvmlUnitFanSpeeds_t *fanSpeeds);
-+nvmlReturn_t DECLDIR nvmlUnitGetDevices(nvmlUnit_t unit, unsigned int *deviceCount, nvmlDevice_t *devices);
-+nvmlReturn_t DECLDIR nvmlSystemGetHicVersion(unsigned int *hwbcCount, nvmlHwbcEntry_t *hwbcEntries);
-+nvmlReturn_t DECLDIR nvmlDeviceGetCount(unsigned int *deviceCount);
-+nvmlReturn_t DECLDIR nvmlDeviceGetHandleByIndex(unsigned int index, nvmlDevice_t *device);
-+nvmlReturn_t DECLDIR nvmlDeviceGetHandleBySerial(const char *serial, nvmlDevice_t *device);
-+nvmlReturn_t DECLDIR nvmlDeviceGetHandleByUUID(const char *uuid, nvmlDevice_t *device);
-+nvmlReturn_t DECLDIR nvmlDeviceGetHandleByPciBusId(const char *pciBusId, nvmlDevice_t *device);
-+nvmlReturn_t DECLDIR nvmlDeviceGetName(nvmlDevice_t device, char *name, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlDeviceGetBrand(nvmlDevice_t device, nvmlBrandType_t *type);
-+nvmlReturn_t DECLDIR nvmlDeviceGetIndex(nvmlDevice_t device, unsigned int *index);
-+nvmlReturn_t DECLDIR nvmlDeviceGetSerial(nvmlDevice_t device, char *serial, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlDeviceGetCpuAffinity(nvmlDevice_t device, unsigned int cpuSetSize, unsigned long *cpuSet);
-+nvmlReturn_t DECLDIR nvmlDeviceSetCpuAffinity(nvmlDevice_t device);
-+nvmlReturn_t DECLDIR nvmlDeviceClearCpuAffinity(nvmlDevice_t device);
-+nvmlReturn_t DECLDIR nvmlDeviceGetTopologyCommonAncestor(nvmlDevice_t device1, nvmlDevice_t device2, nvmlGpuTopologyLevel_t *pathInfo);
-+nvmlReturn_t DECLDIR nvmlDeviceGetTopologyNearestGpus(nvmlDevice_t device, nvmlGpuTopologyLevel_t level, unsigned int *count, nvmlDevice_t *deviceArray);
-+nvmlReturn_t DECLDIR nvmlSystemGetTopologyGpuSet(unsigned int cpuNumber, unsigned int *count, nvmlDevice_t *deviceArray);
-+nvmlReturn_t DECLDIR nvmlDeviceGetP2PStatus(nvmlDevice_t device1, nvmlDevice_t device2, nvmlGpuP2PCapsIndex_t p2pIndex,nvmlGpuP2PStatus_t *p2pStatus);
-+nvmlReturn_t DECLDIR nvmlDeviceGetUUID(nvmlDevice_t device, char *uuid, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlDeviceGetMinorNumber(nvmlDevice_t device, unsigned int *minorNumber);
-+nvmlReturn_t DECLDIR nvmlDeviceGetBoardPartNumber(nvmlDevice_t device, char* partNumber, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlDeviceGetInforomVersion(nvmlDevice_t device, nvmlInforomObject_t object, char *version, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlDeviceGetInforomImageVersion(nvmlDevice_t device, char *version, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlDeviceGetInforomConfigurationChecksum(nvmlDevice_t device, unsigned int *checksum);
-+nvmlReturn_t DECLDIR nvmlDeviceValidateInforom(nvmlDevice_t device);
-+nvmlReturn_t DECLDIR nvmlDeviceGetDisplayMode(nvmlDevice_t device, nvmlEnableState_t *display);
-+nvmlReturn_t DECLDIR nvmlDeviceGetDisplayActive(nvmlDevice_t device, nvmlEnableState_t *isActive);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPersistenceMode(nvmlDevice_t device, nvmlEnableState_t *mode);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPciInfo(nvmlDevice_t device, nvmlPciInfo_t *pci);
-+nvmlReturn_t DECLDIR nvmlDeviceGetMaxPcieLinkGeneration(nvmlDevice_t device, unsigned int *maxLinkGen);
-+nvmlReturn_t DECLDIR nvmlDeviceGetMaxPcieLinkWidth(nvmlDevice_t device, unsigned int *maxLinkWidth);
-+nvmlReturn_t DECLDIR nvmlDeviceGetCurrPcieLinkGeneration(nvmlDevice_t device, unsigned int *currLinkGen);
-+nvmlReturn_t DECLDIR nvmlDeviceGetCurrPcieLinkWidth(nvmlDevice_t device, unsigned int *currLinkWidth);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPcieThroughput(nvmlDevice_t device, nvmlPcieUtilCounter_t counter, unsigned int *value);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPcieReplayCounter(nvmlDevice_t device, unsigned int *value);
-+nvmlReturn_t DECLDIR nvmlDeviceGetClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int *clock);
-+nvmlReturn_t DECLDIR nvmlDeviceGetMaxClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int *clock);
-+nvmlReturn_t DECLDIR nvmlDeviceGetApplicationsClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int *clockMHz);
-+nvmlReturn_t DECLDIR nvmlDeviceGetDefaultApplicationsClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int *clockMHz);
-+nvmlReturn_t DECLDIR nvmlDeviceResetApplicationsClocks(nvmlDevice_t device);
-+nvmlReturn_t DECLDIR nvmlDeviceGetClock(nvmlDevice_t device, nvmlClockType_t clockType, nvmlClockId_t clockId, unsigned int *clockMHz);
-+nvmlReturn_t DECLDIR nvmlDeviceGetMaxCustomerBoostClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int *clockMHz);
-+nvmlReturn_t DECLDIR nvmlDeviceGetSupportedMemoryClocks(nvmlDevice_t device, unsigned int *count, unsigned int *clocksMHz);
-+nvmlReturn_t DECLDIR nvmlDeviceGetSupportedGraphicsClocks(nvmlDevice_t device, unsigned int memoryClockMHz, unsigned int *count, unsigned int *clocksMHz);
-+nvmlReturn_t DECLDIR nvmlDeviceGetAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t *isEnabled, nvmlEnableState_t *defaultIsEnabled);
-+nvmlReturn_t DECLDIR nvmlDeviceSetAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t enabled);
-+nvmlReturn_t DECLDIR nvmlDeviceSetDefaultAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t enabled, unsigned int flags);
-+nvmlReturn_t DECLDIR nvmlDeviceGetFanSpeed(nvmlDevice_t device, unsigned int *speed);
-+nvmlReturn_t DECLDIR nvmlDeviceGetFanSpeed_v2(nvmlDevice_t device, unsigned int fan, unsigned int * speed);
-+nvmlReturn_t DECLDIR nvmlDeviceGetTemperature(nvmlDevice_t device, nvmlTemperatureSensors_t sensorType, unsigned int *temp);
-+nvmlReturn_t DECLDIR nvmlDeviceGetTemperatureThreshold(nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, unsigned int *temp);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPerformanceState(nvmlDevice_t device, nvmlPstates_t *pState);
-+nvmlReturn_t DECLDIR nvmlDeviceGetCurrentClocksThrottleReasons(nvmlDevice_t device, unsigned long long *clocksThrottleReasons);
-+nvmlReturn_t DECLDIR nvmlDeviceGetSupportedClocksThrottleReasons(nvmlDevice_t device, unsigned long long *supportedClocksThrottleReasons);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPowerState(nvmlDevice_t device, nvmlPstates_t *pState);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementMode(nvmlDevice_t device, nvmlEnableState_t *mode);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementLimit(nvmlDevice_t device, unsigned int *limit);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementLimitConstraints(nvmlDevice_t device, unsigned int *minLimit, unsigned int *maxLimit);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPowerManagementDefaultLimit(nvmlDevice_t device, unsigned int *defaultLimit);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPowerUsage(nvmlDevice_t device, unsigned int *power);
-+nvmlReturn_t DECLDIR nvmlDeviceGetTotalEnergyConsumption(nvmlDevice_t device, unsigned long long *energy);
-+nvmlReturn_t DECLDIR nvmlDeviceGetEnforcedPowerLimit(nvmlDevice_t device, unsigned int *limit);
-+nvmlReturn_t DECLDIR nvmlDeviceGetGpuOperationMode(nvmlDevice_t device, nvmlGpuOperationMode_t *current, nvmlGpuOperationMode_t *pending);
-+nvmlReturn_t DECLDIR nvmlDeviceGetMemoryInfo(nvmlDevice_t device, nvmlMemory_t *memory);
-+nvmlReturn_t DECLDIR nvmlDeviceGetComputeMode(nvmlDevice_t device, nvmlComputeMode_t *mode);
-+nvmlReturn_t DECLDIR nvmlDeviceGetCudaComputeCapability(nvmlDevice_t device, int *major, int *minor);
-+nvmlReturn_t DECLDIR nvmlDeviceGetEccMode(nvmlDevice_t device, nvmlEnableState_t *current, nvmlEnableState_t *pending);
-+nvmlReturn_t DECLDIR nvmlDeviceGetBoardId(nvmlDevice_t device, unsigned int *boardId);
-+nvmlReturn_t DECLDIR nvmlDeviceGetMultiGpuBoard(nvmlDevice_t device, unsigned int *multiGpuBool);
-+nvmlReturn_t DECLDIR nvmlDeviceGetTotalEccErrors(nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, unsigned long long *eccCounts);
-+nvmlReturn_t DECLDIR nvmlDeviceGetDetailedEccErrors(nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, nvmlEccErrorCounts_t *eccCounts);
-+nvmlReturn_t DECLDIR nvmlDeviceGetMemoryErrorCounter(nvmlDevice_t device, nvmlMemoryErrorType_t errorType,
-+ nvmlEccCounterType_t counterType,
-+ nvmlMemoryLocation_t locationType, unsigned long long *count);
-+nvmlReturn_t DECLDIR nvmlDeviceGetUtilizationRates(nvmlDevice_t device, nvmlUtilization_t *utilization);
-+nvmlReturn_t DECLDIR nvmlDeviceGetEncoderUtilization(nvmlDevice_t device, unsigned int *utilization, unsigned int *samplingPeriodUs);
-+nvmlReturn_t DECLDIR nvmlDeviceGetEncoderCapacity (nvmlDevice_t device, nvmlEncoderType_t encoderQueryType, unsigned int *encoderCapacity);
-+nvmlReturn_t DECLDIR nvmlDeviceGetEncoderStats (nvmlDevice_t device, unsigned int *sessionCount,
-+ unsigned int *averageFps, unsigned int *averageLatency);
-+nvmlReturn_t DECLDIR nvmlDeviceGetEncoderSessions(nvmlDevice_t device, unsigned int *sessionCount, nvmlEncoderSessionInfo_t *sessionInfos);
-+nvmlReturn_t DECLDIR nvmlDeviceGetDecoderUtilization(nvmlDevice_t device, unsigned int *utilization, unsigned int *samplingPeriodUs);
-+nvmlReturn_t DECLDIR nvmlDeviceGetFBCStats(nvmlDevice_t device, nvmlFBCStats_t *fbcStats);
-+nvmlReturn_t DECLDIR nvmlDeviceGetFBCSessions(nvmlDevice_t device, unsigned int *sessionCount, nvmlFBCSessionInfo_t *sessionInfo);
-+nvmlReturn_t DECLDIR nvmlDeviceGetDriverModel(nvmlDevice_t device, nvmlDriverModel_t *current, nvmlDriverModel_t *pending);
-+nvmlReturn_t DECLDIR nvmlDeviceGetVbiosVersion(nvmlDevice_t device, char *version, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlDeviceGetBridgeChipInfo(nvmlDevice_t device, nvmlBridgeChipHierarchy_t *bridgeHierarchy);
-+nvmlReturn_t DECLDIR nvmlDeviceGetComputeRunningProcesses(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_t *infos);
-+nvmlReturn_t DECLDIR nvmlDeviceGetGraphicsRunningProcesses(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_t *infos);
-+nvmlReturn_t DECLDIR nvmlDeviceOnSameBoard(nvmlDevice_t device1, nvmlDevice_t device2, int *onSameBoard);
-+nvmlReturn_t DECLDIR nvmlDeviceGetAPIRestriction(nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t *isRestricted);
-+nvmlReturn_t DECLDIR nvmlDeviceGetSamples(nvmlDevice_t device, nvmlSamplingType_t type, unsigned long long lastSeenTimeStamp,
-+ nvmlValueType_t *sampleValType, unsigned int *sampleCount, nvmlSample_t *samples);
-+nvmlReturn_t DECLDIR nvmlDeviceGetBAR1MemoryInfo(nvmlDevice_t device, nvmlBAR1Memory_t *bar1Memory);
-+nvmlReturn_t DECLDIR nvmlDeviceGetViolationStatus(nvmlDevice_t device, nvmlPerfPolicyType_t perfPolicyType, nvmlViolationTime_t *violTime);
-+nvmlReturn_t DECLDIR nvmlDeviceGetAccountingMode(nvmlDevice_t device, nvmlEnableState_t *mode);
-+nvmlReturn_t DECLDIR nvmlDeviceGetAccountingStats(nvmlDevice_t device, unsigned int pid, nvmlAccountingStats_t *stats);
-+nvmlReturn_t DECLDIR nvmlDeviceGetAccountingPids(nvmlDevice_t device, unsigned int *count, unsigned int *pids);
-+nvmlReturn_t DECLDIR nvmlDeviceGetAccountingBufferSize(nvmlDevice_t device, unsigned int *bufferSize);
-+nvmlReturn_t DECLDIR nvmlDeviceGetRetiredPages(nvmlDevice_t device, nvmlPageRetirementCause_t cause,
-+ unsigned int *pageCount, unsigned long long *addresses);
-+nvmlReturn_t DECLDIR nvmlDeviceGetRetiredPages_v2(nvmlDevice_t device, nvmlPageRetirementCause_t cause,
-+ unsigned int *pageCount, unsigned long long *addresses, unsigned long long *timestamps);
-+nvmlReturn_t DECLDIR nvmlDeviceGetRetiredPagesPendingStatus(nvmlDevice_t device, nvmlEnableState_t *isPending);
-+nvmlReturn_t DECLDIR nvmlUnitSetLedState(nvmlUnit_t unit, nvmlLedColor_t color);
-+nvmlReturn_t DECLDIR nvmlDeviceSetPersistenceMode(nvmlDevice_t device, nvmlEnableState_t mode);
-+nvmlReturn_t DECLDIR nvmlDeviceSetComputeMode(nvmlDevice_t device, nvmlComputeMode_t mode);
-+nvmlReturn_t DECLDIR nvmlDeviceSetEccMode(nvmlDevice_t device, nvmlEnableState_t ecc);
-+nvmlReturn_t DECLDIR nvmlDeviceClearEccErrorCounts(nvmlDevice_t device, nvmlEccCounterType_t counterType);
-+nvmlReturn_t DECLDIR nvmlDeviceSetDriverModel(nvmlDevice_t device, nvmlDriverModel_t driverModel, unsigned int flags);
-+nvmlReturn_t DECLDIR nvmlDeviceSetGpuLockedClocks(nvmlDevice_t device, unsigned int minGpuClockMHz, unsigned int maxGpuClockMHz);
-+nvmlReturn_t DECLDIR nvmlDeviceResetGpuLockedClocks(nvmlDevice_t device);
-+nvmlReturn_t DECLDIR nvmlDeviceSetApplicationsClocks(nvmlDevice_t device, unsigned int memClockMHz, unsigned int graphicsClockMHz);
-+nvmlReturn_t DECLDIR nvmlDeviceSetPowerManagementLimit(nvmlDevice_t device, unsigned int limit);
-+nvmlReturn_t DECLDIR nvmlDeviceSetGpuOperationMode(nvmlDevice_t device, nvmlGpuOperationMode_t mode);
-+nvmlReturn_t DECLDIR nvmlDeviceSetAPIRestriction(nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t isRestricted);
-+nvmlReturn_t DECLDIR nvmlDeviceSetAccountingMode(nvmlDevice_t device, nvmlEnableState_t mode);
-+nvmlReturn_t DECLDIR nvmlDeviceClearAccountingPids(nvmlDevice_t device);
-+nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkState(nvmlDevice_t device, unsigned int link, nvmlEnableState_t *isActive);
-+nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkVersion(nvmlDevice_t device, unsigned int link, unsigned int *version);
-+nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkCapability(nvmlDevice_t device, unsigned int link,
-+ nvmlNvLinkCapability_t capability, unsigned int *capResult);
-+nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkRemotePciInfo(nvmlDevice_t device, unsigned int link, nvmlPciInfo_t *pci);
-+nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkErrorCounter(nvmlDevice_t device, unsigned int link,
-+ nvmlNvLinkErrorCounter_t counter, unsigned long long *counterValue);
-+nvmlReturn_t DECLDIR nvmlDeviceResetNvLinkErrorCounters(nvmlDevice_t device, unsigned int link);
-+nvmlReturn_t DECLDIR nvmlDeviceSetNvLinkUtilizationControl(nvmlDevice_t device, unsigned int link, unsigned int counter,
-+ nvmlNvLinkUtilizationControl_t *control, unsigned int reset);
-+nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkUtilizationControl(nvmlDevice_t device, unsigned int link, unsigned int counter,
-+ nvmlNvLinkUtilizationControl_t *control);
-+nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkUtilizationCounter(nvmlDevice_t device, unsigned int link, unsigned int counter,
-+ unsigned long long *rxcounter, unsigned long long *txcounter);
-+nvmlReturn_t DECLDIR nvmlDeviceFreezeNvLinkUtilizationCounter (nvmlDevice_t device, unsigned int link,
-+ unsigned int counter, nvmlEnableState_t freeze);
-+nvmlReturn_t DECLDIR nvmlDeviceResetNvLinkUtilizationCounter (nvmlDevice_t device, unsigned int link, unsigned int counter);
-+nvmlReturn_t DECLDIR nvmlEventSetCreate(nvmlEventSet_t *set);
-+nvmlReturn_t DECLDIR nvmlDeviceRegisterEvents(nvmlDevice_t device, unsigned long long eventTypes, nvmlEventSet_t set);
-+nvmlReturn_t DECLDIR nvmlDeviceGetSupportedEventTypes(nvmlDevice_t device, unsigned long long *eventTypes);
-+nvmlReturn_t DECLDIR nvmlEventSetWait(nvmlEventSet_t set, nvmlEventData_t * data, unsigned int timeoutms);
-+nvmlReturn_t DECLDIR nvmlEventSetFree(nvmlEventSet_t set);
-+nvmlReturn_t DECLDIR nvmlDeviceModifyDrainState (nvmlPciInfo_t *pciInfo, nvmlEnableState_t newState);
-+nvmlReturn_t DECLDIR nvmlDeviceQueryDrainState (nvmlPciInfo_t *pciInfo, nvmlEnableState_t *currentState);
-+nvmlReturn_t DECLDIR nvmlDeviceRemoveGpu (nvmlPciInfo_t *pciInfo, nvmlDetachGpuState_t gpuState, nvmlPcieLinkState_t linkState);
-+nvmlReturn_t DECLDIR nvmlDeviceDiscoverGpus (nvmlPciInfo_t *pciInfo);
-+nvmlReturn_t DECLDIR nvmlDeviceGetFieldValues(nvmlDevice_t device, int valuesCount, nvmlFieldValue_t *values);
-+nvmlReturn_t DECLDIR nvmlDeviceGetVirtualizationMode(nvmlDevice_t device, nvmlGpuVirtualizationMode_t *pVirtualMode);
-+nvmlReturn_t DECLDIR nvmlDeviceGetHostVgpuMode(nvmlDevice_t device, nvmlHostVgpuMode_t *pHostVgpuMode);
-+nvmlReturn_t DECLDIR nvmlDeviceSetVirtualizationMode(nvmlDevice_t device, nvmlGpuVirtualizationMode_t virtualMode);
-+nvmlReturn_t DECLDIR nvmlDeviceGetGridLicensableFeatures(nvmlDevice_t device, nvmlGridLicensableFeatures_t *pGridLicensableFeatures);
-+nvmlReturn_t DECLDIR nvmlDeviceGetProcessUtilization(nvmlDevice_t device, nvmlProcessUtilizationSample_t *utilization,
-+ unsigned int *processSamplesCount, unsigned long long lastSeenTimeStamp);
-+nvmlReturn_t DECLDIR nvmlDeviceGetSupportedVgpus(nvmlDevice_t device, unsigned int *vgpuCount, nvmlVgpuTypeId_t *vgpuTypeIds);
-+nvmlReturn_t DECLDIR nvmlDeviceGetCreatableVgpus(nvmlDevice_t device, unsigned int *vgpuCount, nvmlVgpuTypeId_t *vgpuTypeIds);
-+nvmlReturn_t DECLDIR nvmlVgpuTypeGetClass(nvmlVgpuTypeId_t vgpuTypeId, char *vgpuTypeClass, unsigned int *size);
-+nvmlReturn_t DECLDIR nvmlVgpuTypeGetName(nvmlVgpuTypeId_t vgpuTypeId, char *vgpuTypeName, unsigned int *size);
-+nvmlReturn_t DECLDIR nvmlVgpuTypeGetDeviceID(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long *deviceID, unsigned long long *subsystemID);
-+nvmlReturn_t DECLDIR nvmlVgpuTypeGetFramebufferSize(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long *fbSize);
-+nvmlReturn_t DECLDIR nvmlVgpuTypeGetNumDisplayHeads(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *numDisplayHeads);
-+nvmlReturn_t DECLDIR nvmlVgpuTypeGetResolution(nvmlVgpuTypeId_t vgpuTypeId, unsigned int displayIndex, unsigned int *xdim, unsigned int *ydim);
-+nvmlReturn_t DECLDIR nvmlVgpuTypeGetLicense(nvmlVgpuTypeId_t vgpuTypeId, char *vgpuTypeLicenseString, unsigned int size);
-+nvmlReturn_t DECLDIR nvmlVgpuTypeGetFrameRateLimit(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *frameRateLimit);
-+nvmlReturn_t DECLDIR nvmlVgpuTypeGetMaxInstances(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, unsigned int *vgpuInstanceCount);
-+nvmlReturn_t DECLDIR nvmlVgpuTypeGetMaxInstancesPerVm(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *vgpuInstanceCountPerVm);
-+nvmlReturn_t DECLDIR nvmlDeviceGetActiveVgpus(nvmlDevice_t device, unsigned int *vgpuCount, nvmlVgpuInstance_t *vgpuInstances);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetVmID(nvmlVgpuInstance_t vgpuInstance, char *vmId, unsigned int size, nvmlVgpuVmIdType_t *vmIdType);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetUUID(nvmlVgpuInstance_t vgpuInstance, char *uuid, unsigned int size);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetVmDriverVersion(nvmlVgpuInstance_t vgpuInstance, char* version, unsigned int length);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetFbUsage(nvmlVgpuInstance_t vgpuInstance, unsigned long long *fbUsage);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetLicenseStatus(nvmlVgpuInstance_t vgpuInstance, unsigned int *licensed);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetType(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuTypeId_t *vgpuTypeId);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetFrameRateLimit(nvmlVgpuInstance_t vgpuInstance, unsigned int *frameRateLimit);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetEccMode(nvmlVgpuInstance_t vgpuInstance, nvmlEnableState_t *eccMode);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetEncoderCapacity(nvmlVgpuInstance_t vgpuInstance, unsigned int *encoderCapacity);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceSetEncoderCapacity(nvmlVgpuInstance_t vgpuInstance, unsigned int encoderCapacity);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetEncoderStats(nvmlVgpuInstance_t vgpuInstance, unsigned int *sessionCount,
-+ unsigned int *averageFps, unsigned int *averageLatency);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetEncoderSessions(nvmlVgpuInstance_t vgpuInstance, unsigned int *sessionCount, nvmlEncoderSessionInfo_t *sessionInfo);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetFBCStats(nvmlVgpuInstance_t vgpuInstance, nvmlFBCStats_t *fbcStats);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetFBCSessions(nvmlVgpuInstance_t vgpuInstance, unsigned int *sessionCount, nvmlFBCSessionInfo_t *sessionInfo);
-+typedef struct nvmlVgpuVersion_st
-+{
-+ unsigned int minVersion;
-+ unsigned int maxVersion;
-+} nvmlVgpuVersion_t;
-+typedef struct nvmlVgpuMetadata_st
-+{
-+ unsigned int version;
-+ unsigned int revision;
-+ nvmlVgpuGuestInfoState_t guestInfoState;
-+ char guestDriverVersion[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE];
-+ char hostDriverVersion[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE];
-+ unsigned int reserved[6];
-+ unsigned int vgpuVirtualizationCaps;
-+ unsigned int guestVgpuVersion;
-+ unsigned int opaqueDataSize;
-+ char opaqueData[4];
-+} nvmlVgpuMetadata_t;
-+typedef struct nvmlVgpuPgpuMetadata_st
-+{
-+ unsigned int version;
-+ unsigned int revision;
-+ char hostDriverVersion[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE];
-+ unsigned int pgpuVirtualizationCaps;
-+ unsigned int reserved[5];
-+ nvmlVgpuVersion_t hostSupportedVgpuRange;
-+ unsigned int opaqueDataSize;
-+ char opaqueData[4];
-+} nvmlVgpuPgpuMetadata_t;
-+typedef enum nvmlVgpuVmCompatibility_enum
-+{
-+ NVML_VGPU_VM_COMPATIBILITY_NONE = 0x0,
-+ NVML_VGPU_VM_COMPATIBILITY_COLD = 0x1,
-+ NVML_VGPU_VM_COMPATIBILITY_HIBERNATE = 0x2,
-+ NVML_VGPU_VM_COMPATIBILITY_SLEEP = 0x4,
-+ NVML_VGPU_VM_COMPATIBILITY_LIVE = 0x8,
-+} nvmlVgpuVmCompatibility_t;
-+typedef enum nvmlVgpuPgpuCompatibilityLimitCode_enum
-+{
-+ NVML_VGPU_COMPATIBILITY_LIMIT_NONE = 0x0,
-+ NVML_VGPU_COMPATIBILITY_LIMIT_HOST_DRIVER = 0x1,
-+ NVML_VGPU_COMPATIBILITY_LIMIT_GUEST_DRIVER = 0x2,
-+ NVML_VGPU_COMPATIBILITY_LIMIT_GPU = 0x4,
-+ NVML_VGPU_COMPATIBILITY_LIMIT_OTHER = 0x80000000,
-+} nvmlVgpuPgpuCompatibilityLimitCode_t;
-+typedef struct nvmlVgpuPgpuCompatibility_st
-+{
-+ nvmlVgpuVmCompatibility_t vgpuVmCompatibility;
-+ nvmlVgpuPgpuCompatibilityLimitCode_t compatibilityLimitCode;
-+} nvmlVgpuPgpuCompatibility_t;
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetMetadata(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuMetadata_t *vgpuMetadata, unsigned int *bufferSize);
-+nvmlReturn_t DECLDIR nvmlDeviceGetVgpuMetadata(nvmlDevice_t device, nvmlVgpuPgpuMetadata_t *pgpuMetadata, unsigned int *bufferSize);
-+nvmlReturn_t DECLDIR nvmlGetVgpuCompatibility(nvmlVgpuMetadata_t *vgpuMetadata, nvmlVgpuPgpuMetadata_t *pgpuMetadata, nvmlVgpuPgpuCompatibility_t *compatibilityInfo);
-+nvmlReturn_t DECLDIR nvmlDeviceGetPgpuMetadataString(nvmlDevice_t device, char *pgpuMetadata, unsigned int *bufferSize);
-+nvmlReturn_t DECLDIR nvmlGetVgpuVersion(nvmlVgpuVersion_t *supported, nvmlVgpuVersion_t *current);
-+nvmlReturn_t DECLDIR nvmlSetVgpuVersion(nvmlVgpuVersion_t *vgpuVersion);
-+nvmlReturn_t DECLDIR nvmlDeviceGetVgpuUtilization(nvmlDevice_t device, unsigned long long lastSeenTimeStamp,
-+ nvmlValueType_t *sampleValType, unsigned int *vgpuInstanceSamplesCount,
-+ nvmlVgpuInstanceUtilizationSample_t *utilizationSamples);
-+nvmlReturn_t DECLDIR nvmlDeviceGetVgpuProcessUtilization(nvmlDevice_t device, unsigned long long lastSeenTimeStamp,
-+ unsigned int *vgpuProcessSamplesCount,
-+ nvmlVgpuProcessUtilizationSample_t *utilizationSamples);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetAccountingMode(nvmlVgpuInstance_t vgpuInstance, nvmlEnableState_t *mode);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetAccountingPids(nvmlVgpuInstance_t vgpuInstance, unsigned int *count, unsigned int *pids);
-+nvmlReturn_t DECLDIR nvmlVgpuInstanceGetAccountingStats(nvmlVgpuInstance_t vgpuInstance, unsigned int pid, nvmlAccountingStats_t *stats);
-+typedef struct nvmlBlacklistDeviceInfo_st
-+{
-+ nvmlPciInfo_t pciInfo;
-+ char uuid[NVML_DEVICE_UUID_BUFFER_SIZE];
-+} nvmlBlacklistDeviceInfo_t;
-+nvmlReturn_t DECLDIR nvmlGetBlacklistDeviceCount(unsigned int *deviceCount);
-+nvmlReturn_t DECLDIR nvmlGetBlacklistDeviceInfoByIndex(unsigned int index, nvmlBlacklistDeviceInfo_t *info);
-+#if defined(__NVML_API_VERSION_INTERNAL)
-+#undef nvmlDeviceGetGridLicensableFeatures
-+#undef nvmlDeviceRemoveGpu
-+#undef nvmlDeviceGetNvLinkRemotePciInfo
-+#undef nvmlDeviceGetPciInfo
-+#undef nvmlDeviceGetCount
-+#undef nvmlDeviceGetHandleByIndex
-+#undef nvmlDeviceGetHandleByPciBusId
-+#undef nvmlInit
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+#endif
diff --git a/sys-process/nvtop/files/nvtop-1.0.0-fix-ncurses.patch b/sys-process/nvtop/files/nvtop-1.0.0-fix-ncurses.patch
deleted file mode 100644
index cc0fc9b5..00000000
--- a/sys-process/nvtop/files/nvtop-1.0.0-fix-ncurses.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-diff --git a/cmake/modules/FindCurses.cmake b/cmake/modules/FindCurses.cmake
-index 1002813..1ce7131 100644
---- a/cmake/modules/FindCurses.cmake
-+++ b/cmake/modules/FindCurses.cmake
-@@ -1,46 +1,49 @@
- # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- # file Copyright.txt or https://cmake.org/licensing for details.
-
--#.rst:
--# FindCurses
--# ----------
--#
--# Find the curses or ncurses include file and library.
--#
--# Result Variables
--# ^^^^^^^^^^^^^^^^
--#
--# This module defines the following variables:
--#
--# ``CURSES_FOUND``
--# True if Curses is found.
--# ``CURSES_INCLUDE_DIRS``
--# The include directories needed to use Curses.
--# ``CURSES_LIBRARIES``
--# The libraries needed to use Curses.
--# ``CURSES_HAVE_CURSES_H``
--# True if curses.h is available.
--# ``CURSES_HAVE_NCURSES_H``
--# True if ncurses.h is available.
--# ``CURSES_HAVE_NCURSES_NCURSES_H``
--# True if ``ncurses/ncurses.h`` is available.
--# ``CURSES_HAVE_NCURSES_CURSES_H``
--# True if ``ncurses/curses.h`` is available.
--#
--# Set ``CURSES_NEED_NCURSES`` to ``TRUE`` before the
--# ``find_package(Curses)`` call if NCurses functionality is required.
--# Set ``CURSES_NEED_WIDE`` to ``TRUE`` before the
--# ``find_package(Curses)`` call if unicode functionality is required.
--#
--# Backward Compatibility
--# ^^^^^^^^^^^^^^^^^^^^^^
--#
--# The following variable are provided for backward compatibility:
--#
--# ``CURSES_INCLUDE_DIR``
--# Path to Curses include. Use ``CURSES_INCLUDE_DIRS`` instead.
--# ``CURSES_LIBRARY``
--# Path to Curses library. Use ``CURSES_LIBRARIES`` instead.
-+#[=======================================================================[.rst:
-+FindCurses
-+----------
-+
-+Find the curses or ncurses include file and library.
-+
-+Result Variables
-+^^^^^^^^^^^^^^^^
-+
-+This module defines the following variables:
-+
-+``CURSES_FOUND``
-+ True if Curses is found.
-+``CURSES_INCLUDE_DIRS``
-+ The include directories needed to use Curses.
-+``CURSES_LIBRARIES``
-+ The libraries needed to use Curses.
-+``CURSES_CFLAGS``
-+ Parameters which ought be given to C/C++ compilers when using Curses.
-+``CURSES_HAVE_CURSES_H``
-+ True if curses.h is available.
-+``CURSES_HAVE_NCURSES_H``
-+ True if ncurses.h is available.
-+``CURSES_HAVE_NCURSES_NCURSES_H``
-+ True if ``ncurses/ncurses.h`` is available.
-+``CURSES_HAVE_NCURSES_CURSES_H``
-+ True if ``ncurses/curses.h`` is available.
-+
-+Set ``CURSES_NEED_NCURSES`` to ``TRUE`` before the
-+``find_package(Curses)`` call if NCurses functionality is required.
-+Set ``CURSES_NEED_WIDE`` to ``TRUE`` before the
-+``find_package(Curses)`` call if unicode functionality is required.
-+
-+Backward Compatibility
-+^^^^^^^^^^^^^^^^^^^^^^
-+
-+The following variable are provided for backward compatibility:
-+
-+``CURSES_INCLUDE_DIR``
-+ Path to Curses include. Use ``CURSES_INCLUDE_DIRS`` instead.
-+``CURSES_LIBRARY``
-+ Path to Curses library. Use ``CURSES_LIBRARIES`` instead.
-+#]=======================================================================]
-
- include(CheckLibraryExists)
-
-@@ -55,7 +58,7 @@ else()
- set(CURSES_NEED_NCURSES TRUE)
- endif()
-
--find_library(CURSES_CURSES_LIBRARY NAMES curses )
-+find_library(CURSES_CURSES_LIBRARY NAMES curses)
-
- find_library(CURSES_NCURSES_LIBRARY NAMES "${NCURSES_LIBRARY_NAME}" )
- set(CURSES_USE_NCURSES FALSE)
-@@ -117,7 +120,7 @@ if(CURSES_USE_NCURSES)
- if(CURSES_NCURSES_INCLUDE_PATH)
- if (CURSES_NEED_WIDE)
- find_path(CURSES_INCLUDE_PATH
-- NAMES ncursesw/ncurses.h ncursesw/curses.h
-+ NAMES ncursesw/ncurses.h ncursesw/curses.h ncursesw.h cursesw.h
- PATHS ${CURSES_NCURSES_INCLUDE_PATH}
- NO_DEFAULT_PATH
- )
-@@ -131,16 +134,18 @@ if(CURSES_USE_NCURSES)
- endif()
-
- if (CURSES_NEED_WIDE)
-+ set(CURSES_TINFO_LIBRARY_NAME tinfow)
- find_path(CURSES_INCLUDE_PATH
-- NAMES ncursesw/ncurses.h ncursesw/curses.h
-+ NAMES ncursesw/ncurses.h ncursesw/curses.h ncursesw.h cursesw.h
- HINTS "${_cursesParentDir}/include"
- )
- else()
-+ set(CURSES_TINFO_LIBRARY_NAME tinfo)
- find_path(CURSES_INCLUDE_PATH
- NAMES ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h
- HINTS "${_cursesParentDir}/include"
- )
-- endif()
-+ endif()
-
- # Previous versions of FindCurses provided these values.
- if(NOT DEFINED CURSES_LIBRARY)
-@@ -150,8 +155,8 @@ if(CURSES_USE_NCURSES)
- CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}"
- cbreak "" CURSES_NCURSES_HAS_CBREAK)
- if(NOT CURSES_NCURSES_HAS_CBREAK)
-- find_library(CURSES_EXTRA_LIBRARY tinfo HINTS "${_cursesLibDir}")
-- find_library(CURSES_EXTRA_LIBRARY tinfo )
-+ find_library(CURSES_EXTRA_LIBRARY "${CURSES_TINFO_LIBRARY_NAME}" HINTS "${_cursesLibDir}")
-+ find_library(CURSES_EXTRA_LIBRARY "${CURSES_TINFO_LIBRARY_NAME}" )
- endif()
- else()
- get_filename_component(_cursesLibDir "${CURSES_CURSES_LIBRARY}" PATH)
-@@ -237,10 +242,16 @@ if(CURSES_FORM_LIBRARY)
- set(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_FORM_LIBRARY})
- endif()
-
--# Provide the *_INCLUDE_DIRS result.
-+# Provide the *_INCLUDE_DIRS and *_CFLAGS results.
- set(CURSES_INCLUDE_DIRS ${CURSES_INCLUDE_PATH})
- set(CURSES_INCLUDE_DIR ${CURSES_INCLUDE_PATH}) # compatibility
-
-+find_package(PkgConfig QUIET)
-+if(PKG_CONFIG_FOUND)
-+ pkg_check_modules(NCURSES QUIET ${NCURSES_LIBRARY_NAME})
-+ set(CURSES_CFLAGS ${NCURSES_CFLAGS_OTHER})
-+endif()
-+
- include(FindPackageHandleStandardArgs)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(Curses DEFAULT_MSG
- CURSES_LIBRARY CURSES_INCLUDE_PATH)
diff --git a/sys-process/nvtop/nvtop-1.0.0.ebuild b/sys-process/nvtop/nvtop-1.0.0.ebuild
deleted file mode 100644
index cf472206..00000000
--- a/sys-process/nvtop/nvtop-1.0.0.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit cmake
-
-DESCRIPTION="NVIDIA GPUs htop like monitoring tool"
-HOMEPAGE="https://github.com/Syllo/nvtop"
-
-if [[ "${PV}" == "9999" ]] ; then
- EGIT_REPO_URI="https://github.com/Syllo/${PN}.git"
- inherit git-r3
-else
- SRC_URI="https://github.com/Syllo/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
- KEYWORDS="~amd64 ~x86"
-fi
-
-LICENSE="GPL-3"
-SLOT="0"
-
-IUSE="debug unicode"
-
-RDEPEND="
- sys-libs/ncurses:0=[unicode?]
- x11-drivers/nvidia-drivers
-"
-
-DEPEND="${RDEPEND}"
-
-BDEPEND="
- virtual/pkgconfig
-"
-
-PATCHES=(
- "${FILESDIR}"/${PN}-1.0.0-add-nvml.patch
- "${FILESDIR}"/${PN}-1.0.0-fix-ncurses.patch
-)
-
-src_configure() {
- local CMAKE_CONF="
- !debug? ( -DCMAKE_BUILD_TYPE=Release )
- debug? ( -DCMAKE_BUILD_TYPE=Debug )
- unicode? ( -DCURSES_NEED_WIDE=TRUE )
- "
- local mycmakeargs=(
- -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr"
- -DNVML_INCLUDE_DIRS="${S}/include"
- ${CMAKE_CONF}
- )
-
- cmake_src_configure
-}
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-12-04 19:21 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-13 15:28 [gentoo-commits] repo/proj/guru:dev commit in: sys-process/nvtop/, sys-process/nvtop/files/ Rui Huang
-- strict thread matches above, loose matches on Subject: below --
2020-12-04 19:21 Rui Huang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox