Jetson AGX Orin安装Anaconda、Cuda、Cudnn、Pytorch最全教程

news2024/11/16 14:06:55

文章目录

  • 一:Anaconda安装
  • 二:Cuda、Cudnn安装
  • 三:Pytorch安装

一:Anaconda安装

Jetson系列边缘开发板,其架构都是arm64,而不是传统PC的amd64,深度学习的环境配置方法大不相同。想要看amd64的相关环境安装,可以参考这篇文章。下面步入正题:

对于Anaconda的安装其实和之前差不多,只是寻找aarch64的shell包安装即可,下载地址anaconda清华镜像源,我选择的是Anaconda3-2021.11-Linux-aarch64.sh

进入到下载文件夹,按如下命令依次安装即可:

chmod +x Anaconda3-2021.11-Linux-aarch64.sh 

./Anaconda3-2021.11-Linux-aarch64.sh

后面的安装流程和amd64的一样,不再赘述,可移步这篇文章。

二:Cuda、Cudnn安装

坑:千万不要安装cuda官网上最新的cuda-jetson-12.0,装完重启后终端就黑屏了,含泪刷机!

所以我参考了官网上最常用的三种方法SD卡、SDK Manager安装Jetpack、apt安装Jetpack。前两种是针对Orin之前的jetson系列板,第一次它们需要手动刷机,所以是针对无系统的空机。而Orin系列开始,自装好了Ubuntu20.04系统,所以选择第三种apt安装Jetpack

Jetpack这到底是什么呢,明明要安装cuda,为啥却先安装Jetpack呢?

其实原因很简单,Jetpack可以理解为Jetson系列板上的软件开发工具包,所有常用的开发kit里面都有。而apt安装Jetpack时默认直接装上与jetson版本号适配的cuda、cudnn、TensorRT,岂不妙哉!!

这里我参考的Invida官方指南,下面直接上代码:

sudo apt upgrade
sudo apt update
sudo apt dist-upgrade
sudo reboot
sudo apt install nvidia-jetpack

安装完输入sudo jetson_release进行查询 ( :需要装好Jtop才有此命令,安装方式见文尾):

在这里插入图片描述

发现安装Jetpack的过程中也安装了和5.0.2版本适配的Cuda_11.4、Cudnn_8.4.1。
,而Cudnn默认安装在了/usr/lib/aarch64-linux-gnu下


下面配置Cuda环境变量:

Cuda已经默认安装在了/usr/local/cuda下,运行如下指令:

#打开~/.bashrc
sudo gedit ~/.bashrc
#在文本末输入如下代码:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
#更新环境变量配置
source ~/.bashrc

运行nvcc -V查看版本号:

#/usr/local/cuda/bin/nvcc -V
nvcc -V

在这里插入图片描述

还没有结束,虽然安装了cuDNN,但没有将对应的头文件、库文件放到cuda目录。

cuDNN的头文件在:/usr/include,库文件位于:/usr/lib/aarch64-linux-gnu。将头文件与库文件复制到cuda目录下:

(这里我与amd64上的cudnn头文件进行了对比,发现amd64下的头文件都是源文件,而arm64下的头文件都是软链接,当我将软链接头文件复制到cuda头文件目录下,变为了源文件。。。之所以说这些,就是为了证明这里的操作和amd64的一样,不用担心)

操作如下:

#复制文件到cuda目录下
cd /usr/include && sudo cp cudnn* /usr/local/cuda/include
cd /usr/lib/aarch64-linux-gnu && sudo cp libcudnn* /usr/local/cuda/lib64

#修改文件权限,修改复制完的头文件与库文件的权限,所有用户都可读,可写,可执行:
sudo chmod 777 /usr/local/cuda/include/cudnn.h 
sudo chmod 777 /usr/local/cuda/lib64/libcudnn*

#重新软链接,这里的8.4.1和8对应安装的cudnn版本号和首数字
cd /usr/local/cuda/lib64

sudo ln -sf libcudnn.so.8.4.1 libcudnn.so.8

sudo ln -sf libcudnn_ops_train.so.8.4.1 libcudnn_ops_train.so.8
sudo ln -sf libcudnn_ops_infer.so.8.4.1 libcudnn_ops_infer.so.8

sudo ln -sf libcudnn_adv_train.so.8.4.1 libcudnn_adv_train.so.8
sudo ln -sf libcudnn_adv_infer.so.8.4.1 libcudnn_adv_infer.so.8

sudo ln -sf libcudnn_cnn_train.so.8.4.1 libcudnn_cnn_train.so.8
sudo ln -sf libcudnn_cnn_infer.so.8.4.1 libcudnn_cnn_infer.so.8

sudo ldconfig

测试Cudnn:

sudo cp -r /usr/src/cudnn_samples_v8/ ~/
cd ~/cudnn_samples_v8/mnistCUDNN
sudo chmod 777 ~/cudnn_samples_v8
sudo make clean && sudo make
./mnistCUDNN

可能会报错
test.c:1:10: fatal error: FreeImage.h: 没有那个文件或目录
#include “FreeImage.h”
^~~~~~~~~~~~~
compilation terminated.

输入如下代码:

sudo apt-get install libfreeimage3 libfreeimage-dev

如果配置成功 测试完成后会显示:“Test passed!”。
大功告成!!

三:Pytorch安装

pytorch版本不能随意安装,必须安装英伟达编译的好的库文件,附上官方链接,我是Jetpack5.0.2,选择1.12.0版本的pytorch

在这里插入图片描述
点击链接然后下载。完成后执行:

pip install torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl 

(其实在运行它之前,我事先根据官方教程链接运行如下代码,如果前面或后面的代码报错,可以尝试一下)

sudo apt-get -y update; 
sudo apt-get -y install autoconf bc build-essential g++-8 gcc-8 clang-8 lld-8 gettext-base gfortran-8 iputils-ping libbz2-dev libc++-dev libcgal-dev libffi-dev libfreetype6-dev libhdf5-dev libjpeg-dev liblzma-dev libncurses5-dev libncursesw5-dev libpng-dev libreadline-dev libssl-dev libsqlite3-dev libxml2-dev libxslt-dev locales moreutils openssl python-openssl rsync scons python3-pip libopenblas-dev

:我们还需安装 torchvision,官方没有whl文件,运行如下代码:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev 

git clone --branch <version> https://github.com/pytorch/vision torchvision #<version>看下表选择,我的是v0.13.0
cd torchvision
export BUILD_VERSION=0.x.0  # where 0.x.0 is the torchvision version  
python3 setup.py install --user

由下表可知,version中我应填v0.13.0注意v不要漏了

在这里插入图片描述

不出意外的话最后编译时会报错,我当时卡在了numpy安装上,说超时。所以我又先安装了numpy,然后再编译。其他可类推

最后验证Pytorch和torchvision是否安装成功:

在这里插入图片描述
这里有人会说import torchvison时有警告,如网址所说,原因就是你在torchvison文件夹中打开了终端,执行import,相当于”体内“调包。。。

所以退出当前编译包位置,到其他任何地方重新打开终端,运行import torchvison,自然都不会报错了。



我是刚出cv泥潭不久,又入jetson终端部署泥潭的江南咸鱼,希望大家能从一而终,不留遗憾!!!

觉得文章有用的话,各位客官点个赞吧!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376087.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能家居项目(六)之摄像头模块

目录 一、树莓派mipg-streamer实现监控功能调试 1、实现基本思路 2、安装摄像头模块 2.1、在安装sudo apt-get install libv4l-dev 的命令时报错 3、开启摄像头 以下内容是针对树莓派是stretch版本的修改办法&#xff1a; 一、树莓派mipg-streamer实现监控功能调试 1、…

有哪些前端面试题是必须要掌握的

对浏览器的缓存机制的理解 浏览器缓存的全过程&#xff1a; 浏览器第一次加载资源&#xff0c;服务器返回 200&#xff0c;浏览器从服务器下载资源文件&#xff0c;并缓存资源文件与 response header&#xff0c;以供下次加载时对比使用&#xff1b; 下一次加载资源时&#x…

Flow API搭建指南

搭建Flow API&#xff0c;首先需要安装知行之桥EDI系统&#xff0c;注意&#xff0c;Flow API为新增功能&#xff0c;仅在2022版本&#xff08;8336&#xff09;及以后支持&#xff0c;如果你发现正在使用的产品没有这个功能&#xff0c;可以在我们官网下载最新版本或者联系我们…

将企业文件共享解决方案与数据丢失防护配对

您的企业文件共享解决方案是否足够&#xff1f;企业文件共享解决方案已经是一种加密移动中敏感数据的好方法&#xff0c;但仅加密是不够的。 您能否确保不会意外传输敏感信息&#xff1f;您是否可以审核谁发送了什么&#xff1f;最后但并非最不重要的一点是&#xff0c;您是否…

【Autoware】2小时安装Autoware1.13(保姆级教程)

前言&#xff1a;ROS的出现使得机器人软件开发更加快速和模块化&#xff0c;在此基础上&#xff0c;Autoware.ai开源项目可以让我们很容易地将一套完整的自动驾驶软件部署到我们的测试车辆上&#xff0c;并见证它跑起来&#xff01; 文章目录1.Autoware简介2.电脑软硬件配置要求…

爆肝更新 Python 100道基础入门练习题(附答案)

前言 大家早好、午好、晚好吖 ❤ ~ 更多精彩内容、资源皆可点击文章下方名片获取此处跳转 实例001&#xff1a;数字组合 题目&#xff1a; 有四个数字&#xff1a;1、2、3、4&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;各是多少&#xff1f; 程序分…

合宙入门教程之luat开发教程

合宙入门教程准备工作连接电脑建工程与烧录测试demo之main.lua实验现象准备工作 1.开发板&#xff08;1块&#xff09; 2.Luatools_v2.exe &#xff08;烧录固件软件&#xff09; 3.USB驱动 跳转合宙官网链接 连接电脑 1.首先安装合宙开发工具&#xff0c;其次安装USB驱动。…

【JAVA】一个项目如何预先加载数据?

这里写目录标题需求实现AutowiredPostConstruct实例CommandLineRunner实例ApplicationListener实例参考需求 一般我们可能会有一些在应用启动时加载资源的需求&#xff0c;局部或者全局使用&#xff0c;让我们来看看都有哪些方式实现。 实现 Autowired 如果是某个类里需求某…

山东大学机器学习期末2022

接力&#xff1a;山东大学机器学习期末2021 本来是不想写的&#xff0c;因为不想回忆起考试时啥也不会的伤痛&#xff0c;没想到最后给分老师海底捞&#xff0c;心情好了一些&#xff0c;还是一块写完 备考建议&#xff1a;多看ppt&#xff0c;多看ppt&#xff0c;多看ppt 山东…

关于 Android 线程优化这些知识你都该了解

前言在实际项目开发中会频繁的用到线程&#xff0c;线程使用起来是很简单&#xff0c;但是滥用线程会带来性能问题&#xff0c; 比如启动一个线程至少 占用16kb的内存、线程过多会导致cpu的频繁切换而cpu切换成本是很高的、消耗大量用户电量等问题&#xff0c; 所以应该让app的…

Set集合、HashSet集合、LinkedHashSet集合

1、Set集合的特点 无序&#xff0c;不重复、无索引 Set集合的方法上基本和Collection的API一致 2、Set集合的实现类特点 HashSet&#xff1a;无序、不重复、无索引 LinkedHashList&#xff1a;有序、不重复、无索引 TreeSet&#xff1a;可排序、不重复、无索引 public s…

taobao.fulfillment.order.assemble( 拆合单结果回传接口 )

&#xffe5;免费必须用户授权 拆合单结果回传接口 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求示例 TaobaoClient client new DefaultTaobaoClient(url, appkey, secr…

centos7合并home分区到root分区

最近在尝试通过物理机安装 CentOS&#xff0c;官方镜像默认安装时&#xff0c;如果没有手动分区&#xff0c;默认设置是会将 home 单独分区&#xff0c;系统分区默认为 50 GB&#xff0c;这里提供方法将 home 分区合并到 root 分区。 1.查看当前系统分区情况 输入命令&#x…

华为OD机试用Python实现 -【删除重复数字后的最大数字】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲删除重复数字后的最大数字题目输入输出示例一输入输出示例二输入输出Python 代码展示编码思路华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog.csdn.ne…

RedisTemplate和StringRedisTemplate的区别

RedisTemplate和StringRedisTemplate的区别&#xff1a; 两者的关系是StringRedisTemplate继承RedisTemplate。两者的数据是不共通的&#xff1b;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据&#xff0c;RedisTemplate只能管理RedisTemplate中的数据。…

图解鼠标事件的 ScreenX ,LayerX,clientX,PageX,offsetX,X

前言&#xff1a; 完在上一篇文章 &#x1f381;如何实现原生 JS 的拖拽效果我中使用到了 MouseEvent 事件对象身上的 clienX 的属性&#xff0c;但同时我也注意到了事件对象身上关于 X 的相关属性还有很多&#xff0c;并且在移动端开发中&#xff0c;这些属性需要频繁的用到&a…

golang 实现链表爽不爽?

犹记得刚学 C 语言的时候&#xff0c;学到指针这一章&#xff0c;就会有让我们写链表的需求&#xff0c;头插法&#xff0c;尾插法&#xff0c;翻转链表&#xff0c;合并链表&#xff0c;约瑟夫环等等 学的不亦乐乎&#xff0c;但是 对于指针刚学的时候&#xff0c;真是摸不着…

DolphinDB实现动量交易策略详解

动量策略是最流行的量化策略之一。商品期货的CTA策略&#xff0c;绝大多数都是基于动量策略。在股票市场&#xff0c;动量策略也是常用的量化因子之一。通俗地讲&#xff0c;动量策略就是“追涨杀跌”。下面我们将介绍如何在DolphinDB中测试动量交易策略&#xff0c;并计算动量…

第三阶段04-同步请求和异步请求,get/post,Josn,pojo,Session/Cookie,过滤器Filter

文章目录同步请求和异步请求客户端如何发出异步请求自定义模板代码Get和Post请求异步版本的注册和登录商品管理系统(异步版本)商品列表步骤:前后端分离为什么需要前后端分离?为什么以后不再使用同步请求?JSONPOJO会话对象Session如何记住登录状态后端的MVC会话管理Cookie通过…

交叉编译 iceoryx

交叉编译 iceoryx 概述 iceoryx 是用于各种操作系统的进程间通信&#xff08;IPC&#xff09;中间件&#xff08;目前支持 Linux、macOS、QNX、FreeBSD 和 Windows 10&#xff09;。它起源于汽车行业&#xff0c;当涉及到驾驶员辅助或自动驾驶系统时&#xff0c;需要在不同的过…