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

总述

数学库概述

鲲鹏数学库(Kunpeng Math Library)提供了基于鲲鹏平台优化的高性能数学函数,所有接口由C/C++、汇编语言实现。KML的组成如表1-1所示。

表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的计算效率进行了优化。

线性方程组运算,包括求解、特征值和奇异值问题求解等

KML仅适用于鲲鹏处理器。

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

本文档提供了鲲鹏数学库的安装指南、详细接口定义与示例代码,旨在帮助用户快速熟悉KML的使用。

源码包文件结构

数学库源码包包含6个文件夹:KML_BLAS、KML_SPBLAS、KML_VML、KML_MATH、KML_FFT和KML_LAPACK,分别对应表1-1中的六个库。表1-2描述了源码包的文件结构。

表2 数学库源码包文件结构

文件夹

子文件夹/文件

描述

KML_BLAS

build

build文件夹包含以下文件:

  • KML_BLAS构建的脚本(build.sh)。

source

存放KML_BLAS所有相关源文件的文件夹,其下又包含以下文件夹和文件:

  • cmake文件夹:CMake配置文件。
  • CMakeLists.txt文件:KML_BLAS库的编译CMake文件。
  • common.h文件:KML_BLAS库源码的头文件。
  • kblas.h:KML_BLAS库源码的头文件。
  • driver文件夹:存放level2/3函数的实现源文件。
  • include文件夹:存放KML_BLAS编译的内部头文件。
  • interface文件夹:存放KML_BLAS库函数的接口源文件。
  • kernel文件夹:存放KML_BLAS库函数核心模块实现源文件。

KML_SPBLAS

include

存放头文件的文件夹。

src

存放KML_SPBLAS源码文件的文件夹。

build.sh

KML_SPBLAS库构建脚本文件。

CMakeLists.txt

KML_SPBLAS库的编译cmake文件。

config.xml

KML_SPBLAS库的通用配置信息。

toolchain.cmake

KML_SPBLAS库的cmake编译配置文件。

KML_VML

include

存放KML_VML库函数的头文件的文件夹。

src

存放KML_VML库函数的实现源文件的文件夹。

build.sh

KML_VML库的编译脚本文件。

CMakeLists.txt

KML_VML库的编译CMake文件。

KML_MATH

src

存放KML_MATH库函数的实现源文件的文件夹。

include

存放KML_MATH库函数的头文件的文件夹。

licenses

存放KML_MATH库的版权接口定义的文件夹。

build.sh

KML_MATH库的编译脚本文件。

CMakeLists.txt

KML_MATH库的编译CMake文件。

KML_FFT

include

存放KML_FFT库函数的头文件的文件夹。

src

存放KML_FFT库函数的实现源文件的文件夹。

build.sh

KML_FFT库的编译脚本文件。

clean.sh

KML_FFT库的删除脚本文件。

CMakeLists.txt

KML_FFT库的编译CMake文件。

config.xml

KML_FFT库的通用配置文件。

KML_LAPACK

cmake

CMake编译脚本文件。

libkml

存放KML_LAPACK函数的实现源文件的文件夹。

util

编译时的辅助脚本。

build.sh

KML_LAPACK库的编译脚本文件。

CMakeLists.txt

KML_LAPACK库的编译CMake文件。

config.cmake.in

KML_LAPACK库的编译配置文件。

表1-2并没有完整列举KML_VML、KML_MATH、KML_FFT和KML_LAPACK的内容,仅选取重要部分做出说明。