乐趣区

关于后端:基于华为云弹性云服务器ECS搭载openEuler的鲲鹏通用计算增强型完成鲲鹏代码迁移工具实践华为云至简致远

【摘要】基于华为云弹性云服务器 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 登录,惯例操作了,如果看到相似如下界面,阐明登录胜利:

  1. 进入“鲲鹏代码迁徙工具”源码文件寄存门路。cd /opt/portadv/portadmin/sourcecode/
  1. 下载 Megahit 源码。git clone https://github.com/voutcn/meg…
  1. 将代码进行合并。留神如下代码不对,正确代码请见这小项最初。cd megahit/ && git submodule update -init
    这里留神不要间接复制教程中所给的代码,因为教程中的 -init 中的 - 符号有问题,会报错如下:

    或者

    其实 -init 中的 - 符号应该是英文下的才对,也能够看到批改后 -init 变为了蓝色,MobaXterm 就是强。

    但看提醒如同还是不太对啊,认真看会发现打印信息给了提醒,应该是 –init。

    cd megahit/ && git submodule update –init
    应该是正确运行了,后果如图,没什么打印信息:

  2. 创立构建文件夹并进入。mkdir build && cd build
  3. 生成 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
失去运行后果:

  1. 批改 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

好了,全选好了,就执行开始剖析吧!

这是运行中界面:

这是运行实现的界面:

  1. 工作执行胜利,查看源码报告。点击上图中右上角的报告即可查看,可跳转到如图界面:
  2. 点击报告源码迁徙倡议,查看须要迁徙的文件。留神,我这里提醒让跳转到最新报告查看,跳转即可,因为之前我运行了一次,如果你是第一次运行,不会有此问题哈。

    咱们应该顺次单击上襦左侧文件列表,查看须要迁徙的文件。依据零碎提醒的批改倡议进行批改,鼠标点击内嵌汇编代码(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/

  1. 再次执行 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/

  2. 执行以下命令运行: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 进行举报,并提供相干证据,一经查实,本社区将立即删除涉嫌侵权内容。

退出移动版