Ubuntu 18.04 + Python3.6 + CUDA-10.0 + CUDNN-7.5.0 + tensorflow-gpu-1.13.1
转自:https://blog.csdn.net/ycfn97/article/details/100084641
Install nvidia driver
首先卸载原有驱动
1 | sudo apt - get purge nvidia |
添加图形驱动程序到源列表:
1 2 3 | sudo add - apt - repository ppa:graphics - drivers / ppa sudo apt update sudo apt upgrade |
检查将安装什么驱动程序:
1 2 3 4 5 6 7 8 9 | ubuntu - drivers devices root@boss - To - be - filled - by - O - E - M: / home / boss # ubuntu-drivers devices = = / sys / devices / pci0000: 00 / 0000 : 00 : 01.0 / 0000 : 01 : 00.0 = = modalias : pci:v000010DEd00001E04sv00007377sd00001730bc03sc00i00 vendor : NVIDIA Corporation driver : nvidia - driver - 430 - third - party free recommended driver : nvidia - driver - 410 - third - party free driver : nvidia - driver - 415 - third - party free driver : xserver - xorg - video - nouveau - distro free builtin |
注意!!!虚拟机无法安装NVIDIA显卡驱动程序,虚拟机中只有虚拟显卡没有NVIDIA显卡,不能安装NVIDIA驱动,无论是在NVIDIA官网下载NVIDIA-Linux-x86_64-430.40.run
还是ppa
下载都是没用的,也无法安装TensorFlow-gpu,虚拟机只能用cpu版本的TensorFlow。如果是考虑“虚拟一个系统”来使用显卡的话,考虑容器化技术——Docker大家可以参考这位大佬的文章虚拟机上无法安装tensorflow-GPU版本
虚拟机驱动程序是VM,,,
1 2 3 4 5 | = = / sys / devices / pci0000: 00 / 0000 : 00 : 0f . 0 = = modalias : pci:v000015ADd00000405sv000015ADsd00000405bc03sc00i00 vendor : VMware model : SVGA II Adapter driver : open - vm - tools - desktop - distro free |
自动安装最新的驱动程序
1 | sudo ubuntu - drivers autoinstall |
显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | This system doesn't support Secure Boot Secure Boot not enabled on this system. Done. nvidia: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to / lib / modules / 5.0 . 0 - 25 - generic / updates / dkms / nvidia - modeset.ko: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to / lib / modules / 5.0 . 0 - 25 - generic / updates / dkms / nvidia - drm.ko: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to / lib / modules / 5.0 . 0 - 25 - generic / updates / dkms / nvidia - uvm.ko: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to / lib / modules / 5.0 . 0 - 25 - generic / updates / dkms / depmod... DKMS: install completed. |
表示安装成功
然后重启机器:
1 | sudo reboot |
检查正确的安装驱动程序:
1 | nvidia - smi |
显示 说明NVIDIA驱动安装成功
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | root@boss - To - be - filled - by - O - E - M: / usr / local / cuda - 10.0 / samples / 1_Utilities / bandwidthTest # nvidia-smi Tue Aug 27 20 : 03 : 00 2019 + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | NVIDIA - SMI 430.40 Driver Version: 430.40 CUDA Version: 10.1 | | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + | GPU Name Persistence - M| Bus - Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage / Cap| Memory - Usage | GPU - Util Compute M. | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = + = = = = = = = = = = = = = = = = = = = = = = + = = = = = = = = = = = = = = = = = = = = = = | | 0 GeForce RTX 208. .. Off | 00000000 : 01 : 00.0 On | N / A | | 26 % 32C P8 9W / 250W | 302MiB / 11016MiB | 1 % Default | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Processes: GPU Memory | | GPU PID Type Process name Usage | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 0 1135 G / usr / lib / xorg / Xorg 16MiB | | 0 1186 G / usr / bin / gnome - shell 58MiB | | 0 1422 G / usr / lib / xorg / Xorg 98MiB | | 0 1566 G / usr / bin / gnome - shell 127MiB | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |
这里也可以下载并安装 Cuda 和 Nvidia 驱动一起执行,分开安装的筒子们请略过下面的部分直接跳到 install cuda&cudnn部分
卸载所有原驱动
1 | $ sudo apt - get purge nvidia * |
禁用nouveau
新建-blacklist-nouveau.conf 输⼊指令:
1 | $ sudo vim / etc / modprobe.d / blacklist - nouveau.conf |
往 blacklist-nouveau.conf 文件中写⼊:
1 2 | blacklist nouveau options nouveau modeset = 0 |
禁 Ubuntu 自带开源驱动nouveau,写入后保存重启
1 | $ sudo reboot |
重启后在终端执行行命令:
1 | $ lsmod | grep nouveau |
查看nouveau模块是否被加载,若无输出
,则执行下一步
禁⽤X服务
1 | $ sudo service lightdm stop |
注意!!!在Ubuntu禁用X进入tty1终端后登陆用户输入密码时不能用小键盘,系统不识别,别问我怎么知道的 )逃…
确定下载的 cuda 版本后执行指令
1 2 | $ sudo chmod 777 cuda_9. 0.176_384 . 81_linux .run $ sudo . / cuda_9. 0.176_384 . 81_linux .run - - no - opengl - libs |
进入 CUDA 安装中同意安装 Nvidia 驱动
1 2 3 4 5 6 | [accept] #同意安装 [y] #安装Driver,将自动安装CUDA版本相匹配的Nvidia驱动 [y] #安装CUDA Toolkit install #安装到默认目录 [y] #创建安装目录的软链接 [n] #不复制Samples,因为在安装目录下有/samples |
安装完成后会显示 CUDA 和 Nvidia 驱动成功安装
后面vim 打开.bashrc 在末行加⼊命令详见install cuda&cudnn部分
Install cuda&cudnn
1 2 | cd 下载目录 sudo sh cuda_10. 0.130_410 . 48_linux .run - - override - - silent - - toolkit |
1 2 3 4 5 | cd 下载目录 tar - xzvf cudnn - 10.0 - linux - x64 - v7. 5.0 . 56.solitairetheme8 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 * |
现在必须为/.bashrc添加一些路径:
1 | gedit ~ / .bashrc |
在/.bashrc后面加上
1 2 3 | export PATH = / usr / local / cuda / bin ${PATH: + :${PATH}} export LD_LIBRARY_PATH = / usr / local / cuda / lib64${LD_LIBRARY_PATH: + :${LD_LIBRARY_PATH}} export CUDA_HOME = / usr / local / cuda |
现在重新加载你的终端配置:
1 2 | source ~ / .bashrc sudo ldconfig |
检查路径是否正确安装:
1 | echo $CUDA_HOME |
测试版本号
查看 CUDA 版本:
1 | cat / usr / local / cuda / version.txt |
查看 CUDNN 版本:
1 | cat / usr / local / cuda / include / cudnn.h | grep CUDNN_MAJOR - A 2 |
也可以这样测试cuda安装情况
编译并测试设备 deviceQuery:
1 | root@boss - To - be - filled - by - O - E - M: / home / boss / download # nvcc -V |
输出如下
1 2 3 4 5 | root@boss - To - be - filled - by - O - E - M: / home / boss / download # nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005 - 2018 NVIDIA Corporation Built on Sat_Aug_25_21: 08 : 01_CDT_2018 Cuda compilation tools, release 10.0 , V10. 0.130 |
编译并测试带宽 bandwidthTest:
1 2 3 | $ cd / usr / local / cuda - 9.0 / samples / 1_Utilities / deviceQuery $ sudo make $ . / deviceQuery |
输出如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | root@boss - To - be - filled - by - O - E - M: / home / boss / download # cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery root@boss - To - be - filled - by - O - E - M: / usr / local / cuda - 10.0 / samples / 1_Utilities / deviceQuery # sudo make "/usr/local/cuda-10.0" / bin / nvcc - ccbin g + + - I.. / .. / common / inc - m64 - gencode arch = compute_30,code = sm_30 - gencode arch = compute_35,code = sm_35 - gencode arch = compute_37,code = sm_37 - gencode arch = compute_50,code = sm_50 - gencode arch = compute_52,code = sm_52 - gencode arch = compute_60,code = sm_60 - gencode arch = compute_61,code = sm_61 - gencode arch = compute_70,code = sm_70 - gencode arch = compute_75,code = sm_75 - gencode arch = compute_75,code = compute_75 - o deviceQuery.o - c deviceQuery.cpp "/usr/local/cuda-10.0" / bin / nvcc - ccbin g + + - m64 - gencode arch = compute_30,code = sm_30 - gencode arch = compute_35,code = sm_35 - gencode arch = compute_37,code = sm_37 - gencode arch = compute_50,code = sm_50 - gencode arch = compute_52,code = sm_52 - gencode arch = compute_60,code = sm_60 - gencode arch = compute_61,code = sm_61 - gencode arch = compute_70,code = sm_70 - gencode arch = compute_75,code = sm_75 - gencode arch = compute_75,code = compute_75 - o deviceQuery deviceQuery.o mkdir - p .. / .. / bin / x86_64 / linux / release root@boss - To - be - filled - by - O - E - M: / usr / local / cuda - 10.0 / samples / 1_Utilities / deviceQuery # ./deviceQuery . / deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking) Detected 1 CUDA Capable device(s) Device 0 : "GeForce RTX 2080 Ti" CUDA Driver Version / Runtime Version 10.1 / 10.0 CUDA Capability Major / Minor version number: 7.5 Total amount of global memory: 11017 MBytes ( 11552096256 bytes) ( 68 ) Multiprocessors, ( 64 ) CUDA Cores / MP: 4352 CUDA Cores GPU Max Clock rate: 1545 MHz ( 1.54 GHz) Memory Clock rate: 7000 Mhz Memory Bus Width: 352 - bit L2 Cache Size: 5767168 bytes Maximum Texture Dimension Size (x,y,z) 1D = ( 131072 ), 2D = ( 131072 , 65536 ), 3D = ( 16384 , 16384 , 16384 ) Maximum Layered 1D Texture Size, (num) layers 1D = ( 32768 ), 2048 layers Maximum Layered 2D Texture Size, (num) layers 2D = ( 32768 , 32768 ), 2048 layers Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 49152 bytes Total number of registers available per block: 65536 Warp size: 32 Maximum number of threads per multiprocessor: 1024 Maximum number of threads per block: 1024 Max dimension size of a thread block (x,y,z): ( 1024 , 1024 , 64 ) Max dimension size of a grid size (x,y,z): ( 2147483647 , 65535 , 65535 ) Maximum memory pitch: 2147483647 bytes Texture alignment: 512 bytes Concurrent copy and kernel execution: Yes with 3 copy engine(s) Run time limit on kernels: Yes Integrated GPU sharing Host Memory: No Support host page - locked memory mapping: Yes Alignment requirement for Surfaces: Yes Device has ECC support: Disabled Device supports Unified Addressing (UVA): Yes Device supports Compute Preemption: Yes Supports Cooperative Kernel Launch: Yes Supports MultiDevice Co - op Kernel Launch: Yes Device PCI Domain ID / Bus ID / location ID : 0 / 1 / 0 Compute Mode: < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) > deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.1 , CUDA Runtime Version = 10.0 , NumDevs = 1 Result = PASS |
编译并测试带宽 bandwidthTest:
1 2 3 | $ cd .. / bandwidthTest $ sudo make $ . / bandwidthTest |
输出如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | root@boss - To - be - filled - by - O - E - M: / usr / local / cuda - 10.0 / samples / 1_Utilities / deviceQuery # cd ../bandwidthTest root@boss - To - be - filled - by - O - E - M: / usr / local / cuda - 10.0 / samples / 1_Utilities / bandwidthTest # sudo make "/usr/local/cuda-10.0" / bin / nvcc - ccbin g + + - I.. / .. / common / inc - m64 - gencode arch = compute_30,code = sm_30 - gencode arch = compute_35,code = sm_35 - gencode arch = compute_37,code = sm_37 - gencode arch = compute_50,code = sm_50 - gencode arch = compute_52,code = sm_52 - gencode arch = compute_60,code = sm_60 - gencode arch = compute_61,code = sm_61 - gencode arch = compute_70,code = sm_70 - gencode arch = compute_75,code = sm_75 - gencode arch = compute_75,code = compute_75 - o bandwidthTest.o - c bandwidthTest.cu "/usr/local/cuda-10.0" / bin / nvcc - ccbin g + + - m64 - gencode arch = compute_30,code = sm_30 - gencode arch = compute_35,code = sm_35 - gencode arch = compute_37,code = sm_37 - gencode arch = compute_50,code = sm_50 - gencode arch = compute_52,code = sm_52 - gencode arch = compute_60,code = sm_60 - gencode arch = compute_61,code = sm_61 - gencode arch = compute_70,code = sm_70 - gencode arch = compute_75,code = sm_75 - gencode arch = compute_75,code = compute_75 - o bandwidthTest bandwidthTest.o mkdir - p .. / .. / bin / x86_64 / linux / release cp bandwidthTest .. / .. / bin / x86_64 / linux / release root@boss - To - be - filled - by - O - E - M: / usr / local / cuda - 10.0 / samples / 1_Utilities / bandwidthTest # ./bandwidthTest [CUDA Bandwidth Test] - Starting... Running on... Device 0 : GeForce RTX 2080 Ti Quick Mode Host to Device Bandwidth, 1 Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB / s) 33554432 12162.1 Device to Host Bandwidth, 1 Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB / s) 33554432 12451.7 Device to Device Bandwidth, 1 Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB / s) 33554432 513231.8 Result = PASS |
如果两个测试的结果都是 Result = PASS CUDA
,说明安装成功
安装TensorFlow-gpu
这里我选择了清华大学的开源镜像以提高下载速度,提示出现pip not found ,不要直接复制提示安装pip,要根据Python版本下载你想要的pip,否则会下载Python2.7
1 2 3 4 | root@sunqi - To - be - filled - by - O - E - M: / # pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U Command 'pip' not found, but can be installed with: apt install python - pip root@sunqi - To - be - filled - by - O - E - M: / # apt install python-pip |
直接复制提示就会变成下面这样要修改Python默认版本,不要这样
1 2 | root@sunqi - To - be - filled - by - O - E - M: / # pip -V pip 9.0 . 1 from / usr / lib / python2. 7 / dist - packages (python 2.7 ) |
修改Python默认版本
详见我的另一篇博客linux修改Python默认版本
修改完Python默认版本如果还不改,那么依然会是Python2.7的pip
1 2 3 4 5 | root@sunqi - To - be - filled - by - O - E - M: / # apt install python-pip 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 python - pip 已经是最新版 ( 9.0 . 1 - 2.3 ~ubuntu1. 18.04 . 1 )。 |
pip -V还是no module named pip
1 2 3 4 5 | root@sunqi - To - be - filled - by - O - E - M: / # pip -V Traceback (most recent call last): File "/usr/bin/pip" , line 9 , in <module> from pip import main ModuleNotFoundError: No module named 'pip' |
必须这样安装
1 | root@sunqi - To - be - filled - by - O - E - M: / # apt install python3-pip |
然后再查看pip版本是否符合要求
1 | pip - v |
如果pip -v出现报错:bash: /usr/bin/pip: 没有那个文件或目录
可参考pip -v报错:bash: /usr/bin/pip: 没有那个文件或目录
更新pip
1 | sudo pip install - - upgrade pip |
安装Tensorflow-gpu
1 | pip install - - user tensorflow - gpu |
这里还有一种方法用bazel编译,需要下载一些依赖库,就不赘述了,感性趣的筒子们自行百度
在此,TensorFlow-gpu环境就已经安装完成,下面进行测试
1 2 3 4 | import tensorflow as tf hello = tf.constant( "Hello,Tensorflow!" ) sees = tf.Session() print (sees.run(hello)) |
如果得到了输出hello,TensorFlow!
那么恭喜你完成了DeepLearning基本环境的配置
如果出错,请检查NVIDIA驱动版本和cuda以及cudnn版本是否正确匹配
常见问题
1 | I tensorflow / stream_executor / platform / default / dso_loader.cc: 53 ] Could not dlopen library 'libcudart.so.10.0' ; dlerror: libcudart.so. 10.0 : cannot open shared object file : No such file or directory; LD_LIBRARY_PATH: : / usr / local / cuda / lib64: / usr / local / cuda / extras / CUPTI / lib64 |
详见cuda程序执行出错: libcudart.so.10.0: cannot open shared object file: No such file or directory
听说看完了会点赞的都是美女帅哥
作者:楚千羽
出处:https://www.cnblogs.com/chuqianyu/
本文来自博客园,本文作者:楚千羽,转载请注明原文链接:https://www.cnblogs.com/chuqianyu/p/14321656.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~