在深度学习环境搭建的过程中出现的问题大多都是相关驱动及应用版本不匹配的问题,如:
- Linux内核版本与CUDA版本不匹配
- TensorFlow GPU与CUDA及cuDNN版本不匹配等等
本文经查阅相应官网文档,将版本对应关系罗列如下:
CUDA版本与Linux发行版本内核及GCC间的对应关系
Distribution | Kernel* | GCC | GLIBC | ICC | PGI | XLC | CLANG |
---|---|---|---|---|---|---|---|
RHEL 8.0 | 4.18 | 8.2.1 | 2.28 | ||||
RHEL 7.6 | 3.10 | 4.8.5 | 2.17 | 19.0 | 18.x, 19.x | NO | 8.0.0 |
RHEL 6.10 | 2.6.32 | 4.4.7 | 2.12 | ||||
CentOS 7.6 | 3.10 | 4.8.5 | 2.17 | ||||
CentOS 6.10 | 2.6.32 | 4.4.7 | 2.12 | ||||
Fedora 29 | 4.16 | 8.0.1 | 2.27 | ||||
OpenSUSE Leap 15.0 | 4.15.0 | 7.3.1 | 2.26 | ||||
SLES 15.0 | 4.12.14 | 7.2.1 | 2.26 | ||||
SLES 12.4 | 4.12.14 | 4.8.5 | 2.22 | ||||
Ubuntu 18.10 | 4.18.0 | 8.2.0 | 2.28 | ||||
Ubuntu 18.04.3 (**) | 5.0.0 | 7.4.0 | 2.27 | ||||
Ubuntu 16.04.6 (**) | 4.4 | 5.4.0 | 2.23 | ||||
Ubuntu 14.04.6 (**) | 3.13 | 4.8.4 | 2.19 | — | — | — | — |
来源:Table 1. Native Linux Distribution Support in CUDA 10.1 Update 2
Linux 系统驱动安装失败表现为 nvidia-smi 无法工作,一般有下面几个常见原因:
- 系统缺乏编译 kernel module 所需要的包,如 gcc,kernel-devel-xxx 等,导致无法编译,最终安装失败。
- 系统里面存在多个版本的 kernel,由于 DKMS 的不正确配置,导致驱动编译为非当前版本 kernel 的 kernel moudule,导致 kernel module 安装失败。
- 安装驱动后,升级了 kernel 版本导致原来的安装失效。
Nvidia驱动版本与CUDA版本的对应关系
CUDA Toolkit | Linux x86_64 Driver Version | Windows x86_64 Driver Version |
---|---|---|
CUDA 10.1 (10.1.105 general release, and updates) | >= 418.39 | >= 418.96 |
CUDA 10.0.130 | >= 410.48 | >= 411.31 |
CUDA 9.2 (9.2.148 Update 1) | >= 396.37 | >= 398.26 |
CUDA 9.2 (9.2.88) | >= 396.26 | >= 397.44 |
CUDA 9.1 (9.1.85) | >= 390.46 | >= 391.29 |
CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 |
CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 |
CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 |
CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 |
CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
来源:Table 1. CUDA Toolkit and Compatible Driver Versions
关于Nvidia驱动版本和自己机器硬件的版本关系,可通过云服务器深度学习服务器环境搭建来查询。
Tensorflow GPU版本与CUDA及cuDNN版本的对应关系
版本 | Python 版本 | 编译器 | 编译工具 | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-1.13.1 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.19.2 | 7.4 | 10.0 |
tensorflow_gpu-1.12.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.11.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.9.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.11.0 | 7 | 9 |
tensorflow_gpu-1.8.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.10.0 | 7 | 9 |
tensorflow_gpu-1.7.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 | 7 | 9 |
tensorflow_gpu-1.6.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 | 7 | 9 |
tensorflow_gpu-1.5.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.8.0 | 7 | 9 |
tensorflow_gpu-1.4.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.5.4 | 6 | 8 |
tensorflow_gpu-1.3.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 | 6 | 8 |
tensorflow_gpu-1.2.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 | 5.1 | 8 |
来源:TensorFlow安装
目前而言,tensorflow_gpu-1.13.1及以上安装CUDA 10版本,tensorflow_gpu-1.12.0到tensorflow_gpu-1.4.0安装CUDA 9版本,tensorflow_gpu-1.4.0版本以下安装CUDA 8版本。