如何查询自己下载的torch为gpu版本 torch的cuda版本对应_tensorflow版本


背景

出于复现他人代码的需要,有时候我们需要在系统里安装不同版本的pytorch或者tensorflow深度学习框架。而多数情况下,这些框架不同版本之间的兼容性并不是太好,即我们无法在同一个conda虚拟环境里复现其他作者的代码结果。因此,知晓如何在系统里安装pytorch与tensorflow,并使之正常工作就显得尤为必要。

本文基于以上教程,在Ubuntu18.04安装了pytorch1.5,并参考了网络上的各种教程,安装了tensorflow 1.12,成功跑通代码。

硬件

  1. CPU: Intel Core i7-4710HQ(对,你没有看错,这是一颗移动U,被魔改到B85平台……华强北赛高)
  2. GPU: Nvidia GTX1660 super
  3. RAM: 8G*2
  4. 芯片组:B85

软件

  • pytorch_v1.5所需cuda库:cuda_10.1.105_418.39_linux.run, cuDNN-10.1-linux-x64-v8.0.3.33.tgz,
  • tensorflow_v1.12所需cuda库:cuda_9.0.176_384.81_linux-run, cudnn-9.0-linux-x64-v7.tgz

注:tensorflow各版本有严格的python, gcc, CUDA, cuDNN版本要求,下载时需注意。

https://www.tensorflow.org/install/source#tested_build_configurationswww.tensorflow.org


下载以上文件下载地址:

cuda文件:

 https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=runfilelocaldeveloper.nvidia.com 
 

cuDNN文件:

cuDNN Archivedeveloper.nvidia.com

注:下载cuDNN需要注册英伟达账号。


必要步骤:

step1 按照教程安装CUDA 10.1 与cuDNN 8.0.3.33

step 2 查看本机cuda版本

输入指令:"nvidia-smi",以查看本机Driver Version,CUDA Version:


如何查询自己下载的torch为gpu版本 torch的cuda版本对应_tensorflow版本_02


输入指令:"nvcc -V",以查看CUDA runtime api:


如何查询自己下载的torch为gpu版本 torch的cuda版本对应_tensorflow 版本_03


可以看到,nvcc -V的结果与nvidia-smi的结果并不一致,这是因为CUDA有两个主要API,runtime api, driver api,nvidia-smi返回的是driver-installer安装的CUDA库,而nvcc -V返回的是由CUDA toolkit installer安装的cuda库。(搭建pytorch环境时,先安装的显卡驱动,再安装cuda-10.1时,并未安装driver,从这里导致以上两指令返回结果不一致)


如何查询自己下载的torch为gpu版本 torch的cuda版本对应_tensorflow版本_04


只需要知道,driver api与runtime api之间没有联系。通常情况下,nvidia-smi的CUDA version大于nvcc -V的CUDA version并不会引起什么问题。

step3 安装必要文件

输入指令: "sudo apt-get install g++ freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa libglu1-mesa-dev"

安装gcc 6,输入指令: "sudo apt install gcc-6", "sudo apt install g++-6"

step4 安装cuda 9.0

  1. cd到您存储cuda_9.0.176_384.81_linux-run的文件夹,输入指令: "chmod +x cuda_9.0.176_384.81_linux-run", "sudo ./cuda_9.0.176_384.81_linux-run --override".

注意:安装过程中千万不要安装显卡驱动;当询问"Install the CUDA 9.0 Toolkit?"选择"yes";选择默认安装位置;拒绝添加symbolic link(yes此操作会将系统的cuda指向新安装的版本)

2. 配置CUDA相关环境变量(Pytorch安装教程已经设置,略去)

至此,CUDA9.0库已经安装到系统之中。

step5 切换系统默认CUDA版本

step4所做的只是在系统中安装了CUDA 9.0库,并没有将系统CUDA指向9.0版本,此时默认指向CUDA 10.1。切换步骤如下:

打开终端,输入指令:"cd /usr/local", "sudo rm -rf cuda", (清除原有软链接)"sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda"(建立新的指向CUDA 9.0的软链接)

输入指令:"nvcc -V"以查看当前CUDA指向的是哪个版本,不出意外应为如下结果。


如何查询自己下载的torch为gpu版本 torch的cuda版本对应_tensorflow 版本_05


step6 安装cuDNN 7

cd到您所存储cudnn-9.0-linux-x64-v7.tgz的文件夹,并解压。注意千万不要和cuDNN-10.1-linux-x64-v8.0.3.33.tgz解压路径一致,否则两者会相互覆盖。

继续输入指令:


sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
sudo cp cuda/include/cudnn.h   /usr/local/cuda-9.0/include 
sudo cp /cuda/lib64/libcudnn*   /usr/local/cuda-9.0/lib64
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h    /usr/local/cuda-9.0/lib64/ibcudnn*


这时便将cuDNN 7的头文件复制到CUDA 9.0中。

step7 安装tensorflow-v1.12

  1. 创建conda虚拟环境:"conda create -n tf1.12 python=3.6"

2. 激活虚拟环境tf1.12:"conda activate tf1.12"

3. 安装tensorflow-gpu包:"conda install tensorflow-gpu=1.12"

4. 输入指令:"conda list" 以查看当前虚拟环境是否成功安装库。不出意外,应有以下输出:


如何查询自己下载的torch为gpu版本 torch的cuda版本对应_tensorflow版本_06


5. 检验tensorflow是否能够调用GPU:tf1.12虚拟环境输入指令"python",输入代码:


import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))


若检测到GPU,即有以下结果,则tensorflow可成功调用GPU运算。


如何查询自己下载的torch为gpu版本 torch的cuda版本对应_tensorflow 版本_07


step8 系统切换回CUDA 10.1

  1. 输入指令:"cd /usr/local", "sudo rm -rf cuda"(清除原有软链接), "sudo ln -s /usr/local/cuda-10.1 /usr/local/cuda"(建立新的指向CUDA 10.1的软链接)

2. 输入指令: "nvcc -V"以查看系统CUDA runtime api,若输出为cuda 10.1则切换成功。


至此,pytorch与tensorflow已成功在ubuntu 18.04安装成功,并且可以调用各自对应的CUDA版本。

为保证程序的稳定运行,通常建议复现一个工程对应一个环境,这样将库的干扰做到最小。

参考:

https://medium.com/@patrickorcl/install-cuda-10-and-cudnn-on-ubuntu-18-b28b59bae279medium.com https://medium.com/@yifanguo1129/install-cuda-9-0-and-cudnn-7-2-on-ubuntu-18-04-d9a7aeb89105medium.com

ubuntu18.04 安装多版本cuda(原9.0,新安装10.0),并随时切换使用blog.csdn.net

如何查询自己下载的torch为gpu版本 torch的cuda版本对应_tensorflow 版本_08