运维系列&AI系列&Lenovo-G双系统系列(前传-装之前搜索的):cuda版本与pytorch版本依赖关系 cuda8.0 pytorch

cuda版本与pytorch版本依赖关系 cuda8.0 pytorch




cuda版本与pytorch版本依赖关系 cuda8.0 pytorch

我是想安装pytorch。需要用anaconda(比较强大)

由于anaconda比较简单。本文重点说明CUDA、cuDNN和pytorch的安装,可直接看对应部分。

ps:如果你们配置成功了或者出现了什么问题,希望能留下言啊,我可以改正,以防误导。

ps:可以用pip安装.xml版本,这里太长,在下一篇文章中说明

ps:更新:pytorch 直接官网pip或者conda安装非常方便:https://pytorch.org

在这里插入图片描述

一、cuda8.0安装:

此部分以下参考地址并结合自己的安装情况进行更改如下:

http://www.mamicode.com/info-detail-2021440.html

关于 CUDA的安装,网上有特别多的安装帖子,也很乱,哈哈。CUDA这个东西需要依赖的、牵着的东西特别多,如果没有做好检查,则在安装时候特别容易出现各种各样的冲突,且一旦冲突发生,即使卸载CUDA也不能解决问题,只能重装系统。
我最后就是参考CUDA的官方文档安装成功的。

总结一下,我的安装建议是:

  1. 在安装之前一定要详细检查自己的系统环境、软件是否符合CUDA的安装要求。不要存有侥幸心理,跳过检查步骤。

  2. 每进行一项操作,都检查一下该项操作是否成功。

安装CUDA主要分三大环节。

一、安装前的环境准备和检查
二、安装CUDA
三、安装完的校验。

一、安装前的环境准备和检查

1、安装Ubuntu系统14.04

新安装完的14.04系统会提示很多更新项。网上有很多帖子说不建议更新,说更新过后会导致安装CUDA发生系统界面循环登录的问题。但是我更新后,并没有遇到任何问题。

2、检查自己的电脑环境是否具备安装CUDA的条件
a) 检查自己的GPU是否是CUDA-capable

在终端中输入:

lspci | grep -i nvidia

如下为英伟达显卡计算力官网查询地址,可查询CUDA支持的不同显卡的计算能力列表。

https://developer.nvidia.com/cuda-gpus

深度学习中我们对GPU的计算能力一般是要求大于5.0,具体情况具体分析,低于5.0也并非一定不可以。

几款科学计算显卡对比

b) 检查自己的Linux版本是否支持 CUDA(Ubuntu 14.04没问题)
c) 检查自己的系统中是否装了gcc

在终端中输入: gcc --version 可以查看自己的gcc版本信息(英文输入法下的-)

没有的话可以通过 sudo apt-get install gcc安装。

d) 检查是否安装了kernel header和 package development

在终端中输入:

uname -r

可以查看自己的kernel版本信息,我的为4.4.0-133-generic(记住自己的版本,后面4.a)禁用 nouveau需要用到)。
在终端中输入:

sudo apt-get install linux-headers-$(uname -r)

可以安装对应kernel版本kernel headerpackage development

以上检查我的电脑系统都满足要求,如果没有满足要求的话,可以参考cuda的官方文档,里面有详细的针对每个问题的解决方案。

3、 选择安装方式和准备

CUDA提供两种安装方式:package manager安装runfile.此处只介绍runfile安装方式

下载cuda安装包cuda官网下载,根据系统信息选择对应的版本,runfile安装的话最后一项要选择 runfile文件cuda_*****linux.run的那个

首先在官网找到需要下载的版本: https://developer.nvidia.com/cuda-toolkit-archive

在这里插入图片描述

PS: 一定要下载到英文文件夹(目录不能含中文)

)

g)配置环境变量(安装成功时,有提示的相应地址)

官方上面是直接输入。但是我觉着在/etc/profile ~/.bashrc上写会更好.

/etc/profile影响所有用户,~/.bashrc影响当前用户使用的bash shell

$ sudo gedit /etc/profile
$ sudo vim ~/.bashrc

在最后面加上这些:

## 网上共看到三种添加内容
# 第一种
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

#第二种
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64

# 第三种是通过 sudo vim ~/.bashrc 
# 在文本末端追加以下两行代码(按键“i”进行编辑操作)保存退出(按“!wq”)
export PATH=/usr/local/cuda-8.0/bin:$PATH  
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

【P.S. 上面代码里面的 \ 表示的换行】

h) 重新加载环境变量,使其立刻生效 //重启电脑
$ sudo -s
source /etc/profile
#或者:
source ~/.bashrc
##用这两步代替按网上的大多数教程直接sudo source /etc/profile
##可以解决直接用出现的sudo: source: command not found的问题

(第二次配置已更改步骤如上)。我的用不了这个指令,保存文件,并重启。因为/etc/pro此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。source /etc/profile是临时生效,重启电脑才是永久生效。

i)查看一下是否设置成功
$ env

在这里插入图片描述

基本完成~

到此为止,CUDA的安装算是告一段落了。为了保险起见,建议进行下述的检查工作,确保真正的安装成功。

三.检查是否成功

a) 检查 NVIDIA Driver是否安装成功

终端输入 :$ cat /proc/driver/nvidia/version 会输出NVIDIA Driver的版本号

备注下我的是:
NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.130 Wed Mar 21 03:37:26 PDT 2018
GCC version: gcc version 4.8.5 (Ubuntu 4.8.5-4ubuntu8~14.04.2)

b) 检查 CUDA Toolkit是否安装成功

终端输入 : $ nvcc -V 会输出CUDA的版本信息,注意 - 为英语环境下的符号

在这里插入图片描述

c) 验证GPU是否可用
python
import torch 
print(torch.cuda.is_available())

返回True,表明已经可以使用GPU了.

d) 尝试编译cuda提供的例子

切换到例子存放的路径,默认路径是 ~/NVIDIA_CUDA-8.0_Samples (即 /home/xxx/ NVIDIA_CUDA-8.0_Samplesxxx是你自己的用户名)

然后终端输入:$ make

如果出现错误的话,则会立即报错停止,否则会开始进入编译阶段。
比如报错,提示的错误信息是系统中没有gcc
需要在终端运行 $ sudo apt-get install gcc 安装完gcc后 再make就正常了
整个编译的时间持续比较长,耐心等待,大概十几分钟是需要的。

在这里插入图片描述

e) 运行编译生成的二进制文件。

编译后的二进制文件 默认存放在~/NVIDIA_CUDA-8.0Samples/bin中。 切换路径 : cd ~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release 终端输入 :$ ./deviceQuery

看到类似如下图片中的显示,则代表CUDA安装且配置成功congratulation!!)

f)在此处检查一下系统和CUDA-Capable device的连接情况

终端输入 : $ ./bandwidthTest
看到类似如下图片中的显示,则代表成功(CUDA Driver Version = 9.0, CUDA Runtime Version = 8.0????)

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.0, CUDA Runtime Version = 8.0, NumDevs = 2, Device0 = Tesla K40c, Device1 = Quadro K4000
Result = PASS

在这里插入图片描述

祝大家都能顺利安装CUDA~~

二:安装cuDNN

(更新的话,只需要先两句删除,再按此部分步骤重新一次就好。)

#删除原来文件
sudo rm -rf /usr/local/cuda-8.0/include/cudnn.h
sudo rm -rf /usr/local/cuda-8.0/lib64/libcudnn*

2.1下载:

官网: https://developer.nvidia.com/cudnn。下载对应安装包(.tgz(第一个)),需要注册才能下载(我的密码Long******)。

本文Cudnn7.2.1网盘链接: https://pan.baidu.com/s/1bRN7ho5Dm3HotFqc1c3sWA 密码: btin

2.2安装:

Cudnnan安装包(cudnn-8.0-linux-x64-v7.2.1.38.tgz)拷至/home/helloworld目录下,打开终端。

tar xvzf cudnn-8.0-linux-x64-v7.2.1.38.tgz #解压后的文件夹名为cuda
## 将库和头文件复制到本机安装的cuda的目录下,如/usr/local/cuda-8.0
sudo cp cuda/include/cudnn.h  /usr/local/cuda-8.0/include

sudo cp cuda/lib64/libcudnn*  /usr/local/cuda-8.0/lib64

sudo chmod a+r  /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*
#chmod a+r表示添加文件权限,a表示所有用户,r表示可读。

2.3动态文件更改:

(这一步是必须的,不然运行程序的时候会出现:“error while loading shared libraries: libcudnn.so.x.x: cannot open shared object file: No such file or directory“的错误,同理,如果你后期出现了这样的报错,肯定就是这里的问题)
libcudnn.so.7.2.1libcudnn.so.7为对应版本

cd /usr/local/cuda/lib64/
#删除原有动态文件
sudo rm -rf libcudnn.so libcudnn.so.7 
#生成软衔接
sudo ln -s libcudnn.so.7.2.1 libcudnn.so.7 
#生成软链接
sudo ln -s libcudnn.so.7 libcudnn.so 
sudo ldconfig

2.4测试:

命令行下输入mysql --help如果是输出一串帮助提示的话,那么就是安装好了的。没有的话就是没安装好。或者:

cd /usr/local/cuda/lib64/


ll

会显示出你已经建立的软链接记录,至此,cudnn版本更新完毕

查看cudnn版本

在终端输入

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

如果出现下图所示版本信息,说明安装成功。

在这里插入图片描述

deb方式下验证参考官方文档,tar方式无法直接验证,只是copy了文件,没有deb方式下的压缩包。

这里给出deb方式下的验证包,下载后解压可以验证tar方式。

cudnn_samples_v7

解压到可写的文件夹下,进入

$ cd  cudnn_samples_v7/mnistCUDNN

编译

$make clean && make

# 运行mnistCUDNN样例

$ ./mnistCUDNN

如果输出:

Test passed!

就成功了

在这里插入图片描述

在这里插入图片描述

三:安装pytorch

需要有Ubuntu14.04 64位, python3.6, 已装anaconda,numpy, pip, git

访问github

pytorch在github上的地址

pytorch有源码安装的教程:

github推荐了2种安装方法

官网上的3种方法(conda,pip等)

源码安装

这里就介绍Install From Source(简要提一下anaconda)

准备工作1:关于anaconda

官网也强力推荐anaconda,这个可以作为python版本管理工具,真心非常好用,而且集成各种第三方库。

If you are installing from source, we highly recommend installing an Anaconda environment. You will get a high-quality BLAS library (MKL) and you get a controlled compiler version regardless of your Linux distro.

下载,在文件目录下执行就好

sudo bash Anaconda3-5.2.0-Linux-x86_64.sh

其中有个要注意的,就是anaconda的配置。就是加入你错过了点击yes的机会,anaconda就不会帮你配置好环境变量了。所以要进行以下操作:

sudo gedit ~/.bashrc
#打开后添加此语句在末尾:
#export PATH="/home/helloworld/anaconda3/bin:$PATH"

检查下,要在一样的位置

~$ which conda
/home/XXXX/anaconda3/bin/conda
~$ which python
/home/XXXX/anaconda3/bin/python

在这里可以顺带添加 下清华镜像的Anaconda Python 免费仓库。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

# 运行 conda install × 进行相应库的安装。
准备工作2:配置环境

其实就是修改配置文件,直接在配置文件加上这句话就好啦。

# 粘贴下一行代码到.bashrc中
export CMAKE_PREFIX_PATH=~/anaconda3/bin
# 然后
source ~/.bashrc

可以用 $ more .bashrc 查看.bashrc文件,看到如图所示:

在这里插入图片描述

准备工作3:安装基本的依赖
# 安装基本的依赖库
sudo -s
conda install numpy pyyaml mkl setuptools cmake gcc cffi
conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing
conda install -c mingfeima mkldnn

# Add LAPACK support for the GPU
conda install -c soumith magma-cuda80 # or magma-cuda75 if CUDA 7.5

(其实这个也挺慢的,等!!)

在这里插入图片描述

安装:clone并安装
4.1把项目clone下来(我是自己直接去github下载的文件,进行以上操作后会出现文件缺失,所以还是克隆的好)
git clone --recursive https://github.com/pytorch/pytorch
4.2安装
cd /home/work/pytorch   #自己pytorch的路径
##根据提示安装git 等等
pip install -r requirements.txt
python setup.py install

On Linux

python setup.py install

我是自己直接去github下载的文件,进行以上操作后会出现文件缺失,所以还是克隆的好,出现的错误有:

4.2.1 fatal: not a git repository (or any of the parent directories): .git

在这里插入图片描述
解决办法:git init

4.2.2缺少CMakeLists.txt.

在这里插入图片描述
在这里插入图片描述

(解决办法:发现githubThird_party内都是有相应的库内容的,各个CMakeLists.txt也是有的,但是下载下来的*.zip是没有这些,空空的,我就用了最笨的方法,单独下载所提示的文件夹,如:gloo,拷贝到相应我位置.依次解决)

4.2.3出现错误:
cmake: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by cmake)
cmake: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by cmake)
cmake: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by cmake)
cmake: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by cmake)
Failed to run 'bash ../tools/build_pytorch_libs.sh --use-cuda --use-nnpack nccl caffe2 nanopb libshm gloo THD c10d'

(1)运行以下命令检查动态库:

cd /usr/lib/x86_64-linux-gnu

sudo strings libstdc++.so.6 | grep GLIBC
sudo strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC   (红色部分换成提示错误的地址)

sudo strings ~/anaconda3/lib/libstdc++.so.6 | grep GLIBC  (红色部分换成提示错误的地址)
# 输出结果如下:

....

GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

从以上输出可以看出,gcc的动态库还是旧版本的。说明出现这些问题,是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库。即Linux升级安装GCC .

(2)执行以下命令,查找编译gcc时生成的最新动态库:

sudo find / -name "libstdc++.so*"

## 结果
/home/helloworld/anaconda3/lib/libstdc++.so.6.0.24
/home/helloworld/anaconda3/lib/libstdc++.so.6.0.21
/home/helloworld/anaconda3/lib/libstdc++.so.6.0.19
/home/helloworld/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/home/helloworld/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so
/home/helloworld/anaconda3/envs/deeplearning/lib/libstdc++.so.6
/home/helloworld/anaconda3/envs/deeplearning/lib/libstdc++.so.6.0.25
/home/helloworld/anaconda3/envs/deeplearning/lib/libstdc++.so
/home/helloworld/anaconda3/envs/deeplearning/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/home/helloworld/anaconda3/envs/deeplearning/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.25
/home/helloworld/anaconda3/envs/deeplearning/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so

#不知道为什么 ,我这里出现的文件特别多,这只是一部分,可能是我安装次数比较吧,但文件夹的位置都是一致的.

看出 /home/helloworld/anaconda3 是之前升级gcc时的输出目录。

(3)将上面的最新动态库libstdc++.so.6.0.25复制到/usr/lib/x86_64-linux-gnu/目录下:

sudo cp /home/helloworld/anaconda3/envs/deeplearning/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.25 /usr/lib/x86_64-linux-gnu/

(4)接下来重建默认库的软连接:

进入/usr/lib/x86_64-linux-gnu 目录,

删除原来软连接:

sudo rm -rf libstdc++.so.6

(5) 将默认库的软连接指向最新动态库:

sudo ln -s libstdc++.so.6.0.25 libstdc++.so.6

(6)默认动态库升级完成。重新运行以下命令检查动态库:

sudo strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC 

结果如下:

helloworld@helloworld-HP-Z420-Workstation:/usr/lib/x86_64-linux-gnu$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBC
...    #省略
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
__strtof_l@@GLIBC_2.2.5
4.2.4 collect2: error: ld returned 1 exit status

在这里插入图片描述

发现有很多未定义的引用,故应该是缺少头文件、包之类的。

解决办法:安装以下包,后重启工作站。

sudo apt-get install libatlas-dev
sudo apt-get install liblapack-dev
sudo apt-get install  libatlas-base-dev

终于安装好了,累死了啊啊啊啊~~挺麻烦的。







mob6454cc6328d1

cuda版本与pytorch版本依赖关系 cuda8.0 pytorch

业精于勤荒于嬉-行成于思而毁于随

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦笑&&life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值