-4
A
答えて
0
http://eliang.blogspot.com.by/2011/05/getting-nvidia-gpu-usage-in-c.html?m=1
//
// Getting Nvidia GPU Usage
//
// Reference: Open Hardware Monitor (http://code.google.com/p/open-hardware-monitor)
//
#include <windows.h>
#include <iostream>
// magic numbers, do not change them
#define NVAPI_MAX_PHYSICAL_GPUS 64
#define NVAPI_MAX_USAGES_PER_GPU 34
// function pointer types
typedef int *(*NvAPI_QueryInterface_t)(unsigned int offset);
typedef int (*NvAPI_Initialize_t)();
typedef int (*NvAPI_EnumPhysicalGPUs_t)(int **handles, int *count);
typedef int (*NvAPI_GPU_GetUsages_t)(int *handle, unsigned int *usages);
int main()
{
HMODULE hmod = LoadLibraryA("nvapi.dll");
if (hmod == NULL)
{
std::cerr << "Couldn't find nvapi.dll" << std::endl;
return 1;
}
// nvapi.dll internal function pointers
NvAPI_QueryInterface_t NvAPI_QueryInterface = NULL;
NvAPI_Initialize_t NvAPI_Initialize = NULL;
NvAPI_EnumPhysicalGPUs_t NvAPI_EnumPhysicalGPUs = NULL;
NvAPI_GPU_GetUsages_t NvAPI_GPU_GetUsages = NULL;
// nvapi_QueryInterface is a function used to retrieve other internal functions in nvapi.dll
NvAPI_QueryInterface = (NvAPI_QueryInterface_t) GetProcAddress(hmod, "nvapi_QueryInterface");
// some useful internal functions that aren't exported by nvapi.dll
NvAPI_Initialize = (NvAPI_Initialize_t) (*NvAPI_QueryInterface)(0x0150E828);
NvAPI_EnumPhysicalGPUs = (NvAPI_EnumPhysicalGPUs_t) (*NvAPI_QueryInterface)(0xE5AC921F);
NvAPI_GPU_GetUsages = (NvAPI_GPU_GetUsages_t) (*NvAPI_QueryInterface)(0x189A1FDF);
if (NvAPI_Initialize == NULL || NvAPI_EnumPhysicalGPUs == NULL ||
NvAPI_EnumPhysicalGPUs == NULL || NvAPI_GPU_GetUsages == NULL)
{
std::cerr << "Couldn't get functions in nvapi.dll" << std::endl;
return 2;
}
// initialize NvAPI library, call it once before calling any other NvAPI functions
(*NvAPI_Initialize)();
int gpuCount = 0;
int *gpuHandles[NVAPI_MAX_PHYSICAL_GPUS] = { NULL };
unsigned int gpuUsages[NVAPI_MAX_USAGES_PER_GPU] = { 0 };
// gpuUsages[0] must be this value, otherwise NvAPI_GPU_GetUsages won't work
gpuUsages[0] = (NVAPI_MAX_USAGES_PER_GPU * 4) | 0x10000;
(*NvAPI_EnumPhysicalGPUs)(gpuHandles, &gpuCount);
// print GPU usage every second
for (int i = 0; i < 100; i++)
{
(*NvAPI_GPU_GetUsages)(gpuHandles[0], gpuUsages);
int usage = gpuUsages[3];
std::cout << "GPU Usage: " << usage << std::endl;
Sleep(1000);
}
return 0;
}
関連する問題
- 1. 高負荷ストリームの予測時にCUDA GPUを使用する
- 2. CUDAでのGPU使用率が低い
- 3. nvidia(cuda対応)gpuカードの負荷をどのように計算しますか?
- 4. CUDAのGPU CPU
- 5. GPUのCUDAカーネルスケジューラ
- 6. Keras:チェックポイントの重みを負荷は複数のGPUで
- 7. システム負荷とユーザー負荷
- 8. GPU負荷の下でのCGEventPostの脆弱なパフォーマンス
- 9. CUDAリモートGPU
- 10. 負荷イメージが
- 11. アンドロイド:負荷が
- 12. Tensorflowは自動的に我々が使用して、使用するGPUデバイスを指定最も負荷GPU
- 13. - DLLの負荷が
- 14. ASP.NET:無負荷時のCPU使用率が高い
- 15. 負荷テストツールの負荷テスト機能
- 16. TensorFlow GPU CUDA CUDDNエラー
- 17. MatlabとGPU/CUDAプログラミング
- 18. 負荷1ページが
- 19. ダイナミックSVG負荷が
- 20. EXT JSが:負荷
- 21. Gurobipy DLL負荷が
- 22. jQueryのは、負荷()関数の新しい結果を取得
- 23. AutoCompleteTextFieldは私が集中したときに、負荷の負荷
- 24. マジェンタでテストを負荷/負荷する方法
- 25. LIからの名前を取得し、負荷要素
- 26. 負荷の高いSQL Serverの取得エラー(同時ユーザー数200)
- 27. オープン負荷がPHPのVAR
- 28. JavaFXのIllegalAccessExceptionがFXML負荷()
- 29. 負荷のiframeがダウン
- 30. が、Reduxのストレージ負荷
https://developer.nvidia.com/nvidia-management-library-nvml – talonmies