我即将为深度学习构建 Linux 机器。相关部分:
- 华擎 Z270 KILLER SLI/AC
- 酷睿 i7 7700
- 2 个 GTX 1060
- 1TB M.2 Evo 850 NVMe SSD
深度学习需要在 GPU 上连续数天运行基于 CUDA 的算法,并在 GPU/CPU/SSD 之间来回传输大量数据。瓶颈会逐渐增加。
所以我担心 PCIe 通道。据我所知,CPU 只有 16 个。据我所知,8x 通道对 GPU 来说已经足够了,但 4x 通道可能会有些慢。(我最初担心 NVMe SSD 会占用通道,但似乎 CPU 有 4 个额外的 IO 通道)
是否最好使用集成显卡作为桌面 UI,留下 2 个 GPU 用于计算,或者集成显卡是否会造成瓶颈(即强制 8x 4x 4x,而不是 8x 8x GPU 通道)对于 GPU(这意味着也许我应该禁用集成并与桌面 UI 共享 1 个 GPU)。
我的目标是让 GPU 发挥出最大性能。如果存在瓶颈,我想知道它是否会导致超过 5% 的性能差异,即 8 小时乘以一周的 GPU 使用时间
答案1
总结:
M.2 NVMe 或集成显卡会减慢独立显卡的速度吗
在这种特定情况下,可能不是。
深度学习需要在 GPU 上连续数天运行基于 CUDA 的算法,并在 GPU/CPU/SSD 之间来回传输大量数据。瓶颈会逐渐增加。
我完全没有 CUDA 经验,但从我记得读过的文章来看,在 GPU 上进行计算的主要问题通常不是原始传输速度。而是延迟。
注意“通常”。对于任何一个特定程序,情况可能会有很大不同。
延迟部分是由于 PCI-e 速度问题。PCI-e v3 连接可以以比 PCI-e v2 通道更高的速率运行(8GHz vs 5GHz)。因此,您需要在 v3 通道上使用带有 GPU 的显卡。
查看 ark.intel.com 发现酷睿 i7 7700有 16 条 PCI-e 通道直接来自 CPU。(更多通道可来自芯片组)。
直接连接到 CPU 的 PCI-e 通道是 PCI-e v3,可以用作 1x16、2x8、1x8+2x4。我猜想,使用两个独立显卡进行 CUDA 时,您需要使用两个插槽,两个插槽都使用 8 个通道。
所以我担心 PCIe 通道。据我了解,CPU 只有 16 个。
正确的。
据我所知,8x 通道对于 GPU 来说已经足够了,但 4x 通道可能会出现一些速度减慢的情况。
某种程度上是的。大多数时候 PCI-e 总线速度已经超过了显卡所需的速度。这种情况会随着时间而改变。GPU 速度越来越快。高端 GPU 开始推动最大带宽。PCI-e 版本得到升级...
通常高端显卡有大约 8 个通道就足够了。Toms 硬件在 PCI-e v2 时代进行了测试,我认为其结果对于在 PCI-e v3 上使用现代显卡的现代设置仍然有效:
x16:速度达到最大。x8
:速度损失百分之几(比如 2-5%)
x4:在大多数情况下仍能正常工作。只是不要将高端双 GPU 卡放入 x4 插槽中,并运行 4k 显示器,所有游戏设置都调到最大。
(我原本担心 NVMe SSD 会占用通道,但似乎 CPU 有 4 个额外的 IO 通道)
事实并非如此。目前英特尔消费级芯片的 PCI-e 通道非常少。不超过其大多数目标受众所需的数量。这是一个明智的经济决策。
他们的 Xeon 系列 CPU 具有更多 PCI-e 通道。一些新的 AMD 芯片也具有更多通道(AMD 的 ThreadRipper CPU 上有 64 个 PCI-e 通道。服务器产品上是这个数字的两倍)
反而你的主板有Z270 芯片组它提供了额外的 PCI-e 通道。
该芯片组支持这些 x1、x2、x4 配置。
在最大 x4 的情况下,似乎 CPU 的 2x8 仍然是 CUDA 的最佳选择。
主板将剩余的许多通道用于 SATA、USB、网络等。其中四个通道通过 4 个 PCIe 3.0 x1 扩展槽提供给最终用户。不要将显卡放在这些通道中!
至于 NVME:主板有两个 PCIe Gen3 x4 Ultra M.2 插槽。该主板的手册提到:
* If M2_1 is occupied by a SATA-type M.2 device, SATA_5 will be disabled.
* If M2_2 is occupied by a SATA-type M.2 device, SATA_0 will be disabled.
我没有发现任何常见的“如果 M.2 与 NVME 设备一起使用则...”,这意味着它可能具有来自芯片组的专用通道。
我是否保留 2 个 GPU 用于计算,或者集成显卡是否会造成 GPU 瓶颈(即强制 8x 4x 4x,而 GPU 则为 8x 8x 通道)(这意味着也许我应该禁用集成并与桌面 UI 共享 1 个 GPU)。
我看不出集成显卡会成为瓶颈。我也不怀疑禁用它会带来问题。只要有一台机器进行计算,甚至不需要显卡(只需通过 SSH 连接)。
对我来说,拥有两张专用于计算的显卡和用于其余部分的集成显卡(例如简单的终端屏幕)似乎是最干净的。但这不是可以量化的。
我的目标是让 GPU 发挥出最大性能。如果存在瓶颈,我想知道它是否会导致超过 5% 的性能差异,即 8 小时乘以一周的 GPU 使用时间
最好的建议是测量您的系统在做什么。如果可能的话,花一周时间在测试模式下使用它。在 x8 模式下使用两张卡运行它。测量。使用软件将 PCI-e 通道降级到 x4。检查性能损失了多少。如果损失小于 1%,请尝试将一张卡设置为 x16,另一张卡设置为 x1 插槽。我猜 2* x8 会好得多,但我可能错了。
使用其他设置执行类似操作。例如,尝试在不使用超线程的情况下运行。(启用超线程通常会快 30% 左右,但有时它实际上会减慢速度,因此请进行测试。)尝试禁用省电。等等。
然后经过几天的几个不同的测试后再进行生产。