问题标签 [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.
fortran - OpenBLAS 比内在函数 dot_product 慢
我需要在 Fortran 中制作一个点积。我可以dot_product
使用 Fortran 的内在函数或ddot
OpenBLAS 的使用。问题是ddot
速度较慢。这是我的代码:
使用 BLAS:
和dot_product
这两个代码是使用以下代码编译的:
我究竟做错了什么?BLAS不是必须更快吗?
c++ - 如何在非标准位置构建 Armadillo C++ lib 以静态链接到 OpenBLAS
我正在尝试构建 Armadillo C++ 库(版本 6.6),它确实构建得很好。然而,我的问题是我已经单独下载了 OpenBLAS 的源代码并构建了它。我希望犰狳使用我在本地构建的 OpenBLAS,并且我希望它能够将其静态链接到生成的犰狳库中。
所以,
- 我如何告诉 Armadillo CMake 使用特定的 OpenBLAS?
- 我如何告诉犰狳 CMake 静态链接上面的 OpenBLAS,以便它生成一个包含我的 OpenBLAS 的 libarmadillo?
linux - Perf stat 周期数和频率缩放
我一直在使用 odroid-xu3 进行小型实验perf stat
,cpufreq-set
它是一个带有 Exynos 芯片(A7 和 A15 ARM 内核的异构处理器)的嵌入式设备。我使用 BLAS lvl3 基准来运行我的实验,并且我一直在使用该taskset
实用程序将任务固定到 A15 核心。我还仔细检查了它是一个单线程实现。
希望在高频或低频运行时周期数应该相同,但我可以看到一个小的变化,例如分别在 400MHz、1000MHz 和 1600MHz 运行 GEMM 内核(矩阵乘法,100 次运行)我得到以下结果:
您可以看到,即使持续时间与频率也不是真正的线性关系(至少与测量的周期数一致......)。一个假设是该任务有点内存限制,但我在单精度实现中得到了类似的结果......你知道这可能是什么原因吗?
编辑:矩阵有 400 个样本,我使用环境变量 OPENBLAS_LOOP(openblas 基准测试)运行 100 次。我尽量避免运行其他应用程序,我无法判断负载为 0%,但已经接近。你建议我停止一些特别的事情吗?由于它已经是超过 100 次实验的平均值,因此相同频率的变化非常低(<0.1%),当我改变频率时大约有 4% 的差异,而且最高频率的周期数总是更大,所以确实如此看起来不像它更“嘈杂”,它看起来像是在高频发生了其他事情。
c++ - C++ - 为什么犰狳中的 conv2 这么慢?
我在犰狳中使用conv2函数,图像大小为 224x224,掩码大小为 10x10。对于 3 通道图像,我正在执行以下操作:
我只想要有效的卷积,因此我使用的是 submat。此代码使用不同的掩码循环执行32次。对于32次迭代,它需要 2.37 秒,这比 octave 慢得多。Octave 可以在 0.25 秒内执行相同的代码。
octave 和 armadillo 都设置为使用 OpenBLAS,我在 c++ 文件中定义了适当的标志。(例如ARMA_USE_BLAS
等)。谁能告诉我这里有什么问题。
ubuntu - 通过 apt-get `sudo apt-get install openblas-dev` 安装 openblas
是否可以通过 apt-get like 安装 openblas sudo apt-get install openblas-dev
?
似乎在 ubuntu 14.04 上找不到它。
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 个线程。
linux - 从源代码正确安装 lapack/blas/openblas - 用新的替换系统库
我想使用可用的软件包从源代码安装 BLAS、CBLAS、LAPACK 和 OpenBLAS 库,您可以在此处下载openblas和lapack、blas/cblas。
首先,我删除了我的系统 blas/cblas 和 lapack 库,但不幸的是无法卸载 atlas 库(我可以同时拥有 blas 和 lapack 或 atlas - 无法将它们全部删除)。我没有打扰并开始编译下载的库,因为我认为安装后我可以删除图集。
构建过程基于本教程。为了完整起见,我将列出步骤:
打开BLAS。编辑 Makefile.rule (NO_CBLAS=1, NO_LAPACK=1, NO_LAPACKE=1) 文件后,我运行以下代码:
/li>哥伦比亚广播公司。编辑 Makefile.in 后(除了 -lpthread 我需要添加 -pthread 标志):
/li>包。编辑 make.inc 文件后:
/li>拉帕克。我通过以下方式为 gcc 编辑了 make.inc 文件:
然后我运行:
/li>布拉斯。我编辑了 make.inc 文件:
并运行:
/li>
现在我的静态库和共享库都放在 /usr/local/lib 目录中,我想以某种方式告诉我的 linux mint 17.2 系统我已经安装了它们,所以我最终可以卸载 atlas。任何想法如何做到这一点?
我的总体目标是正确设置 OpenBLAS,所以我也想从源代码编译所有其他库。我还想检查我的库是否正常工作,或者我做错了什么。
此外,我的长期目标是安装 Arpack 和 SuperLU 与 OpenBLAS 一起使用,然后最终安装 Armadillo 库 (C++)。
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:无法打开共享对象文件:没有这样的文件或目录
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 个内核与此输出:
为什么fit
Keras 只使用 1 个核心进行相同的设置?该check_blas.py
脚本是否真的代表了神经网络训练计算?
供参考:
编辑
我还创建了一个简单 MLP 的 Theano 实现,它也不运行多核:
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.3
ubuntu 和 R's 下找到LD_LIBRARY_PATH
。我已经测试过了,这确实有效!但我对 R 如何实现这一点感到非常惊讶。 正如我所说,R 应该与构建时配置的 BLAS 库绑定,即,我希望所有 BLAS 例程都集成到R_HOME/lib/libR.so
. 那么为什么仍然可以通过 更改 BLAS/usr/lib/libblas.so.3
呢?
谢谢,如果有人可以解释一下。