说明

内容包含以下几块:

  • 1 ubuntu安装Cuda的一般方法
  • 2 ubuntu安装GTX1060 铭影GTX1060
  • 3 ubuntu安装3060Ti
  • 4 使用docker安装cuda

整个过程就算顺利也要2~3小时,我第一次花了8个小时

1 内容

1.1 CUDA与CUDNN

这部分内容参考这篇文章

CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

NVIDIA CUDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。

CUDA与CUDNN的关系:CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。

CUDNN的安装不会对CUDA产生影响(插拔件)

1.2 CUDA的版本

这部分内容参考这篇文章

CUDA作为基础工作台,提供了一些基础功能,例如“CUDA9.0不支持gcc7.x”。因此在引用其他任务库的时候需要配置相同的CUDA版本,避免出错

一台机器可以支持多个版本的CUDA,具体内容可以再百度一下。

要安装什么版本的CUDA取决于显卡驱动的版本,越新的驱动支持的CUDA版本越多。

1.3 显卡驱动

显卡驱动的安装有几种方式:

  • 1 ubuntu窗口软件
  • 2 ppa安装
  • 3 官网下载驱动安装(run文件),希望不会用到

这个是nvidia官网的驱动网址:

python中怎么import cuda和cudart python中cuda作用_显卡驱动

1.4 整体安装过程

  • 1 确保整机电源满足加载显卡的要求。(可能要从给显卡插上pin口供电,所以买电源的时候也可以适当关注一下)
  • 2 将显卡插上开机。就算没有安装驱动,显卡也应该会有显示,只是分辨率奇怪一点。(我的老主机Z97芯片组,14年买的,一开始黑屏,之后不知道怎么跳到了bios开始自动升级就好了)
  • 3 安装ubuntu18(插上u盘,按F10?进入BIOS界面,选择从U盘启动。还有F2和F12的作用我忘了是什么)
  • 4 更新apt源,这个后面安装应该有作用。
  • 5 安装显卡驱动
  • 6 安装CUDA
  • 7 安装CUDNN
  • 8 安装tensorflow_gpu

前三部基本上没什么软件的事,不用介绍。从第四步开始,我做一些简单的介绍。用脚本来进行修改,安全又方便。

更新apt源,这个后面安装应该有作用。

apt_source_set.sh脚本主要讲现有的源列表备份,然后将阿里云的源附加(注意不是替换)在原文件后面

#!bin/bash

cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 阿里云源
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse">>/etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse">>/etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse">>/etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse">>/etc/apt/sources.list
# ##測試版源
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse">>/etc/apt/sources.list
# # 源碼
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse">>/etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse">>/etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse">>/etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse">>/etc/apt/sources.list
##測試版源
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse">>/etc/apt/sources.list

apt-get update

apt-get upgrade

整个过程等等就好。

安装显卡驱动

Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,也没能得到NVIDIA的认可与支持。虽然Nouveau Gallium3D在游戏速度上还远远无法和NVIDIA官方私有驱动相提并论,不过确让Linux更容易的应对各种复杂的NVIDIA显卡环境,让用户安装完系统即可进入桌面并且有不错的显示效果,所以,很多Linux发行版默认集成了Nouveau驱动,在遇到NVIDIA显卡时默认安装。企业版的Linux更是如此,几乎所有支持图形界面的企业Linux发行版都将Nouveau收入其中。

一般我也不用ubuntu界面,没太找到驱动控制在哪。用命令安装如下

# 先看本机有没有nouveau(第三方的英伟达驱动,被diss)
# 如果没有输出,那就没有。有的话自行查询关闭。
lsmod | grep nouveau

# 查看推荐的驱动
ubuntu-drivers devices
---
└─ $ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001C04sv000010DEsd00001C04bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP106 [GeForce GTX 1060 5GB]
driver   : nvidia-driver-418-server - distro non-free
driver   : nvidia-driver-440-server - distro non-free
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-450 - distro non-free
driver   : nvidia-driver-455 - distro non-free recommended
driver   : nvidia-driver-450-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin
---
# 选择合适的驱动安装
# ubuntu-drivers autoinstall
apt install nvidia-430

退一步海阔天空。版本不必太新。

我第一次自动安装,是455版本驱动,然后就黑屏了。后来安装430, 但是自动帮我切到450版本,没有问题。

黑屏(驱动安装失败)怎么办?首先不要慌,问题不大。
首先重启机器,按F10,然后进行advance模式,选择root shell。
执行命令清除后重启就可以了。

apt-get remove –purge nvidia*

检查显卡驱动是否安装成功(可以看到我的显卡正在跑数)

nvidia-smi
---
└─ $ nvidia-smi
Thu Dec  3 14:39:48 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce GTX 106...  Off  | 00000000:01:00.0 Off |                  N/A |
| 48%   65C    P2    95W / 120W |   5006MiB /  5055MiB |    100%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1180      G   /usr/lib/xorg/Xorg                 27MiB |
|    0   N/A  N/A      1234      G   /usr/bin/gnome-shell               60MiB |
|    0   N/A  N/A     26361      C   /usr/bin/python3                   63MiB |
|    0   N/A  N/A     26457      C   /usr/bin/python3                 4851MiB |
+-----------------------------------------------------------------------------+

这篇文章是关于驱动安装的做备份参考,不太建议使用。(我觉得还是稍微复杂)

通过上面的命令我们看到了CUDA11.0, 难道CUDA自动装好了?No。

其实是因为CUDA 有两种API,分别是 运行时 API 和 驱动API,即所谓的 Runtime API 与 Driver API。

现在看到的CUDA和我们的软件没什么关系,反正不影响就好了。

两种cuda版本可以参考这篇文章

确定CUDA + CUDNN + Tensorflow的版本组合

python中怎么import cuda和cudart python中cuda作用_显卡驱动_02


这个要看你的应用需要什么版本tensorflow, 然后选择一套。另外有个小插曲是有可能要调整gcc版本,但我觉得通常是不用的。

└─ $ gcc --version
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.

有关这方面内容可以参考,这篇文章

最终我根据需要选择了CUDA10.0 + CuDNN7.6.5 + Tensorflow-GPU==1.14

  • CUDA: 类似软件的安装
  • CuDNN:类似配置文件的拷贝
  • Tensorflow:pip安装

CUDA的安装

整体上可以参考这篇文章

  • 1 先去官网下载
  • 2 运行安装
  • 3 配置环境变量

在~/.bashrc里增加

export PATH="/usr/local/cuda-10.0/bin:$PATH" 
export LD_LIBRARY_PATH="/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH"

查看是否装好

└─ $ cat /usr/local/cuda/version.txt
CUDA Version 10.0.130

也可以使用nvcc -V查看,但要安装个几百兆的插件,我觉得没有特殊需求就算了

apt install nvidia-cuda-toolkit

如果显示版本不一致可能是bashrc里写错了,参考这篇文章

CUDNN的安装

这里和CUDA比可能要多一步英伟达的注册。
具体可参考这篇文章 主要的命令执行这两步

cp cuda/include/cudnn*.h /usr/local/cuda/include

 cp cuda/lib64/libcudnn* /usr/local/cuda/lib64

查看是否安装成功

└─ $ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 5

安装tensorflow

先安装python

apt-get install python3.6

再安装pip3

apt-get install python3-pip

再安装tensorflow

pip3 install -i https://pypi.douban.com/simple/ tensorflow_gpu==1.14

如何测试安装成功可参考这篇文章

import tensorflow as tf
hello=tf.constant(‘hello,world’)
sess=tf.Session()
print(sess.run(hello))

到这里就安装成功了


关于GTX1060

python中怎么import cuda和cudart python中cuda作用_显卡驱动_03

安装3060ti和docker调用的后续再补