在MATLAB中有检测M1 mac的方法吗?MATLAB有ismac
,但这可能不会区分处理器类型。
新答案:在M1 Mac上测试
我的印象是MATLAB是通过Rosetta 2运行的,这意味着uname -m
的结果实际上是x86_64
,这无助于防止对英特尔针对mex代码的调用。
相反,我们会询问内核版本,并尝试找到ARM64
if ismac()
[~,result] = system('uname -v');
is_m1_mac = any(strfind(result,'ARM64'));
else
is_m1_mac = false;
end
注意上面的result
在我的电脑上:Darwin Kernel Version 21.5.0: Tue Apr 26 21:08:37 PDT 2022; root:xnu-8020.121.3~4/RELEASE_ARM64_T6000
旧答案:不正确
要检测处理器,可以调用系统命令行:从命令行检测Apple Silicon
注意,这还没有在m1 mac上进行测试
if ismac()
[~,result] = system('uname -m');
is_m1_mac = strcmp(strtrim(result),'arm64');
else
is_m1_mac = false;
end
注意,如果你运行的是旧版本的MATLAB,这将有所帮助,因为MATLAB在2020b更新3之前不会正式支持M1 Mac。。。https://www.mathworks.com/matlabcentral/answers/641925-is-matlab-supported-on-apple-silicon-macs
然而,我不清楚这是否最终会检测到MATLAB的本地执行,而不是通过ROSETTA(当本地选项实际存在时(。
使用R2022b在M2 pro上测试(ARM测试版(:
system('uname -m')
arm64
ans =
0
和
if ismac()
[~,result] = system('uname -m');
is_m1_mac = strcmp(strtrim(result),'arm64');
else
is_m1_mac = false;
end
>> is_m1_mac
is_m1_mac =
logical
1