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

qncylg1j  于 11个月前  发布在  其他
关注(0)|答案(3)|浏览(115)

据我所知,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,但我找不到任何关于如何做到这一点的文档。这似乎是一件有趣的事情,因为Accelerate框架应该针对M系列处理器进行了高度优化。我想象的过程是这样的:
1.下载numpy源代码文件夹并导航到此文件夹。
1.创建一个site.cfg文件,看起来像这样:

[DEFAULT]
library_dirs = /some/directory/
include_dirs = /some/other/directory/

[accelerate]
libraries = Accelerate, vecLib

字符串
1.运行python setup.py build
问题是我不知道1.变量library_dirsinclude_dirs应该是什么,以便NumPy知道使用Accelerate BLAS和LAPACK,以及2.是否需要采取任何其他额外的步骤。如果有人知道如何做到这一点或可以提供任何见解,将不胜感激。

os8fio9y

os8fio9y1#

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

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

字符串
如何在Apple Silicon(ARM / M1)上安装SciPy

fcwjkofz

fcwjkofz2#

我今天早些时候实际上尝试了这个,这些是我使用的步骤:

  • 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,性能有了显著提升。

ufj5ltwl

ufj5ltwl3#

从2.0版本开始,Numpy将在OS版本大于索诺马14(source)的macOS平台上针对Accelerate库构建轮子。

相关问题