这个Python存储库有很多关于苹果M1芯片的有用信息和Python https://github.com/neurolabusc/AppleSiliconForNeuroimaging中的数据科学。我在下面引用了有代表性的引文。这个存储库专注于用于脑成像分析的软件,但外卖范围很广。
更新日期:2021年9月27日。
TL;DR
除非你是一名开发人员,否则我强烈建议科学家在短期内不要购买Apple Silicon计算机。富有成效的工作将需要核心工具的移植。从长远来看,这种架构可能会对科学产生深远的影响。特别是,如果苹果开发的服务器利用其CPU的显着能效(与AWS Graviton竞争),并利用Metal语言和GPU执行计算任务(与NVidia的Tesla产品和CUDA语言竞争)。
Apple Silicon面临的限制
科学家所依赖的基础架构目前还不适用于此架构。以下是一些短期限制:
- 原生R可以使用不稳定的R-DEVEL4.1。然而,RStudio将需要gdb。
- Julia本身还不支持苹果硅谷。但是,一些模块存在问题或速度很慢。参见below.
- Scientific模块的Fortran部分,R和Julia需要一个Fortran编译器,目前只有实验版本。虽然苹果的C++编译器可以生成快速的本机代码,但许多科学工具需要等到像VMware这样的available.
- Tools和gFortran编译器被below.
- Scientific
- 支持,而Parallels还不支持gFortran。许多用户依赖这些工具在他们的macOS上使用Windows和Linux程序computers.
- Docker可以支持Apple Silicon。但是,在Apple Silicon机器上运行基于Intel的容器的尝试可能会崩溃,因为QEMU有时无法运行容器。这些容器与许多神经成像tools.
- Homebrew 3.0支持苹果硅很受欢迎。然而,许多自制组件不支持Apple Silicon。MATLAB被许多科学工具所使用,包括SPM。虽然Matlab在翻译中工作,但它还不是本机可用的(并且mex文件将需要是recompiled).
- FSL的,并且AFNI还没有本机支持这种架构。虽然代码可以在翻译中工作,但创建一些本机工具必须等待编译器和库的更新。这可能需要几个月的时间。
- 当前一代的M1只有四个高性能内核。大多数神经成像管道将只需要一个核心( M1擅长的地方)的顺序任务与并行任务结合在一起。这些并行任务可以利用具有更多内核的CPU (如下面的pigz和niimath测试所示)。请记住,这种串行和并行代码的混合面临Amdahls定律,额外内核的回报递减。
- 当前一代M1最大内存为16 Gb。神经成像数据集通常有很大的内存需求(尤其是多频段加速功能、静息状态和扩散datasets).
- In ),M1和基于英特尔的Mac具有相同的OpenGL兼容性,M1比以前的集成解决方案提供了更好的性能。但是,有一些情况可能会破坏OpenGL工具。在这里,我描述了四个限制。首先,不支持OpenGL几何体着色器(没有等效的金属着色器)。其次,新的视网膜显示器支持16 bitsPerSample宽彩色,这可能会导致采用32位RGBA纹理的代码(如苹果示例代码中的文本)出现问题。第三,纹理可以有不同的处理方式。第四,使用GL_INT_2_10_10_10_REV数据类型会削弱性能(在macOS 11.2上进行了测试)。这是不幸的,因为苹果曾经提倡这种数据类型。在这种情况下,代码必须更改为使用M1图形处理器原生支持的不太紧凑的GL_HALF_FLOAT。这影响了神经成像科学家可视化DTI tractography,其中GPU资源可以是overwhelmed.
。