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

鲲鹏BoostKit基础加速

鲲鹏BoostKit加速库提供基于ARM指令深度优化和基于鲲鹏KAE(鲲鹏硬件加速引擎)开发的加速库,覆盖系统库、压缩、加解密、媒体、数学库、存储、网络和AI库等8类加速库,为大数据加解密、分布式存储压缩、视频转码等应用场景提供高性能加速。

鲲鹏BoostKit基础加速软件包,详细介绍和最新内容请参见鲲鹏应用使能套件BoostKit -> 基础加速软件包

图1 鲲鹏BoostKit基础加速软件包

系统库

鲲鹏BoostKit系统库包括如下组件:

  • Glibc-patch:主要对内存、字符串、锁等接口基于华为鲲鹏920处理器微架构特点进行了加速优化。
  • Hyperscan:一款高性能的正则表达式匹配库,增加鲲鹏计算平台分支,且完全兼容armv8-a,通过使用NEON指令、内联汇编、数据对齐、指令对齐、内存数据预取、静态分支预测、代码结构优化等方法,实现在鲲鹏计算平台的性能提升。
  • AVX2KI:一款接口集合库,将传统平台的Intrinsic接口集合使用鲲鹏指令重新实现,并封装为独立的接口模块(C语言头文件方式),以减少大量迁移项目重复开发的工作量。
  • KQMalloc:鲲鹏高性能内存库,是专为鲲鹏920系列处理器设计的内存分配器。此分配器分为单线程和多线程应用场景,最大限度地减少内部缓存占用空间,最大限度地减少内部缓存未命中,可极大地提升应用性能。
  • HTL:轻量级线程库(Hyper Thread Library,HTL)是构建在内核态线程之上的用户级线程库。用于解决内核级线程大量使用时,应用性能下降、系统资源不足的问题,尤其解决嵌套并行场景下性能极低的问题。在保障减少资源使用的情况下,提升并发度,改善性能。
  • KSL_ASN1:ASN.1(Abstract Syntax Notation One)是定义抽象数据类型规格形式的一套标准,是描述数据的表示、编码、传输、解码的灵活的一种记法。KSL_ASN1可替代开源ASN.1软件,目前支持DER(Distinguished Encoding Rules)、XER(XML Encoding Rules)、PER(Packed Encoding Rules)和BER(Basic Encoding Rules)格式,性能相较开源软件asn1c有较大的提升。
  • HAF:同构加速框架(Homogeneous Acceleration Framework,HAF),提供用户友好的编程方式和API,快速、有效、安全地使能用户业务程序指定加速片段卸载推送至卸载节点执行,带来用户预期的卸载优化效果。
  • 毕昇JDK加速库

    毕昇JDK是基于OpenJDK开发的Huawei JDK开源版本,基于鲲鹏处理器提供了一些加速能力,如堆转储增强、JBooster特性和JBolt特性的加速。

    • 堆转储增强特性:屏蔽转储堆文件中的敏感信息,保护数据安全与隐私。
    • JBooster特性:提升应用启动速度、降低CPU占用、加快弹性伸缩的响应速度、降低云应用部署成本。
    • JBolt特性:优化代码缓存布局,降低icache/iTLB miss率,提升应用程序性能。

    其中,堆转储增强特性支持毕昇JDK 8和17版本;JBooster特性和JBolt特性仅支持毕昇JDK 17版本。

压缩

鲲鹏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语言接口库直接提供给用户调用。