问题标签 [openblas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
43761 浏览

python - 使用 OpenBLAS 集成编译 numpy

我正在尝试安装numpyOpenBLAS但是我不知道如何site.cfg编写文件。

当按照安装过程完成安装时,安装没有错误,但是将 OpenBLAS 使用的线程数从 1 增加(由环境变量 OMP_NUM_THREADS 控制)会降低性能。

我不确定 OpenBLAS 集成是否完美。任何人都可以提供一个site.cfg文件来实现相同的目标。

PS:OpenBLAS 与其他工具包(如基于 Python 的Theano )的集成,在同一台机器上增加线程数量时提供了显着的性能提升。

0 投票
1 回答
1459 浏览

multithreading - OpenBLAS 中的多线程线性系统解决方案

我有一个使用 Fortran 95 和 gfortran 编译器的代码。我也在使用 OpenMP,我必须处理非常大的数组。在我的代码中,我还必须使用 OpenBLAS 的求解器 DGTSV 求解线性方程组。我想并行化这个求解器以及使用应该能够做到的openblas。但我在语法上有问题。使用附加的伪代码,所有 4 个 CPU 几乎 100% 使用,但我不确定每个内核是否单独求解线性方程,或者是否将其拆分为多个部分并并行计算。整个东西是使用编译的gfortran -fopenmp -lblas a.f95 -o a.out

所以我的伪代码看起来像

我必须做什么才能使求解器并行化,以便每个内核计算求解器的各个部分?

0 投票
1 回答
3007 浏览

python - 为什么 numpy.float16 会破坏 OpenBlas/Atlas 功能?

好的,我知道float16它不是真正的原始类型,但它是由 Python/numpy 模拟的。但是,问题是:如果存在并且 Python 允许使用该numpy.dot()函数在数组乘法中使用它,为什么 OpenBlas(或 ATLAS)不能正常工作?我的意思是,乘法有效,但并行计算无效。float16或者,以不同的方式(我认为更好),如果我们不能利用 OpenBlas/ATLAS 提供的高级功能,为什么 Python/numpy 允许使用?

0 投票
4 回答
1212 浏览

c - 数字文字 0.e0f 是什么意思?

我目前正在尝试调试未初始化的内存错误。我现在在 OpenBlas 源代码中遇到了数字文字 0.e0f(这是调试器当前所在的位置),这是什么意思?

上下文是这样的:

0.e0f 显然评估为 0。

0 投票
2 回答
8199 浏览

python - Numpy 与 ATLAS 或 OpenBLAS?

在花费大量时间从源代码构建 ATLAS 之后,我在 OpenSUSE 13.1 存储库中发现了 libopenblas 和 libatals。我的问题是

  1. 存储库中易于安装(无需在您自己的计算机上进行调整)“libatlas”是否真的提高了计算性能?

  2. OpenBLAS 是比 ATLAS 好还是只比 Linux 存储库中易于安装的“libatlas”好?请参阅For faster R use OpenBLAS instead: better than ATLAS, trivial to switch to on Ubuntu

  3. 我关注了这篇使用 OpenBLAS 编译 Numpy 的帖子,但找不到“numpy.core._dotblas”模块。此外,我无法同时使用 ATLAS 和 OpenBLAS 构建 Numpy。

  4. 有人可以发布一个 .py 文件或 bash 代码来比较 ATLAS 和 OpenBLAS 吗?例如。

  5. 我用自己的ATLAS构建了 Numpy-1.9,从源代码编译了OpenBLAS,并在 OpenSUSE 13.1 的存储库中安装了“libopenblaso”(OpenMP 版本)和“libopenblasp”(pthreads 版本)。如何配置链接和库,以便可以告诉 Numpy-1.9 使用 OpenBLAS 而不是 ATLAS,而无需重新构建 Numpy-1.9 包。

注意:如果您在存储库中安装“libatlas”,则 ATLAS 未针对您的计算机进行调整,并且无法提高计算性能。因此,我先构建和调整了 ATLAS,然后用我自己的 ATLAS 构建了 Numpy。之后我尝试将 OpenBLAS 链接到 Numpy 但失败了。

提前谢谢了!


感谢@Dmitry 的快速回复!但是问题没有解决...

安装

问:为什么会有一个有趣的双斜杠“..64//usr..”?

链接图书馆

问:这个配置可以吗,因为一些静态库“.a”是链接的?

注意:“libopenblasp.so.0”在“zypper in”之后自动链接,而所有“atlas”库都是由命令手动创建的:

0 投票
1 回答
1190 浏览

lapack - 在编译/链接期间无法禁用 Armadillo Wrapper

我正在尝试使用 MinGW32 和 OpenBLAS 在 Windows 32 下编译 Armadillo C++ 库。

我已经尝试了有关该主题的所有教程和 stackoverflow.com 问题,但似乎仍然无法禁用 wrapper.obj 的编译,这会产生链接错误“未定义对 `sdot_' 的引用”等等。这些是包装器无法找到的 BLAS 符号。

我没有安装其他 BLAS/LAPACK 库,并且在 cmake 输出中确认已找到 libopenblas.dll。

如何禁用 wrapper.obj 的编译和链接?编辑 config.hpp 没有效果。

0 投票
0 回答
439 浏览

python - 在主目录中安装支持 OpenBLAS 的 Numpy

我正在服务器上的主文件夹中本地安装 Python (2.7.8) 环境,以便将较新版本的 Python 及其一些库(Numpy、Theano)与 OpenBLAS 一起使用。为此,我首先usr在我的主目录 ( /home/my_home/usr/) 的文件夹中安装了 Python,如下所述:

https://mail.python.org/pipermail/tutor/2002-March/012903.html

安装似乎很顺利。我通过启动 Python 解释器检查了这一点,它在启动时显示正确的版本。

在此之后,我将 OpenBLAS 安装到/home/my_home/opt文件夹中,如下所述:

使用 OpenBLAS 集成编译 numpy

...这也没有给我任何错误。但是,现在当我尝试安装 Numpy 时(根据上面链接中的说明),我收到以下错误:

我想最简单的事情就是找到 . 的包select,编译并安装它。我不确定这是否正确,因为我上次在主目录中本地安装 Python 2.7.6 时,没有出现此类错误。据我了解,该select模块应该与 Python 一起安装。

当我尝试以类似方式在我的主文件夹中安装 IPython 时,也会发生这种情况。给出的图书馆ImportError是不同的。

我想知道这些是否与我在安装 Python 时可能犯的一个更普遍的错误有关。我将不胜感激有关此问题的任何建议。请让我知道是否有任何其他信息会有所帮助。谢谢!

0 投票
1 回答
603 浏览

python - swig with openmp 和 python,swig -threads 需要额外的 GIL 处理吗?

我的 C 库与 swig 接口。我可以用我的 setup.py 编译它。这里是扩展部分:

在我的库中,我使用 openmp 进行并行化。当我调用我的例程时,我得到了正确数量的线程,但它们都受到 GIL 的影响并且同时运行。我的例程给了我正确的输出。我的印象是swig -threads进入图书馆时会释放GIL。那么为什么我的函数没有并行化呢?

下面是一个 openmp 例程的示例:

我的接口文件不包括任何%threadsPy_BEGIN_ALLOW_THREADS调用。我是否需要发布 GIL,如果需要,我将如何做?

更新: 我在 virtualenv 中安装了带有 openblas 的 numpy,用于计算。它与没有 virtualenv 的 python 解释器完全相同。如果我在激活环境的情况下运行以下 onlineer,则它不会并行化。但是,如果我使用标准安装运行它,它就可以工作。所以我不再确定真正的错误是什么。

0 投票
2 回答
8131 浏览

python - 无法导入 numpy:错误:/usr/lib/liblapack.so.3:未定义符号:gotoblas

当我尝试导入 numpy 时,出现以下错误:

我已经尝试过在 debian wheezy 上的 virtualenv 中使用 pip 安装 matplotlib 时通过 import numpy: lapack_lite.so: undefined symbol and GotoBLAS error 发布的解决方案

我已经尝试了以下所有选项:

我正在使用 Ubuntu 14.1 和 python 2.7

0 投票
0 回答
449 浏览

numpy - RPM 安装 OpenBLAS 以及用于 SciPy 和 NumPy 的 ATLAS?

我正在尝试链接 NumPy 和 SciPy(在 Python 3 下,在 Fedora 20 下),只使用 RPM 包(所以,没有 pip,手动构建等)。

我尝试了各种东西,但是

总是给我通常的“我正在使用 ATLAS”信息。

我试过玩alternatives,如建议的herehere和其他几个资源,但alternatives --list | grep blas总是空的。我尝试添加一个libblas.so.3替代方案,链接到libopenblas.so,但上述测试的行为没有改变。

我还试图找出 SciPy/NumPy 加载这些库的位置和方式,但找不到。

我没有_dotblas.so(在与此相关的各种说明中经常提到);但是,我确实有_dotblas.cpython-33m.socblas.cpython-33m.sofblas.cpython-33m.so,但它们都没有链接到libblas.so.3(如上一个链接中所建议的那样)。

删除 ATLAS 不是一种选择,因为它会拖拽更多的包(例如 Gimp)。

我还在虚拟机中安装了新的 Fedora 20。yum 的 NumPy/SciPy 坚持使用 ATLAS。当我删除它们并从 pip 安装时,它们使用 OpenBLAS 没有问题(但后来我无法轻松切换 ATLAS)。我想要两者,通过简单的切换,所以我可以执行各种测试来比较这两者的性能,并且(重新)在 yum 和 pip 之间安装显然不是一个解决方案。

我想避免重建和手动安装,以便将来更新更容易,因为我需要在几台不同的机器上进行此操作。在我看来,这样做并不是一件奇怪的事情,告诉这些模块加载一个或另一个库,而无需在我想要进行更改时进行重大重新安装。