问题标签 [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 投票
1 回答
796 浏览

fortran - OpenBLAS 比内在函数 dot_product 慢

我需要在 Fortran 中制作一个点积。我可以dot_product使用 Fortran 的内在函数或ddotOpenBLAS 的使用。问题是ddot速度较慢。这是我的代码:

使用 BLAS:

dot_product

这两个代码是使用以下代码编译的:

我究竟做错了什么?BLAS不是必须更快吗?

0 投票
2 回答
1311 浏览

c++ - 如何在非标准位置构建 Armadillo C++ lib 以静态链接到 OpenBLAS

我正在尝试构建 Armadillo C++ 库(版本 6.6),它确实构建得很好。然而,我的问题是我已经单独下载了 OpenBLAS 的源代码并构建了它。我希望犰狳使用我在本地构建的 OpenBLAS,并且我希望它能够将其静态链接到生成的犰狳库中。

所以,

  1. 我如何告诉 Armadillo CMake 使用特定的 OpenBLAS?
  2. 我如何告诉犰狳 CMake 静态链接上面的 OpenBLAS,以便它生成一个包含我的 OpenBLAS 的 libarmadillo?
0 投票
1 回答
1548 浏览

linux - Perf stat 周期数和频率缩放

我一直在使用 odroid-xu3 进行小型实验perf statcpufreq-set它是一个带有 Exynos 芯片(A7 和 A15 ARM 内核的异构处理器)的嵌入式设备。我使用 BLAS lvl3 基准来运行我的实验,并且我一直在使用该taskset实用程序将任务固定到 A15 核心。我还仔细检查了它是一个单线程实现。

希望在高频或低频运行时周期数应该相同,但我可以看到一个小的变化,例如分别在 400MHz、1000MHz 和 1600MHz 运行 GEMM 内核(矩阵乘法,100 次运行)我得到以下结果:

您可以看到,即使持续时间与频率也不是真正的线性关系(至少与测量的周期数一致......)。一个假设是该任务有点内存限制,但我在单精度实现中得到了类似的结果......你知道这可能是什么原因吗?

编辑:矩阵有 400 个样本,我使用环境变量 OPENBLAS_LOOP(openblas 基准测试)运行 100 次。我尽量避免运行其他应用程序,我无法判断负载为 0%,但已经接近。你建议我停止一些特别的事情吗?由于它已经是超过 100 次实验的平均值,因此相同频率的变化非常低(<0.1%),当我改变频率时大约有 4% 的差异,而且最高频率的周期数总是更大,所以确实如此看起来不像它更“嘈杂”,它看起来像是在高频发生了其他事情。

0 投票
0 回答
687 浏览

c++ - C++ - 为什么犰狳中的 conv2 这么慢?

我在犰狳中使用conv2函数,图像大小为 224x224,掩码大小为 10x10。对于 3 通道图像,我正在执行以下操作:

我只想要有效的卷积,因此我使用的是 submat。此代码使用不同的掩码循环执行32次。对于32次迭代,它需要 2.37 秒,这比 octave 慢得多。Octave 可以在 0.25 秒内执行相同的代码。

octave 和 armadillo 都设置为使用 OpenBLAS,我在 c++ 文件中定义了适当的标志。(例如ARMA_USE_BLAS等)。谁能告诉我这里有什么问题。

0 投票
1 回答
68355 浏览

ubuntu - 通过 apt-get `sudo apt-get install openblas-dev` 安装 openblas

是否可以通过 apt-get like 安装 openblas sudo apt-get install openblas-dev

似乎在 ubuntu 14.04 上找不到它。

0 投票
0 回答
367 浏览

python-2.7 - numpy 与 OpenBLAS 比 blas/lapack 慢

我想在我的 linux mint 17.2 上安装 openBLAS 以加快一些计算。我按照本教程[1]成功安装了 openBLAS 和 numpy(我使用的是 1.9.3 版本)。我运行测试程序并得到以下结果:

实际上,当我删除 numpy 并使用 sudo apt-get install python-numpy 安装系统 numpy 时,我得到了以下结果:

似乎 openblas 例程比原生 blas 和 lapack 慢。可能有什么问题?

这是 numpy.show_config() 输出:

我的处理器有 4 个 CPU,每个核心有 2 个线程。我用 htop 检查了运行测试示例时存在 5-6 个线程。

0 投票
1 回答
5664 浏览

linux - 从源代码正确安装 lapack/blas/openblas - 用新的替换系统库

我想使用可用的软件包从源代码安装 BLAS、CBLAS、LAPACK 和 OpenBLAS 库,您可以在此处下载openblaslapackblas/cblas

首先,我删除了我的系统 blas/cblas 和 lapack 库,但不幸的是无法卸载 atlas 库(我可以同时拥有 blas 和 lapack 或 atlas - 无法将它们全部删除)。我没有打扰并开始编译下载的库,因为我认为安装后我可以删除图集。

构建过程基于教程。为了完整起见,我将列出步骤:

  1. 打开BLAS。编辑 Makefile.rule (NO_CBLAS=1, NO_LAPACK=1, NO_LAPACKE=1) 文件后,我运行以下代码:

    /li>
  2. 哥伦比亚广播公司。编辑 Makefile.in 后(除了 -lpthread 我需要添加 -pthread 标志):

    /li>
  3. 。编辑 make.inc 文件后:

    /li>
  4. 拉帕克。我通过以下方式为 gcc 编辑了 make.inc 文件:

    然后我运行:

    /li>
  5. 布拉斯。我编辑了 make.inc 文件:

    并运行:

    /li>

现在我的静态库和共享库都放在 /usr/local/lib 目录中,我想以某种方式告诉我的 linux mint 17.2 系统我已经安装了它们,所以我最终可以卸载 atlas。任何想法如何做到这一点?

我的总体目标是正确设置 OpenBLAS,所以我也想从源代码编译所有其他库。我还想检查我的库是否正常工作,或者我做错了什么。

此外,我的长期目标是安装 Arpack 和 SuperLU 与 OpenBLAS 一起使用,然后最终安装 Armadillo 库 (C++)。

0 投票
3 回答
16700 浏览

python - Scipy 安装问题,出现 ImportError: libopenblas.so.0: cannot open shared object file or directory

我正在Scipy-0.16.1安装Ubuntu 14.04

OpenBLAS_0.2.18并且Numpy-1.11.0安装没有问题。

Scipy-0.16.1.tar.gz已下载

site.cfg被复制并取消注释以下行:

添加了一行到~/.bashrc

源〜/ .bashrc

配置文件

须藤 python setup.py 配置

错误

ImportError:libopenblas.so.0:无法打开共享对象文件:没有这样的文件或目录

0 投票
1 回答
5455 浏览

python-3.4 - Keras 不使用多核

基于著名的check_blas.py脚本,我写了这个来检查theano实际上是否可以使用多个内核:

运行它python3 check_theano.py表明正在使用 8 个线程。更重要的是,代码的运行速度比没有设置的情况快大约 9 倍,os.environ设置只应用 1 个核心:7.863s 与 71.292s 单次运行。

因此,我希望 Keras 现在在调用时fit(或predict就此而言)也使用多个内核。但是,以下代码并非如此:

此脚本仅使用 1 个内核与此输出:

为什么fitKeras 只使用 1 个核心进行相同的设置?该check_blas.py脚本是否真的代表了神经网络训练计算?

供参考:

编辑

我还创建了一个简单 MLP 的 Theano 实现,它也不运行多核:

0 投票
0 回答
4253 浏览

r - 为什么 R 可以在以后链接到共享的 BLAS,即使它是使用 `--with-blas = lblas` 构建的?

R 安装和管理手册中的BLAS 部分说,当使用配置参数从源代码--without-blas构建 R 时,它将R_HOME/lib/libRblas.so与标准 R 共享库一起将 Netlib 的参考 BLAS 构建到一个独立的共享库中R_HOME/lib/libR.so。这使用户更容易在 R 环境中切换和基准测试不同的调整 BLAS。该指南建议研究人员可以使用符号链接来libRblas.so实现这一点,本文提供了更多详细信息。

相反,当简单地从 R CRAN 的镜像或 Ubuntu 的存储库(对于像我这样的 linux 用户)安装 R 的预编译二进制版本时,理论上在不重建 R 的情况下在不同的 BLAS 之间切换应该更困难,因为预-编译的 R 版本配置为--with-blas = (some blas library). 我们可以很容易地检查这一点,要么通过读取配置文件R_HOME/etc/Makeconf,要么检查R CMD config BLAS_LIBS. 例如,在我的机器上它返回-lblas,因此它在构建时链接到参考 BLAS 。结果,没有R_HOME/lib/libRblas.so,只有R_HOME/lib/libR.so

但是,这个 R 博客说,即使没有从源代码安装 R,也可以在不同的 BLAS 之间切换。作者从 ubuntu 的存储库中尝试了 ATLAS 和 OpenBLAS,然后使用update-alternatives --config来解决。也可以从源代码配置和安装调整的 BLAS,通过 将它们添加到“替代品” update-alternatives --install,然后以相同的方式在它们之间切换。在这种情况下,BLAS 库(一个符号链接)可以在/usr/lib/libblas.so.3ubuntu 和 R's 下找到LD_LIBRARY_PATH。我已经测试过了,这确实有效!但我对 R 如何实现这一点感到非常惊讶。 正如我所说,R 应该与构建时配置的 BLAS 库绑定,即,我希望所有 BLAS 例程都集成到R_HOME/lib/libR.so. 那么为什么仍然可以通过 更改 BLAS/usr/lib/libblas.so.3呢?

谢谢,如果有人可以解释一下。