写点什么

攻坚计算产业下一站,华为联合 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:501801

评论

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

数字化时代商业银行客户触达策略研究 从数据到服务 由场景到生态

CECBC

C#多线程开发-线程同步02

Andy阿辉

C# 多线程 多线程并发 8月日更

VSCode配置JAVA开发环境

IT蜗壳-Tango

Java 9月日更

智汇华云 | ArSDN之分布式路由及浮动IP简介

华云数据

Linux之last命令

入门小站

Linux

07. 图灵测试与第一次AI浪潮

Databri_AI

人工智能

百分点感知智能实验室:语音识别技术发展阶段探究

百分点科技技术团队

语音识别 百分点科技 感知智能

模块1-作业

笑看风雨情

快手平台严管售卖“仿黄金类饰品”,直播带货在收割消费者

石头IT视角

AlphaFold2“登陆”北鲲云平台,云计算助力科研大放异彩

北鲲云

细思极恐!Alibaba新产SpringBoot深度历险(嵩山版)开源

Java 编程 架构 面试 架构师

SharingSphere 源码解析 -- 真实SQL生成探索

数据库 源码

在线JSON转MySQL建表语句工具

入门小站

工具

RTD 比率式温度测量传感器设计思路

不脱发的程序猿

学习 嵌入式 电路设计 硬件开发 ADI

POM 文件中 licenses 许可证的定义

HoneyMoose

GitHub获120w+star的JDK源码剖析手册,竟出自Alibaba高管之手?

Java 架构 面试 程序人生 Alibaba

不用手机,如何让猫给你打视频电话丨日常小技

声网

物联网 目标检测 目标跟踪

Lua 入门到精通( 02 Lua 基本语法)《做一个脚本高手》

陈皮的JavaLib

lua Linux 运维 8月日更

跨越AI天堑时:行动代号“盘古大模型”

脑极体

Zookeeper集群搭建

Mike

我遇到的那些工长

escray

生活记录 8月日更

网络攻防学习笔记 Day122

穿过生命散发芬芳

网络安全 8月日更

区块链技术发展趋势与银行业探索实践

CECBC

中证协组织专题座谈会,加快推进区块链技术在证券行业应用

CECBC

你知道 ES6~ES12等叫法是怎么来的吗?

编程三昧

JavaScript ecmascript 8月日更

有迹可循之CheckList

编号94530

Code Review 架构设计 checklist

【Flutter 专题】60 图解基本 Dialog 对话框小结

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

Vue进阶(八十七):输入框事件 blur 与 change 的差异

No Silver Bullet

Vue 9月日更

netty系列之:自建客户端和HTTP服务器交互

程序那些事

Java Netty 程序那些事

读书笔记 -《数据密集型应用系统设计》- 数据编码

KayTin

深入了解 RocketMQ 之ACL

邱学喆

签名 白名单 资源权限校验

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