---
title: 总述
description: "鲲鹏数学库KML（Kunpeng Math Library）是华为提供的基于鲲鹏平台优化的高性能数学函数库，主要完成标量，矢量，矩阵上的数学计算，包括基本的四则运算、三角函数、对数函数、指数函数、线性代数计算等。本文档提供了KML的安装指南、详细接口定义与示例代码，旨在帮助用户快速熟悉KML的使用。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC2/accel/kunpengaccel_kml_16_0001.html
sourcePath: /source/zh/kunpengboostkithistory/240RC2/accel/kunpengaccel_kml_16_0001.html
indexId: c0c705e9420e5273b4ceb8a166129258521476fde35968a4ff379dce35ae126376
---
# 总述

鲲鹏数学库KML（Kunpeng Math Library）是华为提供的基于鲲鹏平台优化的高性能数学函数库，主要完成标量，矢量，矩阵上的数学计算，包括基本的四则运算、三角函数、对数函数、指数函数、线性代数计算等。本文档提供了KML的安装指南、详细接口定义与示例代码，旨在帮助用户快速熟悉KML的使用。

#### 数学库概述

KML提供了基于鲲鹏平台优化的高性能数学函数，所有接口由C/C++、汇编语言实现，部分接口兼容Fortran语言调用，部分提供Java语言封装的接口。KML的组成如表1所示。


**表1 KML组成部分**

| 序号 | 库名 | 描述 | 适用场景 |
| --- | --- | --- | --- |
| 1 | KML\_BLAS | 基础线性代数运算数学库（Basic Linear Algebra Subprograms），基于鲲鹏架构，通过向量化、数据预取、编译优化、数据重排等手段，对BLAS的计算效率进行了深度挖掘，使得BLAS接口函数的性能逼近理论峰值。 | 向量\-向量运算 向量\-矩阵运算 矩阵\-矩阵运算 |
| 2 | KML\_SPBLAS | 稀疏基础线性代数运算库（Sparse Basic Linear Algebra Subprograms），基于鲲鹏架构为压缩格式的稀疏矩阵提供了高性能向量、矩阵运算。充分利用鲲鹏的指令集和架构特点，开发了高性能稀疏矩阵运算库，提升HPC和大数据解决方案业务性能。 | 稀疏的向量\-向量运算 稀疏的向量\-矩阵运算 稀疏的矩阵\-矩阵运算 |
| 3 | KML\_VML | 向量数学库（Vector Mathematical Library），通过 NEON指令 优化、内联汇编等方法，对输入数据进行向量化处理，充分利用了鲲鹏架构下的寄存器特点，实现了在鲲鹏服务器上的性能提升。 | 向量的数学运算，包括幂函数、三角函数、指数函数、双曲函数、对数函数等。 |
| 4 | KML\_MATH | 基础运算数学库，通过周期函数规约、算法改进等手段，提供了基于鲲鹏处理器性能提升较大的函数实现。 | 基础数学运算，包括三角函数、对数函数、指数函数、幂函数运算。 |
| 5 | KML\_FFT | 快速傅里叶（Fast Fourier Transform）运算库，是快速计算序列的离散傅里叶变换（DFT）或其逆变换的方法，广泛的应用于工程、科学和数学领域，将傅里叶变换计算需要的复杂度从O(n2)降到了O(n log n)，被IEEE科学与工程计算期刊列入20世纪十大算法。 | FFT的C2C、C2R、R2C、R2R变换。 |
| 6 | KML\_LAPACK | 线性代数运算库（Linear Algebra PACKage），通过分块、求解算法组合、多线程、BLAS接口优化等手段，基于鲲鹏架构对LAPACK的计算效率进行了优化。 | 线性方程组运算，包括求解、特征值和奇异值问题求解等。 |
| 7 | KML\_SVML | 短向量数学库（Short Vector Mathematical Library），通过NEON指令优化、内联汇编等方法，对输入向量进行批量处理，充分利用了鲲鹏架构下的寄存器特点，实现了在鲲鹏服务器上的性能提升。 | 向量的数学运算，包括幂函数、三角函数、指数函数、双曲函数、对数函数等。 |
| 8 | KML\_SOLVER | 稀疏求解器库（Sparse Solvers），提供直接求解器和迭代求解器，支持单节点多线程、集群MPI多进程。 | 单机版：稀疏对称正定矩阵、稀疏一般矩阵线性方程组迭代求解。 集群版：稀疏对称正定矩阵线性方程组迭代求解，正定埃尔米特矩阵线性方程组直接求解。 |
| 9 | KML\_JAVA | 基于JNI技术，用Java语言封装的KML数学库。 | BLAS、VML。 |
| 10 | KML\_SCALAPACK | 分布式的线性代数运算库（Scalable Linear Algebra PACKage），通过分块、求解算法组合、多进程优化等手段，基于鲲鹏架构对SCALAPACK的计算效率进行了优化。 | 线性方程组运算，包括求解、特征值和奇异值问题求解等。 |
| 11 | KML\_VSL | 向量统计库（Vector Statistical Library），包含多种随机数生成函数，可以生成服从不同分布的随机数。 | 服从不同分布的随机数生成。 |
| 12 | KML\_NUMPY | 使用KML封装的Python Numpy模块。 KML\_NUMPY库提供了40个适配KML或自行优化后的接口，优化的数据类型为FLOAT和DOUBLE，涵盖了基础运算、傅里叶变换、统计和线性代数四个部分。 | 基础运算、傅里叶变换、统计和线性代数。 |
| 13 | KML\_EIGENSOLVER | 特征值求解库，支持求解大型对称/共轭矩阵部分特征值与特征向量，支持MPI多节点。 | 实对称/复共轭矩阵的特征值求解。 |
| 14 | KML\_IPL | 插值库（Interpolate Library），包含多种常用的插值函数，用于数值分析。 | 离散数据的拟合。 |


KML仅适用于鲲鹏处理器。

为获得最优性能，KML接口内部不做完整入参校验，入参合法性由调用方业务来保证。


#### 应用场景

KML主要在以下场景中使用：

- 大数据：机器学习算法。
- HPC（高性能计算）：科学计算、气象、基因、仿真。
- AI（人工智能）：语音识别、图像识别。
