Mathwork Matlab是一款极为流行、权威的计算软件,但是去年11月的时候,有人发现AMD锐龙处理器疑似被它“劣化”,无法正确调用最新指令集,导致性能残血。
具体来说,Matlab会提前检测处理器身份,也就是CPUID字符串,如果找到GenuineIntel,也就是正品Intel处理器,就会利用Intel MKL(路径内核库),并调用AVX2指令集,获得理想性能。
但如果是其他,比如AuthenticAMD代表的AMD处理器,就会无视其支持的SSE4、AVX、AVX2等新指令集,只会使用古老的SSE指令集,效率自然大大下降。
有开发者做过测试,如果改动系统环境变量,就可以让Matlab将AMD处理器识别成Intel处理器,性能瞬间就能提升少则20%,多则300%!
Matlab因此饱受质疑,不过幸运的是,在最新版的Matlab 2020a中,这个问题终于被修复了,不管Intel还是AMD处理器,都会默认调用最新指令集。
实测表明,24核心的线程撕裂者3960X、32核心的线程撕裂者3970X在新版Matlab中的性能比旧版分别可以提升48%、60%,从而领先18核心的酷睿i9-10980XE 52%、80%之多,而之前3960X可是打不过10980XE的。