首页 > 资讯 >正文

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

2020-08-03 15:09:08 来源:- 作者:-

关心前沿科技动向的 IT 从业者,一定对近期大热的鲲鹏产业生态有所耳闻。在服务器和云端计算领域 ARM 架构崛起的大背景下,由华为自主研发的鲲鹏系列服务器 CPU 凭借出色的性能与功耗表现,在国内云计算市场赢得了良好的口碑。随着新基建和信创产业的推进,很多行业和企业都开始考虑选择鲲鹏平台补充甚至替换原有的 x86 服务器;以鲲鹏处理器为核心,包括芯片、整机、操作系统、云平台、行业应用等自主技术在内的一整套 IT 基础设施逐渐浮出水面,形成了一个蓬勃发展的鲲鹏产业生态。

如今,华为已在全国各地建设了十几个鲲鹏产业发展和创新基地,并与各省市政府合作全力推进鲲鹏计算产业的发展。此外,华为还在各地举办了一系列鲲鹏开发者沙龙活动,向各地 IT 从业者介绍鲲鹏产业细节,源源不断地输出鲲鹏平台迁移和应用部署经验,努力打造一个充满活力的鲲鹏开发社区。

7 月 24 日,“八桂鲲鹏 乘风破浪”广西鲲鹏开发者沙龙在广西南宁成功举办。本次沙龙围绕鲲鹏生态和鲲鹏产业整体现状与未来规划进行了解读,并由华为专业工程师分享了鲲鹏迁移课程,还邀请到产业合作伙伴分享了国产数据库的最佳实践。此外,活动现场还举行了广西鲲鹏训练营暨鲲鹏应用开发者大赛颁奖仪式,介绍了华为鲲鹏开发者大赛的细节内容。

本文由 InfoQ 编辑整理自鲲鹏开发者沙龙南宁站速记。

鲲鹏产业生态战略解析

华为 18 万人的共同追求,就是把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界。

这是华为鲲鹏凌云伙伴计划总监刘徐平在本次沙龙上《鲲鹏展翅,共赢计算新时代》的主题分享中的开场白。接下来,刘老师就为大家介绍了鲲鹏计算产业的现状与未来规划。

从蒸汽时代、电气时代再到信息时代,人类社会前进的动力也从热力、电力演变到了通用算力。今天的世界正在进入由 AI 算力推动的智能时代,万物互联将成为现实,IT 行业需要应对海量数据与海量分析的挑战,进而产生了海量的算力需求。

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

由于近年来芯片领域进步放缓,华为认为未来十年将是计算架构创新的黄金时代,这样才能满足智能世界的算力发展需要。因而其投入庞大资源打造了鲲鹏和晟腾两大关键芯片技术。前者相比主流 CPU 有 25% 的性能优势和 30% 的能效比优势,后者则相比主流单卡性能翻倍。

为了推进鲲鹏产业快速发展,华为开放了主板等硬件组件,允许合作伙伴自由开发自有品牌服务器和 PC;还在软件层面开发了 AI 框架和数据库等底层技术,上层应用则完全交给合作伙伴创建,免费支持他们进行软件迁移。此外,其还对业界主流的开源软件和国产软件进行适配,方便合作伙伴更快捷地展开迁移工作。

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

“未来五年,华为计划投入 15 亿美元发展鲲鹏生态,包括高校教研扶持计划、沃土开发人员成长计划、初创企业扶持计划和合作伙伴发展计划,并与各地方政府合作打造区域产业。”刘徐平就鲲鹏生态的未来规划进行阐述。

同时,他还提到,华为计划在五年内培养一百万名鲲鹏开发者,为此进行了五方面的规划:首先是华为的伙伴 MVP,主要授予行业意见领袖;第二是华为云联盟杯开发者大赛;第三是针对移动应用提供的扶持和活动;第四是开发者沙龙活动;第五部分是华为 HC 大会,也是业界最具影响力的技术峰会之一。他表示,华为希望通过这一系列开发者活动帮助开发者成长,并获得能力和资源。

产业联盟伙伴分享:国产数据库最佳实践

作为信创产业的关键领域,高端数据库的国产化替代是当下国内 IT 基础设施领域最热门的主题之一。本次沙龙上,达梦数据库华南大区技术总监胡青李以鲲鹏产业联盟伙伴的身份,分享了国产数据库方案的一些最佳实践,为准备采用国产数据库的开发者和企业提供了颇具价值的实用参考。

国产数据库迁移方案解析

当达梦接到客户的数据库向鲲鹏平台的迁移需求时,通常会从方案设计入手,经过应用开发和性能优化环节完成迁移任务。

调研是迁移工作的核心部分,占据方案设计 60% 甚至 80% 以上的时间。在场景分析中需要调研应用系统和数据库两个层面,具体如下图:

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

之后还要做目标分析,主要考虑下图中的 6 大维度:

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

需要注意的是,当 CPU 多核能力和内存不成瓶颈时要注意存储的性能,如果原始系统性能太差,就要对当前业务模型进行深入分析再做设计。另外要根据生产系统的工作时间习惯来选择迁移时间和手段。

应用开发环节中,核心问题是集群架构设计和优化方式。如果业务系统要向鲲鹏迁移,需要注意的是 JDK 应换为 Open JDK。应用迁移完成后要做数据核对,还要有单点和高负载性能测试。根据用户的具体需求,可能需要下线迁移、短时间下线迁移或不下线迁移。

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

优化环节是真正的难点,需要利用索引和统计信息来做好优化工作。另一个难点是集群性能优化,包括性能优化、高可用优化和数据流优化。

在实践中,达梦帮助用户做到了平滑过渡到鲲鹏平台上,这一过程中需要注意的是磁盘配置方式,以免 IO 性能不符合预期。迁移完成后成功上线,达梦还提供了统一的管理平台来管理各种集群,查看各种可回溯的监控指标。所有监控数据都可以发给 Prometheus,监控内容非常详细。

鲲鹏软件迁移指南

本次沙龙上,华为鲲鹏计算专家还带来了鲲鹏软件迁移的速成课程。

鲲鹏软件迁移概述

计算机硬件底层是包含大量晶体管的芯片,而上层的软件就是用高级语言编写的应用程序。高级语言通过编译器编译成汇编语言,再通过汇编器生成机器码。机器码主要包括指令和数据,而指令则与底层芯片的设计高度相关,不同的平台有着不同的指令集,如 x86、Power、ARMv8 等等。

鲲鹏芯片所使用的 ARMv8 指令集与 Intel、AMD 的芯片所使用的 x86 指令集区别很大,下面就是一个例子:

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

由于指令集层面的差异,因此在 x86 平台上运行的应用程序转移到鲲鹏平台上时就需要重新编译,整个过程就叫做软件迁移。

根据过往的经验总结,软件迁移可以归纳为迁移准备、迁移分析、编译迁移(包括代码和软件包迁移、性能调优、测试和认证五大步骤。

1、迁移准备:主要收集软硬件信息,包括芯片和服务器资料,操作系统、中间件、编译器、业务软件等信息。接下来,鲲鹏开发者可以申请 openlab 远程编译环境来为迁移做准备。
2、迁移分析:主要分析软件栈,制定迁移策略。分析过程分为业务软件和运行环境的展开分析两大类。

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

3、编译迁移:这一步主要分为两类,分别是代码迁移和软件包迁移。

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

4、性能调优:性能调优主要使用五步法处理。

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

5、测试与认证:测试环节主要涉及功能测试、性能测试、场景稳定性测试等,保证迁移完成后的软件可以满足规模化生产环境的各项指标。华为还提供了鲲鹏展翅认证计划,为完成迁移工作的合作伙伴提供认证服务。

值得一提的是,华为还开发了一系列开发套件,帮助开发者完成整个迁移任务。套件中包括分析扫描工具、代码迁移工具、性能优化工具等。

C 和 C++ 代码迁移

C、C++ 和 go 都是典型的编译型语言。这种语言开发的程序需要经过针对硬件平台的编译后才能在对应平台上运行。当 x86 平台的 C/C++ 程序要向鲲鹏平台迁移时,针对 x86 平台编译生成的二进制文件是无法直接在鲲鹏平台运行的。

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

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

C/C++ 代码工程主要包括如图所示的两类文件:

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

需要注意,不同的项目需要编译移植的部分是不同的,有些项目可能无需修改代码即可直接编译通过,有些只需要简单的编译选项调整,其他项目就可能要对代码做较大改动。

C/C++ 代码的编译构建可参考以下流程:

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

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

1、编译脚本、编译选项移植
以编译 64 位应用程序为例,x86 平台可通过指定编译选项为 -m64 来完成,而在鲲鹏处理器下需要 -mabi=lp64 的形式指定;在 X86 平台下默认 char 类型是有符号类型,鲲鹏平台下默认是无符号类型。

2、编译宏移植
以编译器自定义宏为例,x86 编译选项是 x86_64 或 __x86_64,对应的 ARM 编译选项是 aarch64

3、builtin 函数移植
以替换 crc32 值计算函数为例,x86 下的 __builtin_ia32_crc32qi () 对应到 ARM 中则为 __builtin_aarch64_crc32cb()。实际上,需移植的普通 builtin 函数实际并不多,大部分需移植的 builtin 函数集中在 SSE intrinsic 函数内。

4、内联汇编函数移植
这是 C/C++ 代码迁移过程中较难的部分,做移植前需先找到核心的汇编指令,随后结合内联汇编规则,也能够快捷的完成替换移植。

5、SSE 函数移植
SIMD 是一种单指令处理多数据流的并行处理技术,能够在批量数据操作时进行向量化加速,具有较高的执行效率,应用比较广泛。x86 平台的 SIMD 扩展指令集分为 MMX、SSE 和 AVX 几类,位宽从 64-512 位。鲲鹏平台的 SIMD 指令集是 NEON,也有一些开源库可用。下面分别是 MMX/SSE/AVX 几种指令的迁移示例:

迁移过程中,一般使用 AVXtoNeon 和 SSEtoNeon 两个开源工程来迁移 intrinsic 函数。如果存在它们没能覆盖的部分就需要手动替换。

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

最后,华为还提供了 Porting Advisor 迁移工具来简化迁移过程。

鲲鹏应用创新大赛(2020)广西赛区来了!这些知识点助力你快速提升技能

Java、Python 代码迁移

责任编辑:小艳