鲲鹏BoostKit加速库提供基于ARM指令深度优化和基于鲲鹏KAE(鲲鹏硬件加速引擎)开发的加速库,覆盖系统库、压缩、加解密、媒体、数学库、存储、网络和AI库等8类加速库,为大数据加解密、分布式存储压缩、视频转码等应用场景提供高性能加速。
鲲鹏BoostKit基础加速软件包,详细介绍和最新内容请参见鲲鹏应用使能套件BoostKit -> 基础加速软件包。
图1 鲲鹏BoostKit基础加速软件包
压缩
鲲鹏BoostKit压缩库包括如下组件:
- Gzip:Gzip(GUN zip)通过数据预取、循环展开、CRC指令替换等方法,来提升其在鲲鹏计算平台上的压缩和解压缩速率,尤其对文本类型文件的压缩及解压具有更明显的性能优势。
- ZSTD:Zstandard,即ZSTD压缩库。通过使用NEON指令、内联汇编、代码结构调整、内存预取、指令流水线排布优化等方法,引入zstar软优化库,实现ZSTD在鲲鹏计算平台上压缩和解压性能的提升。
- Snappy:利用内联汇编、宽位指令、优化CPU流水线、内存预取等方法,实现Snappy在鲲鹏计算平台上的压缩和解压速率提升。
- KAEzip:鲲鹏加速引擎的压缩模块,使用鲲鹏硬加速模块实现deflate算法,结合无损用户态驱动框架,提供高性能Gzip/zlib格式压缩接口。
- LZ4:快速压缩库,它能够以极高的速度对数据进行压缩和解压缩。该压缩算法非常快速和高效,适用于各种类型的数据压缩。LZ4库可以被广泛应用于数据存储、网络传输和实时数据处理等领域,为用户提供了快速且可靠的数据压缩解决方案。其官网发布的1.9.3 Release优化版本,利用NEON指令、内联汇编、代码结构调整、内存预取、指令流水线排布优化等方法,实现LZ4在鲲鹏计算平台上压缩性能的提高。
加解密
KAE加解密是鲲鹏加速引擎的加解密模块,使用鲲鹏硬加速模块实现RSA/SM3/SM4/DH/MD5/AES算法,结合无损用户态驱动框架,提供高性能对称加解密、非对称加解密算法能力,兼容OpenSSL 1.1.1a及其之后版本,支持同步&异步机制。
媒体
鲲鹏BoostKit媒体库包括如下组件:
- HMPP:鲲鹏超媒体性能库(Hyper Media Performance Primitives,HMPP),包括向量缓冲区的分配与释放、向量初始化、向量数学运算与统计学运算、向量采样与向量变换、滤波函数、变换函数(快速傅里叶变换),支持IEEE 754浮点数运算标准。
- x265:针对FFmpeg视频转码场景,对X265的转码底层算子使用鲲鹏向量指令进行加速优化,提高整体性能。
- x264:采用GPL授权的视频编码免费软件,主要功能实现H.264/MPEG-4 AVC的视频编码。
- KVSIP:鲲鹏矢量信号处理库,提供了高性能计算接口,包括向量基础运算、矩阵基础运算和快速傅里叶运算功能,支持在鲲鹏平台使用。
- KPCV:鲲鹏计算视觉库,简称KPCV(Kunpeng Computer Vision)汇聚了基于OpenCV图算子的优化、PyTorch图算子优化,利用鲲鹏向量指令对其中的图像处理算子进行性能优化。
- CV图算子库:利用鲲鹏向量指令对其中的merge、resize(该函数还支持多种插值方法,如cv2.INTER_LINEAR、cv2.INTER_CUBIC、cv2.INTER_NEAREST_EXACT等算法)、remap、dilate、GaussianBlur、cvtColor图像处理算子进行性能优化。
- PyTorch图算子库:利用鲲鹏向量指令对其中的数据预处理需要的normalize、resize、permute算子进行性能优化。
数学库
鲲鹏数学库(Kunpeng Math Library,KML)是华为提供的基于鲲鹏平台优化的高性能数学函数库,主要完成标量、矢量、矩阵上的数学计算,包括基本的四则运算、三角函数、对数函数、指数函数、线性代数计算等,数学库所有接口由C/C++、汇编语言实现,部分接口兼容Fortran语言调用,部分提供Java语言封装的接口。
存储
鲲鹏BoostKit存储库包括如下组件:
- Smart Prefetch:创新性地采用高速缓存盘配合高效的预取算法,提升系统存储IO性能,进而提升上述解决方案中存储IO密集型场景的整体性能。
- SPDK:高性能存储开发包(Storage Performance Development Kit,SPDK)通过使用网络技术、处理技术和存储技术来提升效率和性能。通过运行为硬件设计的软件,SPDK已经证明很容易达到每秒钟数百万次IO读取,通过使用许多处理器核心和许多NVMe驱动去存储,而不需要额外卸载硬件。
- ISA-L:ISA-L(Intelligent Storage Acceleration Library)提供RAID、纠删码、循环冗余检查、密码散列和压缩的高度优化的函数。
网络
鲲鹏BoostKit网络库包括如下组件:
- XPF:XPF(Extensible Packet Framework)在OVS(Open vSwitch)软件内部实现了一个智能卸载引擎模块,该模块用于跟踪数据报文在OVS软件中所经历的所有流表和CT表,将执行的CT行为和所有流表行为项进行综合编排成一条综合行为项并结合统一匹配项生成一条集成流表项。后续的数据报文在进入OVS后,若匹配命中该集成流表,则直接执行综合行为,相比开源的处理流程,查询次数将减少,性能将大幅度提升。
- DPDK:数据平面开发工具包(Data Plane Development Kit,DPDK),为用户空间高效的数据包处理提供数据平面开发工具集,包括库函数和驱动。
AI库
- KAIL_DNN:深度神经网络算子库(Deep Neural Network Library),结合鲲鹏处理器微架构特性,通过向量化、汇编、算法优化等手段,提升DNN核心算子性能,并通过插件化形式对接开源oneDNN库提供完整能力。
- KAIL_DNN_EXT:深度神经网络算子拓展库(Deep Neural Network Extension Library),旨在作为KAIL_DNN的拓展库,深度优化softmax、random_choice等算子,为AI特定场景封装为Python语言接口库直接提供给用户调用。