【鲲鹏经典直播征文】+【鲲鹏DevKit开发套件】体验代码迁移工具的极致效率

举报
禄仁恝 发表于 2022/01/10 23:27:17 2022/01/10
【摘要】 快速了解鲲鹏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%+

        软件加速:基于鲲鹏指令的加速库,只修改软件代码实现,通用性高。

        硬件加速:基于鲲鹏加速引擎的加速库,需要专有硬件支持,通过硬件驱动使能。

        鲲鹏加速库包括:压缩库,系统基础库,加解密库,媒体库,数学库,存储库,生态兼容的基础库。

        加速库可应用的场景:

        加速库插件功能:

    1. 自动联想:Coding时或鼠标指定时,自动联想出经鲲9加速库优化后的相关函数;给出函数代码自动补全、代码语法高亮、以及函数hover提示等信息;支持鲲鹏加速库的代码定义跳转。
    2. 工程扫描:支持工程和文件扫描;识别出可以用鲲鹏加速库替换的函数;罗列出扫描结果,可加速函数优化说明,并提供加速库下载地址。
    3. 函数搜索:按功能可搜索到鲲鹏加速后的函数;按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

    【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。