2015-04-16 4 views
1

Mac OS 10.9, OpenCV 2.4.11, CUDA 7.0, Все флаги Env установлен LibC++вина Сегментация CAFFE

$sudo make runtest  
.build_release/tools/caffe 
dyld: Library not loaded: @rpath/libcudart.7.0.dylib 
    Referenced from: /Users/deepsamal/Desktop/Research/caffe/.build_release/tools/caffe 
    Reason: image not found 
make: *** [runtest] Trace/BPT trap: 5 

Как это может быть связано с переменными окружения библиотеки. Вот все мои окр variables- $ DYLD_LIBRARY_PATH =/USR/местные/CUDA/Библиотека

$ LD_LIBRARY_PATH = /usr/local/cuda/lib:/opt/intel/composer_xe_2015.2.132/mkl/lib/

$ DYLD_FALLBACK_LIBRARY_PATH = /usr/local/cuda/lib:/Developer/NVIDIA/CUDA-7.0/lib:/Users/deepsamal/anaconda/lib:/usr/local/lib:/usr/lib:/opt /intel/composer_xe_2015.2.132/mkl/lib/:

Как both-

make all 
make test 

работают без ошибок, это значит, что библиотека связана, но не загружается динамически.

Не могу понять, что может быть причиной?

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: попытался увидеть ссылку на время выполнения библиотеки libcudart.

$ otool -L /usr/local/cuda/lib/libcudart.7.0.dylib 
/usr/local/cuda/lib/libcudart.7.0.dylib: 
    @rpath/libcudart.7.0.dylib (compatibility version 0.0.0, current version 7.0.29) 
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.17.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) 

EDIT: Я пытался найти все символьные ссылки на libcaffe.so, кажется пути к Cuda LIBS и cudnn не будут решены, и что, как представляется, проблема.

otool -L ~/Desktop/Research/caffe/build/lib/libcaffe.so 
/Users/deepsamal/Desktop/Research/caffe/build/lib/libcaffe.so: 
@rpath/libcaffe.so (compatibility version 0.0.0, current version 0.0.0) 
@rpath/libcudart.7.0.dylib (compatibility version 0.0.0, current version 7.0.29) 
@rpath/libcublas.7.0.dylib (compatibility version 0.0.0, current version 7.0.29) 
@rpath/libcurand.7.0.dylib (compatibility version 0.0.0, current version 7.0.29) 
/usr/local/lib/libglog.0.dylib (compatibility version 1.0.0, current version 1.0.0) 
/usr/local/lib/libprotobuf.9.dylib (compatibility version 10.0.0, current version 10.1.0) 
/usr/local/lib/libleveldb.1.dylib (compatibility version 0.0.0, current version 0.0.0) 
/usr/local/lib/libsnappy.1.dylib (compatibility version 4.0.0, current version 4.0.0) 
/usr/local/lib/liblmdb.dylib (compatibility version 0.0.0, current version 0.0.0) 
/usr/local/lib/libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0) 
libhdf5_hl.9.dylib (compatibility version 10.0.0, current version 10.0.0) 
libhdf5.9.dylib (compatibility version 10.0.0, current version 10.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) 
/usr/local/opt/opencv/lib/libopencv_core.2.4.dylib (compatibility version 2.4.0, current version 2.4.11) 
/usr/local/opt/opencv/lib/libopencv_highgui.2.4.dylib (compatibility version 2.4.0, current version 2.4.11) 
/usr/local/opt/opencv/lib/libopencv_imgproc.2.4.dylib (compatibility version 2.4.0, current version 2.4.11) 
/usr/local/lib/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0) 
@rpath/libcudnn.6.5.dylib (compatibility version 0.0.0, current version 6.5.48) 
/usr/local/lib/libboost_python.dylib (compatibility version 0.0.0, current version 0.0.0) 
libpython2.7.dylib (compatibility version 2.7.0, current version 2.7.0) 
libmkl_rt.dylib (compatibility version 0.0.0, current version 0.0.0) 
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) 
+1

Я не вижу никакой сегментационной ошибки где-либо там. Я вижу неудачную загрузку разделяемой библиотеки. Где segfault? – talonmies

+0

Ошибка сегментации @talonmies, когда я запускаю $ make runtest. Обязательно сделайте sudo, чтобы получить более подробную информацию. $ make runtest .build_release/tools/caffe make: *** [runtest] Ошибка сегментации: 11 –

ответ

0

Существует страшная путаница с инструментами OSX во время выполнения из-за DYLD_LIBRARY_PATH Я думаю, что это своего рода хак должен работать:

DYLD_LIBRARY_PATH=''; make runtest 
+0

Спасибо за ваш ответ, но решение не работает. Единственная причина, по которой я установил DYD_LIBRARY_PATH, состоял в том, что я получил самую быструю ошибку, и это, вероятно, проблема с динамической загрузкой. –

+0

Итак, давайте начнем с самого начала: вам не нужно быть root, чтобы запустить caffe. Вы можете начать с новой установки для приготовления пива (без macports), установить cuda 7.0 (переустановить), а затем следовать http://caffe.berkeleyvision.org/install_osx.html В какой-то момент (если вы создаете с помощью python) вам нужно будет обратите внимание на используемый python: вы не хотите, чтобы яблоко было одно, или вы будете segfault. – user1662497

+0

Чтобы быть уверенным: я вижу в вашем dylib, что вы планируете использовать anaconda python и компилятор Intel, обновили ли вы Makefile.config. Кроме того, boost и protobuf необходимо построить с помощью требуемого правильного питона (который по умолчанию является системой по умолчанию, но это не то, что вы хотите). Вы также должны обратить внимание на openCV, чтобы не ссылаться на python системы. – user1662497

2

Установка переменной DYLD_FALLBACK_LIBRARY_PATH исправил для меня по крайней мере. Я просто должен был добавить /usr/local/cuda/lib в качестве первого пути (как вы сделали)

export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/lib:/usr/lib:/Developer/NVIDIA/CUDA-7.0/lib: 

или документально here.