makeすると『シンボル 'cudaGetErrorString' への未定義参照です』というエラーが出ます。
受付中
回答 1
投稿
- 評価
- クリップ 0
- VIEW 3,625
python版faster R-CNNのモデルの実行を以下の手順で行いました。
①コンパイル
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
cd ~/py-faster-rcnn/lib #cythonモジュールのビルド
make
cd ../caffe-fast-rcnn/
cp Makefile.config.example Makefile.config
②Make.configのCPU_ONLY := 1とWITH_PYTHON_LAYER := 1の行のコメントアウトを解除
Make.configの中身は以下の通りです
## 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
# uncomment to disable IO dependencies and corresponding data layers
# USE_OPENCV := 0
# USE_LEVELDB := 0
# USE_LMDB := 0
# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
# You should not set this flag if you will be reading LMDBs with any
# possibility of simultaneous read and write
# ALLOW_LMDB_NOLOCK := 1
# Uncomment if you're using OpenCV 3
#OPENCV_VERSION := 3
# 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
# Homebrew puts openblas in a directory that is not on the standard search path
# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
# BLAS_LIB := $(shell brew --prefix openblas)/lib
# 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
# 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:
# Verify anaconda location, sometimes it's in root.
# ANACONDA_HOME := $(HOME)/anaconda
# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
# $(ANACONDA_HOME)/include/python2.7 \
# $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
# Uncomment to use Python 3 (default is Python 2)
# PYTHON_LIBRARIES := boost_python3 python3.5m
# PYTHON_INCLUDE := /usr/include/python3.5m \
# /usr/lib/python3.5/dist-packages/numpy/core/include
# We need to be able to find libpythonX.X.so or .dylib.
PYTHON_LIB := /usr/lib
# PYTHON_LIB := $(ANACONDA_HOME)/lib
# Homebrew installs numpy in a non standard path (keg only)
# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
# PYTHON_LIB += $(shell brew --prefix numpy)/lib
# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1
# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
# INCLUDE_DIRS += $(shell brew --prefix)/include
# LIBRARY_DIRS += $(shell brew --prefix)/lib
# Uncomment to use `pkg-config` to specify OpenCV library paths.
# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
# USE_PKG_CONFIG := 1
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
# enable pretty build (comment to see full commands)
Q ?= @
③ビルド実行
make
すると、以下のエラーが出てきました。
CXX/LD -o .build_release/tools/caffe.bin
/usr/bin/ld: .build_release/tools/caffe.o: シンボル 'cudaGetErrorString' への未定義参照です
/usr/local/cuda-7.5/lib64/libcudart.so.7.5: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [.build_release/tools/caffe.bin] エラー 1
これはどういう意味でしょうか?cuda、caffeは共に実装済みなのでどこかでリンクが途切れていることが原因でしょうか?
どなたかご教授よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
たぶんですが,リンク時に明示的に-lcudart
を指定してやる必要があるかと.
DSO missing from command line
は,リンク対象が明示的に指定されていない時に起こる印象.
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/08/24 14:59
初歩的な質問で申し訳ございませんが、具体的には
make -lcudart
とコマンドを打てばよろしいのでしょうか?
2016/08/24 15:28
Makefile.config 内の CUDA_DIR := /usr/local/cuda を CUDA_DIR := /usr/local/cuda-7.5 に変えてみてください.
2016/08/25 10:48 編集
tamyさんのアドバイス通り試してみたのですが、以下のエラーが出ました。
CXX/LD -o .build_release/tools/caffe.bin
/usr/bin/ld: -lcudnn が見つかりません
collect2: error: ld returned 1 exit status
make: *** [.build_release/tools/caffe.bin] エラー 1
こちらの方はcudnnのシンボリックリンクを作成すればよろしいでしょうか?
ちなみに、トップディレクトリからcudnnをfindしてみたところ以下の場所にありました。
/usr/local/cuda-6.5/include/cudnn.h
/usr/local/cuda-6.5/lib64/libcudnn.so.6.5
/usr/local/cuda-6.5/lib64/libcudnn.so
/usr/local/cuda-6.5/lib64/libcudnn_static.a
/usr/local/cuda-6.5/lib64/libcudnn.so.6.5.48
(他にも多くのcudnn関連のファイルが存在しましたが、caffeディレクトリやpy-faster-rcnnディレクトリの中だったりしたので、関連のありそうな部分だけ記載しています。)
2016/08/25 11:02
上記のエラーが出たのは
Make.configの
①USE_CUDNNのコメントアウトを解除し、
②GPU環境があるため、CPU_ONRY=1をコメントアウト
した後の結果です。
2016/08/25 15:46
だとすると,おそらく cuda7.5 向けの cuDNN が入っていないと思われます.
なので,そいつをインストールするか,CUDA_DIR := /usr/local/cuda-6.5 でどうにかなりませんかね?
たぶんですが,cuda インストール時に /usr/local/cuda -> /usr/local/cuda-7.5 のリンクが自動生成されているはずなので,cuda 7.5 向けの cuDNN がないと,cud 6.5 向けの cuDNN があったとしても,それを見つけられないのだと思います.
2016/08/26 14:11 編集
cuda6.5,cuda7.5両方インストールしているようです。(先輩の引継ぎなので誰がいつどこに何をインストールしたのかを把握し切れておりません。。。)
cuda7.5向けのcudnn ( cudnn-7.5-linux-x64-v5.0-ga.taz )をインストールし、その後、
①ホーム/ダウンロード/cuda/includeの中身( cudnn.h)を usr/local/cuda/includeのなかにコピーしました
sudo cp cudnn.h /usr/local/cuda/include/
②ホーム/ダウンロード/cuda/lib64の中身 (libcudnn.so, libcudnn.so.5,libcudnn.so.5.0.5,libcudnn_static.a) を/usr/local/cuda/lib64の中にコピーしました。
この後、再びMakefile.configのディレクトリに戻り、makeしましたが、以下の同様のエラーが出ました。
CXX/LD -o .build_release/tools/caffe.bin
/usr/bin/ld: -lcudnn が見つかりません
collect2: error: ld returned 1 exit status
make: *** [.build_release/tools/caffe.bin] エラー 1
おかしいと思い、findしてみたところ、/usr/local/cuda以下に入れたはずのcudnn関連のライブラリが存在しませんでした。
find / -name *cudnn*
/usr/local/cuda-6.5/include/cudnn.h
/usr/local/cuda-6.5/lib64/libcudnn.so.6.5
/usr/local/cuda-6.5/lib64/libcudnn.so
/usr/local/cuda-6.5/lib64/libcudnn_static.a
/usr/local/cuda-6.5/lib64/libcudnn.so.6.5.48
/usr/local/cuda-7.5/targets/x86_64-linux/include/cudnn.h
関係があるかはわかりませんが、cudnnをインストールしたときに、ホーム/ダウンロード/cuda/include内のcudnn.hは鍵マークがついていました。
追記です。
cudaディレクトリのリンクを確かめたところ、cuda-7.5とシンボリックリンクを形成しているようでした。
ls -l /usr/local/cuda
lrwxrwxrwx 1 root root 8 12月 20 2015 /usr/local/cuda -> cuda-7.5
2016/08/26 15:10
cuda-7.5にlib64関連のファイルをコピーしてみました.
~/ダウンロード/cuda/lib64$ cp *cudnn* /usr/local/cuda-7.5/lib64
その後,Make.configのあるディレクトリに移動し,makeしたところ,以下の新たなエラーが出てきました...
~/py-faster-rcnn/caffe-fast-rcnn$ make
CXX/LD -o .build_release/tools/caffe.bin
/usr/bin/ld: warning: libcudart.so.6.5, needed by /usr/local/lib/libopencv_core.so, may conflict with libcudart.so.7.5
.build_release/lib/libcaffe.so: `cv::imread(cv::String const&, int)' に対する定義されていない参照です
.build_release/lib/libcaffe.so: `cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)' に対する定義されていない参照です
.build_release/lib/libcaffe.so: `cv::imdecode(cv::_InputArray const&, int)' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
make: *** [.build_release/tools/caffe.bin] エラー 1
2016/08/26 15:33
ここまでくると openCV および cuda-7.5 をクリーンインストールする方が早いかも…
もしくは,py-faster-rcnn が対応しているのであれば,/usr/local/cuda のリンク先を /usr/local/cuda-6.5 に変えて,素直に cuda-6.5 を使うとか.
2016/08/26 15:52
CXX/LD -o .build_release/tools/caffe.bin
/usr/bin/ld: warning: libcudart.so.7.5, needed by .build_release/lib/libcaffe.so, may conflict with libcudart.so.6.5
/usr/bin/ld: warning: libcublas.so.7.5, needed by .build_release/lib/libcaffe.so, may conflict with libcublas.so.6.5
/usr/bin/ld: warning: libcurand.so.7.5, needed by .build_release/lib/libcaffe.so, may conflict with libcurand.so.6.5
.build_release/lib/libcaffe.so: `cv::imread(cv::String const&, int)' に対する定義されていない参照です
.build_release/lib/libcaffe.so: `cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)' に対する定義されていない参照です
.build_release/lib/libcaffe.so: `cv::imdecode(cv::_InputArray const&, int)' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
make: *** [.build_release/tools/caffe.bin] エラー 1
openCVとcuda-7.5のクリーンインストールを検討してみたいと思います.
2016/08/26 15:59
まだ間に合えばですが,まず openCV だけクリーンインストールしてみてください.
2016/08/29 16:08
以下のサイトを参考にしながらopencv3.0のインストールを行いました.
www.pyimagesearch.com/2015/06/22/install-opencv-3-0-and-phttp://www.pyimagesearch.com/2015/06/22/install-opencv-3-0-and-python-2-7-on-ubuntu/ython-2-7-on-ubuntu/
しかし,端末でバージョンを確認したところ,3.0.0が反映されていませんでした.
~$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'2.4.8'
2016/08/30 18:09