将 GPU 用作视频卡和 GPGPU

Posted

技术标签:

【中文标题】将 GPU 用作视频卡和 GPGPU【英文标题】:Using a GPU both as video card and GPGPU 【发布时间】:2016-05-21 02:37:49 【问题描述】:

在我工作的地方,我们进行大量数值计算,并且由于 CUDA(与 TensorFlow 和 Theano 一起使用),我们正在考虑购买配备 NVIDIA 显卡的工作站。

我的问题是:这些计算机是否应该配备另一个视频卡来处理显示并为 GPGPU 释放 NVIDIA?

如果有人知道同时使用显卡和 GPGPU 的硬数据,我将不胜感激。

【问题讨论】:

【参考方案1】:

经历过这个,我会加两分钱。

有一个专门的计算卡是有帮助的,但绝对没有必要。

我使用了一个带有单个高端 GPU 的开发工作站,用于显示和计算。我还使用了具有多个 GPU 的工作站以及无头计算服务器。

我的经验是,只要对显示器的需求是软件工程的典型需求,就可以在显示器 GPU 上进行计算。在带有几个监视器、Web 浏览器、文本编辑器等的 Linux 设置中,我使用大约 200MB 来显示卡的 6GB 空间——因此只有大约 3% 的开销。您可能会在网页刷新或类似情况下看到显示有点卡顿,但对显示的吞吐量需求非常小。

一个值得注意的完整性技术问题是 NVIDIA 驱动程序、GPU 固件或操作系统可能会在显示 GPU 上出现内核完成超时(运行 NVIDIA 的“deviceQueryDrv”以查看驱动程序的“内核运行时间限制”设置) )。根据我的经验(在 Linux 上),对于机器学习,这从来都不是问题,因为超时是几秒钟,即使使用自定义内核,跨多处理器的同步也会限制你可以在单个内核启动中填充多少内容。我希望 TensorFlow 中预烘焙操作的典型运行低于此限制两个或多个数量级。

也就是说,在一个工作站中拥有多张具有计算能力的卡有一些很大的优势(无论一张是否用于显示)。当然,还有更多吞吐量的潜力(如果您的软件可以使用它)。但是,根据我的经验,主要优势是能够在进行长时间实验的同时开发新的实验。

从一张卡开始然后再添加一张当然是可行的,但请确保您的主板有足够的空间并且您的电源可以处理负载。如果您决定拥有两张卡,其中一张是专用于显示的低端卡,我特别建议不要让低端卡成为支持 CUDA 的卡,以免它被选为计算的默认值。

希望对您有所帮助。

【讨论】:

谢谢。幸运的是,我认为我们购买的计算机已经配备了内置的英特尔图形芯片,所以也许这个问题根本不会出现。无论如何,这里的大老板正在考虑购买一个具有非常强大的 nvidia 的单个服务器,每个人都会分享大声笑。从让多人使用 GPU 和数据传输中涉及到传输数据的上下文切换是否比简单地为需要它们的员工购买更便宜的 nvidias 更糟糕? @Ricardo NVIDIA 驱动程序很成熟,并且非常擅长上下文切换——这里没有基本障碍——但是共享内存、带宽和计算吞吐量有你所期望的缺点——所以共享 GPU 的可行性取决于您的应用程序的详细信息。最先进性能的训练模型往往要求很高(例如,多个 GPU 完全利用数天进行图像分类)。你可以看看你想运行的算法,看看其他人运行了多长时间,然后还要考虑测试/调试/优化要求。【参考方案2】:

根据我的经验,在数值计算任务和驱动视频监视器之间共享 GPU 卡是很尴尬的。例如,任何 GPU 上的可用内存都是有限的,这通常是您可以训练的模型大小的限制因素。除非您正在玩游戏,否则相当适中的 GPU 可能足以驱动视频。但对于严肃的 ML 工作,您可能需要高性能卡。在我工作的地方(谷歌),当一个用于数值计算时,我们通常将两个 GPU 放在桌面机器中。

【讨论】:

非常感谢! - 还有一个问题:我在某处读到(我认为是在 Tensor Flow 文档中,但找不到它),显示在训练模型时有时会暂时冻结。是这样吗?

以上是关于将 GPU 用作视频卡和 GPGPU的主要内容,如果未能解决你的问题,请参考以下文章

GPU与GPGPU泛淡

GPU上是不是有内存保护

为啥 HTML 5 视频标签不适用于将 YouTube 视频用作源?

Linux FFmpeg h.264 h.265 GPU加速 CUDA加速编码封装分析

如何通过优化 Python 中的 GPU 使用率将视频处理速度提高 5 倍(教程含源码)

Linux FFmpeg h.264 h.265 GPU加速 CUDA加速编码封装方案分析(转载)