问题:pytorch程序GPU的使用率很低。
如图,我使用5、6号显卡执行pytorch的程序,GPU使用率很低;而其他显卡跑的tensorflow网络,GPU使用率都正常。
一般情况下,深度学习遇到这种问题,上来都会认为是dataloader读数据的效率问题:由于读取数据耗时教久,往往程序不能执行GPU上深度网络的计算代码。
探索:
使用7号显卡debug该pytorch程序,输出每次迭代读取数据与网络计算消耗的时间。结果显示
1.读取数据的时间比网络计算少两个数量级
2.期间7号显卡显卡使用率也很正常
3.期间5,6号显卡的使用率也回升了
关闭7号显卡上的程序后,发现
1. 5,6号显卡的使用率随即下降
2. 7号显卡偶尔有3%的volatile gpu-util
我感觉应该是有程序在使用7号显卡,同时也会导致5、6号显卡使用率下降。
解决方案:
这个nvidia forum中提到,应该是GPU默认打开了ECC(error correcting code, 错误检查和纠正),会占用显存和降低显卡性能,打开Persistence Mode Enabled(用root执行nvidia-smi -pm 1)后5、6号显卡的显卡使用率恢复正常水平,问题解决。
疑问:
1.为什么tensorflow的程序不会被ECC影响?
2.为什么在7号显卡上执行pytorch程序后,其他显卡的使用率都会恢复正常?
后面有空的话可以查下这两个问题。