鲲鹏社区首页
中文
注册
鲲鹏BoostKit干货店 | 装个软件轻松加速?快用鲲鹏指令加速库吧!

鲲鹏BoostKit干货店 | 装个软件轻松加速?快用鲲鹏指令加速库吧!

BoostKit

发表于 2021/05/26

40

数字经济时代,业务持续增长,对应用性能的要求持续提升,企业和开发者面临极大挑战:如何基于既有软硬件资源,提升业务应用性能,处理更多事务?今天,鲲鹏布道师汤景仁告诉你如何使用鲲鹏BoostKit加速库对软件基础库做深度性能优化,实现硬件和软件协同加速。

了解鲲鹏BoostKit加速库家族

鲲鹏BoostKit加速库充分发挥硬件的能力,内嵌于操作系统,或者单独作为一个函数库,无需额外购置硬件,就可以提升解决方案的算力和性能。目前鲲鹏BoostKit包含3种类型的加速库:

(1) ARM支持的加速库:开源社区提供的ARM支持的加速库,已在鲲鹏平台完成验证;

(2) 基于鲲鹏指令的加速库:基于鲲鹏指令深度优化的加速库,并向开源社区开放

(3) 基于KAE(Kunpeng Accelerator Engine,鲲鹏加速引擎)的加速库:基于鲲鹏硬件加速引擎的加速库,提供领先业界的性能加速能力。

此外,鲲鹏BoostKit加速库基于使用的场景不同,又分为下图的7类

加速库北向适用于大数据、分布式存储、数据库、虚拟化、CDN等场景,支撑政府、运营商、金融等领域应用,南向适配openEuler、CentOS等主流操作系统。

鲲鹏指令加速库的原理及应用场景

基于鲲鹏指令的加速库覆盖系统、压缩、媒体等多种场景,本期向大家重点介绍四个不同场景的加速库。

指令加速- Glibc

Glibc是c运行库,是linux系统中最底层、最基础的软件库,其它任何运行库几乎都会依赖于glibc。通过使用Q寄存器代替X寄存器、读写内存对齐、结合鲲鹏CPU芯片分支预测特性、算法优化等诸多优化方案,对内存、字符串等接口进行了加速优化,充分利用鲲鹏Neon指令优势提高算力。已优化的接口已合入GNU社区,随glibc2.31主干版本发布,同时openEuler1.0已收编相比于主流OS集成的glibc2.17,接口平均性能提升35+%。

媒体信号库-HMPP(Hyper Media Performance Primitives)

HMPP是高性能媒体性能原语库,包括图像处理HMPPI函数库以及信号处理HMPPS函数库两个子库,适配多个操作系统,提供函数API,应用于运动跟踪、雷达信号、图像分析、视频增强、AI加速、医学扫描、通信工程等诸多行业。目前已经完成信号库HMPPS完成1000+个函数接口开发。

数学库-KML_FFT快速傅里叶变换(Fast Fourier Transform, FFT)

KML_FFT是快速计算序列的离散傅里叶变换(DFT)或其逆变换的方法,广泛的应用于工程、科学和数学领域,将傅里叶变换计算需要的复杂度从O(n2)降到了O(n log n),被IEEE科学与工程计算期刊列入20世纪十大算法。

在保证数学运算精度的同时,KML_FFT基于鲲鹏架构,通过向量化、算法改进,对快速离散傅里叶变换进行了深度优化,使得快速傅里叶变换接口函数的性能有大幅度提升。 KML_FFT与开源FFTW相比,性能提升约有1倍。

异构生态迁移- AVX2Neon

AVX2Neon 是一款接口集合库,将AVX指令封装为独立的接口模块,并采用NEON SIMD指令替换对应的AVX指令,解决异构生态迁移问题。x86 Intrinsic函数总共6000多个,目前已完成其中5000+个的函数接口适配。在异构生态迁移中,往往因为架构不同,要进行大量开发工作,使用AVX2Neon加速库,仅需引入头文件“avx2neon.h”,便可完成异构迁移,从高难度的重构开发降低为入门级别,从X人月的开发工作量级降低为分钟级别,总体工作量降低90%以上。

AVX2Neon支持架构迁移

本页内容