python - Caffe做前向推理时GPU利用率不够高,有什么想法吗?

标签 python c++ gpu caffe inference

我编写了 Python 和 C++ 版本的 Caffe 前向分类脚本来测试 Caffe 的推理性能。模型已经训练好了。结果很相似,GPU utils 不够全。

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

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

在我的脚本中,我加载图像,对其进行预处理,将其加载到输入层,然后重复 net_.forward() 操作。根据我的理解,这不会导致任何 Mem 复制操作,因此理想情况下应该最大限度地提高 GPU 实用程序。但我最多只能达到80%。

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

Use multiple classification threads to ensure the GPU is always fully utilized and not waiting for an I/O blocked CPU thread.

所以我尝试使用多线程编译的OpenBLAS,在CPU后端下,实际上更多的CPU参与转发,但GPU后端没有用。在GPU后端下,CPU utils会固定在100%左右。

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

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

欢迎任何意见。

谢谢,

最佳答案

正如我所观察到的,GPU 实用程序减少了,

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)。

关于python - Caffe做前向推理时GPU利用率不够高,有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49571777/

相关文章:

python - 如何编写与普通 Python 值和 NumPy 数组兼容的条件代码?

python - 从yahoo finance python一次下载多只股票

python - 如何在命令行中发送 python 文件执行的命令行参数?

c++ - 使用 `StructType structInstance = {};` 初始化结构的行为是什么?

openCL 麻烦同时保存 CPU 和 GPU 的编译二进制文件

android - 如何知道 Android GPU 使用情况?

javascript - 如何让 Selenium 更新 Facebook 个人资料图片

c++ - 如何通过基类指针调用派生类的虚函数

c++ - C++ 中 Visual Studio 2013 中的 VideoCapture 错误 OpenCV 3.0.0

c++ - CUDA:每个 GPU 线程上的 Runge-Kutta 轨迹