gpt4 book ai didi

c++ - 在 Linux 中快速制作 Armadillo C++ 库 - Ubuntu

转载 作者:行者123 更新时间:2023-12-02 10:16:00 31 4
gpt4 key购买 nike

我最初是 Windows 用户,我通过 VirtualBox 使用 Ubuntu 操作系统,并在 Ubuntu 操作系统上安装了 GCC 9.30。我在终端中使用以下命令安装了 Armadillo、BLAS 和 LAPACK:

sudo apt-get install liblapack-dev
sudo apt-get install libblas-dev
sudo apt-get install libboost-dev
sudo apt-get install libarmadillo-dev

之后,我创建了以下 .cpp 文件,该文件测量执行 20 次 500 x 500 矩阵的乘法所需的时间:
#include <iostream>
#include <armadillo>
#include <chrono>
using namespace std;


int main()
{
chrono::steady_clock sc;
int n = 500;
arma::Mat<double> A = arma::randu(n, n);
arma::Mat<double> B = arma::randu(n, n);
auto start = sc.now(); // start timer

for (int i = 0; i < 20; i++)
{
arma::Mat<double> C = A * B;
}
auto end = sc.now();
auto time_span = static_cast<chrono::duration<double>>(end - start);
cout << "Operation took: " << time_span.count() << " seconds !!!";
return 0;
}

我使用以下命令从 Linux 终端运行文件
g++ armaC.cpp -o armaC -O3 -march=native -fopenmp -larmadillo

结果证明这非常慢,平均为 1.5 秒,而 MATLAB 大约需要 0.08 秒。其实去掉-O3或者-fopenmp这个命令好像根本没有改变速度,这似乎说明我的编译方法出了点问题。

我还尝试在终端中使用以下行运行它,其中应该包含 BLAS 和 LAPACK 包:
g++ armaC.cpp -o armaC -llapack -lblas

这给了我以下错误:

enter image description here

有人可以给我一些帮助吗?

最佳答案

标准 BLAS 和 LAPACK 是较慢的引用实现。
使用像 OpenBLAS 这样的加速版本要快得多或 Intel MKL .

在安装 Armadillo 之前,首先安装 OpenBLAS。这可以通过直接从 OpenBLAS 页面使用存档手动完成,也可以通过包管理器自动完成。

例如,在 Ubuntu 20.04 上使用以下命令:

sudo apt-get install libopenblas-openmp-dev

...然后重新安装 Armadillo 。一般推荐使用 most recent version可用的。

要解决您的链接问题,请参阅 Armadillo 的 Questions页。

(注意:在 Ubuntu 20.04 上,不要安装 libopenblas-serial-devlibopenblas-dev 。这些都是错误的。从系统中删除它们。只有 libopenblas-openmp-dev 可以正常工作。)

关于c++ - 在 Linux 中快速制作 Armadillo C++ 库 - Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61924616/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com