将 GPU 同时用作视频卡和 GPGPU
Using a GPU both as video card and GPGPU
在我工作的地方,我们进行了大量的数值计算,并且由于 CUDA(与 TensorFlow 和 Theano 一起工作),我们正在考虑购买带有 NVIDIA 显卡的工作站。
我的问题是:这些计算机是否应该配备另一块视频卡来处理显示并为 GPGPU 释放 NVIDIA?
如果有人知道同时使用视频卡显示和 GPGPU 的硬数据,我将不胜感激。
根据我的经验,在数值计算任务和驱动视频监视器之间共享 GPU 卡是很尴尬的。例如,任何 GPU 上的可用内存都是有限的,这通常是您可以训练的模型大小的限制因素。除非您正在玩游戏,否则相当适中的 GPU 可能足以驱动视频。但对于认真的 ML 工作,您可能需要高性能卡。在我工作的地方 (Google),当一个 GPU 用于数值计算时,我们通常将两个 GPU 放在桌面机器上。
经历了这一切,我会加上我的两分钱。
有专门的计算卡是有帮助的,但绝对没有必要。
我使用了带有单个高端 GPU 的开发工作站,用于显示和计算。我还使用过带有多个 GPU 的工作站,以及无头计算服务器。
我的经验是,只要对显示器的需求符合软件工程的典型要求,就可以在显示器 GPU 上进行计算。在具有多个显示器、网络浏览器、文本编辑器等的 Linux 设置中,我使用了 6GB 卡中的大约 200MB 用于显示——因此只有大约 3% 的开销。您可能会在网页刷新或类似情况下看到显示有点卡顿,但显示的吞吐量需求非常小。
为了完整性值得注意的一个技术问题是 NVIDIA 驱动程序、GPU 固件或 OS 在显示 GPU 上的内核完成可能会超时(运行 NVIDIA 的 'deviceQueryDrv'查看驱动程序的 "run time limit on kernels" 设置)。根据我的经验(在 Linux 上),对于机器学习,这从来都不是问题,因为超时是几秒钟,而且即使使用自定义内核,跨多处理器的同步也会限制您可以在单个内核启动中填充多少内容。我希望 TensorFlow 中预烘焙操作的典型 运行s 比这个限制低两个或更多个数量级。
也就是说,在一个工作站中拥有多个具有计算能力的卡(无论是否用于显示)有一些很大的优势。当然,有可能获得更高的吞吐量(如果您的软件可以使用它)。然而,根据我的经验,主要优势是能够 运行 长期实验,同时开发新实验。
从一张卡开始,然后再添加一张当然是可行的,但要确保您的主板有足够的空间并且您的电源可以承受负载。如果您决定拥有两张卡,其中一张是专用于显示的低端卡,我特别建议不要让低端卡成为支持 CUDA 的卡,以免它被选为计算的默认卡。
希望对您有所帮助。
在我工作的地方,我们进行了大量的数值计算,并且由于 CUDA(与 TensorFlow 和 Theano 一起工作),我们正在考虑购买带有 NVIDIA 显卡的工作站。
我的问题是:这些计算机是否应该配备另一块视频卡来处理显示并为 GPGPU 释放 NVIDIA?
如果有人知道同时使用视频卡显示和 GPGPU 的硬数据,我将不胜感激。
根据我的经验,在数值计算任务和驱动视频监视器之间共享 GPU 卡是很尴尬的。例如,任何 GPU 上的可用内存都是有限的,这通常是您可以训练的模型大小的限制因素。除非您正在玩游戏,否则相当适中的 GPU 可能足以驱动视频。但对于认真的 ML 工作,您可能需要高性能卡。在我工作的地方 (Google),当一个 GPU 用于数值计算时,我们通常将两个 GPU 放在桌面机器上。
经历了这一切,我会加上我的两分钱。
有专门的计算卡是有帮助的,但绝对没有必要。
我使用了带有单个高端 GPU 的开发工作站,用于显示和计算。我还使用过带有多个 GPU 的工作站,以及无头计算服务器。
我的经验是,只要对显示器的需求符合软件工程的典型要求,就可以在显示器 GPU 上进行计算。在具有多个显示器、网络浏览器、文本编辑器等的 Linux 设置中,我使用了 6GB 卡中的大约 200MB 用于显示——因此只有大约 3% 的开销。您可能会在网页刷新或类似情况下看到显示有点卡顿,但显示的吞吐量需求非常小。
为了完整性值得注意的一个技术问题是 NVIDIA 驱动程序、GPU 固件或 OS 在显示 GPU 上的内核完成可能会超时(运行 NVIDIA 的 'deviceQueryDrv'查看驱动程序的 "run time limit on kernels" 设置)。根据我的经验(在 Linux 上),对于机器学习,这从来都不是问题,因为超时是几秒钟,而且即使使用自定义内核,跨多处理器的同步也会限制您可以在单个内核启动中填充多少内容。我希望 TensorFlow 中预烘焙操作的典型 运行s 比这个限制低两个或更多个数量级。
也就是说,在一个工作站中拥有多个具有计算能力的卡(无论是否用于显示)有一些很大的优势。当然,有可能获得更高的吞吐量(如果您的软件可以使用它)。然而,根据我的经验,主要优势是能够 运行 长期实验,同时开发新实验。
从一张卡开始,然后再添加一张当然是可行的,但要确保您的主板有足够的空间并且您的电源可以承受负载。如果您决定拥有两张卡,其中一张是专用于显示的低端卡,我特别建议不要让低端卡成为支持 CUDA 的卡,以免它被选为计算的默认卡。
希望对您有所帮助。