【鲲鹏经典直播征文】+【鲲鹏DevKit开发套件】软件如何修改?迁移?发挥鲲鹏最大性能?
一、趋势挑战
-
趋势
1)端侧
ARM在端侧已经占据超过90%的市场,发挥移动互联网生态优势,从智能终端延伸到PC市场。ARM架构正成为计算领域创新最活跃的领域。
2)云侧
云时代以及端边云协同,驱动ARM成为新的选择。可用于HPC场景,公有云场景和数据中心场景。
-
挑战
1)软件跨平台迁移需要解决指令差异问题
指令长度不同,指令操作符和操作数不同,汇编指令含义不同等。
2)软件跨迁移面临的挑战
需要人工进行分析,周期长效率低,门槛较高。
二、鲲鹏开发套件
通过以上分析,ARM架构可以说是趋势之一,但应用从X86架构转为ARM架构还是存在以上问题。故华为鲲鹏基于鲲鹏生态开发了鲲鹏开发套件(详细见下图)。
1)迁移
优势:扫描快、检出全、指导精、构建易
分析扫描:扫描并自动分析软件包(非源码包)、已安装的软件,提供可迁移性评估报告,同时提供鲲鹏平台上兼容的依赖文件下载链接。
源代码迁移:扫描并自动分析软件代码(包括C/C++/Fortran/汇编/Python/Java/Scala/Go等),评估迁移所需替换的依赖文件,并给出程序源码中的修改建议,并将程序源码中的x86汇编指令翻译成功能对等的鲲鹏汇编指令。用户可以根据工具提供的修改建议快速完成源码修改,建议中包含的源码甚至可一键替换,直接编译使用。
软件包重构:分析x86平台上Linux软件包的构成及依赖性,将平台相关的依赖文件替换为鲲鹏平台兼容的版本,并重构成适用于鲲鹏平台的软件包。
专项软件迁移:支持将部分专项软件源码一键自动化迁移修改、编译并构建成鲲鹏平台兼容的软件包,帮助用户快速迁移几类解决方案中常见的专项软件。
增强功能:支持软件代码质量的检查功能,如在64位环境中运行的兼容性检查、结构体字节对齐检查和内存一致性检查等增强功能。
2)性能加速
优势:“零”开发、高性能,平均提升10%+
软件加速:基于鲲鹏指令的加速库,只修改软件代码实现,通用性高。
硬件加速:基于鲲鹏加速引擎的加速库,需要专有硬件支持,通过硬件驱动使能。
鲲鹏加速库包括:压缩库,系统基础库,加解密库,媒体库,数学库,存储库,生态兼容的基础库。
加速库可应用的场景见下图。
3)编译
毕昇编译器:
简介:基于开源LLVM开发,并进行了优化和改进,同时支持Fortran语言前端,是针对鲲鹏平台的高性能编译器。
推荐场景:高性能计算,HPC,服务器,PC等场景。
毕昇JDK:
简介:基于OpenJDK开发,面向Java开发者和使用者的一款稳定可靠、高性能、易调测的JDK,毕昇JDK针对鲲鹏平台进行了深度优化和质量增强。
推荐场景:大数据应用,云计算,鲲鹏服务器的JAVA应用。
GCC for openEuler:
简介:GCC for openEuler是基于开源GCC开发的编译器工具链(包含编译器,汇编器,链接器),在openEuler社区开源发布,并通过鲲鹏社区免费提供二进制包,支持包含ARM、x86在内的多种处理器架构。
推荐场景:通用服务器,云计算等。
4)调优
挑战:软件运行时遇到性能瓶颈,传统手动调优方式,性能分析和调优手段单一,定位困难,对人员技能要求高,效率和准确率低下。
方案:鲲鹏提供系统性能优化工具和JAVA性能优化工具,能够在软件运行状态下,自动采集系统数据,分析出系统性能指标,定位到瓶颈点及热点函数,给出调优建议,从而达到软件和鲲鹏平台融合的最佳性能。
调优工具有以下几种:
调优助手:通过系统化组织和分析性能指标、热点函数、系统配置等信息,形成系统资源消耗链条,引导用户分析性能瓶颈,并给出优化建议和操作指导,实现快速调优。
系统性能分析:基于鲲鹏服务器的性能分析工具,针对多个专项分析系统性能状况,识别系统性能瓶颈,并给出针对性的多维度优化建议。
Java性能分析:针对基于鲲鹏的服务器上运行的Java程序的性能分析和优化工具,图形化显示Java程序的堆、线程、锁、垃圾回收等信息,帮助用户采取针对性优化。
系统诊断:能够快速定位内存、IO、网络等部件的异常,提供内存泄漏诊断、内存消耗信息分析展示、OOM诊断能力、网络IO诊断能力,帮助用户识别出源代码中内存使用的问题点。
5)无源码迁移
挑战:部分存量现网应用软件只有x86版本二进制工具包,且无源码可供移植,无法直接在ARM服务器上运行。
方案:华为自研的二进制动态指令翻译软件ExaGear,能够在运行时将x86应用的指令翻译成ARM指令,使得大部分Linux x86-64应用无需重新编译即可运行在ARM64服务器上,从而屏蔽底层平台差异,低成本解决应用的平滑迁移,释放鲲鹏平台澎湃算力。
华为动态二进制翻译工具(ExaGear):ExaGear是华为自研动态二进制翻译工具,通过在运行时,将x86应用指令翻译为ARM64指令并执行,从而支持Linux x86应用无需重新编译就能运行在ARM64服务器上,帮助客户将Linux x86无源码应用快速迁移到ARM服务器上,且能稳定可靠运行。
功能特性:
- 支持多种部署方式: 物理机、虚拟机、容器。
- 部署简单:一键式快速安装,x86应用部署和运行与迁移前保持一致。
- 支持多版本Linux OS:目前支持openEuler,CentOS,并且根据用户需求,未来可定制支持更多Linux OS发行版。
- 低损耗:大多数场景的应用,翻译损耗在20%以内。
三、亮点优势
1)入门简单:不改变开发者开发习惯,快速上手
两种形态任意选择:
IDE插件模式:基于VS Code/Intelliji/MindStudio插件形式,提供一站式开发套件,供重度开发者选用。
Web浏览器模式:轻量化迁移与分析工具,简单快捷。
2)自动化:迁移内容自动识别,汇编代码自动翻译
迁移内容自动识别:迁移依赖库处理建议自动生成,一键下载;待移植源文件自动识别,快速直达代码。
汇编代码自动翻译:DevKit业界首创汇编翻译技术,汇编代码自动识别,一键替换迁移,一分钟完成汇编代码的迁移。
3)高效:代码修改建议自动生成,开发效率倍增
- 识别C/C++/Fortranl汇编源代码,提供修改建议;Make、CMake、Automake编译选项、编译宏的解析及迁移建议。
- 支持100%Intrinsic函数转换(6000+个),包括MMX、SSE及AVX Intrinsic等。
- 快速64位检查与结构体字节对齐修改建议。
流程:工具标识问题代码 -> 浏览问题描述和建议 -> 一键替换建议代码 -> 完成修改
4)可视:全场景性能分析可视,性能瓶颈一目了然、调优尽在掌握
5)便捷:远程调测,提供更便捷的调测能力
鲲鹏DevKit提供远程调测能力,基于远程调测插件,在IDE中一站式完成应用的开发与调试。
【参考】
【1】鲲鹏首页:https://kunpeng.huawei.com
- 点赞
- 收藏
- 关注作者
评论(0)