Cuda 获取 GPU 负载百分比

杯子

我想计算 GPU 负载。如何获得 cuda 中的 GPU 负载百分比?

在此处输入图片说明

杯子

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;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取百分比的光标位置

来自分类Dev

获取滚动位置的百分比

来自分类Dev

获取访问百分比

来自分类Dev

获取颜色百分比OpenCv

来自分类Dev

从行值获取百分比

来自分类Dev

获取宽度百分比

来自分类Dev

获取百分比的光标位置

来自分类Dev

获取用户的百分比

来自分类Dev

获取最大百分比,输出与其关联的值,而不是百分比

来自分类Dev

获取总CPU使用率的百分比

来自分类常见问题

在枢轴mysql查询中获取百分比

来自分类Dev

获取C ++中数字的百分比

来自分类Dev

获取列表长度的特定百分比的索引

来自分类Dev

如何获取进程的内存使用百分比?

来自分类Dev

获取出勤人数百分比

来自分类Dev

获取符合条件的列表的百分比

来自分类Dev

从Hive计数中获取百分比

来自分类Dev

获取PHP中混合颜色的百分比

来自分类Dev

在SQL查询中获取百分比

来自分类Dev

如何使用jQuery获取行高百分比?

来自分类Dev

jQuery获取元素中mouseclick百分比的位置

来自分类Dev

获取Elasticsearch中的价值百分比

来自分类Dev

无法显示百分比数字(获取NaN)

来自分类Dev

获取视口中元素位置的百分比

来自分类Dev

获取空白CSV行的百分比

来自分类Dev

从是/否列获取Tableau中的百分比

来自分类Dev

获取属于特定范围的值的每日百分比

来自分类Dev

Python-根据列值获取百分比

来自分类Dev

获取整数c#的分层金额的百分比