【玩转华为云】基于鲲鹏亲和开发框架进行原生开发

举报
炒香菇的书呆子 发表于 2022/06/08 14:10:27 2022/06/08
【摘要】 鲲鹏开发框架 是一款使能用户在鲲鹏服务器上进行开发的工具。鲲鹏开发框架充分利用鲲鹏平台的各类型算力及性能更优的第三方组件,提供鲲鹏工程向导、启发式编程、代码亲和检查等能力,一键引入鲲鹏加速库、快速构建鲲鹏应用软件框架,帮助开发者更便捷地开发鲲鹏应用,使能开发者高效创新。

1. 前言

  • 鲲鹏开发框架

是一款使能用户在鲲鹏服务器上进行开发的工具。鲲鹏开发框架充分利用鲲鹏平台的各类型算力及性能更优的第三方组件,提供鲲鹏工程向导、启发式编程、代码亲和检查等能力,一键引入鲲鹏加速库、快速构建鲲鹏应用软件框架,帮助开发者更便捷地开发鲲鹏应用,使能开发者高效创新。

  • 鲲鹏原生开发

基于鲲鹏平台的新软件和新功能特性开发,应用鲲鹏DevKit工具把鲲鹏架构亲和性能充分体现的开发场景。

2. 安装插件

首先要在本地电脑安装Visual studio code。

打开VScode,点击左侧树的扩展按钮,在搜索框中搜索“kunpeng”,安装鲲鹏开发框架插件。

image-20220608130712789

3. 创建鲲鹏工程

点击左侧树的鲲鹏开发框架插件图标,点击新建鲲鹏工程按钮,进入新建鲲鹏工程界面,工程名称设置为testGzip,工程位置选择E:\博客文档\华为云\DevKit,构建类型选择cmake,其他配置信息如下图所示:

image-20220608132812749

image-20220608132929895

Glibc-patch主要对内存、字符串、锁等接口基于华为鲲鹏920处理器微架构特点进行了加速优化,memcmp/memset/memcpy/memrchr/strcpy/strlen/strnlen已合入GNU社区,随Glibc 2.31主干版本发布,同步推送openEuler社区,已随openEuler 1.0发布。

Glibc-patch加速优化策略:

  • 遵循原Glibc CPU Feature设计,将加速代码与华为鲲鹏处理器做绑定优化,确保与其他友商代码相互兼容不冲突。
  • 充分利用鲲鹏指令及鲲鹏处理器架构优势提高执行效率。

image-20220608133222883

鲲鹏工程创建成功

image-20220608133417791

4. 查看鲲鹏工程

(1)工程创建成功后,点击查看工程按钮,选择本窗口打开。

image-20220608133833610

(2)我们点开工程third-party文件夹中的gzip子文件夹,查看里面的具体内容。

image-20220608133929967

(3)我们可以看到gzip文件夹中有两个子文件夹,分别是gzip_demo和gzip-1.10.aarch64, gzip_demo中包有一个名为demo_gzip的cpp文件,该demo包含了对gzip库中压缩和解压缩功能的调用。gzip-1.10.aarch64是已经下载并解压好的gzip鲲鹏加速库,该加速库针对鲲鹏处理器的架构特点,对gzip原生库进行了加速优化。接下来我们将利用demo_gzip来对比加速库和原生库在解压2G大小文件时的解压效率。

5. 编译并执行鲲鹏工程

(1)首先,点击vscode上方的Terminal(终端)按钮,并选择New Terminal(新建终端)选项。

image-20220608134713699

登录之后,依次执行如下命令:

清除鲲鹏工程目录中src文件夹中的内容

cd src

rm -f *

执行./configure编译gzip

cd ../third-party/gzip/gzip-1.10.aarch64/
bash ./configur

执行脚本修改构建文件中的内容

cp ../../../../change_gzip_makefile.sh .
sh change_gzip_makefile.sh

执行make命令

make

将以下内容拷贝到源码lib目录下

cp libgzip.so gzip.h version.h lib/config.h ../../../lib

接着拷贝gzip_demo内容到src目录

cd ../../../src
cp ../third-party/gzip/gzip_demo/* .
cd ../build
cmake ..
make

拷贝待测试文件到src目录

cp ../../test.log.2G_1.origin.gz ../bin
cd ../bin

执行鲲鹏工程代码对压缩包进行解压

gzip -d test.log.2G_1.origin.gz
time ./demo_gzip test.log.2G_1.origin test_huawei.gz

下面使用原始gzip来对比解压性能

image-20220608135948304

下面使用原始gzip来对比解压性能

cd ../third-party/gzip
mv ../../../gzip-1.10.tar.gz .
tar -xf gzip-1.10.tar.gz
cd gzip-1.10
bash ./configure
cp ../../../../change_gzip_makefile.sh .
sh change_gzip_makefile.sh
make
cp libgzip.so ../../../lib

此处输入y同意覆盖

cd ../../../src
rm -f *
cp ../third-party/gzip/gzip_demo/* .
cd ../build
cmake ..
make
cd ../bin
time ./demo_gzip test.log.2G_1.origin test.gz

此时从终端中的结果中可以看出,gzip原始库针对2G大小的压缩文件的解压时间为34.8秒,加速库相比于原生库有20%的性能提升。

img

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。