从鲲鹏创新应用大赛到软件迁移细节,读完这篇文章全掌握

2020-8-7 16:53:18 新闻来源:深圳新闻网

        7 月 29 日,【鲲鹏凌粤,展翅鹏城·鲲鹏应用创新大赛 2020·深圳赛区宣讲会】通过线上直播的形式成功举办。此次宣讲会上,不仅有来自鲲鹏产业源头创新中心的专家们向广大开发者讲解深圳赛区赛题、赛制以及更多的参赛技巧,来自华为鲲鹏的计算专家们也向开发者在线解读了鲲鹏生态的发展和软件迁移所涉及的技术细节。

       当前,鲲鹏计算产业进入了高速成长期, 深圳作为鲲鹏计算产业的示范区正加快鲲鹏生态体系建设,目前已建立了 1 个基地、2 个分中心以及全国首个鲲鹏云学院,同时认证了 261 家企业。通过在优势场景上进行的深度合作,鲲鹏也为政府金融、运营商、电力、互联网等广大行业提供着基于鲲鹏计算平台的基础设施搭建和解决方案。

       鲲鹏云服务,开启多元新架构

       华为云鲲鹏云服务涵盖裸机、虚拟机、容器等多形态, 具有多核高并发的优势特点,在鲲鹏云服务使用上,提供了和 x86 一致的使用体验,开发者使用鲲鹏上的云服务也不会产生任何的阻碍。

从鲲鹏创新应用大赛到软件迁移细节,读完这篇文章全掌握

       鲲鹏云提供了弹性云服务器 ECS、裸金属服务器 BMS 等计算服务,开发者可通过云硬盘来为 ECS、BMS 等计算服务提供持久性块存储;在容器服务方面,提供了鲲鹏 Kubernetes 容器、鲲鹏 Serverless 容器,支持 x86 和鲲鹏节点的混合管理,兼容 K8s 和 Docker 原生接口具有 4 大优势:

       1、多平台自适应混部:支持同一容器集群对 x86 和鲲鹏节点进行混合管理;根据节点 CPU 架构,自动拉取相应平台的容器镜像,实现应用从 x86 架构的自动适配、跨平台弹性扩容、分批次迁移;

       2、高性能:鲲鹏容器底层采用 NUMA 架构,在芯片的负载均衡方面占有优势,通过 NUMA 自动亲和优化使性能有非常明显的提升;鲲鹏 Serverless 容器提供鲲鹏容器秒级发放,Volcano 支持鲲鹏集群发放速度达 1000 容器 / 秒;

       3、应用无感迁移:一键式从源码到多平台容器镜像版本的构建、 部署、发布能力 快速将原有的 x86 应用迁移到鲲鹏平台;

       4、极速 AI 容器:Volcano 支持 MindSpore、Tensorflow 等 多种 AI 训练框架,提供练任务算力灵活调度分配,支持 AI 任务的调度亲和优化,多任务并行资源优化;

       在提升鲲鹏云服务交付能力上,鲲鹏技术专家讲解到,后续不论是私有云还是公有云,都将基于统一的擎天架构实现软硬件协同,然后通过华为云瑶光智慧云脑去进行统一的调度,打通公有云与私有云,实现两云之间的平滑迁移。

       C/C++ 代码迁移法则全掌握

       C/C++ 是非常典型的编译型语言,编译型语言所开发的程序从 x86 平台移植到鲲鹏平台时一般都需要重新编译才能运行。编译构建脚本类文件在迁移过程中,一般会涉及到编译选项的移植,源码类文件会涉及到编译宏,另外可能还会有编译器自带的 Builtin 函数的移植、SSE intrinsic 函数移植等。

从鲲鹏创新应用大赛到软件迁移细节,读完这篇文章全掌握

       在 C/C++ 代码编译构建过程有一般涉及六大步骤:

       1、首先是获取源码,可以通过 GitHub 等开源社区来获取;

       2、其次需要选择所需的编译环境,就是安装编译器 gcc 等;

       3、之后根据源码的编译脚本生成 Makefile 文件,再用 Makefile 编译生成可持续文件;

       4、执行行 makefile 编译可执行程序;

       5、如果这部分代码之中有依赖 x86 平台的 SO 库,那么这部分的依赖库是需要重新编译替换的;

       6、在编译完成之后进行安装部署,之后进入到实际的系统之中进行测试;

       典型的移植类问题

       在对编译构建的流程有基本理解后,就需要深入了解实际迁移过程中所涉及到的各种移植项。

       1、编译脚本和编译选项的移植

从鲲鹏创新应用大赛到软件迁移细节,读完这篇文章全掌握

       以上图为例,其中 x86 下 -m64 代码的主要功能是将应用程序编译为 64 位,对应到鲲鹏上是用 -mabi=lp64 的编译选项。上文有提到这编译选项需要在脚本中修改,对应的 Cmakelists 里有可能存在 add_defin 等多种定义方式。

       再看常用的数据类型移植,众所周知 x86 平台上默认的 char 类型是一种有符号的类型,对应到鲲鹏上则是无符号类型。因此在移植过程中需要显示定义并将 char 类型定义为有符号。一种方法是在源代码里加上 signed char,但是缺点是可能改不全从而引发一些不可预知的问题。另一种方法是直接用 fsigned-char 来修改,在不同架构下差异化的编译选项也可以通过 gcc 文档进行查询。

       2、编译宏移植

从鲲鹏创新应用大赛到软件迁移细节,读完这篇文章全掌握

       编译宏的作用就是让编译器知道编译哪些分支代码能够在不同架构下达到最优性能。如何对编译宏下面的代码实现移植 x86 代码上有些编译器自带自定义宏,比如 smd 属性相关的宏在 x86 上是 SSE 开头的宏,对应到鲲鹏平台上就需要自定义它的编译宏和所相对应的分支。

       3、Builtin 函数移植

从鲲鹏创新应用大赛到软件迁移细节,读完这篇文章全掌握

       通过上图可以看到在 x86 平台上其和在鲲鹏平台上是类似的,从命名来看有差异的地方就只存在于架构。

       Builtin 函数是编译器自带的函数,其在实际迁移项目中相当常见,主要是 crc32 校验值的计算。需要移植的普通 builtin 函数实际并不多,大部分需移植的 builtin 函数集中在 SSE intrinsic 函数内。

       4、内联汇编函数的移植

从鲲鹏创新应用大赛到软件迁移细节,读完这篇文章全掌握

       上图列举了将字节序进行反序的例子,比如 0X56781314 反序输出的是 0X14137856,x86 上对应的是 bswap 指令,鲲鹏对应的是 rev 指令,其它有些操作和寄存器都是基于内联汇编的语法规则进行替换的。上图的另一个例子是 Builtin 函数,列举了内联汇编转换用鲲鹏上面的 Builtin 函数做替换的例子。比如 popcount 是对二进制数里面的 1 进行计数,对应到鲲鹏平台上所替换的是 popcountll。

       5、SSE intrinsic 函数移植 (SIMD 技术简介)

从鲲鹏创新应用大赛到软件迁移细节,读完这篇文章全掌握

       SIMD(Single Instruction Multi Data) 是一种单指令处理多数据流的并行处理技术,能够在批量数据操作时进行向量 化运算加速,具有较高的执行效率,在多媒体处理、矩阵运算等场景都有广泛的应用。

       Intel 的 SIMD 扩展指令统称 SSE,主要分为三类,MMX 是 64 位寄存器,SSE 到 SSE4 是 28 位的,三是 AVX256 和 AVX512。鲲鹏基于 SIMD 的技术发展比较成熟,现在有些基于开源量的 NEON 库主要是在图象处理和视频处理层面。

       6、SSE intrinsic 函数移植 (MMX/SSE)

从鲲鹏创新应用大赛到软件迁移细节,读完这篇文章全掌握

       以上图为例,针对 MMX 指令,x86 上用的是 -m64 的向量做加法运算,对应到鲲鹏上是 int32×2 然后再做加法运算,类似于常用的 C 函数规则;针对 SSE 指令,从内存中加载 4 个单精度浮点数据到寄存器,x86 是 load,对应到鲲鹏用的是 vld1q。

       7、SSE intrinsic 函数移植方法

从鲲鹏创新应用大赛到软件迁移细节,读完这篇文章全掌握

       以上就是 C/C++ 代码的主要内容,这部分主要是从 C/C++ 代码的编译原理及构建流程开始介绍,重点是对其中的移植类进行讲解分析,让大家了解到这七类移植问题。比如编译选项移植、编译宏移植、builtin 函数移植、内联汇编移植、SSE intrinsic 函数移植。在实际的迁移过程中,如果遇到相应的一些问题可以对号入座,找到对应的所属的移植项。

       鲲鹏应用创新大赛 2020·深圳赛区邀您乘风破浪

       鲲鹏应用创新大赛 2020 火热进行中!现面向全产业开发者开放报名通道,共同打造鲲鹏全栈解决方案,实现技术与商业创新应用。参赛队伍需基于鲲鹏计算技术构建产品与解决方案,包含华为云鲲鹏云服务、鲲鹏主板、鲲鹏服务器等产品,打造各个不同场景的软硬件解决方案。此次大赛本次采用的是 13 个创新中心 + 一个线上通道模式的运作,大赛整体分为创新区域赛、全国半决赛、全国总决赛的方式。

       作为 13 大赛区的之一,深圳赛区设置了 5 个赛道,分别为“金融行业创新解决方案”、“数字政府创新解决方案”、“大数据创新解决方案”、“ARM 原生创新应用”和“开放命题”,参赛参队伍可以基于以上赛道打造各个不同场景的软硬件解决方案。获胜队伍将由深圳区域赛推送至全国半决赛再到全国总决赛。

       参赛队伍要取得好成绩,需要注意以下几点:

       1、选好作品,解决方案应该足够成熟、应用广泛、有鲜明特色;

       2、软件适配鲲鹏平台时要改造彻底,并根据鲲鹏架构做针对性改进和创新;

       3、需要准备完整的测试报告,展示报告中要清晰展示方案的架构、功能、价值、前景和优势等要素。

       深圳赛区在将 8 月 21 日进行线下评比,奖项设置丰厚,除了 50 万元现金激励还有多种附加权益等你来拿,报名截至日期为 8 月 15 日




本站所刊登的各种新闻﹑信息和各种专题专栏资料,均为深圳生活网版权所有,未经协议授权禁止下载使用。
Copyright © 2000-2013 www.0755shw.com All Rights Reserved
编辑QQ:2383424132