总述
数学库概述
鲲鹏数学库(Kunpeng Math Library,以下简称KML)提供了基于鲲鹏平台优化的高性能数学函数,所有接口由C/C++、汇编语言实现,部分接口提供Java语言封装的接口。KML的组成如表1所示。
序号 |
库名 |
描述 |
适用场景 |
---|---|---|---|
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 |
稀疏迭代求解库(Iterative Sparse Solvers),包含预条件共轭梯度法(PCG)和广义共轭残差法(GCR)。当前KML_SOLVER为单节点多线程版本。 |
稀疏对称正定矩阵、稀疏一般矩阵线性方程组迭代求解。 |
9 |
KML_JAVA |
基于JNI技术,用Java语言封装的KML数学库。 |
BLAS、VML |
KML仅适用于鲲鹏处理器。
为获得最优性能,KML接口内部不做完整入参校验,入参合法性由调用方业务来保证。
本文档提供了鲲鹏数学库的安装指南、详细接口定义与示例代码,旨在帮助用户快速熟悉KML的使用。