什么是 Armadillo+Atlas、Armadillo+OpenBLAS、Armadillo+uBLAS、Armadillo+MKL?

What is Armadillo+Atlas , Armadillo+OpenBLAS, Armadillo+uBLAS, Armadillo+MKL?

在许多网站上,他们谈论犰狳+其他东西。它们是什么意思?

我以

的形式使用 Armadillo 库
#include <armadillo>

在 Linux 环境中。

在此网站中

http://nghiaho.com/?p=1726

提到

Armadillo+OpenBLAS。他们的意思是什么?如何使用Armadillo+OpenBLAS?


更新

现在已经一年多了。我只是补充一点,Armadillo 是对 BLASOpenBLAS 等实现的包装。不是矩阵运算实现。

不用 link 使用 BLAS 编写基于 Armadillo 的代码,您 link 使用 OpenBLAS。这可以手动完成,或者 Armadillo 安装程序可以确定 OpenBLAS 存在。有关详细信息,请参阅 FAQ

基本上您需要先安装 OpenBLAS,然后安装 Armadillo(不是来自 Linux 存储库,而是 downloaded 版本)。

注意 OpenBLAS 版本,即您应该安装 0.2.14 版本。 不然你想用多线程会出问题。

所以:

1 - 删除您已安装的所有内容(Armadillo 或 openBLAS)。 2 - 安装 openBLAS 版本 0.2.14 3 - 安装犰狳(如果您使用存储库,您可能无法访问最新版本)。 4 - 尽情享受吧!

犰狳可以自己做数学运算,也可以调用第 3 方库来做数学运算。 Atlas、BLAS、OpenBLAS、uBLAS、lapack、MKL 是此类第 3 方库的示例。如果犰狳自己做数学运算,它将是单线程的。其中一些第 3 方库可以执行多线程,例如 OpenBLAS。一些库可以使用 GPU,例如 Nvidia 的 nvBLAS。请注意,nvBLAS 仅执行部分 blas 实现,对于 nvBLAS 不执行的操作,您仍然需要另一个 blas 库。

您可以通过编辑 armadillo_bits/config.hpp 或使用 -D 编译器选项根据您的需要设置相关的预编译器指令来控制 Armadillo。

可能会节省您时间的事情:link 犰狳和第 3 方库的顺序很重要。 Armadillo 调用说 lapack 和 lapack 调用 blas 所以顺序应该是:

-larmadillo -llapack -lblas 否则你将有 link 错误。

此外,您应该使用键 -lopenblas 而不是 -lblas。此外,您必须在 openblas 包(之前下载并制作)中添加文件夹(include、lib)的路径。根据我的经验,安装包的顺序和数量并不重要。我在没有重新安装 armadillo.

的情况下尝试了不同版本的 openblas 软件包