optimization - GPU 利用率低是否表明不适合 GPU 加速?
问题描述
我正在运行一些GPU 加速的 PyTorch 代码并针对自定义数据集对其进行训练,但是在此过程中监视我的工作站的状态时,我看到 GPU 的使用情况如下:
我从未编写过自己的 GPU 原语,但我在为 CPU 密集型工作负载进行低级优化方面有着悠久的历史,我在那里的经验让我担心,虽然 pytorch/torchvision 正在将工作卸载到 GPU,但它可能不是GPU 加速的理想工作负载。
在优化 CPU 密集型代码时,目标是尝试让 CPU 在单位时间内执行尽可能多(有意义的)工作:假设 CPU 密集型任务仅显示 20% 的 CPU 利用率(单核或所有内核,取决于任务是否可并行化)是一个没有被有效执行的任务,因为 CPU 处于空闲状态,而理想情况下它会朝着你的目标工作。低 CPU 使用率意味着除数字运算之外的其他事情正在占用您的挂钟时间,无论是低效的锁定、繁重的上下文切换、管道刷新、主循环中的锁定 IO 等,都会阻止工作负载正确地使 CPU 饱和。
在查看上图中的 GPU 利用率时,再次以完全新手的身份谈到 GPU 利用率时,让我震惊的是 GPU 利用率极低,并且似乎受到数据复制到其中的速率的限制GPU内存。这个假设正确吗?我希望看到副本(到 GPU)激增,然后是长时间的计算/转换,然后是一个简短的副本(从 GPU 返回),无限重复。
我注意到,尽管副本利用率很低(尽管是恒定的),但 GPU 内存一直在达到 8GB 的峰值。我是否可以假设工作负载受到可用 GPU 内存低的限制(即没有最大化复制带宽,因为只有这么多可以复制)?
这是否意味着这是一个更适合 CPU 的工作负载(在这种特殊情况下使用此 RTX 2080 并且通常使用任何卡)?
解决方案
推荐阅读
- java - Minecraft 客户端 HUD 模块失败
- coq - 在匹配中展开类型函数(如破坏)
- c++ - 如何将输出文件保存在 C 驱动器中用于 C++
- numpy - group的加权平均值不等于pandas groupby中的总平均值
- jquery - 自动更新表格而不刷新/重新加载页面
- twitter-bootstrap - 用于文本区域的 Bootstrap 5 浮动标签与滚动输入重叠
- python - 使正则表达式组合多个字符和数字组合
- c++ - 使用 unique_ptr 包装和展开 void*
- android - Facebook 奖励广告未加载
- angular-cli - 在 Angular 9 中进行 ng build 时出现错误:发生未处理的异常:找不到模块'@angular-devkit/build-angular/package.json'