暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

代码迁移

原创 Zixin Haw 2023-03-13
1083

安装插件

在实验操作页面,点击打开“Visual Studio Code”,点击左侧树的扩展按钮,在搜索框中搜索“kunpeng”,然后点击”Kunpeng Porting Advisor Plugin”插件的“Install”安装鲲鹏代码迁移工具插件。

配置Visual Studio Code

1. 连接远端服务器

点击“Visual Studio Code”中的鲲鹏Porting工具图标,点击“Configure Remote Server”,完成后点击“Configure”配置远端服务器连接,如下图所示:

(1)“Ip Address”:输入安装“鲲鹏代码迁移”工具的远端服务器的IP;

(2)“HTTPS Port”:默认(8084)

(3)“Service Certificate Settings”,可选择“Trust the current service certificate”,填写完成点击“Save”,保存成功后如下图所示:

注意:若点击Save后,出现如下图提示,则需要手动修改VSCode的代理服务器,点击settings->Application->Proxy。

“Proxy Support”设置项,下拉框内选择“off”,然后再在配置服务器页面,选择“Trust the current service certificate”,重新点击保存即可,如下图所示:

2. 首次登录鲲鹏代码迁移工具

点击“Log In”,创建用户“portadmin”,设置登录密码,密码可自定义,如Huawei@123#,如下图所示:

源码迁移

说明:下载的待扫描源码包是能在x86平台上能正常编译的,通过“鲲鹏代码迁移工具”扫描后,识别出在鲲鹏平台上需要适配修改的代码,通过修改,达到能在鲲鹏平台上正常编译和使用的目的,从而实现源码迁移。

1. 准备Megahit源码

(1)打开Terminal窗口

(2)进入“鲲鹏代码迁移工具”源码文件存放路径

cd /opt/portadv/portadmin/sourcecode/

(3)下载Megahit源码

git clone https://github.com/voutcn/megahit.git

(4)将代码进行合并

cd megahit/ && git submodule update --init

(5)创建构建文件夹并进入

mkdir build && cd build

(6)生成Makefile文件

cmake .. -DCMAKE_BUILD_TYPE=Release

(7)修改megahit目录属组

cd ../ && chown -R porting:porting *

说明:porting工具的待扫描的源码目录群组必须为porting才能扫描

2. 源码迁移工具扫描源码并迁移

(1)打开“Visual Studio Code”,登录“鲲鹏代码迁移工具”。

(2)选择“Source Code Porting”,点击“+”号,在输入框中手动输入“megahit/build”然后点击选择源码包路径 ,其他参数默认,如下图所示:

(3)点击“Analyze”,分析成功后,源码报告如下图所示:

在需要迁移的文件后,点击“View Suggestion Code”可查看具体文件的迁移建议。

(4)修改文件“megahit_core.dir/flags.make”,鼠标移动至待修改点, 可以看到两条修改建议,如下图所示

根据建议提示Kunpeng platform不支持bmi2和popcnt指令,手动修改代码,删除指令“-mbmi2”和“-mpopcnt”指令。

修改完成后,“Ctrl+s”保存该文件,修改后如下图所示:

(5)修改文件“megahit_core_popcnt.dir/flags.make”,鼠标移至文件待修改处, 可以看到有一处待修改点,如下图所示:

根据建议提示Kunpeng Platform不支持POPCNT指令,点击“Quick Fix…”进行快速修改,或者手动修改代码,删除指令“-mpopcnt”指令。

修改完成后,“Ctrl+s”保存该文件,修改后如下图所示:

(6)修改文件“cpu_dispatch.h”,光标悬停到代码上, 可以看到修改建议,根据提示可看到有四处待修改点,如下图所示:

分别在每部分需要修改的代码,鼠标悬停后出现“Quick Fix…”,选择“Replace the code with the suggested code”点击进行快速修改

  1. 修改点1、3,应用自动修改功能,自动修改后,如下图所示:

b、修改点2、4,应用自动修改功能

自动修改后如下:

可以看到自动修改已经给出了具体建议。两处修改点所给的建议准确,直接去掉注释,效果如下:

(7)在打开的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/

迁移后重新编译

1. 执行make命令

cd /opt/portadv/portadmin/sourcecode/megahit/build/ && make

报错如下图所示:

2. 修改“/opt/portadv/portadmin/sourcecode/megahitkmlib/kmrns.h”文件

说明:“kmrns.h”为x86平台的系统头文件,在arm平台上没有此系统头文件。

执行vi命令进入文本,注释11行代码:

vi /opt/portadv/portadmin/sourcecode/megahit/src/kmlib/kmrns.h

#include <x86intrin.h> 改为//#include <x86intrin.h>

说明:vi 进入文本后,按”i”进入编辑模式;方向键控制光标位置;

编辑完成后,按”esc”退出编辑模式,之后按”:wq”+”enter”完成写入保存并退出(注意需要先输入英文冒号,再输入wq)

注释后代码如下:

3. 再次执行make命令:

Make

【约等待6分钟】编译通过如下图所示:

运行和验证

1. 打开桌面的Terminal窗口

2. 进入可执行文件的安装目录

cd /opt/portadv/portadmin/sourcecode/megahit/build/

3. 执行以下命令运行算例

make simple_test

说明:Make simple_test里用到的.fa文件是github上下载软件包的时候就自带了无需额外下载。

运行完成后命令行将回显以下信息:

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论