显卡---显卡驱动---CUDA---Cudnn

news/2024/4/24 23:59:42/文章来源:https://blog.csdn.net/u011345885/article/details/128107167

1. 背景

  最近在follow百度的CAE这篇论文时,源码需要的环境为:

python 3.7 cuda: 11.0 cudnn: 8.0.4 gcc 8.2

  该版本要求与我目前使用的服务器上的CUDA版本不相符合。因此搜索了一篇国外小哥的文章,讲述了如何在一台服务器上安装多个CUDA和Cudnn环境。
  该文章不但对安装多版本的CUDA和cudnn有帮助,而且也一定程度上帮助自己理解了显卡,显卡驱动,CUDA, Cudnn之间的关系。

2. 显卡,显卡驱动,CUDA,Cudnn四者之间的关系

2.1 显卡

  当面对一台陌生的机器,可以通过lshw指令来获取该机器上是否有显卡,以及显卡的型号是什么?
在这里插入图片描述
  lshw指令会输出所有和hard ware相关的信息,这里增加了参数-C display,来过滤出和显卡相关的信息。可以看到,我目前所使用的这台机器是1080TI的显卡。

2.2 显卡驱动

  显卡驱动可以理解为硬件和软件之间的中间层,实现最基本的显卡功能。可以通过nvidia-smi指令来查看显卡驱动是否安装,如果驱动安装的话,会显示类似于如下的信息。
在这里插入图片描述
  这里要注意的一点是nvidia-smi右上角显示的CUDA Version版本并不是表示当前机器上(已经)安装的CUDA版本是11.4,而是指当前显卡驱动支持的最高CUDA版本为11.4。

2.3 CUDA&&Cudnn

  CUDA是一个并行计算平台。而Cudnn(Cuda deep neural network)则是在CUDA的基础上,构建的一个专门的针对深度学习网络的库。
  这里可以查看两个点:第一点是第一版cudnn的发布日期,如下图所示,v1版本的时间没有给出,但推算大概是在2014年左右,相当于2012年alexnet出来之后的两年左右。
在这里插入图片描述
  另外一点是可以看一下cudnn库中的头文件内容,会看到我们熟悉的神经网络层的名称。
在这里插入图片描述

2.4 小结

在这里插入图片描述

3. 如何安装显卡,显卡驱动,CUDA, Cudnn

  这里仅记录一些关键词,具体可以参考国外小哥的安装过程。

3.1 安装显卡驱动

sudo ubuntu-drivers devices

查看,适合硬件的驱动版本。

sudo apt install xxx

安装驱动driver

3.2 安装cuda&&cudnn

  直接去nvidia官网,会提供安装方式和指令。这里要说明的是可以根据nvidia-smi上显示的cuda version来确定自己能安装version的范围。安装cudnn版本的选择则是根据cuda版本来确定。

3.3 设置环境变量

sudo gedit ~./bashrc
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}export LD_LIBRARY_PATH="/usr/local/cuda/lib64:/usr/local/cuda-10.1/lib64:/usr/local/cuda-11/lib64:/usr/local/cuda-11.1/lib64:/usr/local/cuda-11.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
#make sure you add your cuda-X.x lib64 paths

  最后要将所有的安装路径都放到LD_LIBRARY_PATH中,就可以依次搜索不同的cuda版本。

${PATH:+:${PATH}}

这里的意思是${PATH}变量可能在之前还未定义,因此要这样进行保护。等价于:

if [ -z "$PATH" ]; thenPATH=/usr/local/cuda/bin
elsePATH=/usr/local/cuda/bin:$PATH
fi

4. 总结

  本文是以日常工作中“需要安装多个CUDA、cudnn版本”实际需求为契机,梳理了一些相关概念、关系和操作流程。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node之Express学习笔记

一.Express 1.1什么是Express Express的作用和Node.js内置的http模块类似 专门用来创建Web服务器的 本质:npm上的第三方包,提供快速创建Web服务器的便捷方法 1.2Express能做什么 Web网站服务器:专门提供Web网页资源的服务器 API接口服务器&…

FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)

1、大家好,今天给大家带来的内容是,基于AXI4协议的采用AXI-HP通道完成PL侧数据发送至PS侧(PS侧数据发送至PL侧并没有实现,但是保留了PL读取PS测数据的接口) 2、如果大家用到SoC这种高级功能,那大家应该对于…

Linux进阶-进程间通信(ipc)

进程间通信:数据传输、资源共享、事件通知、进程控制。 Linux系统下的ipc 早期unix系统 ipc:管道(数据传输)、信号(事件通知)、fifo(数据传输)。 system-v ipc(贝尔实…

Kubernetes之Pod初始化容器

Kubernetes之Pod初始化容器 概述 ​ 初始化是很多编程语言普遍关注的问题,甚至有些编程语言直接支持模式构造来生成初始化程序,这些用于进行初始化的程序结构称为初始化器或初始化列表。初始化代码要首先运行,且只能运行一次,它们…

CAPM资产定价模型

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 CAPM(Capital Asset Pricing Model)资产定价模型 这个模型在金融界的影响就是beta这个词的使用。CAPM模型用两个部分的回报之和来解释一个资产的回报。其中一个部分是指市场(称为market)…

时间序列:时间序列模型---自回归过程(AutoRegressive Process)

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 这次我们构造一个由无限的白噪声实现(white noise realization) 组成的时间序列,即。这个由无限数目的项组成的值却是一个有限的值,比如时刻的值为, 而…

Magic Leap 2设计和开发幕后花絮

Magic Leap今年发布新款AR头显Magic Leap 2,相比于上一代Magic Leap 1,新品更专注于B端场景,自公布以来,Magic Leap不仅对公司策略、理念更加透明,也不断公开ML2产品设计背后的思考。相比于ML1,ML2的设计有…

粒子群算法查找函数最小值

实现 函数 F01、F06 的优化测试 以下内容是现有算法的运行结果、调参分析、及代码实现,用于给其他人提供参考,懒得改了hh 1. 运行结果 参数 w 0.5 (可更改) c1 2.0 (可更改) c2 2.0 (可更改&…

Echart 柱状图,X轴斜着展示

option { color: [‘#3398DB’], tooltip: { trigger: ‘axis’, axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: ‘shadow’ // 默认为直线,可选为:‘line’ | ‘shadow’ } }, grid: { left: ‘3%’, right: ‘4%’, bottom: ‘3%’…

iPhone升级iOS 16后出现提示“面容ID不可用”怎么办?

最近,很多用户在苹果社区反馈,iPhone升级iOS 16后Face ID不能用了,尝试重置Face ID时,系统会弹窗提示“面容ID不可用,稍后尝试设置面容ID。” 如果你的iPhone在没有摔落手机或是手机进水的情况下出现这个弹窗&#xff…

【uniapp小程序】路由跳转navigator传参封装

文章目录🍍前言🍋正文1、看官网1.1 navigator API 介绍1.2、路由跳转参数传递1.3、五种常见的跳转方式1.3.1 uni.navigateTo(OBJECT)1.3.2 uni.redirectTo(OBJECT)1.3.3 uni.reLaunch(OBJECT)1.3.4 uni.switchTab(OBJECT)1.3.5 uni.navigateBack(OBJECT)…

图的初识·基本概念

文章目录基本概念图有两种基本形式无向图的表示有向图的表示基本概念 图结构也是数据结构的一部分。而且还有一点小难。图是由多个结点链接而成的,但是一个结点可以同时连接多个其他结点,多个节点也可以同时指向一个节点。【多对多的关系】 图结构是任意…

如何从报表控件FastReport .NET中连接到 PostgreSQL 数据库?

FastReport.NET官方版下载 Fastreport是目前世界上主流的图表控件,具有超高性价比,以更具成本优势的价格,便能提供功能齐全的报表解决方案,连续三年蝉联全球文档创建组件和库的“ Top 50 Publishers”奖。 慧都科技是Fast Repor…

mysql索引类别和失效场景

首先,我们为什么要使用索引,索引有什么作用呢? 索引可以用来快速查询数据表中有某一特定值的记录,大大加快数据的查询速度;在列上创建了索引之后,查找数据时可以直接根据该列上的索引找到对应记录行的位置…

YOLO X 改进详解

YOLO X 主要改进: Anchor-Free: FCOSDecoupled detection headAdvanced label assigning strategy Network structure improvement Decoupled detection head 对比于YOLO V5, YOLO X 在detection head上有了改进。YOLO V5中,检测头是通过卷积同时预…

视频编解码 - RTP 与 RTCP

目录 RTP 实时传输协议 RTCP协议 将H264 RTP打包 RTP 实时传输协议 音视频数据传输,先将原始数据经过编码压缩后,将码流打包成一个个RTP包,再将码流传输到接收端。 打包的作用 接收端要正确地使用这些音视频编码数据,不仅仅需…

JaVers:自动化数据审计

在开发应用程序时,我们经常需要存储有关数据如何随时间变化的信息。此信息可用于更轻松地调试应用程序并满足设计要求。在本文中,我们将讨论 JaVers 工具,该工具允许您通过记录数据库实体状态的更改来自动执行此过程。 Javers如何工作&#x…

vue Router

Vue项目各文件含义 1.src文件夹 是我们真正敲代码的文件夹, 2.assets放静态资源 3.components放组件 4.App.vue主组件 5.main.js项目的入口文件 Vue Router 在router/index.js路由文件中配置路由,设置路由跳转规则 import Vue from vue import Vu…

android Framework 中用到了哪些跨进程通信方式?

文章目录Linux 有哪些跨进程的通信方式?管道本地 Socket共享内存信号Linux 有哪些跨进程的通信方式? Binder 机制是Android基于Linux的一种独特的IPC机制。我们常用的AMS,PMS 等都是通过Binder机制来完成跨进程通信的,那么除了Bin…

【并发】深入理解Java线程的底层原理

线程基础知识 线程与进程 进程 操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 线…