我们知道,一款硬件产品性能如何,不仅仅取决于硬件本身的设计,也要看驱动、软件的支持与优化,很多时候一些简单的优化调整就可以带来意想不到的效果。
比如说流行、权威的数学计算环境Matlab,就针对Intel处理器有一项特殊优化,检测到是Intel处理器后就会利用Intel MKL(路径内核库),并调用AVX2指令集,获得理想性能。
而对于非Intel处理器,比如说检测到是AMD,Matlab就只会使用古老的SSE指令集,结果就是性能天差地别。
Reddit网友Nedflanders1976研究后发现,AMD锐龙、线程撕裂者处理器在Matlab上也能开启AVX2指令集,从而获得性能暴涨!
根据这位网友给出的教程,方法非常简单。Windows系统下可以创建一个只有如下四行代码的bat批处理文件,AMD处理器用户通过它启动Matlab,就可以开启AVX2指令集。
@echo off
set MKL_DEBUG_CPU_TYPE=5
call "%MKLROOT%\bin\mklvars.bat" MKL_DEBUG_CPU_TYPE=5
matlab.exe
以上是临时方法,如果想永久生效,只需在高级系统属性里找到MKL_DEBUG_CPU_TYPE,将这个环境变量的值改为5,但注意任何使用MKL的程序都会受到影响。
Linux用户也很简单,临时方法是输入以下命令并启动Matlab,永久方法则是编辑配置脚本并加入以下命令:
export MKL_DEBUG_CPU_TYPE=5
根据实测,AMD锐龙处理器经过这样一番修改后,Matlab性能可以提升少则17%,多则258%!