• [技术干货] 基于鲲鹏亲和开发框架进行原生开发
    ## 1. 前言 - 鲲鹏开发框架 是一款使能用户在鲲鹏服务器上进行开发的工具。鲲鹏开发框架充分利用鲲鹏平台的各类型算力及性能更优的第三方组件,提供鲲鹏工程向导、启发式编程、代码亲和检查等能力,一键引入鲲鹏加速库、快速构建鲲鹏应用软件框架,帮助开发者更便捷地开发鲲鹏应用,使能开发者高效创新。 - 鲲鹏原生开发 基于鲲鹏平台的新软件和新功能特性开发,应用鲲鹏DevKit工具把鲲鹏架构亲和性能充分体现的开发场景。 ## 2. 安装插件 首先要在本地电脑安装Visual studio code。 打开VScode,点击左侧树的扩展按钮,在搜索框中搜索“kunpeng”,安装鲲鹏开发框架插件。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/8/1654668781019641570.png) ## 3. 创建鲲鹏工程 点击左侧树的鲲鹏开发框架插件图标,点击新建鲲鹏工程按钮,进入新建鲲鹏工程界面,工程名称设置为testGzip,工程位置选择E:\博客文档\华为云\DevKit,构建类型选择cmake,其他配置信息如下图所示: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/8/1654668788344942752.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/8/1654668793185395562.png) Glibc-patch主要对内存、字符串、锁等接口基于华为鲲鹏920处理器微架构特点进行了加速优化,memcmp/memset/memcpy/memrchr/strcpy/strlen/strnlen已合入GNU社区,随Glibc 2.31主干版本发布,同步推送openEuler社区,已随openEuler 1.0发布。 Glibc-patch加速优化策略: - 遵循原Glibc CPU Feature设计,将加速代码与华为鲲鹏处理器做绑定优化,确保与其他友商代码相互兼容不冲突。 - 充分利用鲲鹏指令及鲲鹏处理器架构优势提高执行效率。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/8/1654668799728373403.png) 鲲鹏工程创建成功 ## 4. 查看鲲鹏工程 (1)工程创建成功后,点击查看工程按钮,选择本窗口打开。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/8/1654668816013630475.png) (2)我们点开工程third-party文件夹中的gzip子文件夹,查看里面的具体内容。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/8/1654668821601653109.png) (3)我们可以看到gzip文件夹中有两个子文件夹,分别是gzip_demo和gzip-1.10.aarch64, gzip_demo中包有一个名为demo_gzip的cpp文件,该demo包含了对gzip库中压缩和解压缩功能的调用。gzip-1.10.aarch64是已经下载并解压好的gzip鲲鹏加速库,该加速库针对鲲鹏处理器的架构特点,对gzip原生库进行了加速优化。接下来我们将利用demo_gzip来对比加速库和原生库在解压2G大小文件时的解压效率。 ## 5. 编译并执行鲲鹏工程 (1)首先,点击vscode上方的Terminal(终端)按钮,并选择New Terminal(新建终端)选项。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/8/1654668827079213101.png) 登录之后,依次执行如下命令: 清除鲲鹏工程目录中src文件夹中的内容 ```shell cd src rm -f * ``` 执行./configure编译gzip ```shell cd ../third-party/gzip/gzip-1.10.aarch64/ ``` ```shell bash ./configur ``` 执行脚本修改构建文件中的内容 ```shell cp ../../../../change_gzip_makefile.sh . ``` ```shell sh change_gzip_makefile.sh ``` 执行make命令 ```shell make ``` 将以下内容拷贝到源码lib目录下 ```shell cp libgzip.so gzip.h version.h lib/config.h ../../../lib ``` 接着拷贝gzip_demo内容到src目录 ```shell cd ../../../src ``` ```shell cp ../third-party/gzip/gzip_demo/* . ``` ```shell cd ../build ``` ```shell cmake .. ``` ```shell make ``` 拷贝待测试文件到src目录 ```shell cp ../../test.log.2G_1.origin.gz ../bin ``` ```shell cd ../bin ``` 执行鲲鹏工程代码对压缩包进行解压 ```shell gzip -d test.log.2G_1.origin.gz ``` ```shell time ./demo_gzip test.log.2G_1.origin test_huawei.gz ``` 下面使用原始gzip来对比解压性能 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/8/1654668837021887029.png) 下面使用原始gzip来对比解压性能 ```shell cd ../third-party/gzip ``` ```shell mv ../../../gzip-1.10.tar.gz . ``` ```shell tar -xf gzip-1.10.tar.gz ``` ```shell cd gzip-1.10 ``` ```shell bash ./configure ``` ```shell cp ../../../../change_gzip_makefile.sh . ``` ```shell sh change_gzip_makefile.sh ``` ```shell make ``` ```shell cp libgzip.so ../../../lib ``` 此处输入y同意覆盖 ```shell cd ../../../src ``` ```shell rm -f * ``` ```shell cp ../third-party/gzip/gzip_demo/* . ``` ```shell cd ../build ``` ```shell cmake .. ``` ```shell make ``` ```shell cd ../bin ``` ```shell time ./demo_gzip test.log.2G_1.origin test.gz ``` 此时从终端中的结果中可以看出,gzip原始库针对2G大小的压缩文件的解压时间为34.8秒,加速库相比于原生库有20%的性能提升。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/8/1654668848486189481.png)
  • [技术干货] 第二讲:鲲鹏代码迁移工具基础知识读书笔记
    本文课程链接:https://www.hikunpeng.com/zh/developer/live/detail/1533984621405396993 本文主要介绍鲲鹏代码迁移工具的功能与特性。通过本文,你可以了解到: ① 了解什么是代码迁移工具 ② 了解代码迁移工具的功能 ③ 了解到代码迁移工具在实际案例中如何运用 ## 1.代码迁移工具是什么 处理器所支持的指令集不同,意味着开发者可能需要对代码进行跨平台的迁移。通常,代码迁移是件复杂又繁琐的工作,需要花费开发者大量精力对软件包、源代码、依赖库文件进行人工分析、检查和识别,手动修正不同指令集之间的相关差异,这些差异主要涉及语法、指令、函数和库文件支持情况。为了解决用户代码可迁移性人工排查困难、移植经验欠缺、反复依赖编译调错定位等,投入工作量大,整体效率低的问题,我们推出Kunpeng Porting Advisor鲲鹏代码迁移工具。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607437314868946.png) 2.代码迁移工具功能 鲲鹏代码迁移工具是一款可以简化应用迁移到鲲鹏架构服务器过程的工具。主要面向鲲鹏平台的开发者、用户和第三方待迁移软件提供方开发工程师,对海量代码进行快速地自动化扫描和分析,提供专业的迁移指导报告。同时能够自动分析出需修改的代码内容,并指导如何修改,帮助开发者实现高效的代码迁移。同时支持原生开发代码亲和检查等能力。 3.功能特性 代码迁移工具可以作为独立软件提供给鲲鹏生态用户安装使用 支持的功能特性如下∶ 当前工具支持五组功能,支持的功能特性分别如下: 软件迁移评估 检查用户提供的软件安装包,识别依赖关系,并提供鲲鹏兼容版本的so依赖库对应rpm的包OS发行版官方下载链接。·检查用户在x86服务器上已安装的软件,识别依赖关系,并提供鲲鹏兼容版本的so依赖库对应rpm的包OS发行版官方下载链接。 源码迁移 · 检查用户C/C++/汇编/Fortran代码软件构建工程文件, 并指导用户如何迁移该文件。 检查用户C/C++/汇编/Fortran/python/Java/ScalalGo软件构建工程文件使用的链接库,并提供可迁移性信息。 - 检查用户C/C++/汇编/Fortran软件源码,并指导用户如何迁移源文件。 - 软件包重构,分析用户x86软件包构成,重构为适用于鲲鹏平台的软件包。 - 专项软件迁移,基于我们丰富的软件迁移经验,帮助用户快速迁移Web、数据库、大数据、高性能计算四大解决方案类软件。鲲鹏亲和分析,目前含64位运行模式检查、结构体字节对齐检查、缓存行字节对齐检查、内存一致性检查、构建亲和检查。 - 用户通过安全传输协议上传软件源码、软件包、二进制文件等资源到工作空间,也可以从Web页面上直接对工作目录下的文件进行删除清理或 者覆盖重命名。 - 支持命令行方式、Web、IDE插件三种工作模式,后两种方式下支持多用户并发扫描。 > 特别说明:工具不支持迁移windows环境下的软件或者IOSMacOS平台应用至Kunpeng平台Linux环境下。 4.应用场景 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607455837197525.png) 对最常用的x86汇编指令进行识别并转换 - 最常用的100O+条汇编指令自动翻译。 针对受支持的嵌入式汇编指令,提供修改指导;针对完全由受支持的完整汇编指令构成的文件,支持自动转换为结果汇编文件; - 支持对尚无法指导修改和转换的汇编指令的识别、提醒。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607461453552415.png) 鲲鹏迁移亲和检查可以告知用户需要修改的地方,而不需要自己去查找,节约时间,提高开发效率。 5.部署方式 代码迁移工具采用单机部署方式,部署环境要求如下表所示。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607475159948277.png) 6. 如何访问使用 代码迁移工具提供两种用户访问模式,安装时由用户选择,同一套环境只能安装一种: - CLI方式: 通过命令行方式使用代码迁移工具各功能,最终移植分析结果输出到.csv和.json文件,用户可以根据迁移建议进行处理。. - Web/IDE插件方式: 通过浏览器IDE远程使用代码迁移工具各功能,最终迁移分析结果输出到.csv和.html文件(可下载)中,用户可以根据迁移建议进行处理。如果当前用户已经在登录使用,重复登录会挤掉前面的登录。用户的各种分析和迁移任务都在自己的工作空间内完成。访问Web界面时,对本地浏览器的要求如下表所示。 ## 2. 代码迁移工具的功能 ### 2.1 源码迁移 - 识别C/C++/Fortran(汇编源代码,提供修改建议;Make、CMake、Automake编译选项、编译宏的解析及迁移建议 - 支持100%Intrinsic函数转换(6000+个),包括MMX、SSE及AVX Intrinsic等 - 支持Fortran内联函数和语法特性以及编译选项的识别 - 支持Go语言迁移,对go程序使用cgo编译部分中的编译选项、宏定义提供兼容性检查,给出修改建议 - 支持python、Java、Scala语言,对程序中的动态链接库提供兼容性检查,给出修改建议 ### 2.2 源码迁移业务流程 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607492943813936.png) ### 2.3 源码迁移 源码迁移中如果有不同的源码混合编程则需要填写全部源码类型 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607499930494700.png) ### 2.4 迁移报告 ### 2.5 汇编翻译 鲲鹏DevKit支持全汇编翻译和嵌入式汇编翻译 - 支持汇编代码自动识别,一键替换迁移,一分钟完成汇编代码的迁移。 - x86汇编常用指令100%识别,1000+指令自动翻译,覆盖80%的常用应用场景。 ### 2.6 软件迁移评估 - 识别检查x86平台软件安装包或已安装软件中使用的动态链接库、静态链接库和可执行文件,并将检查出的文件与工具内置的依赖文件列表进行比较匹配,从而为用户提供迁移建议 - Jar,war包扫描增强,识别鲲鹏平台已经支持的依赖,提供更精准的依赖兼容替换建议 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607516722194866.png) ### 2.7 软件迁移评估流程 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607521296227908.png) ### 2.8 软件包重构 识别分析用户x86软件包构成,重构适用于鲲鹏平台软件包,并输出重构报告 软件包重构功能主要对包内包含的.so文件,.a文件和.jarl.war文件进行分析,会对其中需要适配鲲鹏平台的依赖文件进行替换,然后执行软件包的重构,最终输出鲲鹏兼容版本的软件安装包。如果包中需要的依赖不确定是否鲲鹏平台兼容,可在鲲鹏平台验证后,手动上传依赖配置文件,进行重构操作。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607526265993772.png) ### 2.9专项软件迁移 - —键下载开源代码,并编译、构建为鲲鹏软件包 - 支持大数据、数据库、Web、高性能计算等场景主流软件的一键编译迁移 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607533215228609.png) ### 2.10 内存一致性 - 静态检查,检查用户软件迁移到鲲鹏平台可能存在的弱内存序问题并修复 - 支持下载静态检查工具产生的BC文件,可根据实际需要进行BC - 自动修复功能,更新用户使用的GCC编译器,在用户软件的编译过程中自动文件扫描分析完成弱内存序问题的修复 - 静态检查工具、编译器自动修复工具组合使用,可一键式修复 - 支持自动生成目标工程的中间文件,不需要用户修改编译脚本 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607570034295090.png) ## 3.案例演示 ### 3.1 源码迁移1 案例下载链接: https://github.com/kunpengcompute/devkitdemo/tree/main/Porting_advisor/testdemo/code_migrationlcode 操作步骤上传源码,选择CIC++、make参数扫描出源码需修改文件进行逐个修改然后进行保存。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607579200994304.png) ### 3.2 源码迁移2 Python语言扫描,识别出工程中使用的依赖库,对其兼容性进行判断,样例报告中可直接下载使用依赖库。 ### 3.3 软件迁移与软件包重构案例 软件迁移评估:找出so依赖库和可执行文件,并评估so依赖库和可执行文件的可迁移性。 软件包重构:用户上传需要重构的软件包和依赖配置文件,重构完成后,用户可以直接下载重构后的rpm软件包,然后在鲲鹏平台上直接使用。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607685657168812.png) ### 3.4 内存一致性案例 操作步骤 上传源码,填写编译命令,样例中使用“make NO_LAPACKE=1”,点击下一步,开始BC文件解析,选择生成的BC文件,进行弱内存问题检查。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20226/7/1654607606902498191.png)
  • [新手课堂] 6月02日 第一讲:鲲鹏DevKit工具基础知识
    6.2补签 
  • [新手课堂] 2022年6月7日,第二讲鲲鹏代码迁移工具基础知识
    .
  • [新手课堂] 2022年6月7日,第二讲鲲鹏代码迁移工具基础知识
    .
  • [技术干货] 鲲鹏代码迁移工具基础知识
    鲲鹏代码迁移工具基础知识对最常用的x86汇编指令进行识别并转换支持自动化迁移开源软件和构建鲲鹏软件包鲲鹏亲和检查运行模式字节对齐检查缓存对齐内存一致性检查构建亲和检查部署方式单机部署方式如何访问和使用代码迁移工具提供两种用户访问模式,安装时由用户选择,同一套环境只能安装一种CLI方式Web/IDE插件方式内存一致源码迁移源码迁移业务流程输入源码文件分析处理分源码文件扫描分析输出报告文件
  • [新手课堂] 2022年6月7日,第二讲鲲鹏代码迁移工具基础知识
    签到2022年6月7日,第二讲鲲鹏代码迁移工具基础知识
  • [新手课堂] 2022年6月7日,第二讲鲲鹏代码迁移工具基础知识
    2022年6月7日,第二讲鲲鹏代码迁移工具基础知识 641039
  • [新手课堂] 2022年6月7日,第二讲鲲鹏代码迁移工具基础知识
    2022年6月7日,第二讲鲲鹏代码迁移工具基础知识 641027
  • [新手课堂] 2022年6月7日,第二讲鲲鹏代码迁移工具基础知识
    2022年6月7日,第二讲鲲鹏代码迁移工具基础知识 641025
  • [问题求助] 鲲鹏服务器使用RoCE的方法
    看鲲鹏920的芯片有支持RoCE,TM280是否也支持。求鲲鹏服务器具体使用RoCE的方法、资料,如何安装部署。
  • [问题求助] 【鲲鹏】【弹性云服务器】java web打包的war文件在华为云端运行不了
    【功能模块】弹性云服务器【操作步骤&问题现象】1、java web打包的war文件在华为云端运行不了,网页打不开2、华为云端tomcat可以正常打开,端口正常3.代码在本地可以运行,但请求云资源运行不了【截图信息】在WinSCP的文档目录页面弹性公网IP麻烦哪位大神帮忙解答,谢谢!
  • [问题求助] 【华为2280产品】【鲲鹏处理器安装esxi7.0出现的问题】,怎么解决?
    【功能模块】安装系统【操作步骤&问题现象】1、U盘安装exsi,服务器无发进行用U盘进行安装,安装过程中显示下图2、管理口,直接挂载镜像,光驱启动,也显示下图【截图信息】安装的镜像是下图【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] 第一讲:鲲鹏DevKit工具基础知识读书笔记
    DevKit系统诊断工具是鲲鹏性能分析工具的子工具之一,能够针对内存、网络、存储等常见故障和异常,提供精准定位和诊断能力,帮助用户识别出源代码中的问题点,提升程序的可靠性,故障定位准确率高达90%。内存诊断——快速识别内存泄漏和访问越界点:通过内存诊断能力,帮助用户识别应用程序中存在的内存使用的问题点,提升程序的可靠性,具体包括:内存泄漏诊断、内存越界诊断。支持分析应用程序中存在的内存泄漏点,包括:内存未释放、内存异常释放等,得到具体的泄漏信息,并以调用树的形式展示出来。支持关联到内存泄漏点的源代码,精确定位到泄漏点所在的代码行。支持跟踪应用程序运行期间系统层、应用层(调用内存申请函数)、分配器层的内存消耗情况,支持展示整个过程的汇总数据和时序数据。用户通过该信息可以了解应用程序在整个运行期间的内存变化情况,帮助定位未发现泄漏点但内存一直增加的问题。监测系统OOM事件,分析发生OOM时的进程内存状态、系统内存状态和调用栈信息。支持分析应用程序中存在的内存越界访问点,给出越界访问类型和内存访问信息,并支持关联出调用栈和源码。网络IO诊断——识别网络最大能力、诊断丢包点:压测网络,获得网络最大能力,为网络IO性能优化提供基础参考数据;诊断网络,定位网络疑难问题,解决因网络配置和异常而导致的网络IO性能问题。具体包括:网络拨测、丢包诊断、网络抓包、系统负载监控。连通性拨测,基于ICMP协议测试网络连通性和时延,并根据网络KPI服务等级评估网络质量。针对网络不通的情况,给出排查建议。TCP/UCD拨测,基于TCP协议测试网络带宽和重传,基于UDP协议测试网络丢包和抖动,并根据网络KPI服务等级评估网络质量。针对测试失败的情况,给出排查建议。诊断网络丢包点,定位网络丢包根因,给出修复建议。支持网络抓包,辅助网络拨测和丢包诊断,根据抓取的网络消息包定位网络异常根因。支持在诊断期间监控系统负载,包括:CPU、内存、网络IO、软硬件中断等,以此了解在网络拨测或发生网络丢包时,是否存在系统资源不足。存储IO诊断——识别存储最大能力:由于存储设备在不同的业务场景下性能表现差异很大,例如:OLTP数据库每次IO是小块随机的,而OLAP数据库每次IO是大块顺序的,在相同的存储配置下,能够达到最大性能是相差很大的;如何识别,在不同业务场景下,存储IO能够达到的最大性能?针对这个问题,DevKit系统诊断工具在2021年底将推出存储IO诊断功能,该功能能够按照一定业务的存储测试模型压测存储设备或文件,获取反映存储IO性能的吞吐量、IOPS、时延等指标,得到存储设备的最大能力,并以此评估存储能力,为存储IO性能优化提供基础参考数据。
  • [问题求助] 【鲲鹏】【弹性ECS云服务器】java代码无法运行
    【功能模块】java代码放到云端服务器无法运行,系统找不到java.util等等包,但已经配置了linux的jdk版本【操作步骤&问题现象】1、执行操作文档的时候不能运行java代码,显示java.util does not exists2、系统已经有java版本,java -version已有为jdk1.8.0_242,自己下载了linux的java版本并配置了JAVA_HOME目录【截图信息】【日志信息】(可选,上传日志内容或者附件)
总条数:2907 到第
上滑加载中