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

news/2024/11/30 7:40:07/

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.ppmy.cn/news/179118.html

相关文章

Nvidia显卡驱动升级

1. 执行nvidia-smi查看当前显卡驱动版本和显卡类型 2. 由上图可知,显卡型号为Tesla K40m,当前驱动版本为:410.129 CUDA版本为10.0 3. 前往Nvidia官网下载对应的驱动 https://www.nvidia.cn/Download/index.aspx?langcn 4. 下载下来的驱动文…

OpenGL与显卡驱动

一、OpenGL是什么 在开始这段旅程之前我们先了解一下OpenGL到底是什么。一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由…

ubuntu16.04+七彩虹GTX1060的NVIDIA驱动+Cuda8.0+cudnn5.1+tensorflow+keras搭建深度学习环境【学习笔记】【原创】...

平台信息:PC:ubuntu16.04、i5、七彩虹GTX1060显卡 作者:庄泽彬(欢迎转载,请注明作者) 说明:参考了网上的一堆的资料搭建了深度学习的开发环境,下班在宿舍折腾了好几个晚上才搞定,写篇文章记录一下。 一、安装Nvidia GT…

操作系统复习4.1.0-文件管理结构

定义 一组有意义的信息的集合 属性 文件名、标识符、类型、位置、大小、创建时间、上次修改时间、文件所有者信息、保护信息 操作系统向上提供的功能 创建文件、删除文件、读文件、写文件、打开文件、关闭文件 这6个都是系统调用 创建文件 创建文件时调用Create系统调用…

一文简单理解《Effective Java》建议

考虑用静态工厂方法替代构造方法 传统的获取一个对象实例,通常是通过构造方法,new一个对象;不同数量的入参,会有不同的构造方法; 例如,统一的返回结果类,传统方式(伪代码&#xff…

HashMap的扩容(扩容成红黑树之后再次扩容)

HashMap在多次扩容过程中,会根据负载因子(load factor)和容量(capacity)来确定是否需要进行扩容。当HashMap中的元素个数超过负载因子与当前容量的乘积时,就会触发扩容操作。 HashMap的默认负载因子为0.75…

JS隐式转换与类型比较

JS隐式转换与类型比较 隐式转换 隐式转换(Implicit Conversion)是指在表达式求值或操作中自动发生的类型转换。当使用不同的数据类型进行操作时,JavaScript 会自动进行类型转换以满足操作的要求。 隐式转换在编写逻辑时经常会出现&#xf…

starram内存条怎么样_starram内存牌子_星存内存条

我的电脑是星存(StarRam)内存条,512 DDR400 可看网上说有散热片的是假的? 请问是这样的吗? 假的和真的性能差别大不大??前天加了条内存,是黑金刚521 DDR400的, 可是安电脑里就不对了,倒是比以前快了,可是IE总出错,下载东西用迅雷一直自动关闭,重装系统干脆连硬盘都找不到了…