Nvidia Jetson Nano B01初体验(四)

网友投稿 794 2022-05-29

前情回顾:

Nvidia Jetson Nano B01初体验(一) https://bbs.huaweicloud.com/blogs/330158

Nvidia Jetson Nano B01初体验(二)https://bbs.huaweicloud.com/blogs/330177

Nvidia Jetson Nano B01初体验(三)https://bbs.huaweicloud.com/blogs/330290

(二十)关于Nano上源码安装MindSpore 1.6.0 GPU版本的尝试终结版

在 第三篇的 “(十七)再次探索:源码编译MindSpore 1.6.0”中,张小白曾经尝试了在Jetson Nano上源码安装MindSpore 1.6.0的GPU版本。

最后遇到的错误是这个:

在张小白发了问题贴之后,并没有得到什么解决方案。张小白一度想放弃,但一度又不甘心。

最近张小白趟坑的事情还少吗?

张小白树莓派4B踩坑记(一) https://bbs.huaweicloud.com/blogs/330786

张小白DataX踩坑记(一)待发表

哪一个不是困难重重?

于是张小白在MindSpore论坛继续发了一个试验贴:

Jetson Nano源码编译MindSpore 1.6 GPU版编译的再次尝试(连载中)https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=179276

由于张小白只有周末时间会宽裕一点,白天要上班处理公务,但对此又念念不忘,只好晚上继续探索:

先将现有的mindspore目录改名

mv mindspore mindspore.old

git clone https://gitee.com/mindspore/mindspore.git -b r1.6

修改 ~/mindspore/scripts/build/build_mindspore.sh,加入-DENABLE_GITEE=ON参数

(后面发现第二个改的不对,这是后话,暂且不提)

bash build.sh -e gpu -j12

这就又开始了漫长的编译历程。。。

结果编译到这里报错:

************ build core *************** -- Configuring done CMake Warning (dev) in mindspore/ccsrc/CMakeLists.txt: Policy CMP0104 is not set: CMAKE_CUDA_ARCHITECTURES now detected for NVCC, empty CUDA_ARCHITECTURES not allowed. Run "cmake --help-policy CMP0104" for policy details. Use the cmake_policy command to set the policy and suppress this warning. CUDA_ARCHITECTURES is empty for target "gpu_cuda_lib". This warning is for project developers. Use -Wno-dev to suppress it.

查了一下,需要在CMakeLists.txt中追加对CUDA_ARCHITECTURES的设置。

根据nvidia的编译规则:貌似对于Nano设备而言,CUDA_ARCHITECTURES设为50应该比较合适。

所以,张小白做了如下处理

cp CMakeList.txt CMakeList.txt.old

vi CMakeList.txt

增加以下几行:

if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES) set(CMAKE_CUDA_ARCHITECTURES 50 52 53) endif(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)

修改后后继续编译:

报错如下:

这个已经跑到了build_mindspore.sh中的第二个改动的地方,显然这里是不支持 -DENABLE_GITEE参数,所以果断去掉这个参数,继续编译。。。

进入到了有颜色的百分率编译历程,这个张小白非常熟悉。。

。。。

。。。

。。。

。。。

照这个速度,如果不出错的话,估计要编译一晚上。。。张小白当时决定睡了。。(当时是 2022年02月10日 02:36:43,有论坛发帖为证)

早上7点左右,张小白被闹钟惊醒,正在跑编译代码的笔记本电脑需要,但是编译仅仅进度到了 34%。。

无奈只好CTRL-C中断编译。。

(好在编译过的内容下一次再编译时会跳过去。。。)

特意在家里的电脑上安装了teamviewer.

然后在带走的笔记本电脑上也装了teamviewer.

然后远程控制家里的电脑,通过家里电脑的mobaxterm连接Nano。

这样就可以白天间歇性地远程控制Nano的编译过程了。

张小白通过teamviewer远程登录到Nano上,重新开始编译:

2022.2.10 19:30,进度74%

2022.2.10 22:26 进度79%

2022.2.11 0:19  进度85%

2022.2.11 6:16 97%

2022.2.11 6:23 100%

2022.2.11 6:32 100%

2022.2.11 6:39 100%

2022.2.11 6:46 100%

正当张小白以为“大功告成”的时候,居然报了这样一个致命的错误。

张小白度娘了以下这个错误:

说应该是内存资源不足引起的:

尽管在 (三)中( https://bbs.huaweicloud.com/blogs/330290 ),张小白已经扩了4G的虚拟内存:

扩完之后,SWAP空间有了6G左右:

所以张小白一口气将虚拟内存扩大了16G(变成了18G左右):

然后再开始编译:

bash build.sh -e gpu -j12

到了 2022.2.12  0:28,张小白看到编译还卡在98%一动不动,于是就CTRL-C暂停了编译:

Nvidia Jetson Nano B01初体验(四)

张小白后面就去忙树莓派去了。

当然,不死心的张小白开着Nano,采用j4方式重新进行编译,就把终端一直开在那边,野蛮生长。

结果到了 2022.2.13 7:09 ,居然有了新的变化:

张小白心想,难道死马当活马医,这里有戏?

2022.2.13 8:05

报了这个错,张小白却是很熟悉。

安装wheel就可以了:

pip3 install wheel --user

再来编译:bash build.sh -e gpu -j4

。。。

居然编译成功了!

赶紧将编译好的whl文件备份一下:

那就开始安装吧:

python3 -m pip install mindspore_gpu-1.6.0-cp37-cp37m-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

在安装numpy的时候会比较慢,需要耐心等待:

安装到scipy的时候也是一样的慢:

结果到最后:

居然有权限问题。对,那只能安装在这个用户下了:

python3 -m pip install mindspore_gpu-1.6.0-cp37-cp37m-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple --user

好在编译的时候,它也用到了cache.

那么,常规做法,编辑test.py文件:

import numpy as np from mindspore import Tensor import mindspore.ops as ops import mindspore.context as context context.set_context(device_target="GPU") x = Tensor(np.ones([1,3,3,4]).astype(np.float32)) y = Tensor(np.ones([1,3,3,4]).astype(np.float32)) print(ops.add(x, y))

然后执行看看:

python3 test.py

这就表明mindspore成功地调用到了Nvidia Jetson Nano B01的GPU模块了!

至此也排除了MindSpore团队提到了暂不支持ARM GPU版本的问题:

张小白已经将编译好的安装包放到了网盘上:https://pan.baidu.com/s/1Eb5tSv-e1z4GNk005wlDSQ (提取码:eyxe)

欢迎有Jetson Nano设备的童鞋下载试用!

最后感谢在编译过程中MindSpore团队给予的帮助,特别是月月鸟大大的鼓励,还有姐夫哥的支持。没有你们,也许张小白坚持不下去,也完成不了这一首发。

至于几位大大询问为啥张小白不编译Lite版本,张小白只能回答:full版本都可以的话,lite版本还怕不支持吗?(张小白胆战心惊的回答,却也可能给自己后续的任务留下了伏笔。。。这是后话,暂且不提。)

撒花!

(全文完,谢谢阅读)

MindSpore Ubuntu 神经网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:华为云 AppCube 应用魔方初体验丨【AppCube X WeLink双剑合璧】
下一篇:【mysql】整数类型
相关文章