在Ubuntu上安装OpenBLAS和Eigen

安装 openblas

直接使用 apt-get 命令即可安装:

shell 复制代码
sudo apt-get install libopenblas-dev

检查是否安装成功,可以用下面的示例代码 example.cpp

cpp 复制代码
#include <stdio.h>
#include <stdlib.h>
#include "cblas.h"

int main() {
    const int n = 10;  // Array size
    const double da = 10; // Double constant
    double dx[n]; // Input double array
    double dy[n]; // Output double array

    // Initialize the arrays
    for (int i = 0; i < n; ++i) {
        dx[i] = 9 - i;
        dy[i] = i;
    }

    // Print the original dy array
    printf("Original dy: ");
    for (int i = 0; i < n; ++i) {
        printf("%f ", dy[i]);
    }
    printf("\n");

    // Perform daxpy operation: dy = da * dx + dy
    cblas_daxpy(n, da, dx, 1, dy, 1);

    // Print the modified dy array
    printf("Modified dy: ");
    for (int i = 0; i < n; ++i) {
        printf("%f ", dy[i]);
    }
    printf("\n");

    return 0;
}

编译并运行:

shell 复制代码
~$ gcc example.cpp -lopenblas -o example
~$ ./example
Original dy: 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000 
Modified dy: 90.000000 81.000000 72.000000 63.000000 54.000000 45.000000 36.000000 27.000000 18.000000 9.000000

安装 Eigen

Eigen 官网:https://eigen.tuxfamily.org/index.php?title=Main_Page

在官网找一个源码下载,解压后安装:

shell 复制代码
~$ wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz
~$ tar -zxvf eigen-3.4.0.tar.gz
~$ mkdir build
~$ cd build
~$ cmake ..
~$ sudo make install

eigen3会被默认安装到 /usr/local/include/eigen3 路径下,需要移动到 /usr/local/include 下面:

shell 复制代码
~$ sudo mv /usr/local/include/eigen3/* /usr/local/include/

然后把 /usr/local/include/eigen3 删除掉:

shell 复制代码
~$ sudo rm -rf /usr/local/include/eigen3

最后来跑一下官方示例 my_program.cpp

cpp 复制代码
#include <iostream>
#include <Eigen/Dense>

using Eigen::MatrixXd;

int main()
{
    MatrixXd m(2, 2);
    m(0, 0) = 3;
    m(1, 0) = 2.5;
    m(0, 1) = -1;
    m(1, 1) = m(1, 0) + m(0, 1);
    std::cout << m << std::endl;
}

编译运行:

shell 复制代码
~$ g++ my_program.cpp -o my_program
~$ ./my_program
  3  -1
2.5 1.5
相关推荐
不爱吃糖的程序媛18 分钟前
OpenHarmony 通用C/C++三方库 标准化鸿蒙化适配
c语言·c++·harmonyos
fqbqrr22 分钟前
2601C++,导出控制
c++
陌路2033 分钟前
日志系统7--异步日志的实现
c++
程序员Jared1 小时前
C++11—this_thread
c++·this_thread
mjhcsp1 小时前
C++ Manacher 算法:原理、实现与应用全解析
java·c++·算法·manacher 算法
linweidong1 小时前
在Ubuntu新版本安装gcc4.8等老版本环境
linux·运维·ubuntu
Z1Jxxx1 小时前
0和1的个数
数据结构·c++·算法
朔北之忘 Clancy1 小时前
2020 年 6 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·青少年编程·题解·尺取法
知识分享小能手2 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04 中安装 Docker 容器 —— 知识点详解(26)
学习·ubuntu·docker
消失的旧时光-19432 小时前
C++ 中的 auto 与 nullptr:不是语法糖,而是类型系统升级
开发语言·c++