• [API使用] Pytorch中的torch.device该如何迁移到MindSpore中
    想把一个用PyTorch写的UNet网络转成用MindSpore写的,其中一个torch.device的API找不到MindSpore的映射,请问应该怎么改?torch写的代码如下: torch写的代码的运行结果如下:​尝试用ms.set_context(device_target="GPU\cpu\acsend"),但是运行结果输出为None.
  • [技术干货] Go应用迁移
    HCIP-Kunpeng Application Developer考证体验——Go应用迁移第一步购买服务器本次实验需要在两个不同的平台运行GO应用程序,需要两个不同的服务器首先先看看两个服务器的基础配置x86服务器:1、x86计算2、通用计算增强型3、c6.latge.2 2vCPUs | 4GB,openEuler 20.03 64bit鲲鹏服务器:1、鲲鹏计算2、鲲鹏通用计算增强型3、kc1.2xlarge.2 8vCPUs | 16GB,Ubuntu 18.04 server 64bit with ARM尝试在x86服务器上运行GO Wed服务器首先安装GO可能有些人会将两台服务器弄混,使用以下命令可以查看系统信息uname -a1、下载GO软件包,命令行输入以下命令https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/实验资源/3.2%20Goè¯­è¨€ä»£ç ç§»æ¤/go1.15.3.linux-amd64.tar.gz2、将下载好的软件包解压到指定的目录,输入如下命令,这里解压到/usr/local目录下tar -C /usr/local -xzvf go1.15.3.linux-amd64.tar.gz3、为GO添加环境变量,编辑文档/etc/profilevim /etc/profile在文件的最后添加上如下的代码(根据自己解压位置编写)export GOPATH=/usr/local/goexport PATH=$PATH:/usr/local/go/bin然后返回到根目录使配置生效:source /etc/profile4、使用命令验证go 安装成功go version可以返回以下版本信息表明安装成功go version go1.15.3 linux/amd64在Web服务上运行go应用1、在根目录下创建go文件,命名为hello-world.go,开始编写go程序vim hello-world.go2、输入以下简单代码作为第一个简单运用package mainimport ("fmt""net/http")func main() {http.HandleFunc("/", HelloServer)http.ListenAndServe(":8080", nil)}func HelloServer(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello, %s!", r.URL.Path[1:])}3、运行go文件,注意不要停止运行go run hello-world.go4、使用本地浏览器访问x86 ECS的EIP:8080/{string},如http://EIP:8080/x86。其中{string}可以替换为任意字符串,EIP代表ecs的公网地址Build Web服务器1、使用CTRL+c停止web服务器2、查看编译过程go build -x hello-world.go主要的编译过程如下WORK=/tmp/go-build389519517mkdir -p $WORK/b001/cat >$WORK/b001/importcfg.link << 'EOF' # internalpackagefile command-line-arguments=/root/.cache/go-build/b6/b6b1dd0c1f72d9a5d4fee29a84b4b03b5e11311a7bf56f9a3c8763fefbf0207c-dpackagefile fmt=/usr/local/go/pkg/linux_amd64/fmt.apackagefile net/http=/usr/local/go/pkg/linux_amd64/net/http.a…packagefile unicode/utf16=/usr/local/go/pkg/linux_amd64/unicode/utf16.aEOFmkdir -p $WORK/b001/exe/cd ./usr/local/go/pkg/tool/linux_amd64/link -o $WORK/b001/exe/a.out -importcfg $WORK/b001/importcfg.link -buildmode=exe -buildid=SorAHn0T2Skvlp1JWBKs/R3Uv0wV9aW3nbbiABvZ5/Ls8w5Ac4hNlunE_gSND6/SorAHn0T2Skvlp1JWBKs -extld=gcc /root/.cache/go-build/b6/b6b1dd0c1f72d9a5d4fee29a84b4b03b5e11311a7bf56f9a3c8763fefbf0207c-d/usr/local/go/pkg/tool/linux_amd64/buildid -w $WORK/b001/exe/a.out # internalcp $WORK/b001/exe/a.out hello-worldrm -r $WORK/b001/3、查看文件,生产了hello-world4、运行可执行文件./hello-world5、使用本地浏览器访问x86 ECS的EIP:8080/{string},EIP代表x86服务器的私网ip使用ctrl+c停止web服务器在鲲鹏云服务器运行Go Web服务器安装GO1、下载GO安装包wget https://kunpeng-ip.obs.cn-north-4.myhuaweicloud.com/实验资源/3.2%20Goè¯­è¨€ä»£ç ç§»æ¤/go1.15.3.linux-amd64.tar.gz2、解压到指定的目录下tar -C /usr/local -xzvf go1.15.3.linux-arm64.tar.gz3、安装上一个服务器的配置添加环境变量vim /etc/profile在文件最后添加如下配置export PATH=$PATH:/usr/local/go/binexport GOROOT=/usr/local/goexport GOPATH=$HOME/goexport PATH=$PATH:$GOPATH/bin返回根目录,使用如下命名使配置生效:source /etc/profile4、验证GO是否安装成功go version如果返回版本信息代表安装成功go version go1.15.3 linux/arm64运行Web服务器1、从x86服务器拷贝可执行文件到鲲鹏ecsscp root@EIP:/root/hello-world /root/ (EIP代表x86服务器的私网ip)这里直接拷贝到了根目录下第一个红框位置,输入YES后按回车;第二个红框位置,输入x86的root密码后按回车。使用命令查看文件已经拷贝到鲲鹏服务器ll2、运行可执行文件./hello-world会发现在这里会报错,这是因为x86和鲲鹏平台差异导致执行格式错误,无法执行x86的二进制文件,需要在鲲鹏平台重新编译源码。Build web服务器1、从x86拷贝源码文件,同样拷贝到根目录下scp root@EIP:/root/hello-world.go /root/2、重新编译源码,这里注意这次编译将编译后的文件命名为hello-world-kpgo build -x -o hello-world-kp hello-world.go主要的编译过程WORK=/tmp/go-build858683415mkdir -p $WORK/b001/cat >$WORK/b001/importcfg.link << 'EOF' # internalpackagefile command-line-arguments=/root/.cache/go-build/a8/a813454c9a5fa88725dce14a80aa5dcf0e8a86c23b87c8085aec03a3173c4495-dpackagefile fmt=/usr/lib/golang/pkg/linux_arm64/fmt.apackagefile net/http=/usr/lib/golang/pkg/linux_arm64/net/http.a…packagefile vendor/golang.org/x/text/transform=/usr/lib/golang/pkg/linux_arm64/vendor/golang.org/x/text/transform.aEOFmkdir -p $WORK/b001/exe/cd ./usr/lib/golang/pkg/tool/linux_arm64/link -o $WORK/b001/exe/a.out -importcfg $WORK/b001/importcfg.link -buildmode=exe -buildid=XFj__tL-9CaZ6vOMXHrY/qWDDtRnClpz5sw1UnAQT/qu7Q7CWlnhkC24dw2YLs/XFj__tL-9CaZ6vOMXHrY -extld=gcc /root/.cache/go-build/a8/a813454c9a5fa88725dce14a80aa5dcf0e8a86c23b87c8085aec03a3173c4495-d/usr/lib/golang/pkg/tool/linux_arm64/buildid -w $WORK/b001/exe/a.out # internalcp $WORK/b001/exe/a.out hello-world-kprm -r $WORK/b001/3、查看文件ll4、这里试着运行新编译的hello-world-kp文件 ./hello-world-kp5、浏览器访问鲲鹏ecs的EIP:8080/{string}
  • [技术干货] python应用迁移
    ✨✨服务器配置ecs的具体配置我就不再去说明了,详细可以去参考汇编代码的迁移本次实验使用的是鲲鹏平台进行python代码的一个应用迁移✨✨首先我们先下载本次实验所需要的代码下载完成后我们需要将代码报进行解压并放入/home/python-porting/目录下进入python-porting目录下输入ls查看文件 code难点在于python编译环境的配置接下来我们首先看看如何配置python编译环境1、首先我们可以去先检查目前python版本号输入:Python3 --version这里返回的版本号是3.7.42、尝试运行python脚本我们需要进入到code目录下运行Nevnetwork.py输入命令:cd /home/python-porting/codepython3 Nevnetwork.py在这里就会发现系统出现以下错误:报错原因是当我们在鲲鹏平台并没有相匹配的Numpy模块,于是我们需要去找到相匹配的Numpy模块现在我们解决该报错的方法有两种:1、从华为云开源镜像站中查找是否有适用于ARM平台上的NumPy,如果有,直接进行安装即可。2 、对NumPy进行源码移植。大部分情况下使用第一种方式即可解决,少数情况下需要第二种方式。🎁🎁从镜像源获取适配Numpy接下来我们先看看从华为云开源镜像站中寻找是否存在适配的arm平台的Numpy1、为使用华为开源镜像源,我们需要配置华为镜像源路径修改pip的配置文件,文件位于~/.pip/pip.conf, 如果没有这个文件,可以新创建一个具体命令如下:mkdir ~/.pip #创建目录touch ~/.pip/pip.confvim ~/.pip/pip.conf 编辑pip.conf编辑内容如下:[global]index-url = https://repo.huaweicloud.com/repository/pypi/simpletrusted-host = repo.huaweicloud.comtimeout = 120编辑完成后数:wq保存退出2、安装Numpy接下来就可以使用yum命令安装Numpy依赖包yum install -y python3-devel为了确保安装成功,我们先升级以下pippip3 install --upgrade pip使用以下命令安装Numpy3、验证Numpy安装结果进入python的开发界面,调用Numpy,测试Numpy是否安装完成pyton3import numpy这个时候没有发生报错就表明安装完成4、到这里就已经说明Numpy安装成功,为了展示方法二我们先将Numpy移除使用以下命令。移除Numpypip3 uninstall numpy5、验证Numpy是否移除🎁🎁使用源码包移植Numpy这种方法比上面的方法可能要复制一点1、配置鲲鹏编译环境,安装gcc-gfortranyum -y install gcc-gfortran2、获取Numpy源码包cd /usr/local/srcwget cid:link_03、进行编译配置我们将上面获取的源码目录进行解压,记住自己解压到那个目录解压并进入源码目录cd numpypython3 setup.py install5、最后我们就可以返回根目录去验证Numpy是否安装成功使用方法一,进入启动python进行编辑终于不再报错,接下来我们就可以安装依赖库了1、使用以下命令安装依赖库pip3 install selenium tqdmpip3 install --upgrade pippip3 install matplotlib2、进入到刚刚我们的code目录中,进行代码运行python3 Traing.py这一步需要很长时间等待,请耐心等待。。。。这段时间给大家放个烟花看看🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇🎇终于在漫长的等待后我们的训练终于结束了3、接下来又是漫长的等待python3 Dy-test.py4、好了,开始查看结果进入到img目录内,发现很多图片。5、使用命令开启端口服务:python3 -m http.server打开安全组释放端口80006、打开浏览器打开浏览器输入公网IP地址。ip + 端口。打开点击链接,查看图片到这里实验结束✨✨
  • [技术干货] 汇编代码迁移
    ✨✨获取实验资源🎁🎁购买ecs实验资源ecs的配置如下:计费模式:按需计费基础配置:鲲鹏计算,鲲鹏通用计算增强型,kc1.xlarge.2 4vCPUs | 8GB(两核就可用)镜像选择:centos系统,版本在7就可以网络配置:进入弹性云服务器的网络配置页面,网络选择“vpc-default”,子网选择“subnet-default”,安全组选择“Sys-FullAccess”,公网带宽选择“按流量计费”,带宽大小选择“5”, 单击“下一步:高级配置”。使用密码登录,便于后续操作单击“下一步:确认配置”。进入弹性云服务器的确认配置页面,核对信息无误后,勾选下方的“我已经阅读并同意《华为镜像免责声明》”,单击“立即购买”,完成鲲鹏云服务器的购买。点击“返回弹性云服务器列表”,查看刚刚购买的弹性云服务器,等待约30秒,其状态变为“运行中”,并显示弹性公网IP地址。在此弹性云服务器“IP地址”中,获取该服务器的弹性公网地址使用MobaXterm登录服务器安装porting-advisor使用如下命令下载Portting-advisor安装包wget https://mirrors.huaweicloud.com/kunpeng/archive/Porting_Dependency/Packages/Porting-advisor_2.2.T2.SPC300_Kunpeng-linux.tar.gz使用解压命令对压缩包进行解压tar -zxvf Porting-advisor_2.2.T2.SPC300_Kunpeng-linux.tar.gz进入到解压后的文件中cd Porting-advisor_2.2.T2.SPC300_Kunpeng-linux使用命令安装./install web安装完成后就可以在本地浏览器登录porting-advisor,刚进去可以设置初始密码,这是你以后的登录密码检查所需要的代码这里我们需要把我们需要检查的代码上传过来,我们以2048小游戏为例进行实验(文件上传到附件中)将所需要的文件进行解压tar -xvzf 文件名称使用cp命令将2048文件拷贝到/opt/portadv/portadmin/sourcecode/目录下(一定要是这个目录,只有在这个目录当中才可以呗代码迁移工具扫描到)备份src目录下的main.c文件,具体命令如下:cd /opt/portadv/portadmin/sourcecode/2048/cp src/main.c src/main.c.bk因为我们需要对迁移的代码进行扫描,所以我们需要使目录具有可读的权限,可以使用如下命令chmod -R 755 *✨✨代码迁移🎁🎁登录鲲鹏代码迁移工具在本机浏览器中,输入https://弹性云服务器弹性公网地址:8084如果碰到安全问题告警,请点击“高级”,然后选择忽略,继续浏览。在弹出的页面输入用户名和密码,其中用户名为:portadmin,然后点击“登录”。登录完成后首页内容如下接下来我们设置分析源码的参数在“源码文件存放路径”对话框中,指定需要分析的源码——src和so_src(选中后点击即可)。源码类型:C/C++编译器版本:GCC 7.3(一定要在7以上)构建工具:make编译命令:make目标操作系统:centos 7(左右)然后开始分析,等待分析结束源码分析完成,点击查看报告🎁🎁报告分析在报告中指出,需要迁移的依赖库(so库)为两个,源文件三个,代码12行其中,依赖库具体为libhighscore.so和libcurses.so,在后面实验中,这两个库需要重新编译。需要迁移的代码所在的文件分别为main.c及两个Makefile。切换到“源码迁移建议”中,查看具体情况。关于Makefile的迁移,系统给出了迁移建议汇编代码的迁移需要根据PPT内中的内容进行迁移。具体需要迁移的代码如下图所示:✨✨代码移植🎁🎁Makefile代码移植修改Makefile文件在“源码迁移建议”的页签中,找到Makefile的路径(由于两个Makefile需要修改的内容一致,因此只做一次步骤描述)。按照提示进入该路径,进行Makefile的修改,命令如下:cd /opt/portadv/portadmin/sourcecode/srcvim Makefile按照工具的提示,添加对应的参数,具体如下:然后重复以上步骤修改/opt/portadv/portadmin/sourcecode/so_src下的Makefile🎁🎁汇编代码移值修改main.c文件同样在“源码迁移建议”的页签中,找到main.c的路径按照提示进入该路径,进行main.c的修改,命令如下:cd /opt/portadv/portadmin/sourcecode/srcvim main.c对main.c中的汇编代码进行修改,具体如下:删除#后的源代码,然后增加适用于鲲鹏平台的、相同功能的汇编代码。"mrs %0, midr_el1": "=r"(s1)::"memory"修改后的文件如下:🎁🎁编译测试依赖库重新编译进入so_src目录下,使用make命令对程序所需的依赖库进行重新编译,命令如下:cd /opt/portadv/portadmin/sourcecode/so_srcmake源代码编译进入源代码主目录,使用make命令对应用进行重新编译,命令如下:cd /opt/portadv/portadmin/sourcecodemake使用以下命令修改依赖库环境变量:export LD_LIBRARY_PATH=/opt/portadv/portadmin/sourcecode/lib:$LD_LIBRARY_PATH🎁🎁测试运行在/opt/portadv/portadmin/sourcecode目录下使用下面命令运行程序:./2048正常运行
  • [技术干货] 第一讲:鲲鹏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 同学的帮助!
总条数:44 到第
上滑加载中