LoginSignup
6
5

More than 3 years have passed since last update.

ubuntu18環境でCaffeをビルドする

Posted at

概要

Ubuntu18.04環境でCaffeをビルドしたときにメモを残しておく。

このメモは、ubuntu16のCaffeビルド手順をベースにしている。
そのため、本来不要な作業も含まれているかもしれない。

errorやfailedは出ないことは確認したが、warningメッセージはいろいろ表示されていた。(今回は無視した)
なお、ちゃんと動作確認したわけではない。

主な参考サイト
https://gist.github.com/pjspillai/87625e1b6a129335eb363a4131a301f2
http://caffe.berkeleyvision.org/installation.html

PC環境

項目
CPU Core-i7 8700
GPU RTX 2080 Ti
メモリ 64GB
OS 18.04.1 LTS (Bionic Beaver)
Nvidia Driver 430.34
項目 インストール先パス
CUDA 10.0.130 /usr/local/cuda-10.0
cuDNN 7.4.2.2 $(HOME)/cudnn/cudnnv742_cuda100
Python環境 Anaconda 3.5.2(Python3.6.8) $(HOME)/anaconda/anaconda352

CUDAやcuDNN、Anacondaのインストール手順は省略。

作業項目

  • 環境変数の設定
  • openCV3のインストール
  • OSパッケージのインストール
  • Caffeソースコードの入手
  • Makefile.configの作成
  • Makefileの修正
  • CMakeLists.txtの追記
  • Caffeのビルド
  • pycaffeのビルド
  • 環境変数の設定
  • 動作確認(import確認)

環境変数の設定

ホームディレクトリ直下の.bash_profileに、anaconda/cuda/cudnn用の環境変数を追記する。
.bash_profileはなければ作成する。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# anaconda(python3) "base" environment
export ANACONDA=$HOME/anaconda/anaconda352
export LD_LIBRARY_PATH=$ANACONDA/lib:$LD_LIBRARY_PATH
export PATH=$ANACONDA/bin:$PATH

# cuda10.0
export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
export PATH=$CUDA_HOME/bin:$PATH

# cudnn7
export CUDNN=$HOME/cudnn/cudnnv742_cuda100
export LD_LIBRARY_PATH=$CUDNN/lib64:$LD_LIBRARY_PATH

openCV3のインストール

anacondaのpython環境にopenCV3をインストールする。

conda install -c menpo opencv=3

OSパッケージのインストール

公式サイトを参考に、OSパッケージをインストール(要rootまたはsudo)。

apt-get install protobuf-compiler
apt-get install libboost-all-dev
apt-get install build-essential cmake git pkg-config
apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
apt-get install python-pip
apt-get install python-dev
apt-get install python-numpy python-scipy
apt-get install python3-dev
apt-get install python3-numpy python3-scipy
apt-get install libopencv-dev

Caffeソースコードの入手

Caffe1.0のソースコードを入手する。

wget https://github.com/BVLC/caffe/archive/1.0.tar.gz

tar.gzファイルを展開する。

tar -xvf ./1.0.tar.gz

Caffeのソースコードは、ホームディレクトリに展開している(任意の場所でOK)。

$HOME/caffe-1.0

Makefile.configの作成

Makefile.configファイルをテンプレートからコピー作成し、中身を修正する。

コピー

cp Makefile.config.example Makefile.config

Makefile.configの修正(修正部分のみ抜粋)

# cuDNNを使用するのでコメントアウト
USE_CUDNN := 1

# openCV3を使用する
OPENCV_VERSION := 3

# CUDAインストールディレクトリに合わせてパスを設定する
CUDA_DIR := /usr/local/cuda-10.0

# CUDA_ARCHの2行目から有効になるように変更する
#CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
CUDA_ARCH := -gencode arch=compute_20,code=sm_21 \

# anacondaインストール先パスに合わせる
ANACONDA_HOME := $(ホーム)/anaconda/anaconda352

PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
                $(ANACONDA_HOME)/include/python3.6m \
                $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include

PYTHON_LIBRARIES := boost_python-py36 python3.6m

PYTHON_LIB := $(ANACONDA_HOME)/lib

# pythonレイヤを使用する場合はコメントアウト
WITH_PYTHON_LAYER := 1

# cuDNNのパスを忘れずにセットする
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial $(ホーム)/cudnn/cudnnv742_cuda100/include

# cuDNNのパスを忘れずにセットする
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial $(ホーム)/cudnn/cudnnv742_cuda100/lib64

Makefileの修正

405行目付近のNVCCFLAGS行を修正する

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

CMakeLists.txtの追記

CMakeLists.txtの末尾に、以下の行を追記する

# ---[ Includes
set(${CMAKE_CXX_FLAGS} "-D_FORCE_INLINES ${CMAKE_CXX_FLAGS}")

Caffeのビルド

ここからがCaffeのビルド作業。

makeの実行。末尾の数字は並列数。

make all -j12
make test -j12

テスト

make runtest -j12

こんなログが最後に表示されればOK。さすが2080Ti。めっちゃ早いな。。

[----------] Global test environment tear-down
[==========] 2101 tests from 277 test cases ran. (261658 ms total)
[  PASSED  ] 2101 tests.

※エラーが発生したら、make cleanを実行する。

make clean

pycaffeのビルド

pycaffeのmake

make pycaffe -j12

エラーになる場合には、caffe-1.0/python/requirements.txtを満たしているか確認する

自分の環境では未実施だが、念のためメモしておく(各種ライブラリのインストールコマンド)

cd $HOME/caffe-1.0/python
for req in $(cat requirements.txt); do pip install $req; done

環境変数の設定

.bash_profileに、PYTHONPATHの環境変数を追記する

export PYTHONPATH=$HOME/caffe-1.0/python

動作確認(import確認)

pythonを対話形式で起動して、caffeをimportする。
エラーがでなければまずは成功

import caffe

以上。
数年前の論文で、caffeのコードを使用していることがあるので、自分はまだcaffeと付き合っていかないといけないんだけど
caffeを使用している人ってもうあまりいないのかな。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5