【鲲鹏经典直播征文】+【鲲鹏DevKit开发套件】软件如何修改?迁移?发挥鲲鹏最大性能?

举报
禄仁恝 发表于 2022/01/08 23:59:16 2022/01/08
【摘要】 简单介绍鲲鹏开发套件,使用开发套件进行软件移植的步骤及流程。

一、趋势挑战

  • 趋势

    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服务器上,且能稳定可靠运行。

        功能特性:

    1. 支持多种部署方式: 物理机、虚拟机、容器。
    2. 部署简单:一键式快速安装,x86应用部署和运行与迁移前保持一致。
    3. 支持多版本Linux OS:目前支持openEuler,CentOS,并且根据用户需求,未来可定制支持更多Linux OS发行版。
    4. 低损耗:大多数场景的应用,翻译损耗在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

    【2】鲲鹏开发套件:https://kunpeng.huawei.com/#/developer/devkit/

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

    评论(0

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

    全部回复

    上滑加载中

    设置昵称

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

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

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