【摘要】基于华为云弹性云服务器 ESC(鲲鹏服务器),部署鲲鹏代码迁徙工具利用扫描迁徙工具进行源码剖析,依据扫描倡议批改源码,让源码在鲲鹏平台能够失常编译运行
零、前情提要先来说句题外话,最近华为鲲鹏 DevKit 训练营开始了,有趣味的同学能够试一试!
更多详情可参考鲲鹏开发者社区。一、指标基于华为云弹性云服务器 ECS,自行部署鲲鹏代码迁徙工具,实现鲲鹏代码迁徙工具实际——进行 Megahit 源码迁徙。利用扫描迁徙工具进行源码剖析,依据扫描倡议批改源码,让源码在鲲鹏平台能够失常编译运行。华为云弹性云服务器 ECS 配置:
二、操作前提 1. 认真观看迁徙工具的实战视频可到鲲鹏开发者社区查看,还有很多具体的文档资料啊。2.(可选)申请近程实验室因为 ECS 须要购买,如果不不便购买,能够到在鲲鹏社区申请收费的近程实验室,操作系统抉择 OpenEuler。不得不说,近程实验室的配置还是很弱小的啊。
申请之后,会收到一封邮件,邮件提供了账号等信息,留神要依照邮件领导,在 VPN 端登录,之后能力应用近程实验室。留神,请卸载除官网提供的 VPN 软件外的其余 VPN 软件,否则可能即便 VPN 登录胜利,也无法访问,切记!!!这是血泪教训。上面操作对 ECS 和近程实验室的操作都做了介绍,无论抉择哪种形式,都能够的!三、筹备工作如果你应用的是近程实验室,依照官网介绍,是关上工具的 web 网页,并进行登录。该 web 界面的 IP 地址,账号以及明码等信息在邮件中有具体阐明哦。留神如果提醒危险,要抉择持续哦。
登录后的界面为:
好了,就是先看看哈,验证下能够失常拜访近程实验室,前面会用到,这里咱们先来做筹备工作,用 MobaXterm 登录刚购买的 ECS 啊。上面筹备 Megahit 源码。这里简略介绍下哈,Megahit 是一个超疾速和内存高效的 NGS 汇编程序。它是针对多基因组优化的,但也实用于个别的单基因组组装和单细胞组装。须要留神的是 Megahit 源码包存在大量汇编,前面咱们会留神到迁徙到鲲鹏平台前须要辨认并验证通过“鲲鹏代码迁徙工具”迁徙后的代码是否正确,以及辨认出是否还有“鲲鹏代码迁徙工具”脱漏的相干文件。1. 应用 MobaXterm 工具,以 root 用户登录服务器。就是 ssh 登录,惯例操作了,如果看到相似如下界面,阐明登录胜利:
- 进入“鲲鹏代码迁徙工具”源码文件寄存门路。cd /opt/portadv/portadmin/sourcecode/
- 下载 Megahit 源码。git clone https://github.com/voutcn/meg…
- 将代码进行合并。留神如下代码不对,正确代码请见这小项最初。cd megahit/ && git submodule update -init
这里留神不要间接复制教程中所给的代码,因为教程中的 -init 中的 - 符号有问题,会报错如下:或者
其实 -init 中的 - 符号应该是英文下的才对,也能够看到批改后 -init 变为了蓝色,MobaXterm 就是强。
但看提醒如同还是不太对啊,认真看会发现打印信息给了提醒,应该是 –init。
cd megahit/ && git submodule update –init
应该是正确运行了,后果如图,没什么打印信息: - 创立构建文件夹并进入。mkdir build && cd build
- 生成 Makefile 文件。cmake .. -DCMAKE_BUILD_TYPE=Release
留神,这里运行可能报错,如下:这可能是没有设置 cmake 门路或者没装置 camke,咱们应用如下命令,来看看:cmake –version
那来装置一下吧,不论有没有了,马上口头起来。这里我装置的是 cmake 3.15,不是最新版哈,上面来介绍下装置,来嘞。获取源码,并解压 wget https://down.24kplus.com/linu…
tar -zxf cmake-3.15.3.tar.gz
cd cmake-3.15.3
编译装置./bootstrap –prefix=/usr –datadir=share/cmake –docdir=doc/cmake
运行中的截图(这个过程有点长,大家能够先劳动一下哈):
运行实现截图:
接下来执行命令:make
运行实现截图:
那么接下来执行命令:sudo make install
上面查看是否正确装置,执行如下命令:cmake –version
如果看到如下界面,示意胜利了:
好了,接下来能够执行之前的命令了:cmake .. -DCMAKE_BUILD_TYPE=Release
失去运行后果:
- 批改 megahit 目录属组。cd ../
chown -R porting:porting *
四、源码迁徙上面是重头戏了哈,应用鲲鹏代码迁徙工具进行代码迁徙,就是用咱们之前关上的 Web 界面,连忙来试试吧。留神,Web 界面长时间不操作会主动退
出登录,须要从新登录留神,论坛发帖,编辑帖子工夫一长,也会显示保留问题,大家记得及时保留,最好,写一些就公布,之后再编辑,再公布,免得丢了内容(尽管有草稿箱),这都是血泪教学啊,切记!!!1. 源码剖析参数填充
上述参数阐明:源码文件寄存门路:抉择源码包 megahit/build,就是之前咱们可下载了 megahit, 这个很有意思,点击一下源码文件寄存门路的方框,就会弹出一个下滑栏,抉择咱们的门路即可:
指标操作系统:openEuler 20.03 这点没问题,这个在申请近程实验室的时候,咱们就说了要选这个零碎。编译器版本:GCC 7,3 这里要阐明下,作业帖给的是 BiSheng Compiler 2.1.0,应该是毕昇编译器,但没这个选项,那咱们就看看具体版本吧,在 MobaXterm 执行命令:python
能够看到:
嗯,是 GCC 7,3 无疑了。留神执行如下命令亦可:python3
好了,全选好了,就执行开始剖析吧!
这是运行中界面:
这是运行实现的界面:
- 工作执行胜利,查看源码报告。点击上图中右上角的报告即可查看,可跳转到如图界面:
- 点击报告源码迁徙倡议,查看须要迁徙的文件。留神,我这里提醒让跳转到最新报告查看,跳转即可,因为之前我运行了一次,如果你是第一次运行,不会有此问题哈。
咱们应该顺次单击上襦左侧文件列表,查看须要迁徙的文件。依据零碎提醒的批改倡议进行批改,鼠标点击内嵌汇编代码(cpu_dispatch.h), 能够看到到处待批改点。如图所示的红色波浪线展现的局部。留神,咱们将光标悬停在待批改代码出,就会弹出批改倡议了
当然,咱们能依据给出的倡议手动批改,然而还有更便捷的主动批改哦,更快,不过留神主动批改后检查一下。主动批改很简略,在之前光标悬停的根底上,抉择 Quick Fix,如图所示:
之后在如下图所示的两个选项中任选一个即可。
来看看成果:这是第一处的批改后:
这是第二处的批改后:
这是第三处的批改后:
咱们认真看看这些长段的绿色正文局部,能够看到主动批改曾经给出了具体倡议。两处批改点所给的倡议应该还是精确,间接去掉正文,成果如下:
最初,千万别忘了点击 保留。要晓得,人生悲痛莫过于编辑的文件没有保留啊。
你认为这就完结了?当然没有,接着来吧!依据零碎提醒进行批改,鼠标移至构建文件(megahit_core.dir/flags.make)待批改点处,能够看到两处待批改点。
这倡议很中肯啊,应该是提醒 Kunpeng platform 不反对 BMI2 和 POPCNT 指令,手动批改代码,删除指令 -mbmi2 和 -mpopcnt 指令。这还没完,别忘了,还有一处呢!鼠标移至构建文件(megahit_core_popcnt.dir/flags.make)待批改点处,能够看到一处待批改点。
依据倡议提醒 Kunpeng platform 不反对 POPCNT 指令,手动批改代码,删除指令 -mpopcnt 指令。删除后,红波浪线马上就隐没了哈。
还是那句话,千万别忘了点击 保留。五、迁徙后从新编译这里就又回到 MobaXterm 了。1. 增加 KunpengTrans.h 头文件将 KunpengTrans.h 头文件增加到目录 /opt/poradv/portadmin/sourcecode/megahit/src/utils。执行如下拷贝命令:cp /opt/portadv/tools/inline_asm/config/KunpengTrans.h /opt/portadv/portadmin/sourcecode/megahit/src/utils/
- 再次执行 make 命令。cd /opt/portadv/portadmin/sourcecode/megahit/build/
make
在 ECS 上须要执行命令:cd /home/tjulitianyi/megahit/build
make
见证奇观的时候到了!难堪,报错了,连忙看看!
显示没有该文件,但这个文件 <x86intrin.h> 是 x86 相干的,应该是 x86 平台的零碎头文件,而咱们用的是鲲鹏处理器,基于 ARM 的,原本就没有这个文件哈。上面,执行 vi 命令进入文本,正文 11 行代码:vi /opt/portadv/portadmin/sourcecode/megahit/src/kmlib/kmrns.h
// #include <x86intrin.h> 改为 //#include <x86intrin.h>
对了,在英文模式下,单击键盘上的字母 I 就能编辑了。退出保留,须要先点击键盘左上角的 Esc 键,之后执行::wq!
再次执行 make 命令,编译通过。留神,编译是比拟消耗工夫的,大家能够先劳动一下,瞭望远方,放松下眼睛。编译运行中界面:top 命令查看 CPU 运行状况:
通过大概 2 分钟的期待,编译实现了,期间运行内存在 3.5GB 高低浮动。实现界面如下图所示:
六、运行和验证记住啊,目前咱们是应用 MobaXterm 工具,以 root 用户登录近程实验室的服务器。1. 上面,进入可执行文件的装置目录。其实,就是当前目录,因为咱们之前就是在这个目录编译的,这里是为了再确认一下。cd /opt/portadv/portadmin/sourcecode/megahit/build/
- 执行以下命令运行:make simple_test
留神:make simple_test 里用到的.fa 文件是 github 上下载软件包的时候就自带了,无需额定下载。运行截图:最终运行后果展现:
搞定了,完结,撒花!!!结语如果是体验过程中,有哪些要反馈或吐槽的?1.VPN 连贯如果你应用的是鲲鹏社区的收费近程实验室,那么这个 VPN 算一个,我正在调试程序,竟然本人断开了,报错如图所示:
退出 VPN 再登录也不好用,有点不稳点吧。而且太耽搁进度了,我可就差从新编译验证了。好吧,其实我坦率,从新 make 时报错了,我正筹备定位问题,批改呢。正在兴头上,忽然就断了???不过我可能错怪它了,上图报错可能是我本地网络较差,通过重启电脑,期待之后就又能连贯上了。2. 鲲鹏迁徙工具的 Web 界面显示文件名称不全第二个就是鲲鹏迁徙工具的 Web 界面了,在源码迁徙倡议那里无奈查看残缺文件名称,鼠标悬停也不行,也无奈调整显示宽度,有点不敌对啊。
【华为云至简致远】有奖征文炽热进行中:https://bbs.huaweicloud.com/b… 华为搭档暨开发者大会 2022 炽热来袭,大会采纳线上直播 + 线下 80 余个分会场联动的模式,聚焦搭档和开发者最为关切的话题、开释更多后劲,携手搭档独特成就。点击理解重磅内容不容错过!
【精彩流动】畏缩不前·做全能开发者→12 场技术直播前瞻,8 大技术宝典高能输入,还有代码密室、常识比赛等多轮神秘工作等你来挑战。即刻闯关,开启终极大奖!戳【畏缩不前】踏上全能开发者升级之路吧!【技术专题】将来已来,2022 技术探秘→聚焦华为各畛域的前沿技术、重磅开源我的项目、翻新利用实际。站在智能世界的入口,摸索将来如何照进事实,干货满满点击理解【版权申明】本文为华为云社区用户原创内容,转载时必须标注文章的起源(华为云社区),文章链接,文章作者等根本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌剽窃的内容,欢送发送邮件至:cloudbbs@huaweicloud.com 进行举报,并提供相干证据,一经查实,本社区将立即删除涉嫌侵权内容。