ubuntu20不同版本的cudnn切换

首先了解下:alternatives

alternatives系统在基于Debian的系统里是用来管理同一软件的多个版本或者实现的。比如系统可能有多个版本的Java,用户可以通过update-alternatives命令来切换默认使用的版本。

在ubuntu20的/etc/alternatives目录下实际上是一个符号链接的存放位置,系统通过维护这些链接来指向当前选择的程序版本。比如,当用户安装不同版本的gcc时,alternatives系统可以帮助选择默认的gcc版本,而实际的二进制文件可能存放在不同的路径下,而这些符号链接在/etc/alternatives中集中管理。

总之在 Ubuntu/Debian 系统中,/etc/alternatives 目录是 备选系统(Alternative System) 的核心实现。它的作用是管理系统中的多版本软件共存动态切换默认版本,主要涉及以下关键功能:


核心机制

  • 符号链接池/etc/alternatives 存储的是一个由 update-alternatives 控制的符号链接网络。
  • 优先级匹配:根据用户/软件的安装操作,自动维护多个候选版本的优先级关系。
  • 分布式管理 :不同软件包的维护者通过 postinst 脚本注册自己的备选方案。

我的系统中安装cudnn8和9,切换方法如下:

Step 1. 确认已注册的 cuDNN 版本

查看所有已安装并注册到 alternatives 的 cuDNN 版本:

复制代码
sudo update-alternatives --display libcudnn

输出:

显示有8和9两个版本的cudnn,当前使用的是V8版本

Step 2. 交互式切换版本

通过菜单选择需要激活的 cuDNN 版本:

复制代码
sudo update-alternatives --config libcudnn

输出:

前面带*表示正在使用的,说明现在用的是V8版本的cudnn,我们通过如下指令看看,libcudnn.so连接到哪个文件

readlink -f /usr/lib/x86_64-linux-gnu/libcudnn.so

输出:

可以看到当前确实是链接到V8版本的cudnn.

上面我们现在 2,切换到V9版本。

Step 3. 验证链接一致性

检查动态库的符号链接是否指向正确版本:

复制代码
ls -l /usr/lib/x86_64-linux-gnu/libcudnn*

Step 4. 更新链接库缓存

强制清理并重建动态链接库缓存:

复制代码
sudo ldconfig

Step 5. 验证兼容性

检查 cuDNN 与 CUDA 的兼容性:

复制代码
cat /usr/local/cuda/version.txt  # 查看CUDA版本
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2  # 查看cuDNN版本

或者再次执行

readlink -f /usr/lib/x86_64-linux-gnu/libcudnn.so

就可以看到已经切换到V9版本了。

相关推荐
徐小黑ACG6 小时前
nginx配置文件
linux·服务器·nginx
新时代牛马6 小时前
Linux VFS 完整篇:从path_openat、dentry/inode 到page cache 与挂载排障
linux·运维·服务器
java_logo6 小时前
Docker 部署 Rocky Linux:轻松搭建 RHEL 兼容企业级基础镜像平台
linux·docker·容器·rocky linux·基础镜像·轩辕镜像·rhel 兼容
拂拉氏6 小时前
【知识讲解】 Linux虚拟地址空间认识
linux·虚拟地址空间
新时代牛马8 小时前
Linux 驱动中断与定时完整篇:从 request_threaded_irq 到hrtimer 选型与排障
linux·运维·服务器
分支预测失败10 小时前
RISC-V 核间中断 IPI 实战:从 MSIP 寄存器到 IMSIC 消息投递
linux·后端
GeW11 小时前
RHCE考试避坑指南"90%考生容易忽略的细节
linux
键盘会跳舞12 小时前
【C++多线程】死锁诊断工具实战:从 Windows 到 Linux 的全链路排查
linux·c++·windows·死锁
拂拉氏13 小时前
【知识讲解】 Linux环境变量的认识与使用
linux·环境变量
zhangrelay13 小时前
答疑-是否软件源问题都必须更换为国内呢-
linux·笔记·学习·ubuntu·ros2