写点什么

鲲鹏 DevKit:鲲鹏平台代码迁移利器|QCon

  • 2021-06-17
  • 本文字数:3382 字

    阅读完需:约 11 分钟

鲲鹏DevKit:鲲鹏平台代码迁移利器|QCon

用户将软件从 x86 平台移植到华为鲲鹏平台时,由于平台间体系结构和指令集各不相同,这时就需要利用跨平台工具链对源代码进行重新构建,这中间就会碰到一些棘手的问题,比如编译器无法直接跨平台编译源代码工程中平台相关的汇编代码,又或者当用户把应用迁移到鲲鹏平台上之后,鲲鹏多核的优势却无法充分发挥。因此,如何把 x86 源代码中的汇编代码高效识别并迁移到鲲鹏平台上,同时保证迁移后的性能,是鲲鹏生态建设和拓展过程中急需解决的一个技术课题。

 

InfoQ 记者有幸在QCon 2021 全球软件开发大会上,就这个问题采访到了华为鲲鹏编译技术专家乐永年,他的主要研究方向是鲲鹏平台的编译技术和应用性能优化。

 

以下是视频采访的全部内容,为方便读者查看,视频下方也附上了文字内容。

 

00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    InfoQ:乐老师您好,欢迎来到 QCon 并接受我们的采访,请您先自我介绍一下吧。

     

    乐老师:好的,我的名字叫乐永年,加入华为之前我从事了 20 多年的软件开发工作,包括编译器、加速库以及软件的性能调优我都干过,目前我在华为鲲鹏担任编译器专家,从事鲲鹏开发套件相关的设计和架构工作。

     

    InfoQ:您选择加入华为鲲鹏主要有哪些方面的考虑?

     

    乐老师:刚才也提到了,我之前从事了相当多的软件开发工作。最近鲲鹏正在下一盘大棋,它实际上从硬件开放、从基础软件的开源、到面向生态开发者的DevKit开发套件以及鲲鹏应用使能套件BoostKit,全系列全栈投入,打造一个新的计算底座以及新的计算生态,让我觉得这里面有很多机会。我之前一直有一个梦想,我希望我做的产品能够为广大用户所使用,同时做的工作能够改变大众的生活,这样看的话鲲鹏对我来说是个理想的工作,能帮助我实现梦想,我也希望在鲲鹏这一块继续努力添砖加瓦。

     

    InfoQ:那您现在在鲲鹏做的事情主要有哪些技术挑战?

     

    乐老师:从大的角度来说,计算主要是通过算力来衡量,算力是数据处理的能力,它广泛存在于各个硬件设备里面,包括我们的手机,包括我们的 PC,包括我们的硬件服务器。从我们各领域角度来看,我们的数据中心,以及我们的高铁,行行业业方方面面都需要算力的支撑。但是随着最近大数据以及 AI 的蓬勃发展,原有的算力已经跟不上现有发展的需要,人民日益增长的物质文化需求满足不了了,所以我们需要从各个方面考虑,比如说我们的硬件,包括我们的硬件开放、软件开源,拧在一起,和我们的生态伙伴一起形成合力,打造新的生态,打造新的算力。这里有很多挑战,比如传统的摩尔定律,已经不能满足发展需要,原来的单一架构也不能满足算力的增长需要,这里我们要和生态同仁一起把这个新的生态、新的算力打造好。

     

    InfoQ:您在会议上演讲主题是关于跨平台迁移的,那么从其他平台到华为鲲鹏的跨平台迁移过程中,有哪些技术难点?你们是怎么解决的?

     

    乐老师:我们打造了 DevKit 这个面向开发者的开发套件,它提供了一站式全流程的工作方式,包含了迁移,包含了调优,也包含了编译以及诊断等一系列能力。在这里它主要解决两方面的问题。第一个是把应用从 X86 平台迁移到鲲鹏平台,同时保持迁移以后的性能,因此迁移在这里占了一个主要的地位。在这个迁移过程中有两套方案,针对不同的场景。一个就是有源码迁移,一个就是无源码迁移。

     

    对于有源码迁移,这里碰到的挑战不少。首先,应用的语言多种多样。其次,编译的选项很复杂,很多编译的选项跟平台密切绑定,密切相关。第三个点就是在构建脚本里,很多构建脚本是动态执行的,这些都需要在开发套件里,通过代码迁移工具插件得到一个很好的解决。比如说这里的代码迁移工具插件能够提供八种语言的支持,同时这里需要提供一个静态的扫描,把用户和平台相关的一些编译选项提示出来,让用户修改。我们也在攻关的动态执行技术,能够让构建脚本在静态的方式下得到解释执行,把平台相关的问题都找到,这些是有源码迁移的难点。

     

    对于无源码迁移也有不少挑战,比如说我们怎么保证迁移后的应用性能衰减尽量少,这里动态二进制的优化技术可以帮助我们把这个问题克服。

     

    InfoQ:华为鲲鹏原生编译器毕昇是你们的产品,在设计这个编译器的过程中,有哪些有意思的技术难点?

     

    乐老师:毕昇编译器是我们华为鲲鹏原生的编译器,它通过挖掘鲲鹏架构特点,提供最佳的代码质量,发挥鲲鹏原生性能优势,这里竞争力构筑的方向就是高性能。

     

    对于服务器而言大概有这几个模块,第一块是 CPU,第二块是内存,第三块是存储 I/O,第四块网络 I/O,这四块是密切相关的,对性能最有影响。编译器主要影响第一和第二这两个部件,一个是 CPU,一个是内存,围绕这两个部件,我们绞尽脑汁想各种各样优化的手段,我们这里的毕昇编译器的架构师魏伟为此头发也慢慢变白了。

     

    我这里具体展开讲一讲,对于 CPU 而言这里是比较传统的一种优化,对于鲲鹏特有的流水线架构,这里进行了指令调度优化。对于鲲鹏特有的 NEON 指令集,我们也开发了不少并行化和矢量化的优化技术,把 NEON 指令的能力给充分利用起来,这是传统优化。

     

    对于内存而言,它实际上越来越成为性能的瓶颈,因为 CPU 的速度越来越快,但是内存的访存速度还是赶不上 CPU 发展的速度,我们在这里也开发了很多的优化手段,比如说我们对数组进行重排,同时对结构体进行布局的优化,通过一系列内存排布的优化大幅提升应用性能,除此之外我们还对鲲鹏本身的架构有针对性地对内存缓存的预取做了调整和增强,通过这些手段从 CPU 和内存的角度发挥硬件本身的能力,大幅提升了软件的性能。

     

    InfoQ:刚才我们一直在谈性能的问题,我想深入了解一下,你们是怎么保证程序移植后的性能问题呢?在性能保障这方面有哪些措施?

     

    乐老师:鲲鹏 DevKit 主要的工作,或者业务基本面,就是保证应用迁移,其次是保证应用迁移以后的性能得到维持,现在你这个问题就是关于性能维持方面。

     

    性能维持肯定不能只是靠一两个手段,我们从全流程开发套件使用过程中,在每个阶段都要考虑性能,在代码迁移阶段,我们有加速库插件,它能够针对代码里面常用的热点函数,进行自动识别和智能联想,做到鲲鹏亲和加速库的函数的一键替换,这是第一个。

     

    其次是在编译阶段,我们这里还有鲲鹏原生的毕昇编译器,能够挖掘架构本身特点,把我们应用的性能潜力充分发挥出来,这是第二个。

     

    第三个是我们还有一个独特的专门针对性能的调优工具,叫做性能分析工具。这个性能分析工具能够提供场景化和全系统的分析能力。帮助用户查找应用中性能的瓶颈,提供专业化的性能调优的建议,这是第三点。

     

    第四点是我们还打造了一个新的工具,这个工具就是异常诊断工具,这个异常诊断工具能够帮助用户诊断常见的性能异常,同时快速定位性能问题。

     

    通过这四种工具在源码级别的优化,保证迁移以后的性能能够维持。

     

    对于二进制代码没有源码的情况,我们这里还提供了动态二进制的翻译工具,这个翻译工具里面包含了大量的动态优化,能够把迁移过程中的的性能损耗降到最小,保证应用迁移后性能得到维持。

     

    InfoQ:除了快速迁移汇编代码的技术,DevKit 在设计过程中还解决了哪些关键难题?

     

    乐老师:我们还有无源码迁移的动态二进制翻译技术。实际上这两个问题是有点类似的,对于有源码的应用而言,有源码的代码里它有汇编,需要通过指令的翻译把原有的汇编代码变成在鲲鹏上的汇编代码,是种语言到语言的翻译。这是汇编代码范畴,和它对应的是指令。一个二进制应用程序,它没有源代码了,这时候我怎么在鲲鹏平台上很好地执行这个应用,这里用了一个类似的技术,叫动态二进制翻译技术,这个动态二进制翻译技术就是把一条条指令拆解出来,去动态地解释和执行,当然这个解释执行过程中性能肯定会有损耗,而且损耗还不少,所以在这个过程中会有大量的动态二进制优化技术在里面起作用,把性能损耗降到最少,保证迁移以后用户还可以使用这个应用。到目前为止,我们能够把性能损耗控制在 15%到 20%以内。

     

    InfoQ:DevKit 在哪些领域和行业有成功的应用呢?

     

    乐老师:DevKit 实际上跟鲲鹏平台密切相关,我们的鲲鹏平台在政府、金融、交通、电力各个领域都有非常不错的进展。在这里 DevKit 作为面向开发者使能的重要抓手,对于整个鲲鹏平台的拓展起了一个非常大的促进作用。到目前为止,我们鲲鹏的 DevKit,已经有五万开发用户,有三百多个合作伙伴,和我们一起打造鲲鹏的算力新生态。同时,这里打个广告,我们还有鲲鹏应用创新大赛,所有的参赛团队都会使用鲲鹏开发套件,打造他们的参赛作品,进行应用迁移、开发、调优和调试。

     

    InfoQ:好的,谢谢乐老师。

    2021-06-17 16:084131

    评论

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

    汉化版Microsoft Remote Desktop微软远程桌面使用教程

    理理

    无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案[含ollama部署]

    汀丶人工智能

    人工智能 agent LLMOps rag dify

    photoshop 2021 滤镜如何使用?ps滤镜库下载及安装【永久使用】

    理理

    ps2021破解版 photoshop 2021 滤镜 neural filters逆天滤镜 ps照片滤镜 photoshop 2021 安装包

    【永久使用版】Parallels Desktop 18虚拟机 for mac下载激活教程

    理理

    Parallels Desktop 18 Mac虚拟机 PD18破解版 Parallels 永久使用版

    奈飞中文影视_Netflix for mac v2.13.0激活版 支持m1/m2

    理理

    Clicker for Netflix Netflix客户端 Netflix mac版破解版下载 网飞客户端

    潜在新就业岗位超300万个 原生鸿蒙开发创造百万级人才缺口

    最新动态

    面试这么多,为什么拿不到offer?

    老张

    面试 求职 职场成长

    Advanced RAG 11:对用户输入的内容进行「分类处理」和「再优化」

    Baihai IDP

    AI LLMs 企业号 8 月 PK 榜 rag RQ-RAG

    地理编码之旅,一场地址与坐标的漫游

    HarmonyOS SDK

    HarmonyOS

    5款超好用的苹果电脑实用工具,提高Mac使用体验

    Rose

    Dopple Labs 选择 Zilliz Cloud 作为安全高效的向量数据库

    Zilliz

    人工智能 Milvus Zilliz 向量数据库 大语言模型

    去中心化swap博饼交易所底池LP质押挖矿分红系统开发指南

    V\TG【ch3nguang】

    去中心化swap博饼交易所 LP质押挖矿分红系统开发

    基于51单片机设计的公交车LED屏

    DS小龙哥

    8月月更

    ps2019直装版:Photoshop 2019 for Mac/Win 版

    你的猪会飞吗

    Mac软件下载站 PS2019 Mac中文版下载 mac破解软件下载

    苹果Mac电脑想要实现双系统运行,Parallels Desktop虚拟机来帮你!

    Rose

    Parallels Desktop 虚拟机 Mac双系统安装

    专题 | IAM业界热度不减,2024市场持续井喷(二)

    芯盾时代

    身份安全 iam 身份和访问管理 零信任

    后期混音效果全套插件Waves 15插件下载安装(mac&win))

    Rose

    混音套件 Waves 15插件下载 Waves 15破解教程

    永久使用 Photoshop CC 2019中文破解版下载安装包(mac&win)

    理理

    好用的微软代码编辑器Visual Studio Code免费版(mac&win)

    理理

    Visual Studio Code 微软代码编辑器

    全红婵夺冠!数业智能心大陆告诉你原生家庭在背后发挥了怎样的力量

    心大陆多智能体

    智能体 AI大模型 心理健康 数字心理

    实力认证!望繁信科技入选2023WISE未来商业之王年度企业

    望繁信科技

    数字化转型 大模型 流程挖掘 流程智能 上海望繁信

    中国开发者画像报告:鸿蒙开发人才缺口达百万,薪资与技术成长超预期

    最新动态

    【ACL2024】阿里云人工智能平台PAI多篇论文入选ACL2024

    阿里云大数据AI技术

    人工智能 阿里云 acl 论文 PAI

    mac&win xmind思维导图破解安装包(附Xmind入门指南)

    理理

    XMind 2024破解版 XMind思维导图下载 xmind使用教程

    交易所/永续合约跟单交易系统开发稳定版/案例搭建/成熟技术

    V\TG【ch3nguang】

    CSS萤火虫按钮特效

    南城FE

    CSS 前端 动画

    面经精选:数据库高频面试十问

    王中阳Go

    数据库 面试

    如何卸载Maxon产品?红巨星系列插件如何彻底清除

    Rose

    红巨星激活系列插件

    MES系统如何实现生产管理自动化

    万界星空科技

    mes 万界星空科技 制造业工厂 生产管理MES系统 自动化生产

    开发者洞察报告:百万级鸿蒙岗位缺口,开发者薪资涨幅43.1%

    最新动态

    苹果Mac图像修图软件Photomator和Pixelmator Pro 有什么区别?

    Rose

    鲲鹏DevKit:鲲鹏平台代码迁移利器|QCon_文化 & 方法_张浩_InfoQ精选文章