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