web-dev-qa-db-ja.com

MacにCaffeをインストールするエラー:「致命的なエラー: 'cblas.h'ファイルが見つかりません」

私は このガイド をフォローしてEl Capitan macbook proにインストールし、CMakeを使用してmakefileをビルドしました。ただし、作成しようとすると、cblas.hファイルが見つからないというエラーが発生します。私はopenblasを次の方法で正常に再インストールしました:

$ brew uninstall openblas; brew install --fresh -vd openblas

2つのビルドフラグを追加します。

LDFLAGS: -L/usr/local/opt/openblas/lib

CPPFLAGS: -I/usr/local/opt/openblas/include

ただし、それでもエラーが発生します。次に、CUDAとxcodeを再インストールしました-推奨されているようにインストールツールを選択します ここ

Makeが私のcblas.hファイルを表示しない理由についての推奨事項/さらなる推測は大歓迎です!

7
Ethan Keller

あなたの質問ではcmakeが表示されますが、提供されているリンクではMakefile.configです。

それでもcmakeを続行したい場合:

まず第一に、ビルドスクリプトは壊れていません-私は最新の master ブランチ(2016-02-25)でYosemiteで試しましたが、すでに作成している場合は少し調整する必要があります

brew uninstall openblas; brew install --fresh -vd openblas

追加の引数を指定してcmakeを実行するだけです。

cmake -DCMAKE_CXX_FLAGS=-I/usr/local/opt/openblas/include <path to your sources>

次に、通常のmakeまたはxcodeビルド(使用するジェネレーターによって異なります)。

この後、それは私のシステム上で正常に構築されました。

UPD:の代わりにAccelerate.frameworkvecLib)のライブラリを使用することもできますopenblas

16
avtomaton

Makefile.configに移動し、openblasが配置されているパスを使用して次の行を編集します。私の場合、バージョンは0.2.18_2です。

次の行のコメントを必ず解除してください。

BLAS_INCLUDE := /usr/local/Cellar/openblas/0.2.18_2/include
BLAS_LIB := /usr/local/Cellar/openblas/0.2.18_2/lib
4

Makefile.configでこの行のコメントを解除します。

# 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
2
mayo

私は今日この問題に遭遇し、メインラインのカフェにプルリクエストを送信しました。

https://github.com/BVLC/caffe/pull/4247

私にとっての問題は、Caffeが新しいAccelerateフレームワーク(cblas.hを出荷)ではなく、非推奨のvecLibフレームワーク(cblas.hを出荷しない)を見つけていたことでした。

1
jklontz

Makefile.config

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/local/opt/openblas/include/

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/local/opt/openblas/lib/

それが最もエレガントなソリューションかどうかはわかりませんが、機能します。

0
mrgloom

私のCaffeインストールの場合、これは私のセットアップでした。

  • MacOS 10.12 Sierra、CPU_ONLY = ON、CUDAなし、Anacondaなし、Pythonインターフェイス付き
  • (Cmakeの代わりに)Makeを介したコンパイル 公式の説明はこちら

私のcblas.hファイルのディレクトリ(Finder検索経由):/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Headers

そのcblas.hパスを./caffe/Makefile.configに追加します。

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Headers/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

追記

私にとっても、OpenBlasを持っていました。状況に影響を与える可能性があります。

# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := open

また、cblas.hパスで./caffe/Makefileを変更しましたが、それが必要かどうか/違いが生じたかどうかはわかりません。

else ifeq ($(BLAS), open)
    # OpenBLAS
    LIBRARIES += openblas
    BLAS_INCLUDE ?= /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Headers/

結果の結果

元のエラーは消えました:

Tams-MacBook-Pro:caffe tamtam$ make all
CXX src/caffe/blob.cpp
In file included from src/caffe/blob.cpp:7:
In file included from ./include/caffe/util/math_functions.hpp:11:
./include/caffe/util/mkl_alternate.hpp:14:10: fatal error: 'cblas.h' file not found
#include <cblas.h>
         ^
1 error generated.
make: *** [.build_release/src/caffe/blob.o] Error 1

しかし、解明された次のエラーは(出力の最後尾)でした:

CXX src/caffe/util/upgrade_proto.cpp
AR -o .build_release/lib/libcaffe.a
/Applications/Xcode833.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .build_release/lib/libcaffe.a(cudnn_conv_layer.o) has no symbols
/Applications/Xcode833.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .build_release/lib/libcaffe.a(cudnn_lcn_layer.o) has no symbols
/Applications/Xcode833.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .build_release/lib/libcaffe.a(cudnn_lrn_layer.o) has no symbols
/Applications/Xcode833.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .build_release/lib/libcaffe.a(cudnn_pooling_layer.o) has no symbols
/Applications/Xcode833.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .build_release/lib/libcaffe.a(cudnn_relu_layer.o) has no symbols
/Applications/Xcode833.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .build_release/lib/libcaffe.a(cudnn_sigmoid_layer.o) has no symbols
/Applications/Xcode833.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .build_release/lib/libcaffe.a(cudnn_softmax_layer.o) has no symbols
/Applications/Xcode833.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .build_release/lib/libcaffe.a(cudnn_tanh_layer.o) has no symbols
/Applications/Xcode833.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .build_release/lib/libcaffe.a(parallel.o) has no symbols
/Applications/Xcode833.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: .build_release/lib/libcaffe.a(cudnn.o) has no symbols
LD -o .build_release/lib/libcaffe.so.1.0.0-rc5
clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument]
ld: warning: directory not found for option '-L/lib'
ld: library not found for -lopenblas
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [.build_release/lib/libcaffe.so.1.0.0-rc5] Error 1

Makefile.configでこれを介して修正/解決/変更します:

# Homebrew puts openblas in a directory that is not on the standard search path
BLAS_INCLUDE := $(brew --prefix openblas)/include /usr/local/Cellar/openblas/0.3.3/include
BLAS_LIB := $(brew --prefix openblas)/lib /usr/local/Cellar/openblas/0.3.3/lib

また、Makefileでこれを介して-pthread警告を解決します。

CXXFLAGS += -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11 #rm'd -pthread
LINKFLAGS += -fPIC $(COMMON_FLAGS) $(WARNINGS) -std=c++11 #rm'd -pthread

別のmake cleancp Makefile.config.example Makefile.config、およびmake allを使用すると、これは出力の末尾であり、同様に出力の要点全体です。

In file included from ./include/caffe/caffe.hpp:12:
./include/caffe/net.hpp:41:5: warning: unused typedef 'INVALID_REQUESTED_LOG_SEVERITY' [-Wunused-local-typedef]
    LOG_EVERY_N(WARNING, 1000) << "DEPRECATED: ForwardPrefilled() "
    ^
/usr/local/include/glog/logging.h:943:30: note: expanded from macro 'LOG_EVERY_N'
                             INVALID_REQUESTED_LOG_SEVERITY);           \
                             ^
1 warning generated.
CXX/LD -o .build_release/examples/cpp_classification/classification.bin
ld: warning: directory not found for option '-L/lib'
CXX examples/mnist/convert_mnist_data.cpp
CXX/LD -o .build_release/examples/mnist/convert_mnist_data.bin
ld: warning: directory not found for option '-L/lib'
CXX examples/siamese/convert_mnist_siamese_data.cpp
CXX/LD -o .build_release/examples/siamese/convert_mnist_siamese_data.bin
ld: warning: directory not found for option '-L/lib'

したがって、このmake allエラーによって今後問題が発生しないと仮定すると、-L/libは正常にビルドされたようです。注:make allmake test、およびmake runtestは正常に実行され、警告が生成されます。 make pycaffeただし、さらにエラーが発生しました。後で自分のソリューションにリンクするかもしれません。また、はい、この答えは確かに長く、OPが尋ねたものを超えていますが、うまくいけば、私の答えがこの恐ろしいインストールプロセスで他の誰かを助けるかもしれません。

0
tamtam