写点什么

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

评论

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

Advanced RAG 01:讨论未经优化的 RAG 系统存在的问题与挑战

Baihai IDP

AI LLM 企业号 4 月 PK 榜 rag 检索增强生成

适合新锐机构的教务管理系统——“校猩猩”正式上线

科技热闻

一定要避坑:关于微信H5分享,温馨提示你不要再踩坑了!!!

Immerse

Vue 分享 H5

面试官:Session和JWT有什么区别?

王磊

Java 面试题

视频创作者必备应用!三步帮你解决前置内容条件,打造专属大片!

飞桨PaddlePaddle

百度 BAIDU 百度飞桨 AI应用 飞桨星河社区

行云绽放签约湾区协同创新计划,共创数字新篇章

行云管家

云计算 数字化 湾区

NineData云原生智能数据管理平台新功能发布|2024年3月版

NineData

NineData 研发流程 数据库DevOps 企业级数据库 敏感数据管理

IT外包行业未来发展趋势

Ogcloud

IT外包 IT外包公司 IT外包服务 IT外包企业 IT驻场外包

Linux中的conntrack命令深入解析

GousterCloud

Linux 运维

什么是智慧厕所?如何打造智慧厕所?

光明源智慧厕所

智慧厕所 智慧公厕

深入探索:主流低代码开发平台的应用场景及开发流程

优秀

低代码开发平台 低代码平台 低代码平台应用场景

当设计遇见技术—低代码开发平台设计探索

inBuilder低代码平台

设计 交互式设计

Penpad Season 2 质押突破350ETH,参与可获Scroll生态空投

西柚子

你真的会写侧边栏收起动画吗?

前夕

CSS css3 前端

Flink 流批一体在模型特征场景的使用

Apache Flink

大数据 flink 流批一体

ChatGPT全方位解析:如何培养 AI 智能对话技能?

测试人

软件测试

4款免费可用的数据集成平台亮点

RestCloud

ETL 数据集成平台

新兴势力展露头角? ERC-1111 协议能否开启下一个热潮

NFT Research

NFT NFT\

Postman 请求参数传递技巧:详解 Query、Path 和 Body 的用法

Liam

Java 后端 Postman 开发工具 API

中软协AI沙龙热议:智领云CEO彭锋解读AI大模型技术的应用前景与趋势

智领云科技

容器 AI大模型 大模型 中软协

开源流量回放平台 AREX 在携程的大规模落地实践

AREX 中文社区

Java 开源 测试 流量回放

【FAQ】HarmonyOS SDK 闭源开放能力 —Asset Store Kit

HarmonyOS SDK

HarmonyOS

🔥🔥🔥最好用的SDK版本管理器(version-manager)

Geek_5bcc45

Java Go node.js Py Version

嘉为蓝鲸DevOps研发效能管理平台V6.0重磅发布!

嘉为蓝鲸

DevOps 研发管理 研发效能 价值流

度安讲 | 首期「数据安全与隐私保护合规」技术沙龙顺利召开

百度安全

2024-04-03:用go语言,在一个小城市里,有 m 个房子排成一排, 你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n ), 有的房子去年夏天已经涂过颜色了,所以这些房子不可以被重新

福大大架构师每日一题

福大大架构师每日一题

我后悔了,智慧公厕来了

光明源智慧厕所

智慧厕所 智慧公厕

美股上市辅导合伙人苏凌丘调研万达影业 欲打造VR眼镜沉浸式影院平台

科技热闻

OpenMLDB vs Redis 内存占用量测试报告

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

【论文速读】| MASTERKEY:大语言模型聊天机器人的自动化越狱

云起无垠

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