什么是犰狳+Atlas、犰狳+OpenBLAS、犰狳+uBLAS、犰狳+MKL?
Posted
技术标签:
【中文标题】什么是犰狳+Atlas、犰狳+OpenBLAS、犰狳+uBLAS、犰狳+MKL?【英文标题】:What is Armadillo+Atlas , Armadillo+OpenBLAS, Armadillo+uBLAS, Armadillo+MKL? 【发布时间】:2015-04-07 00:57:26 【问题描述】:在许多网站上,他们谈论犰狳+其他东西。它们是什么意思?
我使用犰狳库的形式
#include <armadillo>
在 Linux 环境中。
在这个网站上
http://nghiaho.com/?p=1726
Armadillo+OpenBLAS
被提及。他们的意思是什么?如何使用Armadillo+OpenBLAS
?
更新
现在已经是一年多之后了。我只是补充一点,Armadillo
是 BLAS
或 OpenBLAS
等实现的包装器。它不是矩阵运算的实现。
【问题讨论】:
【参考方案1】:不是将基于 Armadillo 的代码与 BLAS 链接,而是与 OpenBLAS 链接。这可以手动完成,或者 Armadillo 安装程序可以确定存在 OpenBLAS。详情请见FAQ。
基本上你需要先安装 OpenBLAS,然后再安装 Armadillo(不是来自 Linux 存储库,而是来自 downloaded 版本)。
【讨论】:
【参考方案2】:犰狳可以自己计算,也可以调用 3rd 方库来计算。 Atlas、BLAS、OpenBLAS、uBLAS、lapack、MKL 是此类第 3 方库的示例。如果犰狳做自己的数学,它将是单线程的。其中一些第 3 方库可以执行多线程,例如 OpenBLAS。一些库可以使用 GPU,例如来自 Nvidia 的 nvBLAS。请注意,nvBLAS 仅执行部分 blas 实现,对于 nvBLAS 不执行的操作,您仍然需要另一个 blas 库。
您可以通过编辑 armadillo_bits/config.hpp 或使用 -D 编译器选项设置相关的预编译器指令来控制 Armadillo。
可能会节省您时间的事情:链接犰狳和第 3 方库的顺序很重要。犰狳打电话说 lapack 和 lapack 打电话给 blas 所以顺序应该是:
-larmadillo -llapack -lblas 否则会出现链接错误。
【讨论】:
【参考方案3】:小心使用 OpenBLAS 版本,即您应该安装 0.2.14 版本。 否则如果你想使用多线程你会遇到问题。
所以:
1 - 删除您已安装的所有内容(Armadillo 或 openBLAS)。 2 - 安装 openBLAS 版本 0.2.14 3 - 安装 Armadillo(如果您使用存储库,您可能无法访问最新版本)。 4 - 尽情享受吧!
【讨论】:
【参考方案4】:此外,您应该使用密钥-lopenblas
而不是-lblas
。此外,您必须在openblas
包(之前下载并制作)中添加文件夹(包括、lib)的路径。根据我的经验,安装包的顺序和数量并不重要。我在没有重新安装armadillo
的情况下尝试了不同版本的openblas
软件包。
【讨论】:
-fopenblas
或 -lopenblas
?
对不起。你是对的应该是-lopenblas
。我修好了。以上是关于什么是犰狳+Atlas、犰狳+OpenBLAS、犰狳+uBLAS、犰狳+MKL?的主要内容,如果未能解决你的问题,请参考以下文章