鲲鹏社区首页
中文
注册
如何使用开发框架工具快速部署SDK并创建工程

如何使用开发框架工具快速部署SDK并创建工程

DevKit

发表于 2023/04/26

0

本章节将以通用计算工程的循环校验为例,讲解如何通过开发框架工具快速部署通用计算SDK,创建通用计算循环校验工程并在鲲鹏平台上运行。程序运行后可以通过程序的输出来对比通用计算加速前后的效果。

本小节的实验步骤将在远程实验室的云开发环境中进行演示,使用自备环境的开发者也可以根据本小节实验步骤进行学习。

通用计算工程中涉及到的很多加速场景都是利用鲲鹏加速库来完成的,接下来的章节将讲解鲲鹏加速库和循环校验的内容,了解鲲鹏加速库是如何帮助开发者的应用进行加速的。同时创建工程提供的功能有基本的了解。

鲲鹏加速库

鲲鹏加速库是对软件基础库做深度性能优化,构建常用软件库在鲲鹏平台上的性能竞争力,硬件加速+软加速库,现已完成18个加速库,是基于鲲鹏平台指令优化和软硬件结合的加速技术。

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

从上面的图片中可以看到,鲲鹏加速库的实现方式分为基于鲲鹏指令的软加速和基于鲲鹏加速引擎的硬加速。

鲲鹏指令性加速就是基于ARM指令深度优化,主要包含系统基础库、压缩、媒体、数学库等。以Gzip为例,Gzip(GNU zip)是一款发布较早并已广泛应用的压缩软件。

鲲鹏优化版本在官网发布的Gzip-1.10 Release版本基础上,通过数据预取、循环展开、CRC指令替换等方法,来提升其在鲲鹏计算平台上的压缩和解压缩速率,尤其对文本类型文件的压缩及解压具有更明显的性能优势。

而鲲鹏硬加速是基于鲲鹏加速引擎完成的,鲲鹏加速引擎系统逻辑架构如下图所示:

(1)芯片加速器子系统、BIOS子系统和BMC子系统为基于鲲鹏920服务器自带子系统;

(2)加速器驱动子系统,向上层提供各子加速器模块统一的驱动接口,是本系统的核心子系统;

(3)应用库子系统(OpenSSL/zlib),向上层应用提供标准接口;

(4)应用系统(APPs),指上层应用系统,包括大数据应用、Web应用等,属于用户层面系统。

以KAEzip为例,KAEzip是鲲鹏加速引擎的压缩模块,使用鲲鹏硬加速模块实现deflate算法,结合无损用户态驱动框架,提供高性能Gzip/zlib格式压缩接口。在分布式存储场景,使用硬压缩加速,大数据块混合读写性能提升14%+。

循环校验CRC32

循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。

CRC本质上是选取一个合适的除数,也就是生成多项式,要进行校验的数据是被除数,然后做模2除法,得到的余数就是CRC校验值。

CRC检错能力极强,开销小,易于用编码器及检测电路实现。从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。

鲲鹏平台采用的是ARM架构,ARM架构为了提高程序运算性能,提供了NEON指令加速,让数据的运算变的更快。后续章节将以CRC32为例,展示通用计算工程的创建过程,同时针对CRC32程序在NEON指令加速前后的时间进行对比。

使用开发框架工具完成SDK部署与应用创建

首先进入云开发环境的在线IDE页面,从左至右依次点击图中按钮登录开发框架工具。

注:登录所需用户名和密码已自动补全,具体的用户名和密码信息已通过邮件形式发送到了申请所用的邮箱中。

登录成功后,点击左上角按钮新建鲲鹏应用工程,之后在页面中选择通用计算应用 – 加速库应用,进入新建加速库工程页面。

工程类别选择循环校验模板工程,点击新建应用按钮。

等待几十秒时间后,即可完成工程创建和通用计算SDK的部署,点击配置目标服务器,将目标服务器信息配置到工程配置文件中,方便后续进行工程同步编译。

目标服务器配置信息已经默认填充,选择自动生成公私钥对直接开始配置;在弹出的窗口页面选择确认将公钥自动上传。

之后点击查看应用按钮,在本窗口打开,查看新创建的鲲鹏通用应用工程。此时通用计算工程已通过工具成功创建,同时完成了通用计算SDK的在线部署。接下来通过DevKit的编译调试工具完成工程的快速编译。

注:如果页面提示工程创建失败,请检查当前电脑的网络连通性。

使用编译调试工具完成工程的快速编译

点击左侧鲲鹏编译调试插件按钮,选择编译调试。

选中左侧基础编译任务栏中的待编译任务执行编译,点击“跳过引导”按钮跳过编译前引导,在页面上方的弹框中选择执行编译任务的服务器IP,之后点击“同步并编译”按钮将工程同步到远端目标服务器的工作空间,执行编译任务。

之后在页面下方的输出中可以看到工程同步和编译的具体信息,在输出中看到编译成功的信息后,切换到终端页签,运行CRC32的工程样例,进行NEON指令加速的优化对比。

首先点击已配置服务器的登录按钮以root用户进入终端。

之后输入下面的命令进入编译后的目录:

cd /home/debugger/project/src/crc32/build

最后以root目录下的kafka软件包为例为测试对象,执行命令对其进行CRC32校验:

./crc32_demo /root/kafka-2.4.1-1.el7.noarch.rpm

通过结果输出可以看到,NEON指令加速前的运算时间为346ms,经过鲲鹏平台的NEON指令加速,运算速度快了近10倍,达到了35ms,极大地提升了循环校验程序的运算速度。

本页内容