提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、安装anaconda
- 二、安装cuda10.1
- 三、安装cudnn7.6.3
- 四、更改环境变量
- 五、在Anaconda里面配置tensorflow或pytorch框架
- 六、配置环境过程中遇到的一些报错及解法办法
- 1.nvidia-smi提示 command not found
- 2.【nvidia-smi报错】Failed to initialize NVML: Driver/library version mismatch
- 3.错误files list file for package 'libeigen3-dev' missing; assuming package has no files currently installed的解决方法
- 4.发现cuda版本用nvcc和cat查询的不一样
- 5.发现cuda nvcc和nvidia-smi版本不一致
- 6.ensorflow的CUDA driver version is insufficient for CUDA runtime version 问题解决方案
- 总结
前言
由于上篇博客是在Virtualenv环境下安装tensorflow环境,这篇文章是补充在anaconda环境下安装tensorflow和pytorch环境。涉及到在同一台主机下,存在多个cuda版本,安装过程中的遇到一系列问题的解决方案。
一、安装anaconda
二、安装cuda10.1
1.Cuda下载网站
2.Cuda安装步骤
- sudo dpkg -i cuda-repo-ubuntu1604-10-1-local-10.1.105-418.39_1.0-1_amd64.deb
`sudo dpkg -i cuda-repo-ubuntu1604-10-1-local-10.1.105-418.39_1.0-1_amd64.deb`

2. `sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub`
sudo apt-key add /var/cuda-repo-10-1-local-10.1.105-418.39/7fa2af80.pub

3. `sudo apt-get update`
4. `sudo apt-get install cuda``
5. sudo apt install cuda-toolkit-10-1 #只安装CUDA 10.1
三、安装cudnn7.6.3
sudo dpkg -i libcudnn7_7.6.3.30-1+cuda10.1_amd64.deb
sudo dpkg -i libcudnn7-dev_7.6.3.30-1+cuda10.1_amd64.deb

sudo cp /usr/include/cudnn.h /usr/local/cuda-10.1/include
sudo cp /var/lib/dpkg/info/libcudnn* /usr/local/cuda-10.1/lib64
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-10.1/lib64/libcudnn*
四、更改环境变量
sudo gedit ~/.bashrc
source ~/.bashrc


五、在Anaconda里面配置tensorflow或pytorch框架
- 在Anaconda里面新建虚拟环境
conda create -n <name> <python版本>
例如:
1)conda create -n tensorflow1.0.1 python=2.7
2)conda create -n pytorch python=3.7
2.安装tensorflow命令

- 安装GPU-pytorch命令
官方地址
根据本地服务器安装的系统版本及cuda版本选择合适的pytorch安装版本
conda install pytorch torchvision torchaudio cudatoolkit=10.1 -c pytorch
- 查看配置环境:
conda activate pytorch
conda list

六、配置环境过程中遇到的一些报错及解法办法
1.nvidia-smi提示 command not found
NVIDIA-SMI has failed because it couldn’t communicate with NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
显卡驱动找不到解决方案:
- 方法1:
step1:sudo apt-get install dkms
step2: sudo dkms install -m nvidia -v 430.64
nvidia-smi
改为自己显卡版本号 查看方式 cd /usr/src 查看
特斯拉显卡版本 430.64
4.15.0-126-generic/x86_64
==亲测无效 ==
2. 方法2:
1)删除之前安装的nvidia驱动,运行 :
sudo apt-get purge nvidia-*
2) 添加第三方驱动源,运行
sudo add-apt-repository ppa:graphics-drivers/ppa
3)更新软件源:
sudo apt-get update
4.安装:
sudo apt-get install nvidia-430
sudo apt-get update
sudo apt-get upgrade
重新启动
==亲测有效 ==
2.【nvidia-smi报错】Failed to initialize NVML: Driver/library version mismatch

1.卸载驱动
sudo apt-get purge nvidia*
2.查找可用的驱动版本
ubuntu-drivers devices
3.cat /proc/driver/nvidia/version

4.于是尝试安装430版本的驱动:
sudo apt-get install nvidia-driver-430 nvidia-settings nvidia-prime
ubuntu桌面->左下角九宫格->software & update->additional Drivers。
现在可用更改gpu驱动,我这里选择了nvidia-driver-430(可能尝试其他也可以)。
点击apply changes,然后安装结束重启,
终端输入:
nvidia-smi

3.错误files list file for package ‘libeigen3-dev’ missing; assuming package has no files currently installed的解决方法
sudo apt-get update
sudo apt-get install --reinstall libeigen3-dev
4.发现cuda版本用nvcc和cat查询的不一样


修改bashrc配置文件,根据自己的需求修改cuda版本。如果需要用到cunda9.0,就将bashrc配置文件中的cuda换成9.0,这样就能在同一台服务器中安装多版本cuda了。

5.发现cuda nvcc和nvidia-smi版本不一致
- 为何nvidia-smi 中的CUDA 版本与 nvcc不一致
nvidia-smi的结果显示CUDA版本是10.2,而从nvcc-V命令来看,却是CUDA 9.0。
其实是因为CUDA 有两种API,分别是 运行时 API 和 驱动API,即所谓的 Runtime API 与 Driver API。
nvidia-smi 的结果除了有 GPU 驱动版本型号,还有 CUDA Driver API的型号,这里是 10.2。
而nvcc的结果是对应 CUDA Runtime API:
在安装CUDA 时候会安装3大组件,分别是 NVIDIA 驱动、toolkit 和 samples。NVIDIA 驱动是用来控制 GPU 硬件,toolkit 里面包括nvcc编译器等,samples或者说SDK 里面包括很多样例程序包括查询设备、带宽测试等等。上面说的 CUDA Driver API是依赖于 NVIDIA 驱动 安装的,而CUDA Runtime API 是通过CUDA toolkit 安装的。引用
- 显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn的协作与联系
如果driver API和runtime API的CUDA版本不一致可能是因为你使用的是单独的GPU driver installer,而不是CUDA Toolkit installer里的GPU driver installer
6.ensorflow的CUDA driver version is insufficient for CUDA runtime version 问题解决方案
解决办法参考如下
本文详述了在Ubuntu16.04上配置anaconda、cuda10.1、cudnn7.6.3以及pytorch1.5的步骤,包括安装过程、环境变量设置和解决各种报错的方法,如nvidia-smi报错、CUDA版本不一致等问题。


1万+

被折叠的 条评论
为什么被折叠?



