如果有的话,可以做些什么来优化现代AMD CPU的性能?

110次浏览(过去30天)
我有一个AMD Threadripper CPU。我已经看到一些建议,认为基于AMD的计算机将受益于将数学库从英特尔的MKL更改为AMD核心数学库(ACML),以及更改BLAS的建议。规范文件。任何与此相关的线程似乎都很古老,而且AMD可能已经更改了它的数学库的名称。
还有可能为AMD的cpu优化数学库吗?如果是,我需要做什么?
谢谢!
27日评论
Taqu3
Taqu3 2022年6月23日
编辑:Taqu3 2022年6月23日
刚用3995 threadripper pro安装了我的服务器,却发现它的性能比我的笔记本电脑还差。这个问题什么时候能得到妥善解决?这很令人沮丧(版本2022a)。

登录评论。

接受的答案

奈德·弗兰德斯
奈德·弗兰德斯 2019年11月18日
编辑:奈德·弗兰德斯 2019年12月2日
如果你想了解背景,你应该读一下。
编辑:在你开始之前,我有一个简短的请求,你可以帮助我,为你自己的利益服务。Matlab不会实现这个。如果你认为Matlab应该提供一个永久的解决方案,服务于所有用户,不管他们使用的是英特尔还是AMD的cpu, 请在Matlab中进行特征请求 实现一个不歧视非Intel cpu的数字库(例如OpenBLAS)。 如果没有人倡导,Mathworks不会做出这种改变。 谢谢!
博士tl;
方案1 (Windows): 创建一个.bat文件。“记事本”用下面的行在AVX2模式下启动Matlab。
@echo掉
设置MKL_DEBUG_CPU_TYPE = 5
matlab.exe
保存为。txt,重命名为。bat。如果双击该文件,Matlab将以AVX2模式启动MKL。如果你以正常的方式开始,它将一如既往。
如果你信任我,你也可以从我的硬盘下载。bat文件(通常你不应该,因为我是一个来自互联网的随机的家伙)。如果你删除了下载文件中提供的启动批处理文件或你自己创建的批处理文件,它就没有了,你的电脑就会像以前一样。
可选下载: https://my.hidrive.com/lnk/EHAACFje
方案2 (Windows) 如果您对结果满意(您肯定会满意的:-),那么您应该在系统环境变量中输入MKL_DEBUG_CPU_TYPE=5,从而使设置永久。这有几个优点,其中之一是它适用于Matlab的所有实例,而不仅仅是使用.bat文件打开的实例。
这样做将使更改永久存在,并且对系统上使用MKL的所有程序可用,直到再次删除该条目。
LINUX :(感谢 foreignrobot
只需输入一个终端:
出口MKL_DEBUG_CPU_TYPE = 5
然后在同一终端上运行matlab。
对于基准测试,你可以使用这个脚本:
要使它在Linux中永久存在,请编辑shell的配置脚本(~/。Bashrc表示bash, ~/。zshrc for zsh etc)添加line export MKL_DEBUG_CPU_TYPE=5。这将适用于任何新打开的外壳,并应用于一个已经打开的简单做。~ /。Bashrc或者你的配置脚本名。(由于 lowpolybutt
附注:如果您使用的是较老的AMD FX CPU,您可以测试是否 MKL_DEBUG_CPU_TYPE=4适合你。这应该启用AVX,但我还没有测试这个。
15个评论
奥尔多Corbellini
奥尔多Corbellini 2020年4月4日
你在哪里找到win64的BLIS和/或OpenBLAS .dll ?我想在我的新AMD TR上测试这些库。我所能找到的是一些Linux GCC编译器的构建食谱!
(嗨,Yair !]

登录评论。

更多答案(3)

海科Weichelt
海科Weichelt 2022年3月15日
在MathWorks和AMD之间的密切合作之后,从MATLAB R2022a开始,MATLAB发布了定制版本的AOCL 3.1,可以按以下方式激活:
请注意,来自其他来源的AOCL版本可能无法正确配置/构建,并可能导致MATLAB出错、崩溃或返回不正确的结果。

芯
2019年12月4日
编辑: 2019年12月4日
@NedFlanders的公认答案是目前为止最好的解决方案。用那个。
但是在回答的评论中,MathWorks的工作人员@PatQuillen分享了一些有用的无文档环境变量,这些变量允许任何人连接到任何外部BLAS库。这对于让其他BLAS包(如OpenBLAS或BLIS)在MATLAB中工作非常有用。那些评论已经被埋在那个线程中,所以我把它们作为一个独立的解决方案拉出来。我将重复这些评论中的警告:“这与MathWorks没有使我们的产品符合替代BLAS实现的相同警告,因此如上所述,我们不能确认使用您自己的BLAS(例如OpenBLAS)将在我们的产品中正确工作。”下载188bet金宝搏
我们将为主机操作系统设置环境变量。这可以在Linux和Windows的MATLAB之外以临时或永久的方式完成,可以在@NedFlander的reddit线程中看到。不过,我只打算用 setenv 命令仅为一个MATLAB实例设置这些参数。
MATLAB在第一次尝试执行计算时加载BLAS库,以便您可以在此之前进行更改。一旦加载了BLAS库,就没有办法卸载它。你得重新开始。
环境变量BLAS_VERBOSITY将MATLAB设置为命令窗口关于加载过程的详细信息。值1表示最少的信息,2表示更多。
setenv (' BLAS_VERBOSITY ', ' 1 ')
如果定义了环境变量BLAS_VERSION,将指示MATLAB从指定的文件加载BLAS库,而不是使用其内置的默认值。文件应该是您计划使用的BLAS实现的.so/.dll,该实现遵循由 https://netlib.org/blas/。
setenv(“BLAS_VERSION”、“c: \ temp \ mkl.dll”)
是否会加载复制的MKL库 c: \ temp .您可以使用分号、逗号或空格将多个文件位置连接到BLAS_VERSION的单个定义中。因此,如果您正在编写自己的BLAS,它不支持所有可能的方法,您可以滚动到MKL作为故障保险,例如金宝app。
3评论
Bernhard Wistawel
Bernhard Wistawel 2021年2月24日
2021a会纠正这种行为吗?或者让我们选择BLAS分布?

登录评论。


肯·M。
肯·M。 2019年11月9日
你是说matlab中不要使用windows。
因为这是最简单的方法,所以转换后人们就不再抱怨了。
许多程序在linux下运行得更快,所以如果速度很重要,那么linux也是matlab的一个明显选择。
9日评论

登录评论。

类别

了解更多性能和内存帮助中心而且文件交换

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!