首页 » 互联网 » 英特尔MKL加速AMD计算可达3倍?AMD Yes_英特尔_测试

英特尔MKL加速AMD计算可达3倍?AMD Yes_英特尔_测试

少女玫瑰心 2024-11-29 17:28:56 0

扫一扫用手机浏览

文章目录 [+]

参与:思源、一鸣、Jamin

数学打算中的硬件加速是社区常常磋商的话题,如果能够利用一些库和硬件的上风,无疑能够帮助科研、生产等。
近日,一个优化 AMD CPU 的帖子在 Matlab 社区引起谈论——通过几行代码,将 AMD CPU 加速 250%,进而帖子作者将方法推广到了其他社区,先容了更普适性的优化方法。

英特尔MKL加速AMD计算可达3倍?AMD Yes_英特尔_测试 互联网

从 Matlab 优化提及

在此前的研究中,作者在 Matlab 社区发起谈论:如何能够使得 Matlab 在 AMD Ryzen/TR CPUs 利用快速代码路径,从而使得性能提升 250%?

众所周知,Matlab 在 AMD CPU 上利用 Intel 数学内核库(MKL)的运行速率非常慢。
由于 Intel MKL 会利用一个有区分的 CPU 调度器,而鉴于 CPU 对 SIMD 的支持,该调度器并不会利用有效代码路径,但是会基于供应商的字符串查询结果进行操作。
如果 CPU 是 AMD 的,则可以通过系列调度,使得性能有较大的提升。
详情参照:https://www.reddit.com/r/matlab/comments/dxn38s/howto_force_matlab_to_use_a_fast_codepath_on_amd/?sort=new

如下图所示,在 Matlab 上测试不同 CPU 加速环境下的性能,就能得到惊人的效果。
在 AMD 上加载英特尔 MKL 加速工具,也能得到很大的提升:

综合基准测试结果:

而这一谈论在 Matlab 社群中广为流传,自从发布之后,便有更多社区的开拓者来信与作者进行深度的谈论(比如:Pytorch/Numpy/Anaconda/Tensorflow 等等)。
以是,这篇新的谈论将更为系统的去分享操作思路,先容其事理。

英特尔的库,加速 AMD 的芯片

一样平常来说,英特尔的数学核库(Intel Math Kernel Library:MKL)是很多人默认利用的库。
它在 AMD CPU 上运行地非常慢,由于 MLK 利用一种区分性的(discriminative)CPU 调度器,这种调度器不能根据 SIMD 的支持来有效利用代码路径。
如果是 AMD CPU,不管 CPU 到底支不支持更高效的 SIMD 扩展,MKL 不支持利用 SSE3-SSE4 或 AVX1/2 扩展,它只能回到 SSE。

而帖子中则供应了一种方法,能够逼迫 MKL 支持 AVX2,它和 vendor string 独立,而且只须要一分钟就能完成。
如果你有一个 AMD CPU,基于 Zen/Zen+/Zen2 µArch Ryzen/Threadripper 等架构,那么它可以被加速到惊人的程度。

其余,这种方法也可以在更老的 Excavator µArch 上运用,但是请不要将这个方法用在比 Excavator µArch 更老的 AMD CPU 上,以及英特尔的系统上。

事实上,这种性能提升是非常明显的,根据操作系统和 CPU 的不同,性能加速幅度在 30% 到 300% 不等。

利用方法

在 Windows 系统上

如果你利用的是 Windows 系统,你首先须要管理员权限。

然后,在 system environment variables 里键入「MKL_DEBUG_CPU_TYPE=5」。
这将会对所有利用 NKL 的实例进行运用。

你可以在上图的窗口中键入指令,或者在 CMD 窗口中键入:

setx /M MKL_DEBUG_CPU_TYPE 5

这样一来,所有利用 MKL 的程序都会被永久性的改变设置,直到你修正变量的输入。

Linux

打开终端,在运行同一个实例前键入如下命令即可:

export MKL_DEBUG_CPU_TYPE=5

如果要永久性的改变系统中所有的实例,可在终端中键入:

echo 'export MKL_DEBUG_CPU_TYPE=5' >> ~/.profile

Reddit 热评

首先第一个迷惑便是,这样做能 work 吗?还真有开拓者直接上手测试,Inori 在 Reddit 上表明,通过实际基准测试,他确认这样做能提升 NumPy 25% 到 90% 的性能。
如下所示,在 AMD 不采取 MKL 的情形下,两个 40964096 的矩阵乘法须要 1 秒钟,而加了 MKL 后只须要 0.56 秒。

Inori 后续还供应了基准测试脚本,并表示他也会连续试试 MKL 对 TensorFlow 的加速能力(AMD 芯片下)。

在 Reddit Matlab 原板块中,很多开拓者表示打算速率确实快了很多:

对付这种奇淫技巧,当然并不是所有开拓者都赞许的,如果就我们自己用用还行,假如放莅临盆中,其并不稳定,也不屈安。
wind_of_amazingness 表示,mkl 从没有真正完全地在 AMD 芯片上测试过,这表示它会有一些意想不到的偏差,例如数值不稳定等。

末了,大概除了速率,我们还须要测试打算偏差,这样才能真正放心利用 MKL 库加速 AMD 芯片的数值打算。

参考链接:https://www.reddit.com/r/MachineLearning/comments/f2pbvz/discussion_workaround_for_mkl_on_amd/

标签:

相关文章

RPC2107 PLC控制模块_电流_暗记

高压真空配电装置,移动变电站合闸闭锁分闸采取数字化技能DSP的双CP U处理器,高精度的A/D转换及前辈的保护运算,30A移变头测...

互联网 2025-01-24 阅读4 评论0