私は、NVIDIA Tesla K20 GPU(Keplerアーキテクチャ)の電力使用量をNVML APIを使って定期的に測定するコードを書いています。nvmlDeviceGetPowerManagementMode()は常にNVML_ERROR_INVALID_ARGUMENTを返しますか?
変数:
nvmlReturn_t result;
nvmlEnableState_t pmmode;
nvmlDevice_t nvmlDeviceID;
unsigned int powerInt;
Basicコード:
result = nvmlDeviceGetPowerManagementMode(nvmlDeviceID, &pmmode);
if (pmmode == NVML_FEATURE_ENABLED) {
result = nvmlDeviceGetPowerUsage(nvmlDeviceID, &powerInt);
}
私の問題はnvmlDeviceGetPowerManagementMode
は常にNVML_ERROR_INVALID_ARGUMENT
を返しているということです。私はこれをチェックした。
nvmlDeviceID
が無効か、pmmode
がNULL
の場合、NVML APIドキュメントではNVML_ERROR_INVALID_ARGUMENT
が返されます。
nvmlDeviceID
は、自分のGPUに一致するプロパティを照会できるため、間違いなく有効です。しかし、Reference in which to return the current power management mode
と書かれているので、なぜ私はpmmode
の値を何に設定すべきかわかりません。レコードについては、有効値を割り当てようとしましたが、結果は同じです。
システムの他のユーザーがこの機能を使用して独自のライブラリを作成していて、何の問題もないので、間違ったことをしています。私はそれらに連絡することができません。この関数を正しく動作させるにはどうすればよいですか?