![我的 4 个 Xeon E7 的性能比单个第 8 代 i5 还低](https://linux22.com/image/1566225/%E6%88%91%E7%9A%84%204%20%E4%B8%AA%20Xeon%20E7%20%E7%9A%84%E6%80%A7%E8%83%BD%E6%AF%94%E5%8D%95%E4%B8%AA%E7%AC%AC%208%20%E4%BB%A3%20i5%20%E8%BF%98%E4%BD%8E.png)
我有一个未解决的问题要问你:
我在办公室安装了一台二手服务器来训练我们的机器学习模型;它包含 4 个 Xeon E7 4820(https://ark.intel.com/products/53675/Intel-Xeon-Processor-E7-4820-18M-Cache-2_00-GHz-5_86-GTs-Intel-QPI) - 2,00GHz、8 核、每核 16 个线程 -、128Gbs RAM 和 128GB SWAP(SSD 交换)。
然而,我在其上进行了第一次测试学习,令人惊奇的是,它的速度非常慢。训练需要 11 分钟,而在我的第 8 代 i5 CPU(1.6GHz,4 核,8 线程)、8Gb RAM 和 8Gbs 交换空间上训练只需 5 分钟。
Htop 告诉我并行计算已开启,CPU 负载峰值约为 i5 的 3,4 E7 的 22;那么你知道为什么会有这样的性能差距吗?我知道摩尔定律是一种不可抗拒的现象,但对于 1 年前的中端 CPU 来说,其性能要优于 4 个 7 年前的 Xeon E7,我无法理解这一点。希望你能帮忙!:)
附言:我已经在上面安装了 Cuda 和 CuDNN,但它还不能工作,而且我只用 CPU 进行学习。我对结果感到很困惑,以至于我完全停止了 GPU 加速工作(我们在服务器上安装了一台小型 1050 Ti I),转而解决这个问题。我确保两台计算机上运行的代码完全相同。
提前致谢 ! :)
霜
答案1
您的问题(与大多数机器学习问题一样)可能与内存带宽有关。
机器学习并不是特别依赖 CPU 计算,它们会进行大量“简单”计算,但受到内存带宽的严重限制。这是显卡流处理器非常适合它的原因之一。每个流处理器都相对有限(与 CPU 相比),但对于更简单的操作,它们巨大的带宽和绝对数量的处理器足以弥补它们的局限性。
随机选择一个第八代 i5:
Max Memory Bandwidth 41.6 GB/s
中央处理器老板似乎表明第一代 E7-4820 的内存带宽为 23GB/s (23,464 MB/s)
多处理器机器需要不断地在 CPU 之间复制内存,或者在两个 CPU 之间共享内存访问权限。
共享内存和明显较低的带宽的组合可能是损害旧系统的原因。
较新的 Xeon 声称带宽高达 85GB/s。