当前位置: 首页 > news >正文

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版本了。

 

http://www.dtcms.com/a/62496.html

相关文章:

  • golang 静态库 Undefined symbol: __mingw_vfprintf
  • C++蓝桥杯基础篇(十一)
  • 【从零开始学习计算机科学】操作系统(八)IO管理
  • 搜广推校招面经四十五
  • Spring (十)事务
  • Spring Boot中利用Redis解决接口幂等性问题
  • GPIO接口
  • Django ORM自定义排序的实用示例
  • Axure RP 9 安装与汉化指南(附安装包)包含下载、安装、汉化、授权,Axure9 汉化教程、Axure9 汉化步骤
  • MoonSharp 文档三
  • Rust规律归纳随笔
  • 使用Mermaid语法绘制的C语言程序从Linux移植到Windows的流程图
  • Leetcode8-字符串转换整数(atoi)
  • 【技术白皮书】内功心法 | 第二部分 | Telnet远程登录的工作原理
  • 大模型:定义与主流架构全解析
  • 【TVM教程】为 Mobile GPU 自动调优卷积网络
  • SwiftUI 让视图自适应高度的 6 种方法(四)
  • Kubernetes Pod的生命周期概述
  • LearnOpenGL-笔记-其二
  • DeepSeek-实用集成大礼包
  • 基于某著名企业IPD与质量管理体系融合的研发质量管理方案(64页PPT)
  • 【保姆级教程】使用 oh-my-posh 和 clink 打造个性化 PowerShell 和 CMD
  • 十二天-双指针技术:链表问题的高效解法
  • springboot433-基于SpringBoot的流浪猫爱心救助系统(源码+数据库+纯前后端分离+部署讲解等)
  • Fast DDS Security--多方密钥协商协议
  • 人脸识别之数据集中 PI20 和 CFMT 之间关联的模型预测贝叶斯(Python+论文代码实现)
  • 接口使用实例和Object类及内部类
  • 本地部署 DeepSeek R1 的几种常见方法
  • 在 UniApp 开发的网站中使图片能够缓存,不一直刷新
  • 委外订单不能删除提示领料未发量不能小于零