我正在尝试计算我的MJPEG decoder的OpenCL代码的不同内核的功耗。我使用以下命令通过使用以下命令计算各种内核的功耗和资源利用率(这只是一个示例):
nvidia-smi -q -d POWER,UTILIZATION -i 0 -l -f out.log
每个内核的功耗大致相同,“sebf”解释了为什么在他的评论中就是这种情况。
x轴表示计算功率的实例数,y轴表示功耗。可以看出,当所有功能在GPU上运行时,应用程序运行的时间更长。但是,所有情况下的峰值功耗大致相同。
(为了计算GPU上函数的功耗,我让其他函数作为C代码运行,而特定函数作为OpenCL内核运行)。
在我记录了利用率百分比后,我注意到每个场景的百分比都不同。上采样的平均GPU利用率约为44%,iqzz的平均利用率为22%,颜色为8%转换,IDCT为15%,GPU上运行所有功能为29%。
例如,iqzz的一个实例的数据如下:
==============NVSMI LOG==============
Timestamp : Wed Jan 3 18:22:12 2018
Driver Version : 352.21
Attached GPUs : 2
GPU 0000:03:00.0
Utilization
Gpu : 22 %
Memory : 0 %
Encoder : 0 %
Decoder : 0 %
GPU Utilization Samples
Duration : 16.47 sec
Number of Samples : 99
Max : 22 %
Min : 19 %
Avg : 21 %
Memory Utilization Samples
Duration : 16.47 sec
Number of Samples : 99
Max : 0 %
Min : 0 %
Avg : 0 %
ENC Utilization Samples
Duration : 16.47 sec
Number of Samples : 99
Max : 0 %
Min : 0 %
Avg : 0 %
DEC Utilization Samples
Duration : 16.47 sec
Number of Samples : 99
Max : 0 %
Min : 0 %
Avg : 0 %
Power Readings
Power Management : Supported
Power Draw : 52.60 W
Power Limit : 225.00 W
Default Power Limit : 225.00 W
Enforced Power Limit : 225.00 W
Min Power Limit : 150.00 W
Max Power Limit : 225.00 W
Power Samples
Duration : 1.78 sec
Number of Samples : 119
Max : 52.61 W
Min : 52.41 W
Avg : 52.51 W
this问题的答案表明利用率百分比表示GPU处于活动状态的时间百分比。
那么,我们可以使用利用率百分比来计算每种方案的功耗吗? 例如,对于iqzz,我们可以{{1} (日志文件中的其他实例与我发布的实例类似。)?
请告诉我计算GPU功率的方法是否正确?
我的编程框架是OpenCL,我的GPU是Tesla K20c。
修改
我研究了this回答和this论文,他们都提到使用NVML(Nvidia Management Library)来计算功耗。