問題は、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
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
0 件のコメント:
コメントを投稿