日期:2020-11-04
macos版本:10.15.7
Python版本:anaconda python 3.8
CPU:AMD Ryzen5 3600参考文档:
http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1860593
https://gist.github.com/naveenkrdy/26760ac5135deed6d0bb8902f6ceb6bd
https://github.com/pytorch/pytorch/issues/31106
报错原因:mac上的Python包numpy和pytorch以及adobe系软件依赖Intel MKL,MKL是英特尔数学核心函数库,AMD安装黑苹果时,MKL_DEBUG_CPU_TYPE会被错误地自动设置为0,导致numpy和pytorch以及adobe软件在读取这个配置时报错。
解决方法:似乎MKL_DEBUG_CPU_TYPE设置为5时表示avx2指令集,所以对于支持avx2指令集的处理器(比如Ryzen),可以将MKL_DEBUG_CPU_TYPE设置为5。可以在终端中执行export MKL_DEBUG_CPU_TYPE=5然后再启动Python并引入numpy包试一下看会不会再报错。
如果在终端中尝试有效,则复制以下命令到终端,并回车,使这个设置永久生效:
(此脚本参考https://github.com/pytorch/pytorch/issues/31106,如果你是想解决Adobe软件的问题,则原文档中还有另一个脚本需要执行)
[ ! -d $HOME/Library/LaunchAgents ] && mkdir $HOME/Library/LaunchAgents
AGENT=$HOME/Library/LaunchAgents/environment.plist
sysctl -n machdep.cpu.brand_string | grep FX >/dev/null 2>&1 #判断处理器是不是AMD FX系列
x=$(echo $(($? != 0 ? 5 : 4))) #如果是FX系列则x=4,否则x=5
cat >$AGENT <
Label
mkl-debug
ProgramArguments
sh
-c
launchctl setenv MKL_DEBUG_CPU_TYPE $x;
RunAtLoad
EOF
launchctl load ${AGENT} >/dev/null 2>&1
launchctl start ${AGENT} >/dev/null 2>&1
执行后重启软件生效。