hans

hans

【Caffe】Caffe,CUDA,cuDNN安装指南,以及各种问题的解决方法(Ubuntu14.04)


---------[2017.07.20 更新]-------- 升级 cuda 到 8.0, 找不到各种库 ----------------------------------

cuda7.5 各种不适用,就给卸了重新安装了 8.0, 结果 caffe 不能用了.

卸载 cuda 强烈建议用 /usr/local/cuda/bin/uninstall*** 这个脚本

  1. 找不到 libcudart.so.7.5

地址: https://pan.baidu.com/s/1hbiTi99FPAz4hktXg9LV6g

放到: /usr/lib

sudo ldconfig /usr/local/cuda/lib64

2. 找不到 libjpeg.so.62

地址: https://pan.baidu.com/s/1XbqoMWyLswjQ4vpkizZdFw

放到: /usr/lib

执行:

cd /usr/lib
sudo ln -s libjpeg.so.62.0.0 libjpeg.so.62
sudo ln -s libjpeg.so.62.0.0 libjpeg.so

重新编译 caffe,make runtest 时候提示 driver 版本和 lib 版本对不上。

重新安装 cuda 的时候会安装最新版显卡驱动 375.66,但我发现当前显卡驱动还是 375.39

查询显卡驱动的几个命令:

nvidia-settings -q NvidiaDriverVersion




cat /proc/driver/nvidia/version




nvidia-smi

所以要彻底卸载显卡驱动和 cuda,并重新安装。

执行: 按 ctrl + alt + F1

sudo apt-get --purge remove nvidia-375 cuda
sudo apt-get install nvidia-375
sudo reboot

重启电脑后重新安装一次 cuda 就都 OK 了

------------------------【2017.06.01 更新】安装好 openblas 后,make 编译不通过 ------------------------------------

提示错误:

/usr/bin/ld: cannot find -lopenblas

解决办法是:

sudo ln -s /opt/OpenBLAS/lib/libopenblas.so /usr/lib/libopenblas.so

---------------------------------------【5.26 更新】安装 openblas----------------------------------------------------------------

先吐槽一下之前那台新电脑,跑了一下午数据后,CPU 挂了,i7 6950 。。。噗哈哈哈,借的电脑还回去了。IT 估计哭了。

对于没有 nvidia 显卡的朋友(你真穷!),总要想尽办法加快计算速度。caffe 默认的 Atlas,只能单线程运算。所以这里更新一下如何 **
安装 Openblas ** 来多线程运算,能大大加快 CPU 运算速度。

cd /path/to/caffe
git clone https://github.com/xianyi/OpenBLAS.git
cd OpenBLAS
make -j4
sudo make install

修改 Makefile.config

BLAS := open
BLAS_INCLUDE := /opt/OpenBLAS/include
BLAS_LIB := /opt/OpenBLAS/lib

修改环境变量

export OPENBLAS_NUM_THREADS=4  #这里注意你CPU多少线程的写多少,不过!一般满线程计算速度反而慢呢!
export LD_LIBRARY_PATH=/opt/OpenBLAS/lib/:$LD_LIBRARY_PATH

更新环境变量

source /etc/profile

重新编译 caffe

make clean
make all -j4
make test
make runtest
make pycaffe

---------------------------------【5.24 更新】 ------------------------------------------------------

公司电脑有毒!!新来台电脑给安装 caffe,果然又出新问题!!!!!!!!

caffe 目录下 make all -j8 提示

nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).

并且在训练的时候 ** 提示 cudnnsucess 错误(11 VS. 0) ** ,我也记不清了,大概是这个错误提示。

在修改 makefile.config 无果后,找到了下面的方法:

cd caffe
make clean
mkdir build
sudo apt-get install cmake-qt-gui
cmake-gui

Where is he source code 选定 caffe 目录

where to build the binaries 选定 caffe 下新建的 build 目录

Search 填入 NVCC

右边 Advance 打上勾

在 CUDA_NVCC_FLAGS 后边 填上 --Wno-deprecated-gpu-targets

点击下边 Configure

然后点击 Generate

cd build
make install -j8

等编译完成就搞定了。

参考自: http://blog.csdn.net/10km/article/details/61619573

下面开始是正文 >>>>>>>>>>>>>>>>>>>>>>>>>>>

最近在家把双系统(主系统 WIN8,副系统 Ubuntu14.04)搞定了,准备周末没事自己在家跑跑数据啥的。正好这次也把在 Ubuntu14.04 系统
下 caffe 和对应 GPU 加速的安装指南写一下。

我电脑的配置如下:

Intel® Core™ i7-7700K CPU @ 4.20GHz × 8

GeForce GTX 1070

64-bit

驱动信息:

1668630533646.jpg

关于驱动大家可以去 系统设置 - 软件和更新 - 额外驱动(最后一栏)中查看,

一般是有两个,一个是 NVIDIA 的,一个是 X.Org,选择 NVIDIA 的为当前驱动。

没安装 nvidia 驱动的话在这里也可以自动安装,自动安装版本都是最新的 375.39。

如果你的是老版本,可以更新到最新版本。

或者通过下面安装CUDA也会直接安装最新版本的显卡驱动

出问题看这里 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

这时候需要注意个问题,在 ** 运行第二步 sample 的时候如果不通过 ** 。可以尝试运行下面命令解决问题:

cd /usr/local/cuda/
find . -type f -execdir sed -i 's/UBUNTU_PKG_NAME = "nvidia-xxx"/UBUNTU_PKG_NAME = "nvidia-375"/g' '{}' \; #xxx是你老版本的型号。

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

如果你不需要 gpu 加速,或者之前已经安装好了。可以跳过 1 和 2,直接看 caffe 安装指南。

1. 安装 CUDA#

先去官网下载安装包 https://developer.nvidia.com/cuda-downloads

下载 local .deb 安装包,cd 到目录运行

sudo dpkg -i xxxxxxxxx

sudo apt-get update

sudo apt-get install cuda

2. 安装 cuDNN#

也是先去官网注册下载 https://developer.nvidia.com/cudnn

不麻烦的,有点耐心弄。

下载这个要注意如果你是 gtx1070 以上的显卡要下载安装 cuDNN5.0 以上版本的库才行,

而且还要跟你的 CUDA 版本对应好。

下载好 cd 到目录运行:

tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz

cd cuda/lib64/

sudo cp lib* /usr/local/cuda/lib64/

cd ../include

sudo cp cudnn.h /usr/local/cuda/include/

更新软连接

cd /usr/local/cuda/lib64/

这里最好去上面 cuda/lib64/ 目录下对照着来

sudo rm -rf libcudnn.so libcudnn.so.5

sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5

sudo ln -s libcudnn.so.5 libcudnn.so

设置环境变量

sudo gedit /etc/profile

末尾加上

export PATH=/usr/local/cuda-8.0/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

保存好退出

刷新,使之生效

source /etc/profile

安装 Sample

cd /usr/local/cuda/samples

sudo make all -j8

-j 后面的数字根据自己电脑配置来,CPU 线程数。

这里要注意有可能会因为 g++/gcc 版本问题导致编译出错。

需要重新安装一个老版本的 g++/gcc-4.7

我的是 4.8 版本的,编译一切顺利。如果没出问题就不要 作死 降版本了啊。

下面是我的版本截图:

1668630762664.jpg

**
-------------------------- 安装 gcc-4.7--------------------------------------------------------------
**

先下载安装:

sudo apt-get install -y gcc-4.7

sudo apt-get install -y g++-4.7

然后更新软连接实现降版本

cd /usr/bin

sudo rm gcc

sudo ln -s gcc-4.7 gcc

sudo rm g++

sudo ln -s g++-4.7 g++

查看是否降版本成功

gcc --version

g++ --version

最后查看驱动是否安装成功

cd bin/x86_64/linux/release

./deviceQuery

出现 PASS 即为安装成功。

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GTX 1070"
  CUDA Driver Version / Runtime Version          8.0 / 8.0
  CUDA Capability Major/Minor version number:    6.1
  Total amount of global memory:                 8113 MBytes (8506769408 bytes)
  (15) Multiprocessors, (128) CUDA Cores/MP:     1920 CUDA Cores
  GPU Max Clock rate:                            1823 MHz (1.82 GHz)
  Memory Clock rate:                             4004 Mhz
  Memory Bus Width:                              256-bit
  L2 Cache Size:                                 2097152 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:  2048
  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 2 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 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 = 8.0, CUDA Runtime Version = 8.0, NumDevs = 1, Device0 = GeForce GTX 1070
Result = PASS

3. 安装 caffe#

安装 ATLAS,这个是做线性代数运算的

sudo apt-get install libatlas-base-dev

安装依赖及工具

sudo apt-get install build-essential vim cmake git gfortran libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev

出问题看这里 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

我安装好上面依赖后提示了一句话 :

/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 is not a symbolic link

/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 is not a symbolic link

这个问题还算好解决 :

cd /usr/lib/nvidia-375/

sudo rm -rf libEGL.so.1

sudo ln -s libEGL.so.375.66 libEGL.so.1

cd ../../lib32/nvidia-375/

sudo rm -rf libEGL.so.1

sudo ln -s libEGL.so.375.66 libEGL.so.1

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

安装 Python 的包管理工具 pip

sudo apt-get install python-numpy python-pip

去下载 Caffe,我是直接给放到 home 目录下面了。

cd

git clone https://github.com/BVLC/caffe.git

根据 requirements,安装 python 的各种包。

cd caffe/python
sudo pip install --upgrade pip
for req in $(cat requirements.txt); do sudo pip install --upgrade $req -i https://pypi.tuna.tsinghua.edu.cn/simple/; done

关于上面安装各种 python 模块,我的建议是先运行一次带 -
i 的,就是用国内源安装一边所有模块。然后再删掉 - i,用默认的国外源再重新安装一遍所有模块。因为国内源有些模块安装不上去,或者更新不及时。但是国内源下载速度快很多。

出问题看这里 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

如果 ** 安装 python requirements 出问题 ** ,重新安装 pip,运行

sudo python -m pip install -U pip

可以对照 requirements 内容自己逐个安装依赖。下面是两种安装方法,选一种安装就好。

sudo pip install xxxx

sudo apt-get install python-xxxx

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

然后就是修改配置文件了

cd ~/caffe

cp Makefile.config.example Makefile.config

gedit Makefile.config

启用 CUDNN,取消注释

USE_CUDNN :=1

打开:

WITH_PYTHON_LAYER :=1

修改一下 python 包目录:

PYTHON_INCLUDE := /usr/include/python2.7 \
        /usr/local/lib/python2.7/dist-packages/numpy/core/include

可以去看一下刚才安装的 python 包都在 /usr/local/lib/python2.7/dist-packages/ 目录下面

出问题看这里 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

有时候 make 不通过 是因为 CUDA_ARCH 不匹配,一般是 ** 老旧显卡会出现这个问题 ** 。

对于这个问题

1. 可以通过去 nvidia 官网查看你显卡的计算性能。

2. 从大往小注释,多次尝试。

我家里 GTX1070 在这里是提示 arch=compute_20,code=sm_21 不可用,注不注释没啥影响。注释了就是编译时没 warning 了而已 -_-||

我单位 GT720,当时是报错了。我注释了 arch=compute_60,code=sm_60 和 arch=compute_62,code=sm_62 这两行,

并且修改最后一行为 arch=compute_52,code=compute_52。

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

最后可以 make 了

cd ~/caffe

make all -j8

make test -j8

make runtest -j8

make pycaffe -j8

runtest 一路绿看着人心情舒畅啊。

最后看看 Python 封装好了没

python

import caffe

不报错的话,就安装结束啦。。。

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.