阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

迈入鲲鹏计算产业的大门:一文带你了解鲲鹏开发生态的点点滴滴

  • 2020-07-17
  • 本文字数:5010 字

    阅读完需:约 16 分钟

迈入鲲鹏计算产业的大门:一文带你了解鲲鹏开发生态的点点滴滴

2020 年被称为是 ARM 架构的元年:在 HPC、服务器和 PC 领域,富士通、亚马逊和苹果公司均取得了标志性的突破,展现了 ARM 平台强大的发展潜力。在国内,华为鲲鹏处理器也以优异的表现博得了业界的好评。随着 5G、AI 和云服务产业的兴起和成熟,ARM 正在凭借移动计算浪潮中积累的市场优势,向多年来一直由 x86 把持的传统计算市场进军,有望在这些领域成为下一个十年的舞台主角。


任何硬件技术的崛起都离不开软件生态的配合,ARM 也不例外。如今,华为在努力围绕鲲鹏计算产业生态,建设以服务器和云端应用为主要场景的开发社区,并成功吸引了成千上万开发者的关注和参与。在华为公司的推动和全球开发者的支持下,年轻的鲲鹏社区生机勃勃,优秀的开源项目和应用实践和不断涌现,成为了服务器和云端市场不可忽视的新生力量。


7 月 11 日,华为在全国 18 城举办了鲲鹏创新中心开发者创享日活动,为鲲鹏计算产业生态建设添砖加瓦。在本次活动中,深圳会场请到了华为公司多位资深专家,为开发者介绍鲲鹏计算产业生态的概况,以及迈入鲲鹏生态时最关心的软件迁移和优化相关内容;活动最后还有鲲鹏应用创新大赛深圳区域赛的相关信息。


以下内容经由 InfoQ 编辑整理自开发者创享日深圳会场的课程。

鲲鹏产业源头创新中心和鹏城生态:开发者云平台介绍

在全球科技领域激烈竞争和贸易冲突的背景下,中国 IT 产业亟需有竞争力的自主创新芯片、数据库和操作系统产业链。华为公司经过 15 年的发展,自主开发出了鲲鹏 920 服务器芯片、昇腾 AI 芯片、OpenEuler 服务器操作系统、GaussDB 数据库、MindSpore AI 框架等关键核心技术,初步形成了服务器和云端市场的高水平自主生态系统。


去年 9 月,深圳市人民政府与华为技术有限公司签署联合打造全国鲲鹏产业示范区战略合作协议,共建鲲鹏产业源头创新中心,为鲲鹏生态伙伴提供鲲鹏云资源、技术支持、联合创新、标准制定、测试认证、人才培养等公共服务,加快深圳市鲲鹏生态体系规划布局,打造全国鲲鹏产业示范区。华为云解决方案架构师鄢强介绍,鲲鹏产业源头创新中心为合作伙伴提供七大权益:资源补贴、证书资质、市场推广、品牌宣传、技术支持、人才培养、政企对接,目的是帮助合作伙伴实现智能化、数字化转型。在创新中心的帮助下,至今已有多家合作伙伴借助华为云鲲鹏云服务实现了业务改进和优化,形成了良好的示范效应。


与此同时,鲲鹏产业源头创新中心还和鹏城实验室“鹏城生态”项目组多次交流。鹏城实验室作为 ARM+Linux 生态建设的先行者,在这方面具有丰富的经验。“鹏城生态”意图打造国内最大,要素最齐全的 ARM+Linux 生态环境。开发者云平台是“鹏城生态”重要组成部分,作为种类最全的 ARM+Linux 服务平台,正在为粤港澳、北京、长沙等多地用户提供 ARM+Linux 生态的应用服务。开发者云平台为用户提供物理机、虚拟机、云存储等服务,芯片包含了鲲鹏 916、920 等,操作系统覆盖麒麟、OpenEuler、Ubuntu、CentOS 等,可以为开发者提供高性能计算、分布式存储、大数据处理和机器学习等解决方案,以及开箱即用的云手机软件栈和深度学习软件栈。


鹏城实验室工程师张晓梨介绍,开发者云平台向所有人免费开放,所有环境都可以远程访问。平台上有开发者社区,支持应用上传,并为个人和企业开发者提供了展示和交流的窗口。平台的云手机软件栈兼容安卓应用通过轻量级虚拟化技术支持移动 OS 运行;深度学习软件栈则基于 ARM+Atlas 架构,支持开发多种类型的人工智能应用。

鲲鹏软件性能调优

在任何硬件平台上,软件想要充分发挥硬件的实力都必须做好性能调优工作。很多时候,软件优化带来的性能收益甚至远远超过了硬件算力提升的水平:



基于冯诺依曼架构的计算机分为 CPU、存储器和输入/输出设备几大部分。其中,CPU/内存、磁盘、网卡和应用是计算性能优化时主要考虑的四个方向。华为计算产品部软件迁移调优高级工程师陈龙分别讲解了华为云鲲鹏云服务在这几个方向上的软件调优要点。

CPU/内存

CPU/内存部分有软加速和硬加速两大模块。其中,软加速主要涉及编译、JDK 优化和 Numa 优化。


编译优化主要包括指令布局、内存布局、循环和除法优化等,都是为了让软件代码更好地配合 CPU 硬件的设计特性。JDK 优化主要涉及 JIT 和 GC 的针对性提升。基于鲲鹏云服务,华为推荐使用华为 JDK 和 Gcc 9.1 以上版本的编译器,以获得最佳的优化效果。


鲲鹏服务器芯片的一个关键设计理念就是 NUMA 多核架构。相比众多内核统一访问内存的 SMP 多核架构,NUMA 架构中不同的内核访问内存的速度可能是不一样的,如图所示:



如果一个进程调用了 NUMA CPU 中 node1 的核心资源,那么当这个进程需要访问 node2 的内存块时,就需要更高的延迟并导致性能下降。为此,应用在优化时就要尽可能避免这种情况,尽量让进程只访问速度最快的内存块,这种方法也叫亲和性设置。


亲和性设置有三种主流方法可选,第一种是使用系统工具 numactl,将具体的核心按编号绑定到进程上;第二种是将亲和性设置参数硬编码到程序中;第三种是调用开源软件配置文件中的亲和性参数设置。


除此之外,华为还为鲲鹏提供了一些加速库,提供类似 x86 平台上流行加速库的效果:



这些加速库会自动为应用选择合适的软硬加速路径,有条件时就调用鲲鹏芯片的硬加速模块(以加解密引擎为主),提供很高的加速比。

磁盘/网卡/应用

在磁盘性能优化方面,影响较大的是文件系统的选择。华为推荐在鲲鹏平台上使用 Ext4 和 XFS 文件系统,并针对大数据场景开启文件预读来提升性能。


在网卡端,主要需要根据实际应用场景来调整 frames 和 usecs 两个特性,根据延时和带宽需求来权衡控制两个参数。



在应用侧,开发者可以提高并发数、优化缓存操作、启用异步读写等,针对鲲鹏平台的系统特性进行整体配置。



在具体的性能调优实践中,第一步就是选择调优方向,包括三大块硬件和应用;第二步是性能采集、分析性能瓶颈、定位热点函数;第三步是针对平台特性充分利用硬件资源;最后还要在网络端寻求合适的参数平衡点。


ARM64 平台上 Hadoop 及 Hive 集群环境调优

麒麟软件服务器资深工程师王华功回顾了 2018-19 年,华为在国产数据库上搭建 Hadoop 环境的实践案例。这一课题使用的硬件是三台 TaiShan2280 服务器,基于鲲鹏 916 64 核心 ARM 芯片,具体配置环境如下:



在 TPC 测试中,使用 75G 大小的 lineitem.tbl,通过 Hive 加载进 hdfs 计算 Hadoop 集群的吞吐量。

优化措施

Hadoop 的负载压力主要集中在 CPU、网络、内存和磁盘几个方面,它们也是本次优化工作的重心。优化工作可分为 5 个步骤。


  1. 第一步是在 ARM 平台下重新编译 Hadoop,主要目的是将一些针对 x86 编写的原生库移植到 ARM 上,提升性能;

  2. 经过对比,选择了 Hadoop 环境中表现最好的 Oracle JDK;

  3. 数据节点改用 SSD 来提升 HDFS 分布式文件进程的性能。

  4. 调整 mount 参数和操作系统配置,禁用透明大页压实功能和内存交换;

  5. 调整 Hadoop 参数,针对服务器大内存环境调整线程运行时,调整网络参数等。


一些相关参数如下:





经过上述一系列调优工作,整个集群的 IO 吞吐量也得到了很大程度的提升:单节点吞吐量由 220MB/s 提升到 306MB/s,两节点达到近 500,三节点来到了 764。


王老师总结说,后续的调优工作要考虑到网络交换机的参数,还要考虑 Hadoop 的不同版本性能差异。具体的调优参数要根据应用和环境的不同来做针对性调整,凭借自己的经验和理论知识来权衡控制。

鲲鹏服务器上的云原生应用优化实践

所谓云原生应用,就是在云端直接运行原本跑在客户端上的应用,从而提供云手机、云办公、云直播、云游戏等全新的服务形式。对 AL(ARM+Linux)生态而言,云原生应用可以将数以千万的安卓应用无损迁移到 AL 上,极大丰富后者的应用生态,缩小其与 x86 桌面生态的差距。


鲲鹏服务器的云原生平台架构基于 Robox+Anbox,上面运行一个标准的容器云平台,并通过投射协议投射到各个客户端上。


鹏城实验室工程师周军提到,鲲鹏云原生平台主要基于开源项目,但在产品化的过程中遇到了很多问题。在调优过程中需要一一解决。


首先是兼容性问题,需要保证绝大多数安卓应用不经修改就能运行在鲲鹏平台上;其次是提升并发能力,在一台服务器上运行更多安卓实例来降低成本;第三是提升系统流畅度,降低网络延时,提升画面清晰度,比拟真机使用效果。

兼容性

在这个方向上,主要处理的是原生 Robot 方案支持的 OpenGL ES 版本过低的问题,并为安卓设备常见的各种传感器提供仿真模拟。


并发能力

为了尽可能提升单台鲲鹏服务器(64 核心)同时运行的云原生应用实例数量,有几个关键点需要注意:


  • 首先是充分利用 GPU,将 CPU 从一些繁重的渲染/编码任务中解放出来,使得每个实例占用的核心数量大幅减少;

  • 其次是限制容器内可建的 CPU 数量,防止应用过分索取 CPU 核心资源。

  • 根据单台主机实际需要的线程数量扩大默认配置。

  • 为应用实例建立退出机制,防止应用在后台一直占用资源。

  • 针对鲲鹏芯片的 NUMA 架构进行优化。

  • 根据实际应用场景选择合适的容器核心数量。

提升系统流畅度

云原生平台需要将虚拟的安卓系统的运算数据编码成视频流传送到客户端,因此对 GPU 侧的软硬件要求很高。需要注意的是,鲲鹏 NUMA 架构需要考虑 GPU 的绑定优化,避免增加 GPU 方面的延时。此外还要根据应用场景、显卡性能、显存特性等具体情况进行优化。


在调优思路方面,周老师给出了一个三步走的建议:


  • 第一步是建立基准,找出系统的关键性能参数并评测出来;

  • 第二是利用好工具,观察调优点的底层状态,定位具体的瓶颈加以改进

  • 不要一次调整太多,而是每次只改一个参数,不断迭代来逐渐接近最优水平。


平台下一步的优化方向包括去掉转换层、通过分时复用提高伪并发数、通过 SSD 提升加载速度等。目前平台已经上线试运行,感兴趣的用户可以免费申请试用:


https://dw.pcl.ac.cn

鲲鹏软件迁移

在这一部分,华为鲲鹏计算产品部软件迁移调优高级工程师唐启稳分享了鲲鹏平台的软件迁移思路和相关案例。


迁移流程


唐老师总结说,向新平台迁移软件时,首先要从官方文档入手,获取源码、查询依赖项和编译方法等。下一步是使用扫描工具扫描依赖项,找出闭源、无法移植的部分,考虑替换或屏蔽等手段。处理好依赖项后即可对整个应用进行编译移植工作。

迁移案例

首先是一个科学计算应用的迁移。原始应用主要依赖三个模块,其中 MPI 编译器和 MKL 加速库的迁移出现了障碍。MPI 使用的官方库与鲲鹏平台不兼容,因此最后改用了兼容的 Openmpi;MKL 是专门针对 Intel 芯片优化的数学计算库,参考社区案例后最终选择了用 Openblas 替换。解决这两个模块的迁移问题后,整个应用就很容易编译通过了。


第二个案例是 NiFi,一个基于 Java 的开源大数据工作流平台。在向鲲鹏平台迁移的过程中发现它的一个库只有 x86 版,没有 aarch-64 版。经过分析确认这个模块只在自动测试时会调用,不影响软件的整体功能,最后就对它做了屏蔽处理。


第二个案例是 Pandas 数据分析包。它基于 numpy 来解决数据任务,但在迁移过程中找不到 numpy 模块。经过分析,发现原来是安装的 numpy 版本号不匹配安装脚本要求,于是手动修改版本号解决了问题。


第三个案例是 OpenCV 迁移。迁移过程中遇到的问题时无法获取源码,原因是基于内网的迁移无法连接外网,于是手动下载了文件并安装编译。从这里看出,具体的迁移实践中网络故障也是需要注意的潜在问题。

迁移工具和社区资源

华为提供了一些常用的工具帮助开发者完成迁移工作,包括依赖项的分析扫描工具、代码迁移分析工具和性能优化工具等。开发者还可以访问鲲鹏社区来查找迁移经验文档,求助专家支持;在 OpenLab 知识库上可以找到兼容性列表和一些高频开源软件的迁移指导与安装手册。最后,开发者也可以使用鲲鹏小智搜索引擎提问,寻求帮助和资料。

2020 鲲鹏应用创新大赛深圳区域赛介绍

为促进鲲鹏行业解决方案孵化,加速区域生态发展,全国多地创新中心联合举办“鲲鹏应用创新大赛 2020”。本次大赛已于 7 月 1 日开启报名,总奖金池为 500 万元,开放 13 个区域赛和 1 个综合赛区,深圳区域赛——“鲲鹏凌粤·展翅鹏城 鲲鹏应用创新大赛 2020”由鲲鹏产业源头创新中心主办,设置了“金融”“政府”“大数据”“ARM 原生应用”和“开放命题”5 个赛题,面向具备软件开发背景和解决方案的企业参赛者,同一家企业允许多个不同解决方案的团队报名参赛。每支队伍人数不超过 5 人。各赛题优胜队伍(一等奖)将由鲲鹏产业源头创新中心推选参加 “华为开发者大赛 @鲲鹏应用创新大赛 2020”全国赛。


比赛时间安排如下,具体参赛信息可点击链接访问。



公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-07-17 10:151119

评论

发布
暂无评论
发现更多内容

348字节实现精简版吃豆人小游戏

南城FE

JavaScript 前端 游戏

SDK对比测评|如何科学做直播产品技术选型?

音视频开发_AIZ

音视频 技术选型 直播推流 音视频技术 测评对比

如何利用item_get接口提供的数据进行商品比较和筛选?

技术冰糖葫芦

API 文档

自建大数据平台迁移腾讯云EMR最佳实践

腾讯云大数据

EMR

Kosmos实现无状态工作负载跨集群平滑扩展

畅聊云原生

全面预算管理平台:让企业管理智慧升级

智达方通

智慧管理 全面预算管理

Milvus 再上新!支持 Upsert、Kafka Connector、集成 Airbyte,助力高效数据流处理

Zilliz

kafka Milvus Zilliz airbyte

Todolist工具哪个好?九款最优秀的待办事项管理工具

PingCode

项目管理 待办事项管理

零束科技:博睿数据是智能化路上的可靠“守护者”

博睿数据

#运维

案例解析关于ArkUI框架中ForEach的潜在陷阱与性能优化

华为云开发者联盟

鸿蒙 开发 华为云 HarmonyOS 华为云开发者联盟

告别盲目制作,5分钟教你完全理解用户旅程图!

Geek_09ea8e

模板 用户旅程图

开发体育赛事直播APP平台实现“流量”向“增量”的成功转化

软件开发-梦幻运营部

从HumanEval到CoderEval: 你的代码生成模型真的work吗?

华为云PaaS服务小智

云计算 软件开发 华为云

JNPF低代码平台详解 -- 系统架构

树上有只程序猿

低代码 应用开发 JNPF

基于低代码平台开发应用程序

这我可不懂

低代码 JNPF

袋鼠云产品功能更新报告08期|近百项全新功能和优化,你要的都在这里!

袋鼠云数栈

大数据 数据中台 产品更新 产品功能

Kosmos介绍

畅聊云原生

交易所开发:服务为您的企业提供支持

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

如何根据获取到的商品信息制定更加精准的营销策略?

技术冰糖葫芦

API 文档

分布式基础概念-分布式缓存[2]

派大星

Java 面试题

Amazon CTO Werner Vogels:2024年及未来四大技术趋势预测

亚马逊云科技 (Amazon Web Services)

re:Invent AIGC Amazon S3 大语言模型

谁说低代码做不了复杂的企业应用?

代码生成器研究

Illustrator 2023 for mac(Ai2023矢量设计软件)v27.9.0中文激活版

mac

AI 苹果mac Windows软件 矢量图软件 llustrator 2023

Linux MIPI 调试中常见的问题

快乐非自愿限量之名

Linux 运维 调试 linux运维

RUM增强APP端快照配置全量会话回放与自定义协议网络请求采集功能

博睿数据

低代码如何提高生产力?

互联网工科生

低代码 项目开发 JNPF

技术人的 2023 总结|火山引擎开发者社区联合 InfoQ 写作社区第四届有奖征文获奖公布!

InfoQ写作社区官方

云原生 音视频 火山引擎 热门活动 #大模型

拿来就用!6款详细的用户旅程图模板,一键下载!

Geek_09ea8e

模板 用户旅程图

用爱发电,分享快乐,真·免费GM公益服游戏!

echeverra

公益服

从 Oracle 到 TiDB,全链路数据迁移平台核心能力和杭州银行迁移实践

PingCAP

数据库 数据库迁移 TiDB 银行业

ThreadPoolExecutor线程池内部处理浅析

快乐非自愿限量之名

Python 内部处理

迈入鲲鹏计算产业的大门:一文带你了解鲲鹏开发生态的点点滴滴_架构_王强_InfoQ精选文章