执行源码迁移
前提条件
- 已成功安装鲲鹏DevKit,并已安装对应工具。
- 已安装Git并配置环境变量。
操作步骤
- 准备Megahit源码。
- 使用MobaXterm工具,以root用户登录服务器。
- 若存在源码迁移目录请忽略该步骤,否则请手动创建源码迁移目录(以devadmin上传源码迁移文件为例)。
1 2 3
mkdir -p /opt/DevKit/workspace/devadmin/porting/sourcecode/ chmod -R 700 /opt/DevKit/workspace/devadmin/porting/ chown -R devkit:devkit /opt/DevKit/workspace/devadmin/porting/
/opt:表示DevKit安装路径,请根据实际路径修改。
- 进入源码迁移目录并下载Megahit源码。
1 2
cd /opt/DevKit/workspace/devadmin/porting/sourcecode/ git clone https://github.com/voutcn/megahit.git
- 将代码进行合并。
1
cd megahit/ && git submodule update --init
- 创建构建文件夹并进入。
1
mkdir build && cd build
- 生成Makefile文件。
1
cmake .. -DCMAKE_BUILD_TYPE=Release
- 获取修改后的Megahit源码到本地,然后执行以下命令删除源码迁移目录下的Megahit源码。
1
rm -rf /opt/DevKit/workspace/devadmin/porting/sourcecode/megahit
- 返回源码迁移任务创建页面,通过文件夹方式上传Megahit源码,编译器版本选择“BiSheng Compiler 2.5.0.1”,编译命令填写“make -C build”其它参数采用默认值即可,单击“开始分析”进行扫描分析。图1 创建任务
- 分析完成后自动跳转至报告页面,进入“源码迁移建议”页签查看具体的修改建议。图2 查看报告
- 查看报告中“需要迁移的源码文件”,单击对应代码文件右侧的“查看建议源码”,查看需要迁移的文件。
其中,phmap_config.h和xxh3.h源码文件中已存在宏定义,当源码结构中存在SSE2和SSSE3时才定义头文件,该宏定义嵌套了两层,所以无需修改。
图3 查看需迁移文件 - 根据系统提示的修改建议进行修改,鼠标点击内嵌汇编代码(cpu_dispatch.h), 可以看到四处待修改点。图4 查看修改点
- 修改点一、三,应用自动修改功能。
图5 应用自动修改1
自动修改后:
图6 自动修改效果1 - 修改点二、四,应用自动修改功能。
图7 应用自动修改2
自动修改后:
图8 自动修改效果2图9 自动修改效果3可以看到自动修改已经给出了具体建议。两处修改点所给的建议准确,效果如下:
图10 修改后效果1图11 修改后效果2
- 单击“保存”,本文件修改完成。
- 修改点一、三,应用自动修改功能。
- 根据系统提示进行修改,鼠标移至构建文件(megahit/src/kmlib/kmrns.h)待修改点处,可以看到三处待修改点,一处需要修改,两处无需修改。图12 待修改点
Megahit已经对Arm做了部分适配,因此只需使用自动修改功能,不需要使用avx2ki.h头文件。
- 修改建议,同上个文件一样应用自动修改,效果如下:
图13 修改效果
- 单击“保存”,本文件修改完成。
- 修改建议,同上个文件一样应用自动修改,效果如下:
- 根据系统提示进行修改,鼠标移至构建文件(megahit_core.dir/flags.make)待修改点处,可以看到两处待修改点。图14 待修改点
- 根据建议提示Kunpeng platform不支持BMI2和POPCNT指令,手动修改代码,删除指令-mbmi2和-mpopcnt指令。
图15 手动修改
修改后效果如下:
图16 手动修改效果 - 单击“保存”,本文件修改完成。
- 根据建议提示Kunpeng platform不支持BMI2和POPCNT指令,手动修改代码,删除指令-mbmi2和-mpopcnt指令。
- 根据系统提示进行修改,鼠标移至构建文件(megahit_core_popcnt.dir/flags.make)待修改点处,可以看到一处待修改点。图17 待修改点
- 修改建议,应用自动修改,效果如下:
图18 修改效果
- 单击“保存”,本文件修改完成。
- 修改建议,应用自动修改,效果如下:
- 迁移后重新编译。
- 将KunpengTrans.h头文件添加到“/opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/src/utils”目录下。
执行如下拷贝命令:
1
cp /opt/DevKit/devkitplugins/inline_asm/config/KunpengTrans.h /opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/src/utils
- 再次执行make命令。
1
cd /opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/build && make
- 将KunpengTrans.h头文件添加到“/opt/DevKit/workspace/devadmin/porting/sourcecode/megahit/src/utils”目录下。
父主题: 实践2:Megahit源码迁移