我正在编写代码来定期使用 NVML API 测量 NVIDIA Tesla K20 GPU(Kepler 架构)的功耗。
变量:
nvmlReturn_t result;
nvmlEnableState_t pmmode;
nvmlDevice_t nvmlDeviceID;
unsigned int powerInt;
基本代码:
result = nvmlDeviceGetPowerManagementMode(nvmlDeviceID, &pmmode);
if (pmmode == NVML_FEATURE_ENABLED) {
result = nvmlDeviceGetPowerUsage(nvmlDeviceID, &powerInt);
}
我的问题是nvmlDeviceGetPowerManagementMode
总是返回NVML_ERROR_INVALID_ARGUMENT
。我检查了这个。
NVML API 文档说,NVML_ERROR_INVALID_ARGUMENT
当nvmlDeviceID
无效pmmode
或NULL
.
nvmlDeviceID
绝对有效,因为我能够查询与我的 GPU 匹配的属性。但我不明白为什么我应该将值设置pmmode
为任何东西,因为文档说它是一个Reference in which to return the current power management mode
. 作为记录,我尝试为其分配一个启用值,但结果仍然相同。
我显然做错了,因为系统的其他用户已经使用此功能编写了自己的库,并且他们没有遇到任何问题。我无法联系到他们。我应该修复什么才能使此功能正常工作?