首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当你有一个AMD CPU时,你能加速使用Intel-MKL的代码吗?

当你有一个AMD CPU时,你能加速使用Intel-MKL的代码吗?
EN

Stack Overflow用户
提问于 2020-07-30 13:40:18
回答 2查看 2.4K关注 0票数 5

我有一个AMD cpu,我正在尝试运行一些使用Intel-MKL的代码。代码比我预期的要慢得多。

当你有一个AMD CPU时,你能加速使用Intel-MKL的代码吗?多么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-30 13:40:18

更新2021-08-26:您可以在2020年-08-31之前加快MKL的旧版本。设置环境变量MKL_DEBUG_CPU_TYPE=5,然后运行代码。

注意:我不知道英特尔删除环境变量解决方案的确切日期或版本。

这种减速会影响使用Intel库并在 CPU上运行的任何(即影响所有操作系统并影响所有编程语言和所有程序(Matlab的旧版本、C、C++、Python、Anaconda-Python、像Tensorflow和Py手电筒这样的机器学习,以及在AMD上使用Intel库的任何东西))。

FYI设置和获取环境变量超出了这个问题的范围,但是这里有一些有用的链接:

  • 视窗另一个屏幕截图链接
    • 就我个人而言:“旧的”控制面板??>系统??>高级的??>环境变量??>系统变量??>放弃新的。

  • 对于Linux 这是一个一般的指南
    • 对于希望仅为自己的用户设置环境变量的bash用户的简单情况,将行export MKL_DEBUG_CPU_TYPE=5附加到用户的.bashrc文件中

附注:

关于“为什么/如何设置环境变量会使代码运行得更快?”

  • 默认行为是Intel-MKL检查CPU,如果检测到非英特尔,则运行较慢的代码。
  • 设置环境变量将覆盖默认行为,并导致尽管没有Intel硬件,但执行速度更快。

你可能在想:“为什么英特尔在他们的MKL库中会有一个软件慢下来呢?

  • 多年来,英特尔的编译代码首先检查CPU,然后如果CPU被检测为非Intel,则代码将选择运行较慢的代码。
  • 发生了一起诉讼
  • 诉讼的结果之一是英特尔不得不披露他们正在做的事情,但不需要停止他们正在做的事情。
  • 下面是包含更多历史和信息的wiki页面:Compiler#Reception
票数 2
EN

Stack Overflow用户

发布于 2021-08-26 17:03:55

截至2021年,英特尔不幸的是防止人们在MKL_DEBUG_CPU_TYPE上使用 删除 的解决方案。这意味着解决方案不再有效,AMD用户要么切换到OpenBLAS,要么继续使用MKL。

若要使用解决方案,请遵循以下方法

  1. 使用conda和NumPy的MKL=2019创建一个MKL=2019环境。
  2. 激活环境
  3. 设置MKL_DEBUG_CPU_TYPE =5

上述步骤的命令:

  1. conda create -n my_env -c anaconda python numpy mkl=2019.* blas=*=*mkl
  2. conda activate my_env
  3. conda env config vars set MKL_DEBUG_CPU_TYPE=5

,就这样!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63174453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档