下丸子のコネクショニスト

機械学習、人工知能などの話題について触れます。

【メモ書き】Ubuntu 14.04 CUDA6.5 GTX970 Caffeインストール

まっさらな状態からCaffeを動かしてみた。

正確な手順をメモ書きしている訳ではないので、参考程度にしてください。

 

  1.  Ubuntu 14.04 LTSをインストール。時短のため、インストール時に取得する更新ファイルのオプションはオフにした。
  2.  CUDA 6.5をダウンロード


    CUDA Downloads

    ここで落とすのはcuda_6.5.14_linux_64.run
  3.  CUDAの要素を抽出してグラフィックドライバ以外をインストール
    下記の記事が大変参考になりました。記事どおりnouveauもオフにした。


    Ubuntu14.04 ServerでCUDA 6.5.14の環境を整える - のんびりしているエンジニアの日記

  4.  Nvidiaからドライバをダウンロードし、インストール
    ここで落とすのはNVIDIA-Linux-x86_64-346.35.run
    再起動。
  5.  Caffeに必要なものをどんどこ揃えて一回目のインストール

    http://blog.s2factory.co.jp/MT/mt-search.cgi?IncludeBlogs=10&tag=Ubuntu&limit=20
    上の記事を参考にします。ただしCPU onlyにはしない。
    私の場合はAnacondaを導入した。

  6.  make時のエラーに対処
    a) Anaconda関連のエラー。エラー文は以下のとおり
    collect2: ld returned 1 exit status
    make: *** [.build_release/tools/extract_features.bin] Error 1
    下記の記事を参考に、Anaconda内のlibm.* を削除し対応。

    error: when build tools/extract_features.bin · Issue #985 · BVLC/caffe · GitHub
    b) libhdf5に関連するエラー。エラー文は以下のとおり
    ./build/tools/caffe: error while loading shared libraries: libhdf5_hl.so.8: cannot open shared object file: No such file or directory
    下記の記事を参考に、バージョン7を8に名前を変更したコピーを作って対応。

    Error loading shared library libhdf5_hl.so. · Issue #1463 · BVLC/caffe · GitHub
    c) numpyに関連するエラー。エラー文は以下のとおり

    g++ -shared -o python/caffe/_caffe.so python/caffe/_caffe.cpp \ .build_release/lib/libcaffe.a -fPIC -DNDEBUG -O2 ... In file included from python/caffe/_caffe.cpp:12:0: python/caffe/_caffe.hpp:8:31: fatal error: numpy/arrayobject.h: No such file or directory #include <numpy/arrayobject.h>
    includeされるフォルダの指定がおかしいようだったので、
    Makefile.configをいじりたおし、python 2.7を直接入れたり、numpyを直接いれたりして解決。
    あいまいでごめんなさい。
    参考までにMakefile.configの中身を載せます。

    2015/3/11追記:下記のpycaffeインストールの項目によると、やはりnumpyのパスが間違っていた模様。

    Caffe Macインストール - RupyWiki


    ## Refer to http://caffe.berkeleyvision.org/installation.html
    # Contributions simplifying and improving our build system are welcome!

    # cuDNN acceleration switch (uncomment to build with cuDNN).
    # USE_CUDNN := 1

    # CPU-only switch (uncomment to build without GPU support).
    # CPU_ONLY := 1

    # To customize your choice of compiler, uncomment and set the following.
    # N.B. the default for Linux is g++ and the default for OSX is clang++
    # CUSTOM_CXX := g++

    # CUDA directory contains bin/ and lib/ directories that we need.
    CUDA_DIR := /usr/local/cuda
    # On Ubuntu 14.04, if cuda tools are installed via
    # "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
    # CUDA_DIR := /usr

    # CUDA architecture setting: going with all of them.
    # For CUDA < 6.0, comment the *_50 lines for compatibility.
    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_50,code=compute_50

    # BLAS choice:
    # atlas for ATLAS (default)
    # mkl for MKL
    # open for OpenBlas
    BLAS := atlas
    # Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
    # Leave commented to accept the defaults for your choice of BLAS
    # (which should work)!
    # BLAS_INCLUDE := /path/to/your/blas
    # BLAS_LIB := /path/to/your/blas

    # This is required only if you will compile the matlab interface.
    # MATLAB directory should contain the mex binary in /bin.
    # MATLAB_DIR := /usr/local
    # MATLAB_DIR := /Applications/MATLAB_R2012b.app
    MATLAB_DIR := /usr/local/MATLAB/R2014b

    # NOTE: this is required only if you will compile the python interface.
    # We need to be able to find Python.h and numpy/arrayobject.h.
    # PYTHON_INCLUDE := /usr/include/python2.7 \
            /usr/lib/python2.7/dist-packages/numpy/core/include
    # Anaconda Python distribution is quite popular. Include path:
    # PYTHON_INCLUDE := $(HOME)/anaconda/include
            # $(HOME)/anaconda/include/python2.7 \
            # $(HOME)/anaconda/lib/python2.7/site-packages/numpy/core/include
    PYTHON_INCLUDE := $(HOME)/anaconda/include/python2.7 \
            /usr/lib/python2.7/dist-packages/numpy/core/include    

    # We need to be able to find libpythonX.X.so or .dylib.
    # PYTHON_LIB := /usr/lib
    PYTHON_LIB := $(HOME)/anaconda/lib

    # Whatever else you find you need goes here.
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
    LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

    BUILD_DIR := build
    DISTRIBUTE_DIR := distribute

    # Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
    # DEBUG := 1

    # The ID of the GPU that 'make runtest' will use to run unit tests.
    TEST_GPUID := 0

  7.  cuDNNは登録申請したが、承認がなかなか下りなかったので割愛。蛇足ですが、3日後に下りましたとさ。