- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
此问题最初发布于 Github #3320 .最好从那里开始,因为该线程中有更多关于原始问题的详细信息,而且体积庞大,所以我不想在 StackOverflow 上重新发布。问题的总结是使用 GPU 处理 TensorFlow Graph 时的性能比 CPU 慢。包括 CPU/GPU 时间线(调试)以进行评估。回复的评论之一是关于优化图形以加快处理速度,并要求讨论一个玩具示例。 “ 原始解决方案”是我的强化学习代码,表现出性能缓慢,并创建了一些已发布的代码供社区讨论和评估。
我已经附上了测试脚本以及一些原始数据、跟踪文件和 TensorBoard 日志文件,以加快任何审查。
CPUvsGPU testing.zip
讨论已移至 StackOverflow,因为该主题将使所有 Tensorflow 用户受益。我希望发现的是优化已发布图形性能的方法。 GPU 与 CPU 的问题可以分开,因为它可以通过更高效的 TensorFlow Graph 解决。
我所做的是带走我的原方案并剥离了“游戏环境”。我用随机数据生成代替了它。在这个游戏环境中,没有创建/修改 TensorFlow Graph。结构紧跟/杠杆nivwusquorum's Github Reinforcement Learning Example .
2016 年 7 月 15 日,我做了一个“git pull”来前往 Tensorflow。我在启用和不启用 GPU 的情况下执行了图表并记录了时间(见附图)。意外的结果是 GPU 的表现优于 CPU(这是未达到的初始期望)。所以这个带有支持库的代码“cpuvsgpu.py”在 GPU 上表现更好。所以我把注意力转向我的 之间可能有什么不同。原方案和发布的代码。我还将头部更新到 7/17/2016。随着 上 CPU 和 GPU 之间的整体差异确实有所改善原方案比我看到 47s CPU vs 71s GPU 的一周又近了很多。快速查看新的跟踪与我的初始跟踪,似乎“摘要”可能已更改,但也可能还有其他改进。
我尝试了另外 2 种组合来更好地反射(reflect) 原方案运作。那些 CPU 负载很重(~60% - 70%),并通过并发执行该脚本来模拟。另一个变化是增加“数据 IO”,原方案使用观察列表随机选择观察进行训练。这个列表有一个固定的上限,然后开始删除列表中的第一个项目,同时追加新项目。我认为其中之一可能是减慢了向 GPU 传输数据的速度。不幸的是,这两个版本都没有导致 CPU 的性能超过 GPU。我还运行了一个快速的 GPUTESTER 应用程序,该应用程序执行大型矩阵乘法以了解任务大小的时序差异,并且符合预期。
我真的很想知道如何改进此图并减少小 OPS 的数量。似乎这是大部分表演可能发生的地方。学习将较小的操作组合成较大的操作而不影响图形的逻辑(功能)的任何技巧会很好。
最佳答案
感谢您的精彩帖子。
我遇到了类似的问题:对于 TensorFlow 提供的两个示例,GPU/CPU 处理比单独的 CPU 处理需要更多的 CPU 和耗用时间:线性回归损失模型和初学者的 MNIST,而 MNIST Deep 脚本显示 CPU 的显着改进和使用 GPU 时已过期 Profiling GPU and CPU Performance第 10 页开始讨论。
以下是数字:
workload | win 8.1 win 8.1 win8.1 win 10 win 10 win 10
workload | cpu only cpu gpu cpu only cpu gpu
-------------+-----------------------------------------------------------
mnist deep | 14053 384.26 328.92 12406 289.28 211.79
mnist deep | 14044 384.59 328.45 12736 293.71 210.48
mnist10,000 | 24.10 45.85 7.67 26.56 44.42 7.32
mnist10,000 | 23.94 44.98 7.56 25.80 44.24 7.32
mnist50,000 | 95.49 198.12 38.26 109.99 197.82 36.15
mnist50,000 | 96.07 197.86 37.91 109.46 195.39 39.44
lr10,000 | 6.23 15.08 1.78 7.38 16.79 1.91
lr10,000 | 6.33 15.23 1.78 7.44 16.59 1.91
lr100,000 | 48.31 124.37 17.67 62.14 148.81 19.04
lr100,000 | 48.97 123.35 17.63 61.40 147.69 18.72
关于TensorFlow:图形优化(GPU 与 CPU 性能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38688777/
谁能解释或指出在多 GPU/多显示器设置中渲染如何工作的解释(或至少一些线索)? 例如,我安装了 5 个 NVIDIA Quadro 4000 视频卡并连接了 9 个显示器。显示不进行任何分组。刚刚在
以下代码报错: import spacy spacy.require_gpu() Traceback (most recent call last): File "/home/user/Pycha
正如问题已经暗示的那样,我是深度学习的新手。我知道模型的学习过程在没有 GPU 的情况下会很慢。如果我愿意等待,如果我只使用CPU可以吗? 最佳答案 在计算深度学习(以及一般的神经网络)中执行的许多操
我知道 Renderscript 的设计是为了掩盖我正在运行的处理器的事实,但是有没有办法编写代码,以便在支持 GPU 计算的设备(目前是 Nexus 10)上运行显卡?有什么方法可以判断脚本的功能正
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我想以编程方式找出可用的 GPU 及其当前内存使用情况,并根据内存可用性使用其中一个 GPU。我想在 PyTorch 中执行此操作。 我在这个 post 中看到了以下解决方案: import torc
我喜欢 GPU Gems 的结构化技术摘要。但是自上次发布以来已经过去了很长时间,应该开发新算法来处理新型硬件。 我可以阅读有关最近 GPU 技术成就的哪些信息? 潜伏在编程板上是唯一的方法吗? 最佳
我一直在做一些关于测量数据传输延迟的实验 CPU->GPU 和 GPU->CPU。我发现对于特定消息大小,CPU->GPU 数据传输速率几乎是 GPU->CPU 传输速率的两倍。谁能解释我为什么会这样
当我使用选项 --gres=gpu:1 向具有两个 GPU 的节点提交 SLURM 作业时,如何获取为该作业分配的 GPU ID?是否有用于此目的的环境变量?我使用的 GPU 都是 nvidia GP
我用 gpu、cuda 7.0 和 cudnn 6.5 安装了 tensorflow。当我导入 tensorflow 时,它运行良好。 我正在尝试在 Tensorflow 上运行一个简单的矩阵乘法,但
我们正在寻找有关 slurm salloc gpu 分配的一些建议。目前,给定: % salloc -n 4 -c 2 -gres=gpu:1 % srun env | grep CUDA CUD
我是否必须自定义为非 GPU Tensorflow 库编写的代码以适应tensorflow-gpu 库? 我有一个 GPU,想运行仅为非 GPU tensorflow 库编写的 Python 代码。我
我是否必须自定义为非 GPU Tensorflow 库编写的代码以适应tensorflow-gpu 库? 我有一个 GPU,想运行仅为非 GPU tensorflow 库编写的 Python 代码。我
我正在使用 pytorch 框架训练网络。我的电脑里有 K40 GPU。上周,我在同一台计算机上添加了 1080。 在我的第一个实验中,我在两个 GPU 上观察到相同的结果。然后,我在两个 GPU 上
有没有办法在 Slurm 上超额订阅 GPU,即运行共享一个 GPU 的多个作业/作业步骤?我们只找到了超额订阅 CPU 和内存的方法,但没有找到 GPU。 我们希望在同一 GPU 上并行运行多个作业
我可以访问 4 个 GPU(不是 root 用户)。其中一个 GPU(2 号)表现怪异,它们的一些内存被阻塞但功耗和温度非常低(好像没有任何东西在上面运行)。请参阅下图中 nvidia-smi 的详细
我正在尝试通过 Tensorflow 运行示例 seq2seq,但它不会使用 GPU。以下是我在带有 Tesla K20x 的 Linux 系统上安装 Tensorflow 所采取的步骤 git cl
一位电气工程师最近提醒我不要使用 GPU 进行科学计算(例如,在精度非常重要的地方),因为没有像 CPU 那样的硬件保护措施。这是真的吗?如果是的话,典型硬件中的问题有多普遍/严重? 最佳答案 实际上
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
最近我研究了强化学习,有一个问题困扰着我,我找不到答案:如何使用 GPU 有效地完成训练?据我所知,需要与环境持续交互,这对我来说似乎是一个巨大的瓶颈,因为这项任务通常是非数学的/不可并行化的。然而,
我是一名优秀的程序员,十分优秀!