如何从链接到 Apple Accelerate 框架的源代码构建 NumPy?
How to build NumPy from source linked to Apple Accelerate framework?
据我了解,NumPy 在 1.20.0 版本中放弃了对使用 Accelerate BLAS 和 LAPACK 的支持。根据 NumPy 1.21.1 的发行说明,这些错误已得到解决,现在可以再次在 MacOS >= 11.3 上使用 Accelerate 框架从源代码构建 NumPy:https://numpy.org/doc/stable/release/1.21.0-notes.html,但我找不到任何有关如何构建 NumPy 的文档这样做。这似乎是一件值得尝试和去做的有趣事情,因为 Accelerate 框架应该针对 M 系列处理器进行了高度优化。我想这个过程是这样的:
- 下载 numpy 源代码文件夹并导航到此文件夹。
- 创建一个类似于以下内容的
site.cfg
文件:
[DEFAULT]
library_dirs = /some/directory/
include_dirs = /some/other/directory/
[accelerate]
libraries = Accelerate, vecLib
- 运行
python setup.py build
问题是我不知道 1. 变量 library_dirs
和 include_dirs
应该是什么,以便 NumPy 知道使用 Accelerate BLAS 和 LAPACK 以及 2. 是否还有任何其他附加步骤那需要采取。如果有人知道如何执行此操作或可以提供任何见解,将不胜感激。
我实际上在今天早些时候尝试过,这些是我使用的步骤:
- 在
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 性能显着提升。
不,不必那么复杂。我使用了这两个命令,并能够在 Mac M1.
上使用 Apple Accelerate 安装 numpy
pip install cython pybind11
pip install --no-binary :all: --no-use-pep517 numpy
参考:How to install SciPy on Apple Silicon (ARM / M1)
据我了解,NumPy 在 1.20.0 版本中放弃了对使用 Accelerate BLAS 和 LAPACK 的支持。根据 NumPy 1.21.1 的发行说明,这些错误已得到解决,现在可以再次在 MacOS >= 11.3 上使用 Accelerate 框架从源代码构建 NumPy:https://numpy.org/doc/stable/release/1.21.0-notes.html,但我找不到任何有关如何构建 NumPy 的文档这样做。这似乎是一件值得尝试和去做的有趣事情,因为 Accelerate 框架应该针对 M 系列处理器进行了高度优化。我想这个过程是这样的:
- 下载 numpy 源代码文件夹并导航到此文件夹。
- 创建一个类似于以下内容的
site.cfg
文件:
[DEFAULT]
library_dirs = /some/directory/
include_dirs = /some/other/directory/
[accelerate]
libraries = Accelerate, vecLib
- 运行
python setup.py build
问题是我不知道 1. 变量 library_dirs
和 include_dirs
应该是什么,以便 NumPy 知道使用 Accelerate BLAS 和 LAPACK 以及 2. 是否还有任何其他附加步骤那需要采取。如果有人知道如何执行此操作或可以提供任何见解,将不胜感激。
我实际上在今天早些时候尝试过,这些是我使用的步骤:
- 在
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 性能显着提升。
不,不必那么复杂。我使用了这两个命令,并能够在 Mac M1.
上使用 Apple Accelerate 安装 numpypip install cython pybind11
pip install --no-binary :all: --no-use-pep517 numpy
参考:How to install SciPy on Apple Silicon (ARM / M1)