鲲鹏Devkit代码迁移工具课堂笔记—第二讲:手把手带你使用代码迁移工具实现源码迁移【玩转华为云】

举报
炒香菇的书呆子 发表于 2022/11/30 20:52:23 2022/11/30
【摘要】 学习完本课程后,能够对跨平台软件迁移有一定的了解,同时掌握代码迁移工具的使用,能够熟练使用迁移工具执行迁移任务。 1. 源码迁移介绍在国产替代的大背景下,鲲鹏计算平台是一个非常有潜力的产业。为了解决开发者在x86平台应用向鲲鹏平台移植的过程中遇到的一系列的痛点问题,华为推出了鲲鹏代码迁移工具(Porting Advisor),帮助开发者加速将x86环境下的应用迁移至鲲鹏平台。本文根据华为鲲鹏...

学习完本课程后,能够对跨平台软件迁移有一定的了解,同时掌握代码迁移工具的使用,能够熟练使用迁移工具执行迁移任务。

1. 源码迁移介绍

在国产替代的大背景下,鲲鹏计算平台是一个非常有潜力的产业。为了解决开发者在x86平台应用向鲲鹏平台移植的过程中遇到的一系列的痛点问题,华为推出了鲲鹏代码迁移工具(Porting Advisor),帮助开发者加速将x86环境下的应用迁移至鲲鹏平台。本文根据华为鲲鹏计算工具链项目组的工具化软件迁移经验,总结了鲲鹏代码迁移工具的实际使用经验,期望能帮助开发者了解如何使用该工具,提高开发者的软件迁移效率。

1.1 源码迁移介绍

在国产替代的大背景下,鲲鹏计算平台是一个非常有潜力的产业。为了解决开发者在x86平台应用向鲲鹏平台移植的过程中遇到的一系列的痛点问题,华为推出了鲲鹏代码迁移工具(Porting Advisor)
帮助开发者加速将x86环境下的
用迁移至鲲鹏平台。本文根据华为鲲鹏计算工具链项目组的工具化软件迁移经验,总结了鲲鹏代码迁移工具的实际使F经验,期望能帮助开发者了解如何使用该工具,提高开发者的软件迁移效率。

1.2 工具支持的工具特性

image-20220609190637877

1.3 源码迁移介绍

当用户能够提供源代码进行迁移分析时,可以使用源码迁移功能完成迁移工作源码迁移功能主要解决了用户的代码兼容性人工排查困难、严重依赖迁移的个人经验、需要反复依赖编译调错定位导致执行效率低等痛点。按照源代码到二进制文件的翻译方式的不同,代码迁移工具将编程语言分为两类:一类是编译型,—类是解释型。

支持源码类型

image-20220609191229870

1.4 迁移流程

image-20220609191459019

2. 实战项目一

2.1 前提条件

1.服务器和操作系统正常运行。
2.Pc端已经安装sSH远程登录工具。
3.Porting Advisor已在准备好的x86平台环境和鲲鹏平台环境中完成安装并正常运行。4待迁移的相关软件包、源代码已准备就绪。

2.2 迁移计划

1.利用Porting Advisor的源码迁移功能对获取到的smartdenovo源代码进行扫描,获取其$o库依赖关系、可迁移性、迁移工作量等分析结果。
2根据Porting Advisor的源码迁移功能分析得到的smartdenovo依赖关系去准备对应的sO库。
3.检查smartdenovo源代码的源代码分析报告,获取编译构建文件、.h/.c等源代码文件的修改建议,并根据修改建议进行修改。
4.用修改后的源代码进行编译,生成鲲鹏版本的smartdenovo软件。5.使用鲲鹏版本的smartdenovo软件进行部署和简单的验证。

image-20220609191853587

2.3 开源软件smartdenovo-master迁移实战

步骤1从https://github.com/ruanjue/smartdenovo下载获取待使用的软件源码包smartdenovo-
master.zip.
步骤2︰进入Porting Advisor“源码迁移”菜单进行扫描分析。在随后出现的相关配置项和按钮中,单如图1所行击“上传”,上传前面下载到的smartdenovo-master.zip,并点中输入框,选择源码包为"smartdenovo-master”。其它几个选项根据我们实际的情况进行选择

image-20220609191902848

在“源码迁移建议”页面,查看Makefile文件的修改建议,如图1迁移建议所示
根据以上建议,Makefile文件中需要给CFLAGS变量增加选项内谷marcn=avo-a -iightea , i要删除CFLAGS变量中的选项“-mpopcnt”和“-msse3"。修改后的代码(修改时进行了x86_64分支和aarch64分支的区分处理),如图2修改后的makefile所示。

image-20220609192636707

在“源码迁移建议”页面,查看ksw.c文件的修改建议,如图1迁移建议所示
这种提示都是关于intrinsic函数使用方面的内容。根据提供的建议,需要增加‘#include 'avx2neon.h”到ksw.c中以包含avx2neon.h,并针对x86和aarch64分别设置头文件包含的分支定义,以确保在代码同时适配x86和arch64两种架构的情况下完成代码的修改,如图2代码修改所示。同时,需要下载avx2neon相关的头文件到ksw.c所在目录中.工由于avx2neon开源项目存在一部分定向开源函数,当这些开源函数在代码中出现时,会出现如图1建议源代码所示的建议。此时,用户需要访问github网站通过README.md来了解如何获取这些定向开源函数的代码文件。在获取这部分代码头文件后,将其放置到avx2neon.h所在目录内。image-20220609193352636

在完成对Makefilb和ksw.c的修改后,可以将修改过的整份源代码下载到鲲鹏环如图1列出文件信息和图2境中,执行make clean && make命令,完成编译动作,make命令所示图中的smartdenovo-master是我们需要下载的源代码文件。

image-20220609193411691

步骤2︰将smartdenovo-master下载到本地之后,清理掉本地目录smartdenovo-master中工具生成
的中间文件Makefile.20210104220958.bak.0、ksw.c.20210104220958.bak.0。
步骤3将本地目录smartdenovo-master上传到鲲鹏服务器上,执行编译安装动作。步骤4Make成功后,可以执行make install命令执行安装,并检查安装结果如图3所示

image-20220609193500069

3. 实战项目二

image-20220609193532804

从扫描报告中提供的依赖库信息看,该源码包不依赖于基本环境(OS环境基本的安装依赖,如GLIBC等)外的其它依赖文件。

image-20220609194106995

image-20220609194118706

image-20220609194521148

4. 总结

本次软件迁移实战中,通过对软件迁移过程的完整模拟,覆盖了用户利用代码迁移工具对迁移过程进行前期分析、中期修改和后期编译、重构、验证的过程。在其它软件的迁移中,可以参考本实践的思路和操作过程进行操作。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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