0
点赞
收藏
分享

微信扫一扫

【鲲鹏应用迁移】实验:通过鲲鹏开发套件实现源码迁移

田妞的读书笔记 2022-03-18 阅读 44

实验:通过鲲鹏开发套件实现源码迁移

一、实验目的

1.基于华为云弹性云服务器实现从x86平台到kunpeng平台的源码迁移
2.掌握鲲鹏代码迁移工具中源码迁移功能的操作流程
3.完成Megahit项目代码的调优实践

二、实验内容

1.安装工具

1.1登录弹性云服务器ECS

LANG=en_us.UTF-8 ssh root@EIP(将EIP改为你的公网IP)

在这里插入图片描述

1.2准备工具源码包
·在Terminal窗口中执行以下命令下载源码包:

Wget https://mirror.iscas.ac.cn/kunpeng/archive/Porting_Dependency/Packages/Porting-advisor_2.3.0_linux-Kunpeng.tar.gz

在这里插入图片描述
·执行以下命令解压源码包:

tar -zxvf Porting-advisor_2.3.0_linux-Kunpeng.tar.gz

在这里插入图片描述
1.3安装porting工具
·执行以下命令进入已解压源码包目录:

cd Porting-advisor_2.3.0_linux-Kunpeng

·执行以下命令安装porting工具:

./install web

·安装成功如下图所示:
在这里插入图片描述
1.4安装工具cmake
·执行以下命令下载cmake工具:

cd ~ && wget https://sandbox-experiment-resource-east-1.obs.cn-east-3.myhuaweicloud.com/code-migration-cn-east-3/cmake-3.3.2.tar.gz

·下载成功如下图所示:
在这里插入图片描述
·执行以下命令解压cmake安装包:

tar -xzvf cmake-3.3.2.tar.gz

·执行以下命令编译cmake:

cd cmake-3.3.2 && ./configure

·编译成功如下图所示:
在这里插入图片描述
·依次执行以下命令安装cmak工具:

gmake
make install

·安装成功如下图所示:
在这里插入图片描述

2.配置VS Code环境

2.1配置远端服务器连接
·点击打开“Visual Studio Code”,打开后点击鲲鹏Porting工具图标,
点击“Configure Server”配置远端服务器连接,如下图所示:
在这里插入图片描述
(1) “Ip Address”:填写1.1步骤查看到的公网IP;
(2) “HTTPS Port”:默认(8084);

说明:云服务器的弹性公网IP地址,可以通过鼠标移动到云桌面浏览器页面中左侧菜单栏,
点击“服务列表”->“计算”->“弹性云服务器ECS”进入服务器列表,进行查看并复制;

(3)“Service Certificate Settings”,可选择“Trust the current service certificate”。填写完成点击“Save”,保存成功后如下图所示:
在这里插入图片描述

注:若点击Save后,出现如下提示:
在这里插入图片描述

则需要手动修改VSCode的代理服务器,点击settings->Application->proxy
在这里插入图片描述

“Proxy Strict SSL”选项不勾选,“Proxy Support”设置项,下拉框内选择“off”,然后再配置服务器页面重新点击保存即可,如下图所示:
在这里插入图片描述

2.2点击“Log In”,创建用户“portadmin”,密码自定义,如vcIL6Koun4LstG7o,如下图所示:
在这里插入图片描述

设置完成点击“OK”完成远端服务器连接配置。

3.源码准备

·Terminal窗口执行以下命令进入鲲鹏代码迁移工具源码文件存放路径:

cd /opt/portadv/portadmin/sourcecode/

·执行以下命令下载Megahit源码:

git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/experiment00001/megahit.git

·下载成功如下图所示:
在这里插入图片描述
·执行以下命令将代码进行合并:

cd megahit && git submodule update --init

·执行以下命令创建构建文件夹并进入:

mkdir build && cd build

·执行以下命令生成Makefile文件:

cmake .. -DCMAKE_BUILD_TYPE=Release

·执行成功如下图所示:
在这里插入图片描述
·执行以下命令修改megahit目录群组:

cd ../ && chown -R porting:porting /opt/portadv/portadmin/sourcecode/* && ll ./

(说明:porting工具的待扫描的源码目录群组必须为porting才能扫描。)
在这里插入图片描述

4.源码迁移

4.1代码扫描工具扫描源码并迁移
·在打开的“Visual Studio Code”中,点击“Log In”输入账号“portadmin”密码(2.2步骤创建的连接密码)如:vcIL6Koun4LstG7o,
进行连接工具登录,如下图所示:
在这里插入图片描述
·登录成功,选择“Source Code Porting”,手动输入选择“megahit/build”源码包路径 ,其他参数默认,如下图所示:
(说明:若登录成功时有弹窗点击“OK”即可)
在这里插入图片描述
·点击“Analyze”分析成功如下图所示:
在这里插入图片描述
分析完成后,点击文件列表, 查看文件中需要迁移的文件,点击“View Suggestion Code”查看具体文件的迁移建议。
·修改文件“megahit_core_popcnt.dir/flags.make”,鼠标拖动到待修改处(向右拖动到当前代码末尾即可看到), 可以看到一处待修改点,如下图所示:
在这里插入图片描述
·删除提示修改代码,修改完成“Ctrl+s”保存该文件,如下图所示:
在这里插入图片描述
·修改文件“megahit_core.dir/flags.make”,鼠标悬停到代码上, 可以看到修改建议,如下图所示:
在这里插入图片描述
·根据建议提示Kunpeng platform 不支持BMI2和POPCNT指令,手工修改代码,删除指令“-mbmi2”和“-mpopcnt”指令(向右拖动到当前代码末尾即可看到),修改完成“Ctrl+s”保存该文件如下图所示:
在这里插入图片描述
·修改文件“cpu_dispatch.h”,光标悬停到代码上, 可以看到修改建议,如下图所示:
在这里插入图片描述
·分别在每部分需要修改的代码,鼠标悬停后出现“Quick Fix…”,选择“Replace the code with the suggested code”点击进行快速修改,如下图所示:说明:“Quick Fix…”未出现时鼠标滚轮向下滑动即可看到。
在这里插入图片描述
·修改完成去掉修改代码注释,“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/

4.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

编译通过如下图所示:
在这里插入图片描述
编译完成执行以下命令进行验证:

make simple_test

(说明:Make simple_test里用到的.fa文件是github上下载软件包的时候就自带了无需额外下载。)
·运行成功如下图所示:
在这里插入图片描述
至此源码成功迁移。

举报

相关推荐

0 条评论