Ubuntu安装cuda和cudnn(funfile)

CUDA版本对显卡驱动版本有要求:

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

查看系统属性是否支持:

lspci | grep -i nvidia

uname -m && cat /etc/*release

gcc --version

uname -r

查找本机内核版本:

cat /proc/driver/nvidia/version

查看电脑驱动:

cat /var/log/dpkg.log | grep nvidia

查看该系统适合安装的驱动版本:

apt install ubuntu-drivers-common -y

ubuntu-drivers devices

安装指定nvidia版本驱动:

apt-get install nvidia-455

查看是否安装成功:

nvidia-smi

下载官网:

https://developer.nvidia.com/zh-cn/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal

下载安装包:

wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.runsudo 

安装:

sh cuda_11.1.0_455.23.05_linux.run

根据提示选中“continue”回车:

根据提示输入accept回车:

如下显示是默认状态,CUDA Toolkit是必须要安装的,其它的可选,不安装就把“X”就去掉:

#如果nvidia驱动是卸载后重新安装的就会显示如下页面,如果之前有安装则不会显示:

默认安装位置在/usr/local/下;

安装完成后/root(根)目录下也会生成一个NVIDIA_CUDA-11.1_Samples目录,进入该目录进行编译:

cd NVIDIA_CUDA-11.1_Samples/

make

#如下图表示编译成功

编译成功后会在当前目录下生成/bin目录,进入如下目录进行验证:

cd bin/x86_64/linux/release/

测试cuda是否可用,最后显示result=Pass表示成功:

./deviceQuery

./bandwidthTest

开头开到驱动的信息说明cuda已经在调用GPU.

设置环境变量:

vim /etc/profile

export PATH=/usr/local/cuda-11.1/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH

更新:

source /etc/profile

查看cuda版本:

apt install nvidia-cuda-toolkit

root@ubuntu:~# nvcc -V

nvcc: NVIDIA (R) Cuda compiler driver

Copyright (c) 2005-2020 NVIDIA Corporation

Built on Tue_Sep_15_19:10:02_PDT_2020

Cuda compilation tools, release 11.1, V11.1.74

Build cuda_11.1.TC455_06.29069683_0

如果编译完成后测试报错如下:一定是驱动和cuda版本不兼容,重新卸载并安装驱动后再重新安装cuda。

#切记要完全卸载nvidia驱动。

./deviceQuery

./deviceQuery Starting...

CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 999

-> unknown error

Result = FAIL

卸载原驱动:

sudo apt-get remove --purge nvidia*

# sudo rmmod nvidia

rmmod: ERROR: Module nvidia is in use by: nvidia_modeset nvidia_uvm

root@ubuntu:/usr/local/src# sudo rmmod nvidia_uvm

root@ubuntu:/usr/local/src# sudo rmmod nvidia_modeset

rmmod: ERROR: Module nvidia_modeset is in use by: nvidia_drm

root@ubuntu:/usr/local/src# sudo rmmod nvidia_drm

root@ubuntu:/usr/local/src# sudo rmmod nvidia_modeset

root@ubuntu:/usr/local/src# sudo rmmod nvidia

rmmod: ERROR: Module nvidia is in use
查看下有哪些进程还在使用 nvidia*,kill 相关进程:

sudo lsof -n -w /dev/nvidia*

删除旧的CUDA:

apt-get remove nvidia-cuda-*

重启

reboot

然后按照开头的cuda安装步骤重新安装cuda.

安装cudnn

同样要找到对应的版本,官网下载:

https://developer.nvidia.com/rdp/cudnn-archive

#需要注册并登录

网上推荐的直接解压复制文件的办法我这里验证不通过,所以就使用如下安装包进行安装:

dpkg -i libcudnn8_8.0.5.39-1+cuda11.1_amd64.deb

dpkg -i libcudnn8-dev_8.0.5.39-1+cuda11.1_amd64.deb

dpkg -i libcudnn8-samples_8.0.5.39-1+cuda11.1_amd64.deb

默认安装到/usr/src下面,进行编译:

cp -r /usr/src/cudnn_samples_v8/ $HOME

cd $HOME/cudnn_samples_v8/mnistCUDNN/

make clean && make

验证:

#passed表示成功。

pytorch gpu~ cuda cudnn安装是否成功的测试代码:

验证一:

# CUDA TEST

import torch

x = torch.Tensor([1.0])

xx = x.cuda()

print(xx)

# CUDNN TEST

from torch.backends import cudnn

print(cudnn.is_acceptable(xx))

验证二:

#用机器学习程序tensorflow

#载官网:://pypi.org/project/tensorflow/

我们使用pip安装指定版本,如果是python3就使用pip3:

pip3 install tensorflow-gpu==1.14

在terminal中输入:python

#后输入程序验证:

>>>import tensorflow as tf

>>>hello = tf.constant('Hello, TensorFlow!')

>>>sess = tf.Session()

>>>print(sess.run(hello))

如果安装成功,则会显示 Hello, TensorFlow!

验证三,系统自动分配设备:

root@ubuntu:/tmp# cat test1.py

#-*- coding:utf-8 -*-

import tensorflow as tf

# 新建一个 graph.

a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')

b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')

c = tf.matmul(a, b)

# 新建session with log_device_placement并设置为True.

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

# 运行这个 op.

print(sess.run(c))

执行:

python test1.py

验证四,手动指定分配设备:

root@ubuntu:/tmp# cat test2.py

#-*- coding:utf-8 -*-

import tensorflow as tf

# 新建一个graph.

with tf.device('/cpu:0'):

  a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')

  b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')

c = tf.matmul(a, b)

# 新建session with log_device_placement并设置为True.

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

# 运行这个op.

print(sess.run(c))

#卸载多余系统内核:

root@ubuntu:~# dpkg --get-selections |grep linux-image

linux-image-4.4.0-142-generic          install

linux-image-4.4.0-204-generic          install

linux-image-extra-4.4.0-142-generic       install

linux-image-generic             install

root@ubuntu:~# uname -a

Linux ubuntu 4.4.0-204-generic #236-Ubuntu SMP Fri Feb 19 16:11:27 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

root@ubuntu:~# apt-get purge linux-image-4.4.0-142-generic

nvcc和nvidia-smi显示的cuda版本不一致解释:

nvcc属于cuda的编译器,将程序编译成可执行的二进制文件,nvidia-smi全称是NVIDIA System Management Interface,是一种命令行使用工具,旨在帮助管理和监控NVIDIA GPU设备。

cuda有runtime api和driver api,两者都有对应的cuda版本,nvcc –version显示的就是前者对应的cuda版本,而nvidia-smi显示的是后者对应的cuda版本。

用于支持driver api的必要文件由GPU driver install安装,nvidia-smi就属于这一类API;而用于支持runtime api的必要文件是由cuda toolkit install安装的。nvcc是与cuda toolkit一起安装的cuda compiler-driver tool,它只知道自身构建时的cuda runtime版本,并不知道安装了什么版本的GPU driver,甚至不知道是否安装了GPU driver。

cuda toolkit install通常会集成了GPU driver install,如果你的cuda均通过cuda toolkit install来安装,那么runtime api和driver api的版本应该是一致的,也就是说,nvcc -V和nvidia-smi显示的版本正常是一样的,否则你可能使用了单独的GPU driver install来安装GPU driver,这样就会导致nvidia-smi和nvcc -V显示的版本不一样。

通常,driver api的版本能向下兼容runtime api的版本,即nvidia-smi显示的版本大于nvcc -V时通常是可以使用的。

#runtime api就是runfile类型的安装文件,driver api就是deb类型的安装文件。

驱动下载官网:https://www.nvidia.cn/Download/index.aspx?lang=cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小数苗小数苗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值