基于鲲鹏亲和开发框架进行原生开发;创建通用计算功能。
1、 在鲲鹏社区申请远程实验室;操作系统选择OpenEuler。
点击链接;鲲鹏社区-官网丨凝心聚力 共创行业新价值;打开对应网页;找到“申请远程实验室”。
选择远程服务器;点击立即申请;填写邮箱地址;选择操作系统“OpenEuler 20.03 LTS-SP2”;申请使用额度可以选择1天、3天、7天。勾选“已阅读并同意《隐私政策声明》;已阅读并同意《设备借用协议》”;点击提交申请后;可以在邮箱收到资源链接。
邮件提供了账号等信息;注意要按照邮件指导;在 VPN 端登录;之后才能使用远程实验室。邮件的附件含有VPN的配置文件;安装好VPN软件;通过导入配置文件;实现VPN正常登录。
三、 准备工作
1、 服务器和操作系统正常运行。
验证可以正常访问远程实验室;本项准备工作结束。
2、 VSCode安装编译调试插件。
打开VS Code;左上角找到扩展;在输入框中填入“kunpeng”;看到如下界面;
选择安装鲲鹏Devkit入口插件。
选择安装鲲鹏开发框架插件。
选择安装鲲鹏编译调试插件。
之后;在扩展功能输入框内再输入“c;;”;安装c/c;;插件。
至此;准备工作阶段的任务完成。
四、 创建通用计算工程。
1、工程创建。
首先进入VSCode左下角的设置界面;搜索proxy找到如下界面;在代理支持选项选择“fallback”。
选择鲲鹏开发框架插件;新建鲲鹏工程;通用计算应用。
工程名称设置为testGzip;工程位置选择home;点击”Next”按钮进入加速库选择页面。
勾选”Gzip”加速库;点击“Create Project”按钮创建工程。
点击“Cancel”按钮;不部署加速库。
点击“Yes”同意下载加速库。
2、查看鲲鹏工程。
创建成功后;点击“View Project”按钮查看工程。
点击“This Window”按钮;本窗口打开工程。
之后点开工程third-party文件夹中的gzip子文件夹;查看里面的具体内容。
我们可以看到gzip文件夹中有两个子文件夹;分别是gzip_demo和gzip-1.10.aarch64; gzip_demo中包有一个名为demo_gzip的cpp文件;该demo包含了对gzip库中压缩和解压缩功能的调用。gzip-1.10.aarch64是已经下载并解压好的gzip鲲鹏加速库;该加速库针对鲲鹏处理器的架构特点;对gzip原生库进行了加速优化。接下来我们将利用demo_gzip来对比加速库和原生库在解压2G大小文件时的解压效率。
3、编译并执行鲲鹏工程。
;1;首先;点击vscode上方的Terminal按钮;并选择New Terminal选项。
选择鲲鹏编译调试插件;进行编译调试。
添加目标服务器相关参数如下;
其中密钥的生成命令如下;
代码;ssh-keygen -b 3072 -t rsa -f D: mp
点击开始配置。
选择确认。
选择跳过引导。
最上方选择远程服务器。
选择同步并编译。
;2;登录之后;依次执行如下命令;
用SSH工具MobaXterm登录远程服务器。
根据README.md的提示内容进行相关操作。
cd到testGzip文件夹下
代码;cd /home/project/testGzip
清除鲲鹏工程目录中src文件夹中的内容
代码;cd src
代码;rm -f *
执行./configure编译gzip
代码;cd /home/project/testGzip/third-party/gzip/
gzip-1.10.aarch64/
代码;bash ./configure
执行脚本修改构建文件中的内容.
代码;cp /home/project/testGzip/third-party/gzip/
gzip_demo/change_gzip_makefile.sh .
代码;sh change_gzip_makefile.sh
添加执行权限后执行make命令
代码;chmod ;x build-aux/*
代码;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 ../src
代码;make
拷贝待测试文件到src目录
代码;cp ../../gzip_test/test.log.2G_1.origin.gz ../bin
代码;cd ../bin
执行鲲鹏工程代码对压缩包进行解压
代码;gzip -d test.log.2G_1.origin.gz
代码;time ../build/demo_gzip test.log.2G_1.origin test_huawei.gz
下面使用原始gzip来对比解压性能
代码;cd ../third-party/gzip
代码;mv ../../../gzip_test/gzip-1.10.tar.gz .
代码;tar -xf gzip-1.10.tar.gz
代码;cd gzip-1.10
代码;bash ./configure
代码;cp ../../../../gzip_test/change_gzip_makefile.sh .
代码;sh change_gzip_makefile.sh
代码;chmod ;x build-aux/*
代码;make
代码;cp libgzip.so ../../../lib
此处输入y同意覆盖
代码;cd ../../../src
代码;rm -rf *
代码;cp ../third-party/gzip/gzip_demo/* .
代码;cd ../build
代码;rm -rf *
代码;cmake ../src
代码;make
代码;cd ../bin
代码;time ../build/demo_gzip test.log.2G_1.origin test_huawei.gz
这里通过对比可以清楚看出通过鲲鹏加速库进行压缩时间由原来的37s减少到了20s左右