如何在MATLAB中检测M1 mac处理器



在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

最新更新