写点什么

攻坚计算产业下一站,华为联合 18 城鲲鹏创新中心聚力打造开发者创享日

  • 2020-07-04
  • 本文字数:3021 字

    阅读完需:约 10 分钟

攻坚计算产业下一站,华为联合18城鲲鹏创新中心聚力打造开发者创享日

5G 时代,新基建浪潮风起云涌,新兴技术百家争鸣,推动着计算产业上新一轮的开疆拓土,大浪淘沙之下怎样才能立足未来?


如果把新基建比作一辆汽车,新兴技术就是四个轮子,算力则是提供动能的汽油。伴随着云计算、AI、5G 的快速布局,创新应用实现了加速落地,多样化应用催生出多样化算力的需求,市场既需要通用计算算力也需要异构计算算力,创新应用数量和种类的增长让计算单元更加丰富化。


同时,受摩尔定律放缓的影响,算力和性能遭遇发展瓶颈,企业的算力需求却在持续飙升,两相对冲之下,计算产业的创新与变革已经迫在眉睫。


作为先行者,华为早已为计算产业和行业生态的建设埋下伏笔。


2019 年 1 月,其推出鲲鹏 920 处理器,针对大数据、分布式存储、数据库和云服务等场景进行了优化,具备多核、并发处理效率高等特点,同时兼容 ARM 架构,未来具备独立演进能力。在强大的技术底座支撑下,华为计划在全国 18 个城市成立鲲鹏生态创新中心,吸引着越来越多的企业和开发者加入到鲲鹏生态建设中,共同推动计算产业的发展。


然而,算力要想大显身手,同样离不开软件辅助。鲲鹏早早便预见到了这一点,从软硬协同着手进一步提升处理器的性能,以软件迁移和调优两方面助力合作伙伴实现破局。在丰富的实践积累下,目前其已经沉淀了诸多迁移和调优方面的经验与方法论。

x86 向 ARM 迁移成趋势,软件迁移的知识你懂多少?

随着移动互联网、物联网和边缘计算的兴起,x86 架构称霸互联网的时代逐渐落幕,对于普通消费者来说,x86 的缺点是功耗大,对于开发者来说,则存在通用寄存器数量少、系统速度慢、对计算机硬件的利用率低等问题。由此可见,在移动互联网盛行的当下,不管是从市场角度还是从企业端的需求来看,x86 架构的不足已经非常明显,架构发展之路亟待创新。


在此背景下,蛰伏多年的 ARM 架构凭借着低能耗、低成本、与主要用户群体设备架构统一等优势实现了异军突起,成为众多主流科技公司的最优选择,从 x86 迁移到 ARM 也成为一种主流趋势。但由于两种架构之间存在的架构、指令集、向量寄存器的差异问题,也使得这条迁移之路异常坎坷,一些开发者甚至“谈迁移而色变”。


不同的开发语言面临的迁移难点也不尽相同,以最为复杂的 C/C++代码迁移为例,其最具代表性的有五类迁移问题,华为鲲鹏基于此已经存在相对成熟的迁移实战经验:


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

  • 编译宏移植。以编译器自定义宏为例,x86 编译选项是__x86_64__或__x86_64,对应的 ARM 编译选项是__aarch64__。

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

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

  • SSE intrinsic 函数移植。这同样是硬核技术点,SSE/NEON  intrinsic 函数是一些列 c 函数调用,编译器可将其替换为适当的 SSE/NEON 指令。SSE/Neon intrinsic 函数几乎提供与编写 SSE/NEON 汇编指令相同的功能,但是将寄存器分配等工作留给编译器,以便开发人员可以专注于算法开发。


开发语言复杂精妙,C/C++代码迁移只是冰山一角,但仅仅这一角都不是寥寥数语能够概括的,鲲鹏的迁移实战经验远不止于此。诸如 Java/Python 代码迁移、Maven 软件构建、RPM 软件迁移,在从 x86 向 ARM 的迁移过程中都存在着诸多问题,而鲲鹏均沉淀出了相对成熟的方法论,以各地创新中心为出口,以技术沙龙为课堂,向开发者源源不断地输出着这些实践经验。


回归到现实场景,企业之所以想要迁移到不同的平台,原因只能是新的平台有着更加强悍的算力基础,方便企业更好地开展自身业务,但往往复杂的代码迁移就已经磨去了开发者们所有的耐性,更遑论在迁移过程中同步思考通过性能调优充分发挥新平台的算力优势。而如果调优做不到位,迁移的效果同样会大幅缩水。


如今,迁移已经找到捷径,调优的捷径又在何方呢?

四座大山横亘,软件调优究竟有没有捷径?

同软件迁移一样,作为提升算力的一种有效途径,软件调优也是一门复杂学问。从冯诺依曼瓶颈来看,软件调优主要包括四个方向,分别是 CPU/内存、磁盘、网卡、应用,华为鲲鹏从这四点出发,在每个方向下总结出了不同的优化方法,累计共 10 大方法,被称之为“性能调优十板斧”。


以编译器为例,如何优化才能打破 CPU/ 内存瓶颈?基于芯片微架构,鲲鹏在实践中总结的优化方式如下:


  • 指令布局优化:拆分函数代码,按照冷热指令重新排布,提升指令 Cache 命中率

  • 内存布局优化:按照内存数据访问频度,组合热数据区域,提升数据 Cache 命中率

  • 循环优化:分析循环迭代间数据访存依赖关系, 对无依赖的循环并行到多核执行,无依赖的数据自动矢量化计算,加速程序运行


同时,针对 SMP 系统(可以使多个 CPU 汇集到同一台计算机上以提升数据处理能力)下核数的扩展受到内存总线限制的问题,搭载非统一内存访问架构 NUMA 有望解决,但想要充分发挥 NUMA 的性能,就需要克服内存访问速度不均匀的挑战,鲲鹏的应对方案是采用 Nginx 绑核优化,即将 Nginx 进程分布到各个 NUMA node 之内,让系统整体的负载比较均衡,按照中断号将中断服务和 Nginx 绑定在一个 NUMA 内,性能将会有非常明显的提升。


以上均为 CPU/内存的优化方法,但受篇幅所限也只能遴选出一二知识点进行概述。在磁盘、网卡、应用这三座大山上还存在着诸多难走的路,鲲鹏通过实践也已经摸索出了一套翻越大山的有效路径。


同时,其还为开发者打造了一条登峰的捷径,那就是鲲鹏开发套件,包括 Dependency Advisor(分析扫描工具)、Porting Advisor(代码迁移工具)、Tuning Kit(性能优化工具),是一套协助开发人员面向鲲鹏处理器快速进行应用软件迁移与调优的工具集。


依托于华为代码迁移与性能调优的专家经验,开发套件能够对海量代码进行自动化扫描和分析,识别出需要移植的依赖库文件,给出专业的移植报告与建议,并提供从系统、进程、函数到代码的全景性能分析,为开发提供从软件评估、代码移植到性能调优端到端的一站式服务,助力迁移和调优达到事半功倍的效果。

鲲鹏展翅 18 城,共话计算新时代

秉持着“硬件开放、软件开源、使能伙伴”的初心,华为一直毫不吝啬于对外开放自己的技术能力。以技术创新为动力,以技术布道为使命, 鲲鹏生态愈发强大,携手越来越多的开发者和合作伙伴共同攻坚计算产业下一站,推动计算产业新时代的到来。


7 月 11 日,华为将在全国 18 个城市同时举办鲲鹏开发者技术沙龙,本次活动的主题为「18 城鲲鹏创新中心开发者创享日」,届时华为技术专家将为 18 个城市的开发者带来关于鲲鹏生态发展战略、软件迁移与调优的实践经验和对应方法论、Open Euler 操作系统的介绍等课程,同时还将发布各区域下半年的技术沙龙活动日历,并启动鲲鹏应用创新大赛的招募,联合全国的开发者共同推动鲲鹏计算产业的发展。



码上选择你的专属城市课堂参与活动报名


赶快来鲲鹏 18 城创新中心课堂前排占座,不仅有与名师一对一沟通交流的机会,更有上机实操演练环节让你轻松将晦涩难懂的技术转化为身经百战才能练就的技能!


点击阅读原文获取开发者的专属报名通道


2020-07-04 21:501921

评论

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

零代码应用搭建规范建议

明道云

百度百舸 · AI 异构计算平台,加速自动驾驶模型迭代

百度Geek说

人工智能 自动驾驶 企业号 1 月 PK 榜

web前端培训课程怎么选择

小谷哥

复习前端:JavaScript 字符串操作方法

devpoint

JavaScript 前端开发 字符串处理

扪心自问,我们在用户旅程的投入有多匮乏?

Yestodorrow

软件测试/测试开发 | 接口测试中,请求超时该怎么办?

测试人

软件测试 自动化测试 接口测试 测试开发

将混沌实验内建到持续交付过程中提升系统稳定性

QE_LAB

混沌工程 混沌测试 测试技术

北京有哪些java培训中心

小谷哥

大公司为什么禁止SpringBoot项目使用Tomcat?

程序员大彬

Java springboot

基于 std::variant 的运行时多态

SkyFire

c++ 多态

100万条数据解读2023银行APP用户体验升级方向

易观分析

金融 手机银行

到底卡在了哪里,2023年再撒谎网慢就说不过去了

Yestodorrow

架构 可观测性 网站性能

如何减少网站卡顿的代码级别详细文章

Yestodorrow

厉害了!天翼云位列中国医疗云基础设施服务市场榜首

天翼云开发者社区

多活数据中心链路智能调度场景

智维数据

数据中心 DNS 智能运维 应用交付平台 可视化数据

高效学 C++|函数参数的引用传递和函数重载

TiAmo

c++ 编程语言、

大数据培训课程哪家比较好

小谷哥

视觉大模型训练和推理加速

百度Geek说

人工智能 深度学习 transform 企业号 1 月 PK 榜

再获认可!天翼云荣获“行业应用实践优秀合作伙伴”授牌

天翼云开发者社区

BSN祝全体技术工作者新春快乐!

BSN研习社

培训学习前端开发技术好吗?

小谷哥

丢掉丑陋的 toast,会动的 toast 更有趣!

岛上码农

flutter ios 安卓 移动端开发 跨平台开发

小令动态丨令牌云2022年度盘点

令牌云数字身份

盘点2022

数据可视化图表系列解析——雷达图

Data 探险实验室

数据分析 可视化 数据可视化 图表 可视化数据

“天翼云杯”决赛收官!看看你pick的队伍战绩如何?

天翼云开发者社区

架构5作业

梁山伯

加速数字化转型,天翼云携手央国企积蓄发展新动能

天翼云开发者社区

IM通讯协议专题学习(八):金蝶随手记团队的Protobuf应用实践(原理篇)

JackJiang

网络编程 即时通讯 protobuf im开发

如何打造一支有战斗力的团队?

石云升

极客时间 1月月更 技术领导力实战笔记

重新思考边缘负载均衡

俞凡

架构 netflix 大厂实践

参加前端培训班哪个好

小谷哥

攻坚计算产业下一站,华为联合18城鲲鹏创新中心聚力打造开发者创享日_开源_马红伟_InfoQ精选文章