基于华为鲲鹏云服务器迁移和Megahit项目代码的调优实践

题目:基于华为鲲鹏云服务器迁移和Megahit项目代码的调优实践
1鲲鹏应用需求分析
通过鲲鹏开发套件可实现对海量代码进行快速扫描和分析,并提供专业的代码移植指导,以及移植后全面的系统性能分析与可视化呈现,从而极大提升软件开发者移植与调优效率。既可以使用该工具分析可迁移性和迁移投入,也可以使用该工具自动分析出需修改的代码内容,并指导我们如何修改。对于PortingAdvisor(代码迁移工具)既解决了我们软件迁移评估分析过程中人工分析投入大、准确率低、整体效率低下的痛点,通过该工具能够自动分析并输出指导报告;也解决了代码兼容性人工排查困难、迁移经验欠缺、反复依赖编译调错定位等痛点。所以我们通过利用鲲鹏开发套件中的工具来进行鲲鹏代码迁移和完成Megahit项目代码的调优实践。
2安装工具
2.1登录弹性云服务器ECS
LANG=en_us.UTF-8sshroot@EIP(将EIP改为你的公网IP)


2.2准备工具源码包
在Terminal窗口中执行以下命令下载源码包:
Wgethttps://mirror.iscas.ac.cn/kunpeng/archive/Porting_Dependency/Packages/Porting-advisor_2.3.0_linux-Kunpeng.tar.gz


用PortingAdvisor(代码迁移工具)实现python包源码迁移。通过鲲鹏开发套件可实现对海量代码进行快速扫描和分析并提供专业的代码移植指导,以及移植后全面的系统性能分析与可视化呈现,从而极大提升软件开发者移植与调优效率。执行以下命令解压源码包:
tar-zxvfPorting-advisor_2.3.0_linux-Kunpeng.tar.gz


2.3安装porting工具
执行以下命令进入已解压源码包目录:cd Porting-advisor_2.3.0_linux-Kunpeng


执行以下命令安装porting工具:./installweb


安装成功如下图所示:


2.4安装工具cmake
执行以下命令下载cmake工具:cd~&&wget https://cmake.org/files/v3.3/cmake-3.3.2.tar.gz
下载成功如下图所示:


执行以下命令解压cmake安装包:tar-xzvfcmake-3.3.2.tar.gz


执行以下命令编译cmake


编译成功如下图所示:


依次执行以下命令安装cmake工具:
gmake

make install


安装成功如下图所示:


3配置VSCode环境

3.1配置远端服务器连接
点击打开“VisualStudioCode”,打开点击鲲鹏Porting工具图标,点击“ConfigureServer”配置远端服务器连接,如下图所示:


(1)“IpAddress”:填写1.1步骤查看到的公网IP;(2)“HTTPS Port”:默认(8086);说明:云服务器的弹性公网IP地址,可以通过鼠标移动到云桌面浏览器页面中左侧菜单栏,点击“服务列表”
->“计算”->“弹性云服务器ECS”进入服务器列表,进行查看并复制;1.说明:云服务器的弹性公网IP地址,可以通过鼠标移动到云桌面浏览器页面中左侧菜单栏2.点击“服务列表”->“计算”->“弹性云服务器ECS”进入服务器列表,进行查看并复制;(3)“Service CertificateSettings”,可选择“Trustthecurrentservicecertificate”。填写完成点击“Save”,保存成功后如下图所示:


则需要手动修改VSCode的代理服务器,点击 settings->Application->proxy:“ProxyStrictSSL”选项不勾选,“Proxy Support”设置项,下拉框内选择“off”,然后再配置服务器页面重新点击保存即可,如下图所示:


3.2注册并登录
点击“LogIn”,创建用户“devadmin”,密码自定义,如vcIL6Koun4LstG7o,如下图所示:设置完成点击“OK”完成远端服务器连接配置。
4源码准备
Terminal窗口执行以下命令进入鲲鹏代码迁移工具源码文件存放路径:cd/opt/portadv/portadmin/sourcecode/执行以下命令下载Megahit源码:Gitclone
https://codehub.devcloud.cn-north-4.huaweicloud.com/experiment00001/megahit.git,下载成功如下图所示:


执行以下命令将代码进行合并:cdmegahit&&gitsubmoduleupdate--init,执行以下命令创建构建文件夹并进入:mkdirbuild&&cdbuild,执行以下命令生成Makefile文件:cmake..
-DCMAKE_BUILD_TYPE=Release,执行成功如下图所示:


执行以下命令修改megahit目录群组:cd../&&chown-R
porting:porting/opt/portadv/portadmin/sourcecode/*&&ll./


5源码迁移
5.1代码扫描工具扫描源码并迁移
在打开的“VisualStudioCode”中,点击“LogIn”输入账号“devadmin”密码(2.2步骤创建的连接密码),进行连接工具登录,如下图所示:登录成功,选择“SourceCodePorting”,手动输入选择“megahit/build”源码包路径,其他参数默认,如下图所示:(说明:若登录成功时有弹窗点击“OK”即


点击“Analyze”分析成功如下图所示:


分析完成后,点击文件列表,查看文件中需要迁移的文件,点击“ViewSuggestionCode”查看具体文件的迁移建议。修改文件“megahit_core_popcnt.dir/flags.make”,鼠标拖动到待修改处(向右
拖动到当前代码末尾即可看到),可以看到一处待修改点,如下图所示:


删除提示修改代码,修改完成“Ctrl+s”保存该文件,如下图所示:


根据建议提示Kunpengplatform不支持BMI2和POPCNT指令,手工修改代码,删除指令“-mbmi2”和“-mpopcnt”指令(向右拖动到当前代码末尾即可看到),修改完成“Ctrl+s”保存该文件如下图示:


修改文件“cpu_dispatch.h”,光标悬停到代码上,可以看到修改建议,所示:


分别在每部分需要修改的代码,鼠标悬停后出现“QuickFix…”,选择“Replacethecodewiththesuggestedcode”点击进行快速修改,如下图所示:说明:“QuickFix…”未出现时鼠标滚轮向下滑动即可看到:


修改完成去掉修改代码注释,“Ctrl+s”保存该文件,最终如下图所示:


Terminal窗口执行以下命令将“KunpengTrans.h”头文件添加到目录下到/opt/portadv/portadmin/sourcecode/megahit/src/utils:cp/opt/portadv/tools/inline_asm/config/KunpengTrans.h/opt/portadv/portadmin/sourcecode/megahit/src/utils/
5.2重新编译并验证
在Terminal窗口执行make命令:cd/opt/portadv/portadmin/sourcecode/megahit/build&&make
报错如下图所示:


“/opt/portadv/portadmin/sourcecode/megahitkmlib/kmrns.h”:vim/opt/portadv/portadmin/sourcecode/megahit/src/kmlib/kmrns.h,“<x86intrin.h>”为x86平台的系统头文件,在arm平台上没有此系统头文件。点击键盘“i”命令进入文本输入模式,注释如下图所示代码:(说明:“#include<x86intrin.h>”改为“//#include<x86intrin.h>”。)


修改完成,点击键盘“ESC”退出输入模式,输入以下命令后回车保存::wq再次执行make命令:make,编译通过如下图所示:


编译完成执行以下命令进行验证:makesimple_test(说明:Makesimple_test里用到的.fa文件是github上下载软件包的时候就自带了无需额外下载。)运行成功如下图所示:


至此源码成功迁移。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值