• [技术干货] 第一讲:鲲鹏DevKit工具基础知识笔记——鲲鹏DevKit工具那些事
    # 前情提要 先上链接:https://www.hikunpeng.com/zh/developer/live/detail/1532317691263811586 # 鲲鹏DevKit工具产生背景 大多数人一般都是用高级语言来开发,比如高效的C/C++,面向对象的Java和简洁优雅的Python等,在某些特殊领域可能会用到汇编,一般都不是直接编写机器码,但程序的真正运行是只认机器码的,而机器码与硬件平台息息相关,由于不同硬件采用了不同的指令集,在不同的体系架构平台上面是无法直接运行的,所以这些软件需要迁移。 我们通过一个C/C++的实际案例来看,如下图左下方所示,代码的功能很简单,实现两数相加。而这个代码运行前要编译的,如右侧所示,可以看到编译成汇编代码时,因为硬件平台不同,已经有很大不同了,最后的机器码显然更会不同。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654781317423844753.png) 来看个例子,假设我们需要使用64位来进行编译,编译指令在X86和鲲鹏上是不一样的,内嵌函数,汇编代码也不同。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654781763195224928.png) **那么软件迁移面临哪些挑战呢?** ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654781884217497970.png) 可以看到,还是很多工作要做的,如果全都靠人工来做,工作量巨大,而且对迁移的工程师有较高的要求,对不同硬件和底层要都很熟悉才行,这就不太好了。 此外,基于鲲鹏的原生应用开发也面临一些挑战,开发者生态的发展很重要,需要为开发者提供便捷的环境,让开发者充分了解鲲鹏的优势,发挥鲲鹏的性能。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654781994371731827.png) 综上,鲲鹏DevKit工具横空出世了。目前已经到2.0阶段了,由当初的“应用迁移”走向了“原生开发”: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654782271003482020.png) # 鲲鹏DevKit工具介绍 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654780822589416304.png) 全称是鲲鹏开发套件DevKit,鲲鹏开发套件提供面向全研发作业流程的迁移、开发、编译、测试、调优、诊断等能力,实现海量应用到鲲鹏平台的快速迁移和极简开发。[远程实验室](https://www.hikunpeng.com/zh/developer/cloud-lab)提供预安装鲲鹏开发套件的在线开发环境(通过邮箱申请免费鲲鹏虚拟化环境(Kunpeng 920 | 8vCPU | 16GB内存 | 200GB系统盘),环境中已经预装鲲鹏开发套件 Kunpeng DevKit。)。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654780915651349496.png) 鲲鹏开发套件 DevKit提供涵盖代码开发、编译调试、云测服务、性能分析及系统诊断等各环节的开发使能工具,方便开发者快速开发出鲲鹏亲和的高性能软件。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654781119333692435.png) 具体的工具如下: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654782140628902777.png) 更为详细的介绍总结到如下表格: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654782378815445211.png) # 鲲鹏DevKit工具亮点 秉承以开发者为中心 全流程开发效率提升的主旨,我们先来看看这六大亮点 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654782538804322397.png) ## 入门简单 不改变开发者开发习惯,可以快速上手。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654782613159661948.png) ## 自动化 迁移内容自动识别,汇编代码自动翻译,高度自动化操作,大大减轻迁移人员的工作负担。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654782648518555923.png) ## 高效 建议修改代码一键替换,开发效率倍增。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654782703691325365.png) ## 便捷 远程实验室一站式预装DevKit开发环境,助力开发者领跑开发之路,免费提供了强大配置的鲲鹏服务器。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654782740406705507.png) ## 可视化 全场景性能分析可视化,性能瓶颈一目了然,调优尽在掌握中,有助于迁移人员理清思路,明确逻辑。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/9/1654782789980330634.png) # 结语 鲲鹏DevKit工具慢慢发展,三年光阴,走向强大!
  • [技术干货] 第一讲:鲲鹏DevKit工具基础知识读书笔记--鲲鹏DevKit工具基础知识
    文章直播链接:https://www.hikunpeng.com/zh/developer/live/detail/1532317691263811586 本次课程主要从鲲鹏DevKit产生背景,鲲鹏DevKit整体介绍,鲲鹏DevKit主要功能介绍,鲲鹏DevKit亮点四个部分来说明,让我们对鲲鹏DevKit有一个基本认识。 ## 1. 鲲鹏DevKit产生背景 大部分开发者一般用高级语言来开发软件。对于编程语言,例如C++,Python等来开发软件,由于采用了不同的指令集,在不同的体系架构平台上面是无法直接运行的,所以这些软件需要迁移。 不同的架构产生了不同的架构,在软件的迁移过程中,不同的平台会有不同的差异点。 我们通过一个C/C++的实际案例来看,例如我们需要使用64位来进行编译,编译指令在X86贺鲲鹏上是不一样的,内嵌函数,汇编代码也不同。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654444953449949099.png) 原来的一些运行在X86上面的一些软件,我们迁移到鲲鹏平台上面。首先我们要评估这个软件是否可以迁移进行技术的可行性分析。这主要是为了提供是否需要做软件迁移的一个技术决策依据。我们要做具体的一个迁移工作。比如集成软件能够在鲲鹏平台上面正常的运行起来,保证功能是可用的。最后我们要做性能调优性能分析。保证迁移后的软件能够最大程度的亲和鲲鹏平台。 这些工作呢如果全部靠人工来做。那对于迁移和性能分析的人员来说,这种对技能和知识结构的要求是很高的。比如在迁移过程中,我们首先需要人工来检查道相关的的编译参数编写选项,例如函数汇编指令或者一些Java包,更有甚者可能还要进一步的识别。 由于平台差异性存在的这种内存不一致性。这个工作量是比较大的,那么对于工程师的门槛要求是比较高。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654444975270516844.png) 基于鲲鹏的这种基于功能平台我们开发的一款新软件,或者说基于现有的软件,我们开发一款新功能或者增加新的功能。那这些新软件和新功能呢在开发的过程之中就能要能够自然的亲和鲲鹏架构,也就是说开发出来的代码经过编译后就能在鲲鹏平台上面正常的运行,同时这种代码也是把我们鲲鹏架构的性能发挥到最大的程度的。这就是我们所谓的鲲鹏原始开发。 基于鲲鹏平台的原始开发,一般都会有学习,代码coding,编译、调试,最后的测试和性能调优诊断这几个过程。若没有工具链的支持,我们在各个阶段可能都会遇到相应的一些困难,比如在学习的时候,我们可能缺乏这种相关的架构的学习指导或者介绍的书籍。不知道鲲鹏和其他的平台有哪些差异性。 在开发过程之中,如果没有相关的开发指导,或者说变动开发框架,或者没有相应的开发SDK实践,开发人员也是很难做到的。 在测试的情况下,特别是对于我们很多广大开发者来说,如果没有本地物理机的这种实际环境情况下面,我们开发了一套代码来测试我们的工作是否可用,是否兼容公共服务器。这都是有很大的问题的,那么我们可能需要是不是能够提供一套免费的评测环境,大家可以在上面既可以开发。也可以在上面做相应的监控测试,还有安全性测试。 目前Linux上面有很多这种零散的性能分析采集工具,比如pref这种工具都是表面上的,也是没有系统性的。如果没有相关的工具,大家做性能分析的时,都是比较零散琐碎的,并且需要很强的经验积累,这样对大家来说是很费事。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445006813977825.png) 工欲善其事,必先利其器。从前面的介绍大家已经知道了开发工具对提升开发者生产力是多么的重要。 因此华为始终非常重视鲲鹏开发套件的开发和投入,在过去的三年时间里投入了大量的研发的人力和资源来做这个事情。不断的提升鲲鹏迁移的能力。 从19年到22年,鲲鹏DevKit已经从1.0的应用迁移。逐步升级到2.0的原始开发阶段。 21年华为提供了一个技术版本的开发框架和品质服务,满足了最基本的原则开发和测试的需求。进入22年,华为我们将持续在原始开发上面发力,功能持续增强。在开发测试,调试,编译,还有诊断等各个环节,都将增加或完善功能,比如在后面开发框架上面。持续的完善我们的这一个基于鲲鹏的工程向导,都充分的提供给大家来使用。另外提供了产品化的SDK。22年上半年会主要是提供安全计算,有高性能计算SDK,下半年提供一个统一计算SDK。基于这些产业化的SDK,还会相应的配套。大家根据不同的功能,不同的场景应用,就会可以快速的便捷的获取所需要的功能。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445018485952013.png) ## 2. 鲲鹏DevKit整体介绍 下面给大家来做对鲲鹏DevKit包括哪些内容做一下整体的介绍。 为了帮助开发者加速应用迁移和提升,华为提供了鲲鹏开发套件包括代码迁移,开发框架,调试服务、性能分析等一系列的工具。整个的这个性能损耗小于15%。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445028060633562.png) 下图是一个鲲鹏DevKit的实际案例,比如在Vs code。 我们能够直观的感受鲲鹏开发套件功能或者插件。第一个是代码迁移。扩大对应的相应的这种代码迁移工具。还有一个鲲鹏开发框架,这是对原始开发的,还有编译调试,这是对开发工程师编译调试的能力。 还有性能分析的一个插件,这是一个完整的套件。 在vs code上面输入kunpengdevkit的这几个字,那么可以从应用市场里面直接会找到一整套的开发插件, 这些插件,比如一个是这种迁移开发框架并且调试。还有分析的工具和诊断在一起。安装之后安装之后我们在右边就会看到4个功能对应的入口。 根据前端PC的客户端的UI进去之后。如果要用到我们的代码迁移或者开发框架,我们可以使用对应远端服务器相应的服务功能。还没有安装时,会自动提示安装,根据引导配置好服务器的IP地址会自动去下载。 安装。 安装完之后,进去就可以很方便的去操作。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445034278609772.png) | 工具名称 | 描述 | | ---------------- | :----------------------------------------------------------: | | 鲲鹏代码迁移工具 | 自动扫描并分析用户待迁移软件,提供专业迁移指导。代码迁移工具支持五个功能特性: 软件迁移评估:自动扫播并分祈软件包(非派码包)、己安装的软件,提供可迁移性评估报告。 ·源码迁移:能够门动检查并分析出用户源码,C/C++1ASMFortran/解释型语言I汇编软件构建工程文件、 C/C++/ASM/Fortranl解释型语言I汇编软件构建工程文件使用的链接岸、XB6汇编代码中需要修改的内容,并给出修改指导, 软件包重构。通过分析X86平台软件包《RPM格式、DEB格式》的软件构成关系及硬件依赖性,重构适用于鲲鹏平台的软件 包。 o 马项软件迁移:基于鲲鹏解决方案的软件迁移模板,进行自动化迁移修改、编译、构建软件包,帮助用户快速迁移软件, 鲲鹏亲和分析:支持软件代码质量的静态检查功能,如在64位环境中运行的兼容性检查、结构体字节对齐检查、锾存行对齐 检查、构建检在和内存一效性检查等亲和分析。 | | 鲲鹏开发框架 | 基于鲲鹏场景化SDK和工程构建能力,对不同场景下的软件基础库进行深度性能优化,在应用开发过程中就能便捷地将鲲鹏架 购的优势充分应用上,降低管习和使用成本, | | 鲲鹏编译调试工具 | 提供一键式部署的鲲鹣编译器,包含毕昇编译器及GCc for openEuler、JDK在内的全套编译软件,发挥鲲鹏平台极致性能, 使能开发者高效创新 | | u删性能分析工月 | 由四个子工具组成,分别为:系统性能分析、Java性能分析、系统诊断和调优助手。 系统性能分析是针对基于鲲鹏的服务器的性能分析工其,该工真可以辅助用户快速定位和处理软件性能问题。 Java性能分析是针对基于鲲鹏的服务器上运行的Java序的性能分析和优化工其,能图形化显示JavaFH序的堆、线程、锁. 地圾回收等信息,收集热点函数、定位留序瓶颈点,帮助用户采取针对性优化. 系统诊断是针对基于能鹏的服务器的性能分析工具,提供内存泄漏诊断《包括内存未释放和异常释放)、内存越界诊断、内 存消耗伯息分断展示、OOM诊断能力,帮助用户识别出源代码中内存使用的问题点,提升程序的可靠性。 调优助手是针对基于鲲鹏的服务器的调优工具,能系统化组织性能指标,引导用户分析性能就颈,实现快速调优 | ## 3. 鲲鹏DevKit主要功能介绍 那么下面介绍一下各个主要的功能。 首先第一个就是在鲲鹏产业项目的迁移。我们通过代码迁移工具可以完成相关的工作。代码迁移工具可以自动的分析出需要修改的代码内容,因此用户解决了用户代码兼容性人工排查的这种困难的痛点。还有经验欠缺反复依赖编痛点的问题。 代码迁移工具在解决有源码这种产生的情况下面,主要提供了5大功能。第一个是软件迁移评估。我们可以输入软件,并且通过快速的分析市场变化,分组开发,了解整个迁移过程的工作量代码量。需要修改的依赖库,可以通过这个方面来评估了整体的迁移时间,帮助开发者把握整个的过程。 第二个是源代码的迁移。通过对分析C++或者Python等源码文件,还有包括他的构建文件,控件能够快速的迁移出需要迁移修改的点,也直接提供优化建议,不需要人工的修改。避免了人工查找耗时长。 第四个是某些专项软件,特别是在大数据数据库或者web或者这种早期的计算我们一些主流的一个软件。 我们可以在视觉上面把这些软件直接拿过来,然后一键迁移。得了一个IPM运营起来。 大家可以根据功迁移的步骤,修改。相关的一些配置文件,做相应编译。 第五个是亲和检查。整个检查我们提供64位运行模式,都能帮助我们大家更大的程度上面把鲲鹏架构的这种优势把它发挥出来。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445046946857492.png) 二进制动态指令翻译软件ExaGear,能够在运行时将x86应用的指令翻译成ARM指令,使得大部分Linux x86-64应用无需重新编译即可运行在ARM64服务器上,从而屏蔽底层平台差异,低成本解决应用的平滑迁移,释放鲲鹏平台澎湃算力。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445054241835610.png) 鲲鹏开发框架充分利用鲲鹏平台各类型算力及性能更优的第三方组件,提供鲲鹏工程向导、启发式编程、代码亲和检查等能力,一键引入鲲鹏加速库、快速构建鲲鹏应用软件框架,帮助开发者更便捷地开发鲲鹏应用。 鲲鹏提供了一键式部署的毕昇编译器、GCC for openEuler编译器及毕昇JDK在内的全套鲲鹏编译软件,发挥鲲鹏平台极致性能,使能开发者高效创新 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445067415213556.png) 性能分析工具提供了系统性能优化工具和AVA性能优化工具,分析出系统性能指标,定位到瓶颈点及热点函数,给出调优建议,从而达到软件和鲲鹏平台融合的最佳性能。场景化分析提供了大数据、数据库、分布式存储、HPC的专项分析。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445080091757869.png) 系统诊断是鲲鹏性能分析工具的子工具,提供内存泄漏诊断(包括内存未释放和异常释放),系统诊断工具通过分析系统运行指标,识别异常点,例如:内存泄漏、内存越界、网络丢包等,并给出优化建议。支持压测系统,如:网络IO、存储IO,评估系统最大性能。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445093354179360.png) 两种形态任意选择: - IDE插件模式:基于VS Code/Intellij/MindStudio插件形式,提供一站式开发套件,供重度开发者选用。 - Web浏览器模式,轻量化迁移与分析工具,简单快捷。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445099794173502.png) 迁移内容自动识别,汇编代码自动翻译 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445105528640148.png) 可开发环境获取往往是开发者面临的一个最关键的一个问题。特别是大家没有本地物理环境情况。 鲲鹏开发套件提供了一套远程实验室。这是一站式。预装的开发套件处理,开发者可以领跑开发之路。 比如说远程实验室面向开发者提供了100套的这样的真实环境。 只要网络,开发者就可以随时的通过单开发套件在线申请。只要有华为账号就可以去在线申请资源。然后通过资源来介入到这个开发环境。且是免费的。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/6/1654445123023881446.png) 系统性能分析工具全场景可视化展示硬件、操作系统、进程/线程、函数等信息,标识瓶颈点及热点函数,给出优化建议,问题一目了然、调优尽在掌握。 我们通过图形化合理的组织企业数据。方便了用户更加容易发现问题,提高工具的一些应用性。也降低了人员的使用的门槛。全景分析上面我们可以。很直观的可以看到 CPU,memory,网络io的一个整体的一个布局和参数配置。我们可以看看整个的系统的配置。是不是合理,可以根据这个优化建议可以快速的完成。 我们相应的性能性的调优。
  • [训练管理] 【modelarts】【模型迁移、训练】使用skimage库时出现ImportError错误
    【操作步骤&问题现象】1、使用pycharm+PyCharm Toolkit训练模型时,通过skimage对图片尺寸进行修改。(图1、图2)2、通过model.fit_generator()(tf.keras)训练模型。(图3)3、训练时出现 ImportError: /lib64/libgomp.so.1: cannot allocate memory in static TLS block 错误,并且提示 It seems that scikit-image has not been built correctly。(图四)【截图信息】1、2、3、4、【日志信息】附件 logs.txt
  • [技术干货] Autotune调优工具使用的问题记录
    背景:发现有同学在使用Autotune调优工具时有些疑问,因此做个记录,方便后续同学在使用autotune时能快速上手和避坑。问题1:如何快速提升调优效率?答:一般情况下,根据autotune指导文档,是建议大家同时开启GA/RL算子调优,但在实际调优过程中由于大家NPU资源不充分,RL算子的调优动作会大大增加调优时长,因此可以只调优GA算子来提升效率,即:custom_op.parameter_map["auto_tune_mode"].s = tf.compat.as_bytes("GA") 问题2:为什么autotune有时候会自动重新在线调优,有可以强制使用自定义知识库的吗?答:一般来说,调优的目的就是为了生成知识库,当某一个算子切分策略系统认为性能有提升,它就会把这个策略写在知识库里。后面算子再遇到这种切分情况,就会直接通过知识库来跑了,不会再调优。(1)如果你觉得已经调优生成的知识库仍然不够好,或者说网络结构已经修改,想要重新调优,可以设置环境变量:export REPEAT_TUNE=True。(2)如果你不想再重新调优,仅使用当前已生成的自定义知识库,即将此变量设置为False;(3)如果你一开始就不想要调优,则不要加上GA/RL那行代码;问题3:我已经完成了调优,但是我现在又不想使用已生成的自定义知识库,怎么办?答:有2种办法,第1种是直接删除知识库,即xx\data\tiling\ascend910\custom\里的文件;第2种方法是设置export TUNE_BANK_PATH=/xx/xxx/(/xx/xx/是自己有读写权限的空闲路径),系统在读取知识库时发现此路径下没有知识库,就不会使用知识库了。当然系统自带的知识库仍然是会使用的,所以这点不用担心。后续如果还有新的autotune使用问题,我再补充。
  • [技术干货] EAST网络执行e v a l.sh脚本报错的解决方法
    背景:在完成east网络的训练后,进行精度测试,结果发现执行eval.sh有很多坑。因此做个记录,方便后续的同学能快速跳坑。坑1:缺少gt.zip官方代码下载后,./evaluation路径下是没有gt.zip文件,导致精度测试失败。解决方法:将附件中的gt.zip直接放在evaluation路径下,无需解压。坑2:编译lanms里的adapt.so库失解问题问题原因是Makefile里的命令需要修改:CXXFLAGS = -I include -std=c++11 -O3 $(shell /usr/local/bin/python3.7m-config --cflags) LDFLAGS = $(shell /usr/local/bin/python3.7m-config --ldflags)其中,/usr/local/bin/python3.7m-config 需要改成自己环境中的绝对路径。如何确认呢?(1)which python3(2) 通过得到python3可执行路径,在对应路径下找到python3的绝对路径(3)一般在python3的绝对路径下,就能找到对应的python-config命令 坑3:报错polygon库找不到解决方法:发现直接pip install Polygon是失败的,因此需要做以下2步。(1)apt-get install python3.7-dev (2)pip install Polygon3 -i https://pypi.tuna.tsinghua.edu.cn/simple坑4:确认eval.sh脚本中,参数是否设置正确(包括python3.7命令是否正确)export output_dir=./output export ckpt_dir=./checkpoint/ export test_data=./ocr/ch4_test_images坑5:报错invalid preprocessing directiv解决方法:修改lanms/adaptor.cpp文件,添加如下代码# limitations under the License. // limitations under the License. #include "pybind11/pybind11.h" #include "pybind11/numpy.h" #include "pybind11/stl.h"注:以上问题感谢@hw85131956 同学的帮助!
总条数:40 到第
上滑加载中