什么是犰狳+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


更新

现在已经是一年多之后了。我只是补充一点,ArmadilloBLASOpenBLAS 等实现的包装器。它不是矩阵运算的实现。

【问题讨论】:

【参考方案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?的主要内容,如果未能解决你的问题,请参考以下文章

犰狳线性系统求解器(带有openblas)

犰狳线性系统求解器(带有openblas)

我怎么知道,犰狳正在我的 ARM 上使用 openblas?

如何在编译期间强制犰狳库链接到本地​​ OpenBLAS

为犰狳设置线程数

在 C++ Xcode 中链接犰狳库