- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道 Numpy 可以使用不同的后端,如 OpenBLAS 或 MKL。我还读到 MKL 针对英特尔进行了大量优化,所以通常人们建议在 AMD 上使用 OpenBLAS,对吗?
我使用以下测试代码:
import numpy as np
def testfunc(x):
np.random.seed(x)
X = np.random.randn(2000, 4000)
np.linalg.eigh(X @ X.T)
%timeit testfunc(0)
我已经使用不同的 CPU 测试了这段代码:
np.show_config()
,Intel 系统为 Numpy 使用 MKL 后端(
libraries = ['mkl_rt', 'pthread']
),而 AMD 系统使用 OpenBLAS(
libraries = ['openblas', 'openblas']
)。 CPU 核心使用率是通过观察
top
确定的在 Linux shell 中:
testfunc
的性能提高了。在 AMD Ryzen Threadripper 3970X 上仍然是 1.55s。
MKL_DEBUG_CPU_TYPE=5
(如
here 所述)减少了
testfunc
的运行时间在 AMD Ryzen Threadripper 3970X 上只有 0.52s,这实际上或多或少令人满意。 FTR,通过
~/.profile
设置此变量在 Ubuntu 20.04 上对我不起作用。此外,从 Jupyter 内部设置变量不起作用。所以我把它放进
~/.bashrc
现在有效。无论如何,性能比旧的英特尔至强快 35%,这就是我们所得到的,还是我们可以从中获得更多?
MKL_DEBUG_CPU_TYPE=5
与 MKL 结合以实现最佳性能。这可能是对的,但这并不能解释为什么 OpenBLAS 如此缓慢。它没有解释,为什么即使使用 MKL 和
MKL_DEBUG_CPU_TYPE=5
32 核 Threadripper 仅比使用了 6 年的 6 核 Xeon 快 36% .
最佳答案
我认为这应该有帮助:
“图表中的最佳结果是使用 MKL 和环境变量 MKL_DEBUG_CPU_TYPE=5 的 TR 3960x。它明显优于仅来自 MKL 的低优化代码路径。并且,OpenBLAS 在 MKL_DEBUG_CPU_TYPE=5 的情况下几乎与 MKL 一样好放。”
https://www.pugetsystems.com/labs/hpc/How-To-Use-MKL-with-AMD-Ryzen-and-Threadripper-CPU-s-Effectively-for-Python-Numpy-And-Other-Applications-1637/
如何设置:
'通过在系统环境变量中输入 MKL_DEBUG_CPU_TYPE=5 使设置永久化。这有几个优点,其中之一是它适用于 Matlab 的所有实例,而不仅仅是使用 .bat 文件打开的实例。
https://www.reddit.com/r/matlab/comments/dxn38s/howto_force_matlab_to_use_a_fast_codepath_on_amd/?sort=new
关于python - 为什么带有 Ryzen Threadripper 的 Numpy 比 Xeon 慢这么多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62783262/
我知道 Numpy 可以使用不同的后端,如 OpenBLAS 或 MKL。我还读到 MKL 针对英特尔进行了大量优化,所以通常人们建议在 AMD 上使用 OpenBLAS,对吗? 我使用以下测试代码:
我在不同的机器(包括 Linux 和 Windows,以及 Intel 和 AMD CPU 以及 clang++、GNU 和 MSVC)中使用线程库。在所有这些中,std::thread::hardw
我是一名优秀的程序员,十分优秀!