在Windows上安装带有OpenBLAS的numpy的教程

7

请帮我!我想在Windows上安装numpy,使用良好的BLAS/LAPACK库,但没有一个页面能够清晰地解释该过程。似乎OpenBLAS是一个不错又快速的选择。

目标是在"theano"中使用"keras",而"theano"要求库是"动态的",而不是静态的。(不确定我理解的是否正确,但这会导致缓慢和内存问题)

请把我当成完全的新手,给我提供一份逐步教程!不要忘记告诉我哪些文件应该放在哪里!哪些文件夹应该加入PATH!我需要调用什么命令,以及它们的输出在哪里?我该如何处理它们的结果或编译文件?numpy如何找到它们的位置?等等。我看到的所有网站都认为我是Linux专家并且已经知道一切。

我尝试过的:

  • 这里下载了已编译好的numpy+mkl版本-- 这会安装numpy,使其可用,但theano会出现内存泄漏问题,而且运行缓慢。是否需要在.theanorc文件中设置正确的ldflags?如果是,应该是哪些标志?关于MKL库,这个答案可能有用?

  • 尝试安装Anaconda,但它也无法正常工作,而我也不知道出了什么问题。它给了我一些提示信息,建议我安装一些额外的东西,虽然可以使用,但速度极慢。比上面提到的有缺陷的numpy版本慢10倍以上(因此,速度不可接受,不可能以那种速度工作)。如果必须改变Anaconda的所有内容,最好使用常规的python并了解发生了什么。

  • 已经找到了这些已编译好的BLAS/LAPACK库(.dll和.lib)文件。但是....我应该怎么做呢?--仅将它们的文件夹添加到PATH变量并安装numpy会给我带来"numpy-atlas",而不是我下载的库。我该如何让numpy看到它们?

  • 尝试理解这个页面,但似乎它将导致我恰好遇到前面的情况,那我该怎么办?结果会发生什么?他们建议使用的库在哪里?建议使用的quickbuild脚本在哪里?

  • 这里找到了Cygwin选项。我还没有尝试过,但它听起来应该比重新安装所有python和软件包以及从Cygwin开始更容易。


与此同时,我一直在使用Tensorflow而不是Theano,它的性能似乎更好,而且不会让我的内存爆满(尽管我听说Theano牺牲编译时间来创建更快训练模型的代价是这样的...) - Daniel Möller
还有一些有趣的内容:https://dev59.com/C14c5IYBdhLWcg3wM3-R,https://docs.anaconda.com/mkl-optimizations/index.html#uninstalling-mkl,https://github.com/conda-forge/numpy-feedstock/issues/84 - djvg
以及这个:https://github.com/conda-forge/scipy-feedstock/issues/80 - djvg
@ShihabShahriarKhan 和其他所有来到这里的人:实际上,在 Windows 10 上,使用 Anaconda 有一个干净且可行的解决方案,请参见我下面的答案。 - Thomas
显示剩余2条评论
4个回答

5

2021年:此方法适用于Windows 10上的Miniconda。

conda create -n openblas python=3.8
conda activate openblas
conda install conda-forge::blas=*=openblas
conda install -c conda-forge numpy

还使用了matplotlib-base进行测试。


1
你知道这些改进还在吗? - Ivan Gonzalez
太好了,谢谢!这似乎真的有效!还可以参考https://dev59.com/Gmox5IYBdhLWcg3wvW3X和https://dev59.com/MloU5IYBdhLWcg3wsoh8。 - djvg
相关:https://stackoverflow.com/a/61220181 - djvg
嗯...这会下载OpenBLAS库,但numpy仍然链接到普通的“blas”、“cblas”、“lapack”、“blas”、“cblas”、“lapack”、“blas”、“cblas”、“lapack”库,而不是OpenBLAS。我确实使用了Anaconda,但这应该不会有任何区别。没有MKL库。我倒不在乎,只是Pythran显然需要OpenBLAS。 - Matt

3
尝试多次按照 http://scipy.github.io/devdocs/building/windows.html 中的构建说明,但没有成功。经过详细阅读日志和相关论坛后,我想出了一种方法,并已在两台Windows机器上成功使用。我在 https://github.com/jhvital/build-scipy-openblas 中发布了一个包含我使用的步骤的批处理文件。
show_config 方法显示链接到 openblas 库,并通过与使用 conda install scipy 安装的 mkl 包安装的 scipy 运行时脚本的运行时间进行比较来确认这一点。
尽管如此,我仍然不确定库是否正确链接。欢迎提供反馈。

2
感谢您发布脚本。我尝试按照您的脚本在Windows上安装numpy+scipy,但当它到达这一行时仍然会尝试安装mklconda install -y blas numpy nose openblas。我尝试手动指定conda install numpy=1.16.2=py37_blas_openblash442142e_0,但是当我执行np.show_config()时似乎找不到openblas。您是如何安装的? - stevew
1
同意@stevew的观点。即使您安装了nomkl元包,它也无法正常工作并需要安装mkl。 - beginner_
@stevew,@beginner_,我认为conda现在默认安装mkl,在我编写脚本的时候它是与openblas一起安装的。你们尝试过在该命令行的末尾添加标志blas=*=openblas吗? - Joao Vital

0

SciPy的构建说明已经测试了多次,看起来是有效的。

您可以在这里找到说明 http://scipy.github.io/devdocs/building/windows.html

请注意,这仍然是非常微妙的过程,需要非常小心地操作。由于Windows系统的特殊性,它仍然不能保证成功。但是,如果您遇到任何问题,请花些时间报告问题,网址为https://github.com/scipy/scipy.org/issues(请注意,这不是scipy存储库,而是scipy.org存储库)。


0

我不确定您在尝试使用anaconda获取openblas & numpy时收到了什么错误。

对于在Windows上使用anaconda3 python 3.6v的openblas,可以使用以下方法:

conda install -c menpo openblas

参考链接: https://anaconda.org/menpo/openblas

对于numpy: 安装方法为:conda install numpy如果您正在寻找特定版本的numpy,请使用:conda install numpy=version_number


1
这个方法只适用于numpy,如果你还需要scipy或者scikit-learn的话就不行了。因为据我所知,anaconda上的scipy构建只能使用mkl,所以conda会再次安装mkl。唯一的“解决办法”就是只使用pip,假设在Windows上找到所有需要的依赖项(不太可能)。 - beginner_

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接