中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

Eigen库使用KML

Eigen库介绍

Eigen库是一个用于线性代数运算的C++模板库。它提供了高性能的矩阵运算和线性代数操作,被广泛应用于科学计算、机器学习和计算机图形学等领域。详细介绍可参考Eigen官网。Eigen库官方提供了使能开源BLAS以及LAPACK的方式,同样可以使用到KML中的BLAS与LAPACK库,相比原生Eigen提供了更高性能的矩阵运算接口。除了标准的BLAS、LAPACK接口,鲲鹏数学库提供了额外的BLAS接口供Eigen使用,详细接口信息请参见KML_BLAS like extensions

安装Eigen库

  1. 下载最新Eigen库(Eigen-3.4.0)。

    下载地址:Eigen官网

  2. 获取压缩包后解压即安装成功。

Eigen库应用

方式一:由于Eigen库只包含头文件,只需将解压后的文件夹放在工程目录下后引用需要的头文件即可。

方式二:进入解压后的文件夹,进行编译。

  1. 编译并安装Eigen。
    mkdir build
    cd build
    cmake ..
    sudo make install
  2. 检查是否安装成功,可以编译以下示例代码。
    1. 新建hello_eigen.cpp文件。
      vi hello_eigen.cpp
    2. “i”进入编辑模式,在文件中添加以下内容。
      // hello_eigen.cpp 
      #include <iostream> 
      #include <eigen3/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) = 1;
          std::cout << m << std::endl;
      }
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    4. 执行编译。
      g++ hello_eigen.cpp -o hello_eigen
      编译成功后输出为内容如下所示。
      3  -1
      2.5 1

Eigen库使能KML_BLAS

  1. 获取eigen_kml.patch文件。

    下载地址:eigen_kml.patch

  2. 将获取到的patch文件放至解压后的文件夹中,并合入此patch。
    patch -p1 <eigen_kml.patch
  3. 合入patch成功后执行编译命令。
    g++ -I./ your_app.cpp -O2 -o your_app -L/usr/local/kml/lib/kblas/nolocking/ -lkblas -lklapack_full -fopenmp -DKUNPENG_USE