首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ATLAS还是OpenBLAS?

用ATLAS还是OpenBLAS?
EN

Stack Overflow用户
提问于 2014-09-14 06:43:11
回答 2查看 8.6K关注 0票数 13

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

  1. 在存储库中轻松安装(无需在您自己的计算机上进行调整) "libatlas“真的可以提高计算性能吗?
  2. OpenBLAS是比ATLAS好,还是仅仅比轻松安装的"libatlas“更好呢?见为了获得更快的R,请使用OpenBLAS :比ATLAS更好,切换到Ubuntu非常简单
  3. 我跟踪了这个帖子用OpenBLAS编译Numpy,但找不到"numpy.core._dotblas“模块。更重要的是,我不能同时使用ATLAS和OpenBLAS构建Numpy。
  4. 有人可以发布一个.py文件或bash代码来比较ATLAS和OpenBLAS吗?例如。
  5. 我用自己的阿特拉斯构建了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,但失败了。

事先非常感谢!

谢谢你的快速回答!,但问题还没有解决……

安装

代码语言:javascript
复制
$ sudo zypper in libopenblasp0

The following NEW package is going to be installed:
  libopenblasp0 

1 new package to install.
Overall download size: 3.0 MiB. After the operation, additional 30.3 MiB will be used.
Continue? [y/n/? shows all options] (y): 
Retrieving package libopenblasp0-0.2.11-11.1.x86_64      (1/1),   3.0 MiB ( 30.3 MiB unpacked)
Retrieving: libopenblasp0-0.2.11-11.1.x86_64.rpm ...........................[done (2.1 MiB/s)]
(1/1) Installing: libopenblasp0-0.2.11-11.1 ............................................[done]

Additional rpm output:
/sbin/ldconfig: Can't link /usr/lib64//usr/local/atlas/lib/libtatlas.so to libopenblas.so.0

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

链接图书馆

代码语言:javascript
复制
$ /usr/sbin/update-alternatives --config libblas.so.3

  Selection    Path                               Priority   Status
------------------------------------------------------------
  0            /usr/local/atlas/lib/libtatlas.so   70        auto mode
  1            /usr/lib64/blas/libblas.so.3        50        manual mode
  2            /usr/lib64/libopenblasp.so.0        20        manual mode
  3            /usr/local/atlas/lib/libcblas.a     50        manual mode
  4            /usr/local/atlas/lib/libptcblas.a   60        manual mode
  5            /usr/local/atlas/lib/libsatlas.so   65        manual mode
* 6            /usr/local/atlas/lib/libtatlas.so   70        manual mode

Q:这种配置好吗,因为有些静态库".a“是链接的?

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

代码语言:javascript
复制
$ /usr/sbin/update-alternatives --install /usr/lib64/blas/libblas.so.3 libblas.so.3 /usr/local/atlas/lib/libxxxx.x <Integer>
EN

回答 2

Stack Overflow用户

发布于 2014-09-14 07:46:53

您可以在系统BLAS和LAPACK实现之间切换,使用更新替代。例如:

代码语言:javascript
复制
/usr/sbin/update-alternatives --config libblas.so.3

我不知道地图集包,但我们提供开放的支持多弓。数学内核包括所有处理器特定的优化和动态设置右变体。注意,openblas库有3种版本:串行版本、p线程版本和openmp版本。您需要使用p线程或openmp。

票数 6
EN

Stack Overflow用户

发布于 2021-09-01 02:20:30

本文展示了一些基准测试。和如何编译不同的线性代数包。显然,在作者的情况下,自己编译比默认的性能要好,但当然是YMMV。

引用有小编辑的文章:

链接到默认系统cblas:

代码语言:javascript
复制
$ gcc time_dgemm.c -lcblas && ./a.out
10.997839 s

单线程优化的地图集版本获得了~3x加速比:

代码语言:javascript
复制
$ gcc time_dgemm.c -L$HOME/opt/atlas/lib -lsatlas && ./a.out
3.237809 s

通过线程blas链接相同的代码,我得到了~10倍的加速比:

代码语言:javascript
复制
$ gcc time_dgemm.c -L$HOME/opt/atlas/lib -ltatlas && ./a.out
1.302789 s

使用OpenBLAS 0.2.8,我获得了比ATLAS更好的性能:

代码语言:javascript
复制
$ gcc time_dgemm.c -L$HOME/opt/openblas-0.2.8/lib -lopenblas && ./a.out
1.031470 s

使用(非免费) MKL,性能非常相似。但是链接线要复杂得多:

代码语言:javascript
复制
$ gcc -fopenmp -m64 -I$MKLROOT/include time_dgemm.c -L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -ldl -lpthread -lm && ./a.out
0.951390 s
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25830764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档