#ifndef __LINUX_NVML_H__ #define __LINUX_NVML_H__ #include "nvml.h" #define FEATURE_CLOCK_INFO 1 #define FEATURE_ECC_LOCAL_ERRORS 2 #define FEATURE_FAN_SPEED 4 #define FEATURE_MAX_CLOCK 8 #define FEATURE_MEMORY_INFO 16 #define FEATURE_PERF_STATES 32 #define FEATURE_POWER 64 #define FEATURE_TEMP 128 #define FEATURE_ECC_TOTAL_ERRORS 256 #define FEATURE_UTILIZATION 512 #define FEATURE_POWER_MANAGEMENT 1024 #define FEATURE_NVML_POWER_MANAGEMENT_LIMIT_CONSTRAINT_MIN 2048 #define FEATURE_NVML_POWER_MANAGEMENT_LIMIT_CONSTRAINT_MAX 4096 #define HAS_FEATURE( features, query ) ( features & query ) #define MEMINFO_TOTAL_MEMORY 0 #define MEMINFO_UNALLOCED 1 #define MEMINFO_ALLOCED 2 #define LOCAL_ECC_REGFILE 0 #define LOCAL_ECC_L1 1 #define LOCAL_ECC_L2 2 #define LOCAL_ECC_MEM 3 #define GPU_UTILIZATION 0 #define MEMORY_UTILIZATION 1 /* we lookup which card we are on at read time; this is a place holder */ typedef int nvml_register_t; struct local_ecc { nvmlEccBitType_t bits; int which_one; }; typedef union { nvmlClockType_t clock; /* used in get[Max]ClockSpeed */ struct local_ecc ecc_opts; /* local ecc errors, total ecc errors */ int which_one; /* memory_info , utilization*/ } nvml_resource_options_t; typedef struct nvml_native_event_entry { nvml_resource_options_t options; char name[PAPI_MAX_STR_LEN]; char units[PAPI_MIN_STR_LEN]; char description[PAPI_MAX_STR_LEN]; int type; } nvml_native_event_entry_t; #endif