在做正向推理时,Caffe的GPU利用率还不够,任何想法?

时间:2018-03-30 09:23:04

标签: python c++ gpu caffe inference

我编写了Caffe前向分类脚本的Python和C ++版本来测试Caffe的推理性能。该模型已经过培训。结果非常相似,GPU utils还不够用。

我的设置:  1.卡片:Titan XP,12GB  2.型号:InceptionV3  3.尺寸:3 * 299 * 299

当batch_size设置为40时,GRAM的使用率可以达到10GB,但GPU和C ++的GPU工具只能达到77%~79%。所以性能大约是 258帧/秒

在我的脚本中,我加载了图像,对其进行预处理,将其加载到输入层,然后重复net_.forward()操作。根据我的理解,这不会导致任何Mem copy操作,所以理想情况下应该最大限度地提取GPU utils。但我只能达到不超过80%。

C++ Classification Tutorial中,我发现以下短语:

  

使用多个分类线程确保GPU始终得到充分利用,而不是等待I / O阻塞的CPU线程。

所以我尝试使用多线程编译的OpenBLAS,并且在CPU后端,实际上涉及更多的CPU进行转发,但没有用于GPU后端。在GPU后端,CPU工具将固定为大约100%。

然后我甚至尝试将batch_size减少到20,并在两个终端中启动两个分类过程。结果是,GRAM使用率增加到11GB,但GPU工具减少到64%~66%。最后,性能降低到 200帧/秒

有没有人遇到过这个问题?我真的很困惑。

欢迎任何意见。

谢谢,

1 个答案:

答案 0 :(得分:0)

正如我所观察到的,GPU util减少了,

1)低PCI express模式resnet-152(x16)-90%> resnet-152(x8)-80%> RESNET-152(X4)-70% 2)大型 - VGG-100%(x16); ResNet-50(x16)-95~100%; ResNet-152(x16) - 90%

此外,如果我关闭cuDNN,GPU Util总是100%。

所以我认为有一些与cuDNN有关的问题,但我不太了解这个问题。

NVCaffe稍好一些,MXNet可以100%使用GPU(resnet-152; x4)。