ubuntu18.04+cuda11.3+cudnn+anaconda+pytorch安装与设置
写在前面:
之前安装双系统(window10下安装ubuntu 18.04),遇到很多问题,关于显卡驱动找不到的问题,关于安装python与anaconda后由于gi包而产生的终端打不开的问题,以及torchtext,cuda,torch互相版本不匹配的问题。
什么是CUDA?为什么要安装CUDA?
CUDA英文全称是Compute Unified Device Architecture,是显卡厂商NVIDIA推出的运算平台。CUDA是一个并行计算平台和编程模型,能够使得使用GPU进行通用计算变得简单和优雅。
那什么是CUDNN?
CUDNN其实就是一个专门为深度学习计算设计的软件库,里面提供了很多专门的计算函数,如卷积等。从上图也可以看到,还有很多其他的软件库和中间件,包括实现c++ STL的thrust、实现gpu版本blas的cublas、实现快速傅里叶变换的cuFFT、实现稀疏矩阵运算操作的cuSparse以及实现深度学习网络加速的cuDNN等等.因此CUDNN本质就是一个进行深度学习的辅助工具箱。
什么是CUDA Toolkit?
CUDA Toolkit由以下组件组成:Compiler、Tools、Libraries、CUDA Samples、CUDA Driver。 运行CUDA应用程序需要系统至少有一个具有CUDA功能的GPU和与CUDA工具包兼容的驱动程序。每个版本的CUDA工具包都对应一个最低版本的CUDA Driver,也就是说如果你安装的CUDA Driver版本比官方推荐的还低,那么很可能会无法正常运行。CUDA Driver是向后兼容的,这意味着根据CUDA的特定版本编译的应用程序将继续在后续发布的Driver上也能继续工作。通常为了方便,在安装CUDA Toolkit的时候会默认安装CUDA Driver。
什么是nvcc?
nvcc其实就是CUDA的编译器,可以从CUDA Toolkit的/bin目录中获取,类似于gcc就是c语言的编译器。由于程序是要经过编译器编程成可执行的二进制文件,而cuda程序有两种代码,一种是运行在cpu上的host代码,一种是运行在gpu上的device代码,所以nvcc编译器要保证两部分代码能够编译成二进制文件在不同的机器上执行。
什么是driver API,什么是 runtime API?
用于支持driver API的必要文件(如libcuda.so)是由GPU driver installer安装的。nvidia-smi就属于这一类API。 用于支持runtime API的必要文件(如libcudart.so以及nvcc)是由CUDA Toolkit installer安装的。(CUDA Toolkit Installer有时可能会集成了GPU driver Installer)。nvcc是与CUDA Toolkit一起安装的CUDA compiler-driver tool,它只知道它自身构建时的CUDA runtime版本。它不知道安装了什么版本的GPU driver,甚至不知道是否安装了GPU driver。 而我安装的CUDA正是CUDA Toolkit Installer,在未安装CUDA之前,通过nvidia-smi命令无法找到对应的显卡信息,但是安装CUDA之后其版本与nvcc版本一致,这是由于我安装的CUDA toolkit集成GPU driver installer 安装了driver API,未安装CUDA之前并没有安装GPU driver。事实上,可以只安装 GPU driver 而不安装tookit,这样的情况当GPU driver和后续安装的tookit版本不一样时,就会出现nvidia-smi和nvcc -V显示的cuda版本不一样。
runtime API 和 driver API的区别?
从复杂性的角度。runtime API通过提供隐式初始化、上下文管理和模块管理来简化设备代码管理。这使得代码更简单,但也缺乏驱动程序API所具有的控制级别。 相比之下,driver API提供了更细粒度的控制,特别是在上下文和模块加载方面。实现内核启动要复杂得多,因为执行配置和内核参数必须用显式函数调用指定。 从加载模块的角度。对于runtime API,其在运行时,所有内核都在初始化期间自动加载,并在程序运行期间保持加载状态。 而使用driver API,可以只加载当前需要的模块,甚至动态地重新加载模块。driver API也是语言独立的,因为它只处理cubin对象。
https://www.cnblogs.com/marsggbo/p/11838823.html
参考文章
开始安装
1.选择cuda版本(11.3)并下载、安装。
安装的时候不选择电脑自带的驱动,直接移除原有驱动
2.cudnn for CUDA11.x
由于安装的cuda是11.3,因此选择当前能够唯一支持cuda的cudnn v8.21, 安装需要登录。
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Sun_Mar_21_19:15:46_PDT_2021
Cuda compilation tools, release 11.3, V11.3.58
Build cuda_11.3.r11.3/compiler.29745058_0
下载后解压:
tar -xvzf cudnn-11.3-linux-x64-v8.2.1.32.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
3.安装pytorch:
一开始直接用pip install torch命令进行下载,但是这个命令自动下载torch1.8版本的,这与我的cuda版本其实不匹配,因此出现算力不匹配问题,几经周折,一定保证对应cuda的pytorch。我安装的cuda的torch版本是11.1,这和电脑安装的cuda驱动是同一系列,算力能够支持
pip3 install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html
- torchtext安装问题
由于我的pytorch版本是1.9,因此需要安装对应于torch的torchtext,安装不匹配的版本会无法使用
pip3 install torchtext==0.10.0