如何从链接到Apple Accelerate框架的源代码构建NumPy



据我所知,NumPy在1.20.0版本时放弃了对使用Accelerate BLAS和LAPACK的支持。根据NumPy 1.21.1的发布说明,这些错误已经得到解决,并在MacOS上使用Accelerate框架从源代码构建NumPy>=11.3现在再次成为可能:https://numpy.org/doc/stable/release/1.21.0-notes.html,但我找不到任何关于如何做到这一点的文档。这似乎是一件有趣的事情,因为Accelerate框架应该针对M系列处理器进行高度优化。我想这个过程是这样的:

  1. 下载numpy源代码文件夹并导航到此文件夹
  2. 制作一个site.cfg文件,其外观如下:
[DEFAULT]
library_dirs = /some/directory/
include_dirs = /some/other/directory/
[accelerate]
libraries = Accelerate, vecLib
  1. 运行python setup.py build

问题是我不知道1。变量CCD_ 3和CCD_。如果需要采取任何其他附加步骤。如果有人知道如何做到这一点,或者能够提供任何见解,我们将不胜感激。

不必那么复杂。我使用了这两个命令,并能够在Mac M1上使用Apple Accelerate安装numpy。

pip install cython pybind11
pip install --no-binary :all: --no-use-pep517 numpy

参考:如何在Apple Silicon(ARM/M1(上安装SciPy

我今天早些时候确实尝试过,下面是我使用的步骤:

  • site.cfg文件中
[accelerate]
libraries = Accelerate, vecLib
  • 使用NPY_LAPACK_ORDER=accelerate python3 setup.py build构建

  • 使用pip3 install .安装

之后,np.show_config()返回以下

blas_mkl_info:
NOT AVAILABLE
blis_info:
NOT AVAILABLE
openblas_info:
NOT AVAILABLE
accelerate_info:
extra_compile_args = ['-I/System/Library/Frameworks/vecLib.framework/Headers']
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
blas_opt_info:
extra_compile_args = ['-I/System/Library/Frameworks/vecLib.framework/Headers']
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
lapack_mkl_info:
NOT AVAILABLE
openblas_lapack_info:
NOT AVAILABLE
openblas_clapack_info:
NOT AVAILABLE
flame_info:
NOT AVAILABLE
lapack_opt_info:
extra_compile_args = ['-I/System/Library/Frameworks/vecLib.framework/Headers']
extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]
Supported SIMD extensions in this NumPy install:
baseline = NEON,NEON_FP16,NEON_VFPV4,ASIMD
found = ASIMDHP,ASIMDDP
not found = 

我的快速测试表明,与OpenBlas相比,性能有了显著提升。

最新更新