Edited at

GPU accelerated Caffe on CentOS 7

More than 3 years have passed since last update.


事前準備

基本的には以下のページを参照.予め,関連するソフトウェアをインストールしておく必要がある.(特にcuDNN等)

http://caffe.berkeleyvision.org/installation.html


Caffeのダウンロード

GPUを使うので,NVIDIAのGithubからダウンロードする.

git clone https://github.com/NVIDIA/caffe.git nvidia_caffe


Make.configファイルの編集

$ cd caffe

$ cp Makefile.config.example Makefile.config


CUDNNの設定

GPUを有効にするためには, Makefile.configの中で,

USE_CUDNN := 1

とする. いま,CUDNNのヘッダファイルとライブラリは以下にインストールされていると仮定する.



CUDNN_INCLUDE := /usr/local/cudnn/include

CUDNN_LIB := /usr/local/cudnn/lib

また,今回使用するデバイスがTesla M40であるため,デバイスに応じたCompute Capabilityの設定を行う.が5.2用の設定をする.(設定しなくても動く).

各GPUのCompute Capabilityは以下を参照.

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

具体的には, Makefile.config中のCUDA_ARCHを以下のようにする. 

CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \

-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_52,code=compute_52


Blasの設定

Blasの設定を行う. AtlasかMKLかOpenBlasが利用可能.


OpenBlasを使用する場合

Makefile.configのBLASの項目をを以下のように編集する.

BLAS := open


Atlasを使用する場合

CaffeのデフォルトのBLASライブラリの設定はAtlasである.

CentOS7でも,

yum install atlas-devel

とすると,Atlasのヘッダファイル(BLAS_INCLUDE)とライブラリ(BLAS_LIB)が以下にインストールされる.

BLAS_INCLUDE := /usr/include/atlas

BLAS_LIB := /usr/include/lib64/atlas

ただし,ビルドの際,Caffeでは,cblasとatlasのライブラリを探すが,CentOS7から名称がsatlasとtatlasに変更されたようなので,Makefile中を以下のように変更する必要がある.

78c378

< LIBRARIES += cblas atlas
---
> LIBRARIES += satlas tatlas


Makeの実行

その後,以下を行う.計算機上のプロセッサの総コア数がnとする.

$ make -j n all

$ make -j n test
$ make runtest

ただし,1台の計算機に複数のGPUデバイスが装着されている場合,runtestがfailするので以下の様にする.

$ export CUDA_VISIBLE_DEVICES=0