鲲鹏社区首页
中文
注册
练习:秒级创建鲲鹏工程,快速进行原生开发

练习:秒级创建鲲鹏工程,快速进行原生开发

原生开发

发表于 2023/04/27

5998

尊敬的鲲鹏开发者你好,鲲鹏开发框架工具是一款使能用户在鲲鹏服务器上进行开发的工具,帮助开发者更便捷地开发鲲鹏应用,使开发者高效创新,您可以阅读本文快速上手原生开发。

本文主要介绍了以下知识:

(1)了解鲲鹏原生开发概念

(2)如何使用鲲鹏开发框架工具进行鲲鹏原生开发

基础技能:

(1)具备基础的C/C++语言编程能力

(2)了解常用的Linux操作命令

探索鲲鹏原生开发框架工具

1. 什么是鲲鹏原生开发

鲲鹏原生开发是指使用鲲鹏DevKit的原生开发能力,如鲲鹏开发框架(含场景化SDK)、编译调试工具、云测服务、调优&诊断工具等,在鲲鹏平台上开发新软件/新功能,充分发挥鲲鹏架构优势,从而获得开发效率/运行性能提升。

本实验将重点体验原生开发过程中的环境配置、代码开发、编译部署、鲲鹏平台运行这几个步骤。针对这个过程中的关键痛点,DevKit开发套件提供了全流程的解决方案,帮助开发者快速上手鲲鹏原生开发。

2. 原生开发过程中的常见问题

从“什么是原生开发”节图片内容中可知,在鲲鹏原生开发过程中,开发者需要先完成环境部署,安装应用运行所需的依赖软件,之后创建应用工程,进行应用开发,开发完成后将代码上传到鲲鹏平台进行编译部署。在这个过程中开发者通常会碰到如下问题:

(1)某些开发场景应用环境依赖比较复杂,部署过程容易失败,环境部署过程的不确定性极大增加了项目交付的风险和工作量。

(2)鲲鹏平台为开发者提供了很多关键特性帮助开发者更好的进行开发工作,比如加速库可以帮助开发者快速提升应用性能,安全计算可以帮助开发者更加安全的保存机密数据,但这些特性内容较为庞大,面对内容繁多的开发指导文档,很多开发者不知道如何快速将这些特性融入到具体项目中。

(3)开发过程中,为了调用鲲鹏函数,需要反复查阅资料来确定函数信息,降低了代码开发效率。

(4)开发好的代码需要手动上传到远端编译,每次代码都需要进行手动上传编译,影响开发体验。

3. 如何利用DevKit工具快速进行原生开发

针对原生开发过程中的提到的常见问题,DevKit提供了相应的解决方案,首先DevKit开发框架工具针对用户高频开发场景提供了场景化SDK和工程样例,场景化SDK提供UI交互部署或脚本部署方式,环境部署问题一步解决;工程样例内容详尽注释丰富,帮助开发者快速上手进行定制修改;开发过程中,针对鲲鹏函数、编译选项等信息进行智能提示补全,补全信息中包含具体使用信息,减少开发者查阅资料的工作,提升编程效率。

完成代码开发后,开发者可以通过编译调试工具一键将代码上传远端编译部署,后续代码修改可自动同步到远端,非常方便。后续子章节将对上述内容进行具体讲解。

(1)场景化SDK & 工程样例

在环境配置阶段,可以使用场景化SDK快速完成环境部署,同时利用场景化工程样例,快速完成工程创建,开发者可以根据样例中的代码方便的进行定制修改。DevKit开发套件当前提供了四大开发场景的场景化SDK与工程样例,分别是通用计算场景、安全计算场景、高性能计算应用场景和DPAK场景。

开发者可以通过工具的UI交互页面快速完成上述开发场景的环境部署与工程创建。

其中通用加速场景聚合加速库(鲲鹏指令加速),硬件加速(KAE),同构加速(HAF)内容打包成SDK,支持主流操作系统下快速灵活部署;同时提供加速库应用、硬件加速应用、同构加速框架应用工程样例,快速发挥鲲鹏软硬件能力,适用于需要快速提升应用性能的应用开发。

安全计算场景聚合TEE-GP API、内核驱动、用户态API库、华为安全函数库形成完整的SDK,支持主流操作系统下快速灵活部署;同时提供机密数据保存、匿名投票、证书签发等丰富的工程样例,快速掌握鲲鹏安全计算能力,适用于需要保存机密数据/敏感信息的应用开发。

高性能计算应用场景聚合编译器,高性能通信库,数学库形成完整的SDK,支持主流操作系统下通过交互式安装脚本灵活安装,解决高性能计算应用环境部署难题;提供HMPI和KML工程样例,降低开发者使用门槛,适用于需要提升高性能计算应用场景应用性能的应用开发。

DPAK场景针对智能网卡卸载场景,将使能智能网卡(SP680)的开源组件聚合成SDK包,助力开发者快速搭建OpenStack和OVS场景,解决环境部署难题。同时提供虚拟化卸载、OVS卸载工程样例,快速体验智能网卡卸载带来的网络加速效果,适用于有智能网卡网络加速需求的应用开发。

(2)函数信息智能补全

完成工程创建后,开发者可以在工程样例上完成开发需要的定制修改,DevKit开发套件针对鲲鹏加速库函数、NEON加速函数、鲲鹏编译选项等内容进行智能联想补全,同时提供函数的具体使用信息,减少开发者查阅资料的工作,提升编程效率。

(3)工程一键上传编译

完成开发后,开发者可以使用编译调试工具创建编译任务,将代码一键上传代码到服务器进行编译。后续如果要进行代码修改可利用代码自动同步功能自动同步修改代码到远端服务器,再执行创建好的编译任务完成编译即可。

本小节介绍了DevKit在环境配置、代码开发、编译部署、鲲鹏平台运行步骤中提供的强大功能,如果大家想深入了解DevKit开发套件,欢迎大家前往社区下载使用:

https://www.hikunpeng.com/developer/devkit

接下来的章节将通过理论+实操的方式来讲解如何使用DevKit快速完成鲲鹏工程的创建、编译、运行。

通过鲲鹏开发框架工具完成工程创建、编译、运行

本小节我们将以场景化工程样例中的通用工程SHA256为例来学习如何通过鲲鹏开发框架工具完成工程的创建、编译和运行。

SHA256是SHA-2下细分出的一种算法,本质上就是一个哈希函数。SHA256是一种信息摘要的标准算法,对于任意长度消息,SHA256都会产生一个256bit长度的散列值,称为消息摘要。鲲鹏提供了针对SHA256算法的计算加速指令,提升性能。

为了体验SHA256的性能提升效果,我们需要进行以下几项工作:

(1)准备工作

a. 申请鲲鹏远程实验室资源

(2)创建SHA256 demo并编译,验证SHA256性能

a. 创建SHA256模板工程

b. 使用编译调试插件生成二进制文件

c. 验证SHA256性能

1. 准备工作

步骤一:申请鲲鹏远程实验室资源

创建鲲鹏工程编译运行的过程需要在鲲鹏平台上完成,为了方便开发者在鲲鹏环境上进行开发,我们提供了鲲鹏远程实验室资源供大家免费申请。

为了兼顾所有鲲鹏开发者的开发体验,我们在鲲鹏远程实验室中提供了云开发环境(开发态模式)和远程服务器(黑框模式)。接下来的体验过程我们会在云开发环境上进行,开发者在申请云开发环境后可以直接通过在线IDE的方式打开页面进行操作。降低了开发者在鲲鹏上的开发门槛。

首先我们访问鲲鹏社区的远程实验室页面https://www.hikunpeng.com/zh/developer/cloud-lab,申请云开发环境:

之后我们输入自己的邮箱地址,选择openEuler 20.03 LTS-SP1系统,申请成功后我们点击“打开在线IDE”按钮,进入云开发环境中,云开发环境给大家提供了在线Vscode页面,方便我们直接在鲲鹏上进行开发。

2. SHA256 demo

步骤一:创建通用计算工程

点击左侧鲲鹏DevKit工具开发页签,展开应用开发选项。

点击“创建”工程,选择“通用计算应用”。


选择“加速库”应用。


选择模板工程中的“信息摘要”,指定SHA256工程存放到本地的位置后,点击“下一步”。


这里不必配置目标节点,选择“否”后,点击“创建工程”。


等待鲲鹏加速库应用工程创建成功之后,点击“打开工程”。


即在资源管理器代码区打开SHA256_Project工程代码。可以使用DevKit工具对该工程进行编译调试和调优。


步骤二:使用编译调试工具完成快速编译

重新登录后,点击左侧鲲鹏DevKit工具开发页签,展开编译调试选项。


点击“编译”按钮,弹出“编译”配置页签。


点击“添加目标服务器”,打开“目标服务器管理”设置。


再此点击“添加目标服务器”,弹出“添加目标服务器”配置信息。


将目标服务器配置信息填写完整。


点击“确定”后,提示添加目标服务器成功。


再次点击“编译”按钮,在远程服务器配置中选择目标服务器,修改默认的编译命令后,点击“开始编译”。


等待其编译完成。


步骤三:使用编译调试工具进行远程调试

打开鲲鹏DevKit工具开发页签,编译调试选项,点击“调试”按钮,弹出“调试”配置页签。


选择“通用应用调试”,在远程服务器配置中选择目标服务器,其中应用程序填入刚编译完成的二进制文件/home/KunpengProject/workspace/SHA256_Project/src/sha256/build/sha256,应用程序参数填入用于测试的数据文件,可以为任意文件,本例以/home/devkit/libssl/libcrypto.so为例。填写完成后,点击“开始运行”。

注意:为了明显对比用C实现的sha256算法和用汇编实现的sha256算法的性能,建议测试文件大小为1M以上。


进入调试模式,使用vscode原生调试方式进行调试。


在调试过程中,可点击左边栏查看变量和调用栈等信息。


步骤四:验证SHA256性能

打开鲲鹏DevKit工具开发页签,编译调试选项,点击“运行”按钮,弹出“运行”配置页签,若已配置过“调试”配置项,工具将根据“调试”配置项直接运行程序。


选择“通用应用调试”,在远程服务器配置中选择目标服务器,其中应用程序填入刚编译完成的二进制文件/home/KunpengProject/workspace/SHA256_Project/src/sha256/build/sha256,应用程序参数填入用于测试的数据文件,可以为任意文件,本例以/home/devkit/libssl/libcrypto.so为例。填写完成后,点击“开始运行”。

注意:为了明显对比用C实现的sha256算法和用汇编实现的sha256算法的性能,建议测试文件大小为1M以上。


在终端输出中观察到结果如下:


从上图结果看出,使用汇编实现的sha256算法所用时间约为C实现的1/9,性能提升明显。

恭喜

到这里整个实验流程就已经结束了,通过上面的动作我们快速熟悉原生开发的过程和优势。各位鲲鹏开发者也可以接着探索安全计算应用、高性能计算应用、DPAK应用等其他应用功能,成为更加优秀的鲲鹏开发者。

除了上述学习内容,我们还提供了很多辅助学习资源(课程/实验/文档/文章),希望能帮助到您更好的使用鲲鹏开发框架插件:

手把手带你使用开发框架创建通用计算应用(课程):

https://www.hikunpeng.com/learn/courses-list/detail/1590236511928336385

《Gzip工程创建》项目大作业解析(课程):

https://www.hikunpeng.com/learn/courses-list/detail/1590237151154966530

鲲鹏开发框架插件-介绍(文档):

https://www.hikunpeng.com/document/detail/zh/kunpengdevps/vscode/usermanual/kunpengidevscode_10_0081.html

本页内容