MKL是什么啊?
英特尔数学核心函数库Intel Math Kernel Library。
众所周知,Matlab 在 AMD CPU 上使用 Intel 数学内核库(MKL)的运行速度非常慢。因为 Intel MKL 会使用一个有区分的 CPU 调度器,而鉴于 CPU 对 SIMD 的支持;
该调度器并不会使用有效代码路径,但是会基于供应商的字符串查询结果进行操作。如果 CPU 是 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% 不等。
推荐于2017-11-26
英特尔�0�3 数学核心函数库(英特尔�0�3 MKL)提供经过高度优化和大量线程化处理的数学例程,面向性能要求极高的科学、工程及金融等领域的应用。
英特尔�0�3 MKL 为英特尔�0�3 C++ 和 Fortran 编译器专业版 和英特尔�0�3 集群工具套件的组件,也可作为单独产品使用。
英特尔�0�3 MKL 提供了超前的高性能应用和出色的开发人员效率。英特尔�0�3 MKL 针对当前多核 x86 平台进行了深入而全面的优化,同时将不断针对未来平台进行优化,以确保应用能够从最新架构的进步中最大限度获益。