NVML程序总功耗

时间:2018-10-04 16:57:36

标签: nvidia consumption nvml

我正在使用NVML的nvmlDeviceGetPowerUsage()获取程序的总功耗。在下面的代码中,我在openACC并行区域之前插入了一个调用,在并行区域之后插入了另一个调用。

但这似乎不对,因为documentation表示此功能“以毫瓦为单位及其相关电路(例如内存)检索此GPU的功耗”,我解释为:(纠正我如果我错了)“ GPU的当前功耗”,而不是程序执行期间的总功耗。

这是我现在正在使用的代码:

        unsigned int power[device_count];
        for (i = 0; i < device_count; i++){
                if(nvmlDeviceGetPowerUsage ( device[i], &power[i] ) != NVML_SUCCESS){
                        printf("Error getting power usage for device:%d\n",i);
                }
                printf("Before: Power usage for device:%d = %ld mWatts\n",i,power[i]);
        }

        #pragma acc parallel
        {
                //code to run in parallel here
        }

        for (i = 0; i < device_count; i++){
                if(nvmlDeviceGetPowerUsage ( device[i], &power[i] ) != NVML_SUCCESS){
                        printf("Error getting power usage for device:%d\n",i);
                }
                printf("After: Power usage for device:%d = %ld mWatts\n",i,power[i]);
        }

我需要做什么才能获得程序的总功耗?有什么技巧可以使用吗?或其他任何可以执行此操作的功能?

感谢您的帮助。

0 个答案:

没有答案