GPU accelerated Caffe on CentOS 7


事前準備

基本的には以下のページを参照.予め,関連するソフトウェアをインストールしておく必要がある.(特に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