网易首页 > 网易山东 > 正文

算力时代下, 如何利用鲲鹏软件进行软件迁移?

0
分享至

今年4月,国家发改委进一步明确了新基建的范围,计算作为新型的算力基础设施,在新基建中被提出,随着人工智能的发展,每个服务器的算力变得更强。我们正在从电力时代步入算力时代,算法越来越成为新的生产力。

算力的投入以及算力如何带动社会经济的发展,正在成为各个国家区域抢夺的新战场。根据 IDC 预测,到2023年全球计算产业投资空间1.14万亿美元,而中国计算产业投资空间1043亿美元,接近全球的10%,是全球计算产业发展的主要推动力和增长引擎。

鲲鹏计算产业“应运而生”,官方给它的定义是,这是一个基于鲲鹏处理器构建的全栈 IT 基础设施、行业应用及服务,包括 PC、服务器、存储、操作系统、虚拟化、数据库、云服务、行业应用以及咨询管理服务等。

在商业策略上,他们将基于华为鲲鹏主板的相应部件,构筑能生产高质量服务器产品的产线、采购、产品的检测这些全球流行的能力。

那么鲲鹏软件迁移大概是什么情况?C、C++ 代码和 JAVA、Python 代码又是怎么迁移的?这也是本次山东鲲鹏生态技术分享专场上讨论的重点问题。

以下内容经由 InfoQ 编辑整理自济南站18城鲲鹏开发者创享日华为鲲鹏智能计算产品线的刘坤)(待确认)、华为鲲鹏计算的软件工程师覃璐瑶的分享。

一、鲲鹏软件迁移概述

由于指令集上的差异,在 x86平台上编译生成的应用程序,在鲲鹏处理器平台运行时,需要进行重新编译。

1. 鲲鹏软件迁移的五个步骤

迁移准备

主要做一些信息收集,以及编译环境的准备。收集包括操作系统、中间件、业务软件等信息后,还要做编译环境准备。

迁移分析

迁移分析主要指的是,对搜集到的软件栈信息打开进行详细分析,包括使用什么语言,是否有相应的 X86依赖需要移植。

第一类是业务软件的展开分析,包括开源软件、自研软件和商用软件。

其中,开源软件可通过获取开源代码,进行重新编译,或获取对应的 ARM 包,获取源码重新编译。

自研软件根据语言可分为编译型语言和解释型语言开发的自营软件。

在商用软件领域,我们可以获取支持鲲鹏处理器的一个商用软件版本,当我们没法获取相应的商用软件版本时,可以通过其它软件或者开源软件来进行替换。

第二类是对软件的运行环境进行分析,运行环境可分为 JDK 以及编译器还有操作系统。JDK 替换可以替换成我们支持的华为 JDK,如 openJDK;编译器就是根据我们使用系统自带的一些编译器或者迁移时源码会规定一些 GCC 的版本,这时候我们更推荐的是使用 GCC7.3。操作系统可以通过兼容性助手,查询鲲鹏处理器支持的操作系统版本。

编译迁移

主要分为两类,一类是代码迁移,一类是软件包迁移。

代码迁移可以分为编译型语言和解释型语言,编译型语言修改点主要涉及代码修改、编译脚本修改、内联汇编修改以及不兼容指令,如 SSE Intrinsic 类加速指令。

解释型语言,主要分为直接翻译,如纯解释型语言开发的应用程序,如果软件含依赖库,需要重新编译。

软件包迁移主要是我们对 RPM 进行重构,包括扫描软件包所依赖的依赖项,对这些依赖库获取源码进行重新编译、打包。

性能调优

基于制定的性能指标数据进行针对性调优。完成迁移后,需要进行性能调优,这里总结出性能调优五步法,第一,是建立基准,根据当前硬件配置、组网、测试模型做综合评估,建立合理的调优目标。第二,是压力测试,通过压力测试工具对系统加压,同时监控系统数据,记录数据变化。第三,确定瓶颈,重点观测当前系统的资源,确定系统瓶颈。第四,根据瓶颈点针对性地实施优化措施,同时记录优化措施,记录优化措施,一旦出现负向效果,及时回退。第五,确认效果,重新启动压力测试,准备好相关的工具监视系统,确认优化效果。

测试与认证

通过测试和论证保证迁移完后,性能正常达标,包括压力测试、长稳测试、鲲鹏展翅论证等。

测试的话会经过功能测试、性能测试、长稳测试,这些测试的最终目的都是为了保证规模的商用。这个其实还有一个就是鲲鹏展翅论证。在认证上面,截止6月5日,累计有809家行业伙伴获得鲲鹏展翅论证。

2. 典型案例

这里我们拿华为内部项目举例。这个项目涉及的迁移软件代码比较多,代码的规模大概在450万行左右,其中 C、C++ 代码占了一大半,有272万行,还有165万的 Java 代码,还涉及到140多个依赖库。在迁移 C、C++ 代码和依赖库的过程中,其实我们前面讲到的一些包括汇编指令迁移、选项修改、数据流行修改,其实这些都涉及到了,最后我们还做了代码的归一,构建脚本的归一,目的是兼容鲲鹏处理器平台和其它处理器平台,让代码能在多个平台运行。经过编译和移植后,最后还进行了系列性能调优,最后测试结果是:与 X86持平。

3. 华为鲲鹏开发套件

华为开发了一系列套件,帮助完成分析、迁移、调优过程。在迁移分析阶段,推出分析扫描工具,帮助我们扫描代码依赖的依赖库,做代码初步评估;在性能调优阶段,我们推出性能优化工具,它能做全景资源监控,针对可能出现的热点函数进行监控。

二、C、C++ 代码的迁移1. 需要移植的原因

架构差异

x86和鲲鹏是属于不同的架构,鲲鹏它的架构是 aarch64,架构差异导致编译过程中,可能有些编译选项需要基于平台指定,这时候就需要移植。

指令集差异

x86是复杂指令集,鲲鹏处理器是精简指令集。

向量寄存器差异和向量指令集差异

x86和鲲鹏处理器使用向量寄存器不同,向量指令集也存在差异。

2.C、C++ 代码编译构建过程

C、C++ 代码工程包括文件

我们可以把文件分为两类,第一是编译构建脚本,第二类 C、C++ 源码。

首先,编译构建脚本中,可能会涉及移植项,主要涉及编译选项之类的移植,比如说这些编译选项通常是指定数据类型,包括我们生成代码的属性,还包括我们的目标、代码架构的相关编译选项。

其次,是 C/C++ 源码类文件的移植,主要涉及到编译宏移植,编辑自带 builtin 函数移植,内联汇编的移植,也包括 SSE intrinsic 函数移植。

C/C++ 代码编译构建过程

第一步,需要获取源码,如果是开源的代码,可通过 github 去获取相应的源码;

第二步,准备编译环境,这时我们需要安装对应的 GCC 版本;

第三步,使用源码中的 CMakelists.txt 或 configure 脚本生成 makefile 文件;

第四步,执行 makefile 编译可执行程序;

第五步,替换依赖库,重新译或替换依赖 X86平台的 so 库;

第六步,将可执行程序安装部署到生产或测试系统。

3. C/C++ 代码中迁移的典型移植问题

第一类迁移问题:编译脚本、编译选项移植;

一个例子是,定义编译生成程序为64位,这时候在 X86下面编译选项是 -M64,在我们鲲鹏处理器平台下,我们需要通过 -Mabi,等于 LP64这个编译选项进行替换。

第二类迁移问题:编译宏移植

  • 什么是编译宏?一段好的代码,比如很多开源工程,一个工程代码会写不同的分支,每个分支对应不同的架构平台,在我们编译器去编译和运行过程中,怎么知道执行哪个分支?这就是编译宏在起作用。它类似于一个标签,告诉你在当前平台下,你需要去执行这个分支下面的一个代码。

  • 编译宏的移植,第一类是 gcc 编译器自定义的宏;第二类是用户自定义的宏。

第三类迁移问题:builtin 函数移植

builtin 函数,是我们编译器自定义的功能函数,这些功能函数通常功能较简单,但内部实践进行了优化,具有较好的性能,大家使用过程中如果有相应的需求可以进行使用。

第四类迁移问题:内联汇编函数移植

内联汇编的迁移主要有两种方法:第一种方法是一个汇编指令方式的替换来进行一个移植。第二种方式就是通过 Buding 函数的方式进行替换。

第五类迁移问题:SSE intrinsic 函数移植

什么是 SIMD?英文全称是 Single Instruction Multi Data,指通过单条指令处理多数据流的并行处理技术,能在批量数据操作时进行向量化运算加速,具有较高的执行效率,在多媒体处理、矩阵运算等场景都有广泛的应用。

关于 SIMD 里的 MMX 和 SSE 指令迁移,鲲鹏处理器采用精简指令集,使用128位寄存器实现 SIMD(Single Instruction Multi Data) 计算。在实现本例16个浮点数的相加时,使用两条 vaddq_f32指令分别完成,每条指令完成两组共8个浮点数计算,最后再从向量寄存器中分别取出8个浮点数累加。

SSE intrinsic 函数主要有两个移植方法,第一个方法是:基于 avx2neon.h、SSE2NEON.h 开源文件移植;第二个方法是:手动替换移植。

总结

平时迁移过程中,使用更多的是第一种。它是华为开源的,在 github 有相应的代码,它主要达成了 SSE Intrisic 函数的 Neon 实现,包括 AVX256、512类的 Intrisic 函数的 Neon 实现。

第二个参与工程是原来已经存在的 SSE to Neon 这个工程比较老了,它主要做的事情是128位 SSE Intrisic 函数的替换,以及简单的 load、store、set 等指令的 NEON 实现。实际迁移过程中,可以两个结合起来使用。

迁移工具:Python 代码迁移

定义

Porting Advisor 是一款华为鲲鹏代码迁移工具,针对 C/C++ 代码进行扫描分析,检查用户 C/C++ 代码中需移植修 改的 MakeFile 编译文件、X86汇编及 SSE intrinsic 函数,并指导用户如何移植。

使用步骤

主要分为三步,第一步是环境部署,安装 Porting Advisor 工具,安装后,准备好需要迁移的源码;第二步,通过 Porting Advisor 来进行工程的分析扫描,扫描编译构建脚本、X86汇编,包括 Intrisic 函数的识别,第三步,生成分析报告,包括关键移植项准确信息、建议移植指导方法以及移植项全面评估等。

四、JAVA、Python 代码迁移1.Java 代码迁移

责任编辑:小艳

相关推荐
热点推荐
重磅!勇士官宣!正式归来

重磅!勇士官宣!正式归来

篮球教学论坛
2023-03-24 13:02:05
贫富差距巨大,遍地都是找不到工作的大学生,问题根源到底在哪?

贫富差距巨大,遍地都是找不到工作的大学生,问题根源到底在哪?

虎哥聊教育
2023-03-24 14:38:26
未来44天,决定了世界的命运

未来44天,决定了世界的命运

圆方你怎么看啊
2023-02-24 10:45:03
刘亦菲担任全球品牌代言人,让章子怡巩俐等巨星黯然失色

刘亦菲担任全球品牌代言人,让章子怡巩俐等巨星黯然失色

番茄娱乐加
2023-03-24 21:49:56
堂堂一国总理,竟无飞行员愿意开飞机送他出访

堂堂一国总理,竟无飞行员愿意开飞机送他出访

山水谈要闻
2023-03-24 20:19:29
加拿大将为全国儿童提供免费餐食

加拿大将为全国儿童提供免费餐食

林小朱影院
2023-03-24 02:02:13
杜兰特计划下周四对阵森林狼复出

杜兰特计划下周四对阵森林狼复出

OnFire
2023-03-25 07:00:11
美方中美航班每周12班,中方中美航班每周8班,有望航班对等!

美方中美航班每周12班,中方中美航班每周8班,有望航班对等!

天二萌宠社区
2023-03-24 21:49:25
拜登下令公布所有新冠起源及与某实验室的关联文件,外交部回应!

拜登下令公布所有新冠起源及与某实验室的关联文件,外交部回应!

半塘资讯
2023-03-24 18:42:42
美媒公布中印冲突细节,印度人能重兵伏击解放军,美国帮了大忙

美媒公布中印冲突细节,印度人能重兵伏击解放军,美国帮了大忙

报道国际视频
2023-03-23 16:40:03
几乎可以肯定,018福建舰的12架J35已经量产

几乎可以肯定,018福建舰的12架J35已经量产

田大夫讲健康
2023-03-24 17:26:54
杜锋续约谈判不顺利,提涨薪被朱芳雨拒绝,其爱子拒广东加盟首钢

杜锋续约谈判不顺利,提涨薪被朱芳雨拒绝,其爱子拒广东加盟首钢

刘哥谈体育
2023-03-24 13:45:15
0-2!世界倒数第一输麻了,连续128场+19年不胜,可来亚洲破纪录

0-2!世界倒数第一输麻了,连续128场+19年不胜,可来亚洲破纪录

侃球熊弟
2023-03-24 07:32:30
案例:28岁护士欠200万网贷,因无力偿还,带着3岁儿子喝药自杀

案例:28岁护士欠200万网贷,因无力偿还,带着3岁儿子喝药自杀

小叮当故事会
2023-03-24 17:52:23
4-0!新队长踢疯了!超越本泽马,姆巴佩升至法国历史射手榜第五

4-0!新队长踢疯了!超越本泽马,姆巴佩升至法国历史射手榜第五

体育世界
2023-03-25 06:25:25
3-0!卢卡库踢疯了!伊布被打脸,世界杯出局比利时仍是顶级强队

3-0!卢卡库踢疯了!伊布被打脸,世界杯出局比利时仍是顶级强队

体育世界
2023-03-25 07:16:34
2月新能源汽车销量:理想销量大涨,特斯拉不敌比亚迪

2月新能源汽车销量:理想销量大涨,特斯拉不敌比亚迪

新能源资讯
2023-03-24 21:29:14
大快人心!3月24号,从清晨到日暮,十几人被查,包括足协

大快人心!3月24号,从清晨到日暮,十几人被查,包括足协

鳄鱼的分享
2023-03-24 23:55:54
一个死了三天的人,是怎么半夜爬上女孩的床,实施犯罪的?

一个死了三天的人,是怎么半夜爬上女孩的床,实施犯罪的?

奇趣故事汇
2023-01-08 08:05:09
65年,周总理、末代皇帝、末代总统世纪同框,只有新中国能做到

65年,周总理、末代皇帝、末代总统世纪同框,只有新中国能做到

历史小书生
2023-03-23 17:52:22
2023-03-25 07:32:49

头条要闻

新加坡媒体:TikTok听证会火药味十足 拷问抢话不断

头条要闻

新加坡媒体:TikTok听证会火药味十足 拷问抢话不断

财经要闻

体育要闻

欧预赛综述:法国比利时皆大胜 姆总双响小魔兽戴帽 萨比策造3球

娱乐要闻

胡歌首谈当父亲感受 自曝看着女儿落泪

科技要闻

刚刚,苹果CEO库克微博发文:我在北京三里屯

汽车要闻

四驱+后锁 想兼顾通勤与越野不如看看二代大狗

态度原创

时尚
手机
教育
旅游
亲子

我们的买买买 让LV老板首次成为世界首富

手机要闻

华为Mate X3轻体验:老余兑现「折叠屏比直板机轻薄」承诺

教育要闻

体制内也有鄙视链?

旅游要闻

春日烂漫,赴一场百花之约?

亲子要闻

网友晒出幼儿园弟弟一张奖状“干饭领头羊”,网友:干饭是孩子的真本事。

无障碍浏览 进入关怀版