在没有英特尔的情况下编译 numpy MKL/BLAS/ATLAS/LAPACK
Compile numpy WITHOUT Intel MKL/BLAS/ATLAS/LAPACK
我正在使用 py2exe
转换一个使用 numpy
的脚本,我得到一个非常大的结果文件夹,而且很多大文件似乎来自 [=12] 的一部分=] 我没有使用的包,例如 numpy.linalg
.
为了减少创建的文件夹的大小,我被引导相信我应该 numpy
在没有英特尔 MKL/BLAS/ATLAS/LAPACK 的情况下编译。
我将如何进行此更改?
编辑
在 C:\Python27\Lib\site-packages\numpy\linalg
中,我发现了以下文件:_umath_linalg.pyd
(34MB) 和 lapack_lite.pyd
(18MB),它们在使用 py2exe
时被复制到分发文件夹中。如果可能的话,我想消除对这些的依赖,同时仍然能够使用 numpy
数组。包含的另一个大文件位于 C:\Python27\Lib\site-packages\numpy\core
中,名为 _dotblas.pyd
(12MB)。是否也可以删除它?
Disabling ATLAS and other accelerated libraries
Usage of ATLAS and other accelerated libraries in Numpy can be
disabled via:
BLAS=None LAPACK=None ATLAS=None python setup.py build
但是,此信息似乎已过时,因为我发现即使使用这些选项,numpy v1.9.2 仍会自动找到 libopenblas.so
:
numpy_source_dir/$ BLAS=None LAPACK=None ATLAS=None python setup.py config
...
openblas_info:
FOUND:
libraries = ['openblas', 'openblas']
library_dirs = ['/opt/OpenBLAS/lib']
language = f77
FOUND:
libraries = ['openblas', 'openblas']
library_dirs = ['/opt/OpenBLAS/lib']
language = f77
...
一种解决方法是将 site.cfg.example
复制到 site.cfg
,然后对其进行编辑,使相关 BLAS/LAPACK 库的路径无效:
[openblas]
libraries =
library_dirs =
include_dirs =
当您随后调用 BLAS=None LAPACK=None ATLAS=None python setup.py config
时,您应该得到包含以下内容的输出:
...
openblas_info:
/home/alistair/src/python/numpy/numpy/distutils/system_info.py:594: UserWarning: Specified path is invalid.
warnings.warn('Specified path %s is invalid.' % d)
libraries not found in []
NOT AVAILABLE
...
我希望相同的方法适用于 ATLAS 和 MKL,尽管我没有安装这些库来进行适当的测试。
当然,您应该知道,没有加速 BLAS/LAPACK 库会对线性代数运算的性能产生 大 不利影响。
更新
正如下面评论中提到的,您实际上并没有“编译”您当前版本的 numpy,而是从二进制分发版安装它。我上面给出的方法需要你从源代码构建 numpy,这在 Windows 中不是一件容易的事情(尽管有官方说明 here)。
一个更简单的选择是安装 Christoph Gohlke 网站 here.
提供的 unoptimized
numpy 二进制文件之一
我正在使用 py2exe
转换一个使用 numpy
的脚本,我得到一个非常大的结果文件夹,而且很多大文件似乎来自 [=12] 的一部分=] 我没有使用的包,例如 numpy.linalg
.
为了减少创建的文件夹的大小,我被引导相信我应该 numpy
在没有英特尔 MKL/BLAS/ATLAS/LAPACK 的情况下编译。
我将如何进行此更改?
编辑
在 C:\Python27\Lib\site-packages\numpy\linalg
中,我发现了以下文件:_umath_linalg.pyd
(34MB) 和 lapack_lite.pyd
(18MB),它们在使用 py2exe
时被复制到分发文件夹中。如果可能的话,我想消除对这些的依赖,同时仍然能够使用 numpy
数组。包含的另一个大文件位于 C:\Python27\Lib\site-packages\numpy\core
中,名为 _dotblas.pyd
(12MB)。是否也可以删除它?
Disabling ATLAS and other accelerated libraries
Usage of ATLAS and other accelerated libraries in Numpy can be disabled via:
BLAS=None LAPACK=None ATLAS=None python setup.py build
但是,此信息似乎已过时,因为我发现即使使用这些选项,numpy v1.9.2 仍会自动找到 libopenblas.so
:
numpy_source_dir/$ BLAS=None LAPACK=None ATLAS=None python setup.py config
...
openblas_info:
FOUND:
libraries = ['openblas', 'openblas']
library_dirs = ['/opt/OpenBLAS/lib']
language = f77
FOUND:
libraries = ['openblas', 'openblas']
library_dirs = ['/opt/OpenBLAS/lib']
language = f77
...
一种解决方法是将 site.cfg.example
复制到 site.cfg
,然后对其进行编辑,使相关 BLAS/LAPACK 库的路径无效:
[openblas]
libraries =
library_dirs =
include_dirs =
当您随后调用 BLAS=None LAPACK=None ATLAS=None python setup.py config
时,您应该得到包含以下内容的输出:
...
openblas_info:
/home/alistair/src/python/numpy/numpy/distutils/system_info.py:594: UserWarning: Specified path is invalid.
warnings.warn('Specified path %s is invalid.' % d)
libraries not found in []
NOT AVAILABLE
...
我希望相同的方法适用于 ATLAS 和 MKL,尽管我没有安装这些库来进行适当的测试。
当然,您应该知道,没有加速 BLAS/LAPACK 库会对线性代数运算的性能产生 大 不利影响。
更新
正如下面评论中提到的,您实际上并没有“编译”您当前版本的 numpy,而是从二进制分发版安装它。我上面给出的方法需要你从源代码构建 numpy,这在 Windows 中不是一件容易的事情(尽管有官方说明 here)。
一个更简单的选择是安装 Christoph Gohlke 网站 here.
提供的unoptimized
numpy 二进制文件之一