首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Linux 35.5 + JetPack v5.1.3@CUDA安装和版本切换

  • 25-02-19 16:20
  • 4638
  • 11495
blog.csdn.net

Linux 35.5 + JetPack v5.1.3@CUDA安装和版本切换

  • 1. 源由
  • 2. 现象
  • 3. 分析
    • 3.1 看本质
    • 3.2 善动脑
    • 3.3 笔记回忆
    • 3.4 底层思考
    • 3.5 多版本
  • 4. 版本切换
  • 5. 总结

1. 源由

最近遇到一些CUDA编程,以及编译链接过程出现一些版本不匹配的问题。

首先,申明下,本人是从来没有做过CUDA开发的。想在此表达的意思,只要底层概念清楚,去理解解决一些问题,还是能非常快的搞定的(反正我花了大概2个小时解决CUDA版本不一致导致无法编译成功的问题)。

2. 现象

从提示角度看,编译链接的时候发现找到了CUDA 12.6版本,但是要求使用11.4的版本。

注:之前这个软件包编译链接一切顺利,突然莫名其妙的就这样了。妥妥的直接崩溃!!!

-- +++ processing catkin package: 'camera_models'
-- ==> add_subdirectory(VINS-Fusion/camera_models)
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
  Could NOT find CUDA: Found unsuitable version "12.6", but required is exact
  version "11.4" (found /usr/local/cuda)
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:391 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.16/Modules/FindCUDA.cmake:1104 (find_package_handle_standard_args)
  /usr/local/lib/cmake/opencv4/OpenCVConfig.cmake:86 (find_package)
  /usr/local/lib/cmake/opencv4/OpenCVConfig.cmake:108 (find_host_package)
  VINS-Fusion/camera_models/CMakeLists.txt:16 (find_package)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3. 分析

底层逻辑思维的重要性,在于透过现象看本质;而技术出发的角度不仅仅是善于动脑,更要学会动手。

3.1 看本质

看这篇文章的小伙伴,不知道有几个用过Windows 95/98的?呵呵,如果用过,请评论留言。因为这样的小伙伴依然在这样一线动脑的可能不多了。

在上述系统上,如果出现蓝屏或者系统重启,通常Windows操作系统会提示用户,请卸载最近安装的程序(应用软件或者驱动程序)。

因此,大概率是最近安装什么导致了这个当前系统在编译链接的时候由于底层库或者配置环境的变更,导致了此次错误。

回忆:是的,我装了CUDA 12.6,而且一开始装了12.6,nvcc --version命令还用不了,还需要修改PATH路径。

好吗,估计这里就是问题的原因了。可是乍解决呢?知道管个PPPPPPPP用,,,所以,,,,

3.2 善动脑

俗话说“懒人多福”,在此就是,既然我都装了最新的CUDA12.6,凭什么我要换回去,再说了我也没有删除或者卸载CUDA 11.4啊。

能不能两个都要,随意切换呢?

3.3 笔记回忆

俗话说“好记性,不如烂笔头”,笔者的习惯就是干活干事,都会比较好的做一些简单的记录。

有以下几个好处:

  1. 能够有个过程记录,以免受到干扰忘记做到哪里了;
  2. 事后可提供详实的复现步骤;
  3. 根据前面的工序,通过记录内容,进行回退工作;
  4. 根据实验步骤或者先后次序,结合结果进行底层逻辑分析,定位可能问题;
  • CUDA Toolkit 12.6 Update 1 Downloads
    在这里插入图片描述
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/arm64/cuda-ubuntu2204.pin
$ sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/12.6.1/local_installers/cuda-tegra-repo-ubuntu2204-12-6-local_12.6.1-1_arm64.deb
$ sudo dpkg -i cuda-tegra-repo-ubuntu2204-12-6-local_12.6.1-1_arm64.deb
$ sudo cp /var/cuda-tegra-repo-ubuntu2204-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
$ sudo apt-get update
$ sudo apt-get -y install cuda-toolkit-12-6 cuda-compat-12-6
$ export PATH=/usr/local/cuda/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3.4 底层思考

  • 环境变量
$ export PATH=/usr/local/cuda/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
  • 1
  • 2
  • 安装路径,第一层
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Wed_Aug_14_10:14:07_PDT_2024
Cuda compilation tools, release 12.6, V12.6.68
Build cuda_12.6.r12.6/compiler.34714021_0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 安装路径,第二层
$ ls /usr/local/cuda -l
lrwxrwxrwx 1 root root 22 9月   4 08:05 /usr/local/cuda -> /etc/alternatives/cuda
$ ls /etc/alternatives/cuda -l
lrwxrwxrwx 1 root root 20 9月  14 07:09 /etc/alternatives/cuda -> /usr/local/cuda-12.6
  • 1
  • 2
  • 3
  • 4

3.5 多版本

那现在有哪些CUDA在系统上,分别是如何安装的?

$ ls /usr/local/cuda -l
lrwxrwxrwx 1 root root 22 9月   4 08:05 /usr/local/cuda -> /etc/alternatives/cuda

$ ls /etc/alternatives/cuda* -l
lrwxrwxrwx 1 root root 20 9月  14 07:09 /etc/alternatives/cuda -> /usr/local/cuda-12.6
lrwxrwxrwx 1 root root 20 9月   4 08:05 /etc/alternatives/cuda-11 -> /usr/local/cuda-11.4
lrwxrwxrwx 1 root root 20 9月  14 07:09 /etc/alternatives/cuda-12 -> /usr/local/cuda-12.6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4. 版本切换

  • Step 1:编辑 .bashrc 文件

在文件末尾添加:

export PATH=/usr/local/cuda-11.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH
  • 1
  • 2

保存并退出后,运行:source ~/.bashrc

  • Step 2:切换 CUDA 版本
$ sudo rm /etc/alternatives/cuda
$ sudo ln -s /usr/local/cuda-11.4 /etc/alternatives/cuda

$ ls /etc/alternatives/cuda -l
lrwxrwxrwx 1 root root 20 9月  14 10:01 /etc/alternatives/cuda -> /usr/local/cuda-11.4
  • 1
  • 2
  • 3
  • 4
  • 5

因为环境变量是关联在/usr/local/cuda的bin和lib64的,所以环境变量不需要更新。

  • Step 3:验证当前CUDA版本
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Sun_Oct_23_22:16:07_PDT_2022
Cuda compilation tools, release 11.4, V11.4.315
Build cuda_11.4.r11.4/compiler.31964100_0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注:如果实在不放心,重启下板子,看看是否还有cache什么的问题(这个逻辑,还没有深入研究)。

  • Step 4:重新编译ROS工程
$ rm build/ devel/ -rf
$ catkin_make
  • 1
  • 2

5. 总结

当然除了这个方法以外,还可以通过工程里面指定编译的CUDA版本。

总的来说,学会底层逻辑思维(透过现象看本质),勤于动手,事情总是能解决的!

注:本文转载自blog.csdn.net的lida2003的文章"https://blog.csdn.net/lida2003/article/details/142259865"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top