---
title: Eigen库使用KML
description: "Eigen库是一个用于线性代数运算的C++模板库。它提供了高性能的矩阵运算和线性代数操作，被广泛应用于科学计算、机器学习和计算机图形学等领域。详细介绍可参考Eigen官网(https://eigen.tuxfamily.org/index.php?title=Main_Page)。Eigen库官方提供了使能开源BLAS以及LAPACK的方式，同样可以使用到KML中的BLAS与LAPACK库，相比开源Eigen提供了更高性能的矩阵运算接口。除了标准的BLAS、LAPACK接口，鲲鹏数学库提供了额外的BLAS接口供Eigen使用，详细接口信息请参见KML_BLAS like extensions(https://www.hikunpeng.com/document/detail/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_kml_16_0185.html)。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_12_0067.html
sourcePath: /source/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_12_0067.html
indexId: 0d2a0a95641332a8fb9e28897896f01cf03f0e8bcb11f04a95736cc1db8f15a667
---
# Eigen库使用KML

#### Eigen库介绍

Eigen库是一个用于线性代数运算的C++模板库。它提供了高性能的矩阵运算和线性代数操作，被广泛应用于科学计算、机器学习和计算机图形学等领域。详细介绍可参考Eigen官网(https://eigen.tuxfamily.org/index.php?title=Main_Page)。Eigen库官方提供了使能开源BLAS以及LAPACK的方式，同样可以使用到KML中的BLAS与LAPACK库，相比开源Eigen提供了更高性能的矩阵运算接口。除了标准的BLAS、LAPACK接口，鲲鹏数学库提供了额外的BLAS接口供Eigen使用，详细接口信息请参见KML_BLAS like extensions(https://www.hikunpeng.com/document/detail/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_kml_16_0185.html)。


#### 安装Eigen库

1. 从Eigen官网(https://eigen.tuxfamily.org/index.php?title=Main_Page)下载最新Eigen库（Eigen-3.4.0）。
2. 获取压缩包后解压即安装成功。


#### Eigen库应用

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

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

1. 编译并安装Eigen。
  1 2 3 4 mkdir build cd build cmake .. sudo make install

2. 检查是否安装成功，可以编译以下示例代码。

  a. 新建hello_eigen.cpp文件。
    1 vi hello_eigen.cpp

  b. 按“i”进入编辑模式，在文件中添加以下内容。
    1 2 3 4 5 6 7 8 9 10 11 12 // 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; }

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 执行编译。
    1 g++ hello_eigen.cpp -o hello_eigen

    编译成功后输出为内容如下所示。 1 2 3 -1 2.5 1


#### Eigen库使能KML_BLAS

1. 获取eigen_kml.patch文件eigen_kml.patch(https://atomgit.com/openeuler/kml_adapter/blob/master/eigen_adapter)。
2. 将获取到的patch文件放至解压后的文件夹中，并合入此patch。
  1 patch -p1 <eigen_kml.patch

3. 合入patch成功后执行编译命令。
  1 g++ -I./ your_app.cpp -O2 -o your_app -L/usr/local/kml/lib/kblas/nolocking/ -lkblas -lklapack_full -fopenmp -DKUNPENG_USE
