2018年12月2日日曜日

caffe-ssd on Ubuntu 17 with CUDA

さて、caffe-ssd branchをUbuntu 17上でビルドしようとすると、いろいろスタックするが、やっとちゃんとビルドできたので、ご報告。
問題は、CUDA 8を使おうとすると、gcc-5を使わないといけないこと。そうすると、DistributionのBoostではリンカが通らない。これはDistributionで使われているBoostが新しいコンパイラで作られているため、Manglingの違いだかでリンカが関数を見つけられない事による。
そこで、まず、boost-1.65.1をgcc-5系のコンパイラでビルドする。

 ./bootstrap.sh 
 ./b2 install -j2 --prefix=/home/habe/boost_1_65_1 toolset=gcc-5

次に、Caffe-ssdをビルドする。

 export BOOST_ROOT=/home/habe/boost_1_65_1/
 git clone https://github.com/weiliu89/caffe.git
 cd caffe
 git checkout ssd

これでcaffe-ssdのソースが用意された。ここで、cmakeのための作業ディレクトリを作成して、そこでcmakeを使う。その際に、コンパイラをgcc-5を使うことを指定する。

 mkdir BUILD
 cd BUILD
 ccmake ..
 make -j8

ccmakeはUIが呼び出されて自分でいろいろパラメータを指定できる。boostは環境変数BOOST_ROOTで指定されているので勝手にセットしてくれる。

 CMAKE_CXX_COMPILER               /usr/bin/g++-5                                                                                                      
 CMAKE_CXX_COMPILER_AR            /usr/bin/gcc-ar-5                                                                                                   
 CMAKE_CXX_COMPILER_RANLIB        /usr/bin/gcc-ranlib-5                                                                                               
 CMAKE_CXX_FLAGS                                                                                                                                      
 CMAKE_CXX_FLAGS_DEBUG            -g                                                                                                                  
 CMAKE_CXX_FLAGS_MINSIZEREL       -Os -DNDEBUG                                                                                                        
 CMAKE_CXX_FLAGS_RELEASE          -O3 -DNDEBUG                                                                                                        
 CMAKE_CXX_FLAGS_RELWITHDEBINFO   -O2 -g -DNDEBUG                                                                                                     
 CMAKE_C_COMPILER                 /usr/bin/gcc-5                                                                                                      
 CMAKE_C_COMPILER_AR              /usr/bin/gcc-ar-5                                                                                                   
 CMAKE_C_COMPILER_RANLIB          /usr/bin/gcc-ranlib-5                                                                                               

make -j8した後暫くすると、以下の様なログが出て終了。

Scanning dependencies of target convert_cifar_data
[ 98%] Building CXX object examples/CMakeFiles/convert_cifar_data.dir/cifar10/convert_cifar_data.cpp.o
[ 98%] Linking CXX executable cifar10/convert_cifar_data
[ 98%] Built target convert_cifar_data
Scanning dependencies of target convert_mnist_siamese_data
[100%] Building CXX object examples/CMakeFiles/convert_mnist_siamese_data.dir/siamese/convert_mnist_siamese_data.cpp.o
[100%] Linking CXX executable siamese/convert_mnist_siamese_data
[100%] Built target convert_mnist_siamese_data
Scanning dependencies of target pycaffe
[100%] Building CXX object python/CMakeFiles/pycaffe.dir/caffe/_caffe.cpp.o
[100%] Linking CXX shared library ../lib/_caffe.so

これでcaffe-ssd環境が構築された。あとは、$CAFFE_ROOTを指定し、PYTHON_PATHにcaffeのpythonのディレクトリを追加して終了。

0 件のコメント:

コメントを投稿