Ubuntu20.04安装CUDA和cuDNN

这里写目录标题

  • 1.简介
    • 1.1测试TensorFlow能否使用GPU
  • 2.安装CUDA11.2
    • 2.1下载安装包
    • 2.2安装
    • 2.3配置环境变量
      • 2.3.1打开bashrc
      • 2.3.2末尾加上
      • 2.3.3 内容生效
    • 2.4 测试CUDA11.2是否安装成功
  • 3.安装cuDNN
    • 3.1官网下载安装包
    • 3.2安装cuDNN
    • 3.3测试
  • 4.完全卸载CUDA和cuDNN

1.简介

由于Tensoflow-gpu对cuda版本严格的要求,TensoFlow-gpu==2.5.0需要CUDA11.2版本才能使用GPU(conda安装的TensorFlow可以不用安装cuDNN,pip方式安装需要)。

1.1测试TensorFlow能否使用GPU

import tensorflow as tf
# 查看gpu和cpu的数量
gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
cpus = tf.config.experimental.list_physical_devices(device_type='CPU')
print(gpus, cpus)

2.安装CUDA11.2

2.1下载安装包

sudo wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run

2.2安装

sudo sh cuda_11.2.0_460.27.04_linux.run

2.3配置环境变量

2.3.1打开bashrc

方式一(推荐)

sudo gedit ~/.bashrc

方式二

sudo vim ~/.bashrc

2.3.2末尾加上

export PATH=$PATH:/usr/local/cuda-11.2/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.2/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-11.2:/lib64

2.3.3 内容生效

source ~/.bashrc

2.4 测试CUDA11.2是否安装成功

nvcc -V

3.安装cuDNN

3.1官网下载安装包

去官网注册一个账号,下载对应版本的cuDNN。

只需下载cuDNN Library for Linux (x86_64)就行

下载安装包:
cudnn-11.2-linux-x64-v8.1.1.33.tgz

解压得到一个名为cuda的目录

3.2安装cuDNN

cp cuda/lib64/* /usr/local/cuda-11.2/lib64/
cp cuda/include/* /usr/local/cuda-11.2/include/

3.3测试

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

4.完全卸载CUDA和cuDNN

# 到目录下
cd  /usr/local/cuda-11.2/bin
# 执行
sudo ./cuda-uninstaller

继续清楚残余文件

sudo apt-get remove cuda
sudo apt autoremove 
sudo apt-get remove cuda*

到文件下

 cd /usr/local/

删掉两个cuda文件夹

大功告成!

补充:一般情况我们都安装了显卡驱动,所以这里第一项驱动最好不勾选,其他默认安装
Ubuntu20.04安装CUDA和cuDNN_第1张图片
代码测试GPU能否使用

import torch
flag = torch.cuda.is_available()
if flag:
    print("CUDA可使用")
else:
    print("CUDA不可用")

ngpu= 1
# Decide which device we want to run on
device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")
print("驱动为:",device)
print("GPU型号: ",torch.cuda.get_device_name(0))
import 	torch
import  time
print(torch.__version__)
print(torch.cuda.is_available())
# print('hello, world.')


a = torch.randn(10000, 1000)
b = torch.randn(1000, 2000)

t0 = time.time()
c = torch.matmul(a, b)
t1 = time.time()
print(a.device, t1 - t0, c.norm(2))

device = torch.device('cuda')
a = a.to(device)
b = b.to(device)

t0 = time.time()
c = torch.matmul(a, b)
t2 = time.time()
print(a.device, t2 - t0, c.norm(2))

t0 = time.time()
c = torch.matmul(a, b)
t2 = time.time()
print(a.device, t2 - t0, c.norm(2))

你可能感兴趣的:(Python学习,tensorflow,python,深度学习)