问题标签 [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.
deep-learning - Caffe 在 CPU 模式下始终使用单核
我从源代码构建了 caffe(基于 BVLC 安装指南)。问题是在 CPU 模式下它总是使用单核,尽管我设置OPENBLAS_NUM_THREADS
了不同的值。
在我的 CentOS 机器上,我安装了openblas-threads64
、openblas-serial64
和openblas-openmp64
rpm 软件包并设置BLAS := open
为Makefile.config
. 此外,在/user/lib64/
我看到单个和并行共享库下,但ldd
caffe 二进制文件的输出显示它加载libopenblas.so.0
而不是libopenblasp.so.0
(可能是并行版本)。
我不确定我是否还缺少其他任何东西,或者它是 caffe 中的错误。
c++ - Error while compiling Caffe
I am trying to compile Caffe with OpenBLAS in Ubuntu 16.04. I had downloaded and compile OpenBLAS with make NO_AFFINITY=1 USE_OPENMP=1 OpenBLAS compilation is fine and all its tests are also run
However linking with OpenBLAS libs in Caffe install is giving the following error
Linking CXX executable upgrade_net_proto_binary /opt/OpenBLAS/lib/libopenblas.so: undefined reference to `GOMP_parallel@GOMP_4.0' collect2: error: ld returned 1 exit status tools/CMakeFiles/upgrade_net_proto_binary.dir/build.make:129: recipe for target 'tools/upgrade_net_proto_binary' failed make[2]: * [tools/upgrade_net_proto_binary] Error 1 CMakeFiles/Makefile2:403: recipe for target 'tools/CMakeFiles/upgrade_net_proto_binary.dir/all' failed make[1]: * [tools/CMakeFiles/upgrade_net_proto_binary.dir/all] Error 2
r - Anaconda R 似乎无法使用 OpenBLAS。只有MKL?为什么?
主要问题(#1):
有没有什么秘诀可以让 anaconda R (请不要使用其他 R,其他 R 没有问题)在 Ubuntu 上使用常驻 BLAS 子系统?
根据环境变量 OMP_NUM_THREADS 的值,同一主机上的其他数值应用程序 (Octave) 正在证明 BLAS 子系统安装是有效的,并且对于数值矩阵运算具有预期的高性能。将这个非 anaconda 软件挂接到驻留的 BLAS 子系统中不需要特殊技巧。
相关问题(#2):英特尔 MKL
BLAS 子系统
是否与 anaconda 一起分发,并且可以被 anaconda R 使用,作为 OpenBLAS 的后备?在这种情况下,如何激活 MKL BLAS?
程序htop
在基准运行期间仅由 Anaconda R 显示单核 100% 利用率。出乎意料的是,Anaconda R 无法使用 OpenBLAS 进行并行矩阵代码。与使用普通 R 而不是 anaconda R 的参考机器相比,观察到 > 40 倍的显着减速。这是一个不可接受的性能问题。
blas 子系统安装本身使用 GNU Octave 包通过运行数值基准验证为正确且功能齐全,当OMP_NUM_THREADS=1
更改为时显示出预期的出色改进OMP_NUM_THREADS=16
,这对于测试硬件来说是适当的值。
最后一个问题(#3):
anaconda 维护者供应商是否有意构建仅用于英特尔 MKL的 R 二进制文件,不包括 OpenBLAS 子系统?
谢谢阅读。
请求任何回复仅限于具有实际使用 MKS 或 OpenBLAS 并仅通过 anaconda 软件包成功使用经验的人。感谢您的理解。
随意使用我的基准:
(遗憾的是,由于 NVIDIA 专有视频驱动程序安装在某些时候被 Ubuntu 自动更新损坏,请忽略未完成测试的 NVBLAS。)
x86 - OpenBLAS 如何支持任意大小的向量和矩阵?
我试图了解如何支持任意大小的矩阵和向量的快速向量化线性代数计算。根据我对 x86 处理器架构的了解,它们包含大小有限的特殊寄存器。这些寄存器允许加载浮点数和跨寄存器广播操作。你如何有效地绕过有限的尺寸?
我正在查看 OpenBLAS 源代码来解决这个问题,但尽管查看了开发文档,但无法弄清楚简单操作的一般流程,例如gemv
.
android - 在 Android 中使用 javacpp + openblas
我正在尝试将 javacpp 的 openblas 预设集成到我的 Android 应用程序中。我创建了一个测试应用程序来说明我在Github中的问题。该应用程序只需在MainActivity.onCreate()方法中运行来自https://github.com/bytedeco/javacpp-presets/tree/master/openblas的示例代码。
我的 gradle 构建依赖项如下:
当我在模拟器中运行应用程序时,我得到:
我是否缺少一些依赖项?
python - 错误:此 scipy 构建需要 Numpy OpenBLAS 风格。(虽然我直接将它的文件保存在 lib->site packages 文件夹中)
我已经安装了 sklearn、numpy 和 matplotlib,但是我无法正确安装 openBLAS,尽管我已经直接将 dopenBLAS 文件保存在 lib 文件夹(站点包)中,但它仍然显示错误......请帮助我执行这一小部分用于图像分类的 TensorFlow 卷积神经网络的代码。我从这里获取了这部分代码https://github.com/rdcolema/tensorflow-image-classification/blob/master/cnn.ipynb
Python IDE 上的输出:
gcc - 在多线程中使用 OpenMP。因为忽略了 OPENBLAS_NUM_THREADS
安装割炬时如下:
在这一步:
安装正确完成。但是我收到一条我不明白的消息。
我不明白这一行:
要安装什么库以及如何安装?
运行前:
python - Openblas 没有链接到 Scipy
我目前正在 Debian Jessie 上运行 scipy。我已经从 apt-get 安装了 scipy。我还从 apt 安装了 blas 和 lapack
然后我在我的机器上编译了openblas并将其安装在默认路径:/opt/OpenBLAS/
我已经更新了替代方案,一切似乎都很好:
但是,当我用 scipy 计算点积时,它似乎不使用 Openblas,而如果我直接调用 dgemm 函数,它似乎很好。我使用以下代码:
我所有的程序都使用 sp.dot() 而不是 dgemm 和 sp.dot() 在其他机器(ubuntu 或 debian 机器)上运行良好。如果有人有一些输入/解决方案,那就太好了!也有任何帮助!
r - 在 Reproducible R 容器中使用 Openblas 和 R
我正在使用 R 进行可重复的科学机器学习和超参数优化。我偶然发现 blas 的其他实现,例如 openblas/atlas/klm 可以加速这种昂贵的优化。但是使用每个 blas 的结果略有不同,即使在单线程结果上强制优化偏离默认 R。
所以我想尝试使用Docker来包含实验。我有多个问题。
从源代码而不是二进制文件编译好吗?
如果我从源代码编译,它会导致与 debian 二进制文件相同的配置吗?
由于每个 blas 的结果都不同,因此有一个来自 Berkeley 的名为 ReproBLAS的工具,将它与 R 一起使用是个好主意吗?
在这种情况下,当您使用“--with-blas=-lopenblas”编译 R 时,openblas 是单线程还是多线程?
centos - 在 CentOS / Fedora 上安装 OpenBLAS
在一个 Java 项目中,我使用matrix-toolkits-java (MTJ) 来进行高效的矩阵乘法。这依赖于netlib-java,而后者又依赖于机器上安装的 BLAS 和 LAPACK 的优化实现。它专门寻找/usr/lib64/libblas.so.3
并/usr/lib64/liblapack.so.3
找到这些库。
通过 Yum安装时blas
,lapack
我们从参考中获得符号链接/usr/lib64/libblas.so.3
并/usr/lib64/liblapack.so.3
指向 .so 文件blas
并lapack
通过 Yum 安装。
现在我们想使用比参考更快的实现,在我的例子中是 OpenBLAS。与我自己编译还是通过 Yum 安装无关,我最终得到/usr/lib64/libopenblas-r0.2.18.so
.
现在,根据互联网上的任何指南,我应该将参考实现的符号链接替换为 OpenBLAS 实现的符号链接,最终得到如下内容:
好的,我可以做到!我可以使用ln
或通过来做到这一点alternatives
。如果我这样做了,我的代码就会愉快地使用快速的 OpenBLAS。
但是,当ldconfig
运行时,我很棒的符号链接消失了,它们被参考 BLAS 和 LAPACK 安装覆盖。然后我的软件又悲伤又慢了。
所以我的问题是,如何在 CentOS/Fedora 上安装 OpenBLAS 以使运行ldconfig
不会破坏它?我无法删除blas
andlapack
包,因为主机的其他客户端可能会依赖它。相反,我会以某种方式让操作系统理解 OpenBLAS 是blas
和lapack
.