【鲲鹏经典直播征文】+【鲲鹏DevKit开发套件】体验代码迁移工具的极致效率
一、趋势挑战
-
趋势
多样性算力成为下一代计算产业的主流趋势,大体可以分为三个时代,分别如下:
1. 大/小型机时代
2.x86时代
3.多样性计算时代
1)端侧
ARM在端侧已经占据超过90%的市场,发挥移动互联网生态优势,从智能终端延伸到PC市场。ARM架构正成为计算领域创新最活跃的领域。
2)云侧
云时代以及端边云协同,驱动ARM成为新的选择。可用于HPC场景,公有云场景和数据中心场景。
云时代以及端边云协同,驱动ARM成为新的选择。
-
挑战及解决方案
从x86平台过渡到鲲鹏平台需要考虑的问题:
1)软件-语言-平台兼容性
编译型依赖文件或源码需迁移内容:
1. 依赖文件:将x86平台的依赖文件用鲲鹏对应依赖文件替代,再重新编译或打包。
2. 源码:对源码及编译脚本中涉及平台相关内容,修改为鲲鹏平台兼容代码,再用对应的编译器重新编译。
针对这种情况, 解决方案如下:
2)鲲鹏处理器与x86处理器的架构和指令差异
首先介绍下c/c++代码执行流程
根据流程可知为什么代码与编译平台相关性这么强。x86处理器指令是属于复杂指令集(CISC),他的指令是变长的;鲲鹏处理器指令使用的是ARM架构下的指令,属于精简指令集(RISC),指令是定长的。所以,软件跨平台迁移需要解决指令差异问题(指令长度不同,指令操作符和操作数不同,汇编指令含义不同等)。
由此可见,软件迁移面临的总体挑战为:需要人工进行分析,周期长效率低,门槛较高。
二、鲲鹏开发套件
鲲鹏开发套件提供一站式迁移,编译, 测试,分析,提高全流程开发效率。
1)迁移
优势:扫描快、检出全、指导精、构建易
分析扫描:扫描并自动分析软件包(非源码包)、已安装的软件,提供可迁移性评估报告,同时提供鲲鹏平台上兼容的依赖文件下载链接。
源代码迁移:扫描并自动分析软件代码(包括C/C++/Fortran/汇编/Python/Java/Scala/Go等),评估迁移所需替换的依赖文件,并给出程序源码中的修改建议,并将程序源码中的x86汇编指令翻译成功能对等的鲲鹏汇编指令。用户可以根据工具提供的修改建议快速完成源码修改,建议中包含的源码甚至可一键替换,直接编译使用。
软件包重构:分析x86平台上Linux软件包的构成及依赖性,将平台相关的依赖文件替换为鲲鹏平台兼容的版本,并重构成适用于鲲鹏平台的软件包。
专项软件迁移:支持将部分专项软件源码一键自动化迁移修改、编译并构建成鲲鹏平台兼容的软件包,帮助用户快速迁移几类解决方案中常见的专项软件。
增强功能:支持软件代码质量的检查功能,如在64位环境中运行的兼容性检查、结构体字节对齐检查和内存一致性检查等增强功能。
2)性能加速
优势:“零”开发、高性能,平均提升10%+
软件加速:基于鲲鹏指令的加速库,只修改软件代码实现,通用性高。
硬件加速:基于鲲鹏加速引擎的加速库,需要专有硬件支持,通过硬件驱动使能。
鲲鹏加速库包括:压缩库,系统基础库,加解密库,媒体库,数学库,存储库,生态兼容的基础库。
加速库可应用的场景:
加速库插件功能:
- 自动联想:Coding时或鼠标指定时,自动联想出经鲲9加速库优化后的相关函数;给出函数代码自动补全、代码语法高亮、以及函数hover提示等信息;支持鲲鹏加速库的代码定义跳转。
- 工程扫描:支持工程和文件扫描;识别出可以用鲲鹏加速库替换的函数;罗列出扫描结果,可加速函数优化说明,并提供加速库下载地址。
- 函数搜索:按功能可搜索到鲲鹏加速后的函数;按x86类似功能的函数名可搜索到鲲鹏对应加速后的函数名;直接搜索鲲鹏对应的Intrinsic函数。
3)编译
毕昇编译器:
简介:基于开源LLVM开发,并进行了优化和改进,同时支持Fortran语言前端,是针对鲲鹏平台的高性能编译器。
推荐场景:高性能计算,HPC,服务器,PC等场景。
毕昇JDK:
简介:基于OpenJDK开发,面向Java开发者和使用者的一款稳定可靠、高性能、易调测的JDK,毕昇JDK针对鲲鹏平台进行了深度优化和质量增强。
推荐场景:大数据应用,云计算,鲲鹏服务器的JAVA应用。
GCC for openEuler:
简介:GCC for openEuler是基于开源GCC开发的编译器工具链(包含编译器,汇编器,链接器),在openEuler社区开源发布,并通过鲲鹏社区免费提供二进制包,支持包含ARM、x86在内的多种处理器架构。
推荐场景:通用服务器,云计算等。
4)调优
鲲鹏提供系统性能优化工具和JAVA性能优化工具,能够在软件运行状态下,自动采集系统数据,分析出系统性能指标,定位到瓶颈点及热点函数,给出调优建议,从而达到软件和鲲鹏平台融合的最佳性能。
三、亮点优势
1)入门简单:不改变开发者开发习惯,快速上手
2)自动化:迁移内容自动识别,汇编代码自动翻译
3)高效:代码修改建议自动生成,开发效率倍增
4)可视:全场景性能分析可视,性能瓶颈一目了然、调优尽在掌握
5)便捷:远程调测,提供更便捷的调测能力
四、总结
1)了解计算趋势和软件迁移挑战
2)熟悉鲲鹏DevKit一站式开发套件及其使用
3)了解鲲鹏DevKit一站式开发套件的优势
【参考】
【1】鲲鹏首页:https://kunpeng.huawei.com
【2】鲲鹏开发套件:https://kunpeng.huawei.com/#/developer/devkit/
【3】直播连接:https://bbs.huaweicloud.com/live/kunpeng_live/202106281930.html
- 点赞
- 收藏
- 关注作者
评论(0)