基于华为鲲鹏云服务器迁移和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工具
执行以下命令进入已解压源码包目录:
cdPorting-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
makeinstall


安装成功如下图所示:


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”分析成功如下图所示:


分析完成后,点击文件列表,查看文件中需要迁移的文件,点击“View
SuggestionCode”查看具体文件的迁移建议。修改文件
“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上下载软件包的
时候就自带了无需额外下载。)
运行成功如下图所示:


至此源码成功迁移。

6个人总结
华为云鲲鹏云服务器以其强大的计算能力和稳定的运行环境,吸
引了众多企业和开发者。在迁移过程中,我深刻体会到了以下几点:
迁移前,详细了解鲲鹏云服务器的架构、性能以及兼容性是非常重要
的。这包括了解服务器的CPU、内存、存储等硬件配置,以及操作系
统、数据库、中间件等软件环境的兼容性。迁移过程中,数据的安全
性和完整性是首要考虑的因素。因此,我在迁移前对原有服务器上的
数据进行了全面备份,并在迁移后进行了数据恢复和验证,确保数据
的完整性和一致性。针对鲲鹏云服务器的特性,我对原有的应用进行
了适配和优化。这包括调整应用的配置参数、优化代码逻辑、提高并
发处理能力等,以充分利用鲲鹏云服务器的性能优势。Megahit是一
个高性能的宏基因组组装工具,我在使用过程中对其代码进行了调优,
以提高其组装效率和准确性。Megahit的组装过程涉及大量的计算任
务,因此我对其进行了并行化处理。通过利用多核CPU和分布式计算
资源,我成功提高了Megahit的组装效率,缩短了组装时间。在调优
过程中,我注重了错误处理和日志记录的重要性。通过完善错误处理
机制、增加日志记录功能,我提高了Megahit的稳定性和可维护性,
方便后续的调试和优化工作。通过华为云鲲鹏云服务器的迁移和
Megahit项目代码的调优实践,我深刻体会到了技术迁移和代码优化
的重要性。在未来的工作中,我将继续关注新技术的发展和应用,不
断提升自己的技术能力和实践经验。同时,我也希望能够与更多的同
行交流学习,共同推动技术的发展和应用创新。
7参考文献
《鲲鹏开发套件最佳实践》
《迁移设计与实施》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值