为什么 Intel i5-8350u 在单核 Python 脚本中比 AMD Ryzen 2700x 更快?

为什么 Intel i5-8350u 在单核 Python 脚本中比 AMD Ryzen 2700x 更快?

我遇到了奇怪的情况。长话短说,搭载 Intel i5-8350u 的笔记本电脑在单核上运行 Python 脚本的速度比 AMD Ryzen 2700x 快两倍。

现在再详细介绍一下。
首先,机器的规格。AMD
Ryzen
2700x(库存)
16 GB DDR4@2133(双通道)
SATA HDD 上的数据

INTEL
i5-8350u
16 GB DDR4@2400(双通道)
UBS3 HDD 上的数据

笔记本电脑运行 Mac OS X Catalina 10.15.2,带有最新的 Anaconda 和 Python 3.8.1。台式机运行 Ubuntu 18.04.3,带有最新的 Anaconda 和 Python 3.8.1。唯一的细节是我用 openblas 构建了 numpy。

脚本是一代角点图来自后验文件。总共有 300 个对象。我有此代码的串行和并行版本,结果如​​下:

结果

i5 - 21m22s in single and 6m25s in parallel  
ryzen - 40m44s in single and 3m34s in parallel  

这正常吗?我能做些什么来提高 Ryzen 的性能?

OBS:我知道 Ryzen 对内存的依赖性,可能会尝试超频并重新测试。

OBS2:我暗示的是类似的事情。所以可能有一些软件修复。 - >AMD-Ryzen-3900X 与 Intel-Xeon-2175W

答案1

Anaconda 使用 Intel MKL 作为默认的 BLAS 库,该库在 AMD 处理器上运行缓慢(参见Ryzen 和英特尔的反竞争 MKL)。

您有几个选择。如果您能尝试一下并在此报告结果(作为评论),我将不胜感激。

  1. 只需设置环境变量MKL_DEBUG_CPU_TYPE=5;参见这里了解更多信息;这将“欺骗 MKL 在 AMD CPU 上使用 AVX2 优化级别”;

  2. 安装 conda 包nomkl以退出 MKL 并使用 OpenBLAS;请参阅“卸载 MKL”这一页

您应该会看到这两种解决方案都取得了巨大的进步。不过,请注意,由于架构原因,Zen2 架构(第 3 代)之前的 AMD CPU 在执行 AVX2 指令时比 Intel CPU 慢。

编辑:抱歉,我误读了我在解决方案 2 ( ) 中粘贴的命令conda install -c anaconda nomkl。它不会创建新环境,正如我所写,它只是安装 nomkl。我删除了该命令并添加了一个链接,详细说明了删除 MKL 所需执行的所有操作。

相关内容