在没有CUDA的情况下安装Caffe:致命错误:cublas_v2.h没有这样的文件(Fedora23)

时间:2016-01-31 00:12:40

标签: caffe

我尝试按照这些说明enter link description here在Fedora23下安装caffe。我取消注释了Makefile.config文件中的CPU_ONLY := 1,以便在没有CUDA的情况下安装caffe。我安装了包括protobuf在内的依赖项。但是,我收到以下错误:

>make all
CXX src/caffe/layer.cpp
In file included from ./include/caffe/common.hpp:19:0,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/layer.hpp:8,
                 from src/caffe/layer.cpp:2:
./include/caffe/util/device_alternate.hpp:34:23: fatal error: cublas_v2.h: No such file or directory
compilation terminated.
Makefile:563: recipe for target '.build_release/src/caffe/layer.o' failed
make: *** [.build_release/src/caffe/layer.o] Error 1

据我所知,这是一个与CUDA相关的错误,但我想在没有CUDA的情况下安装Caffe。我误解了什么吗?

6 个答案:

答案 0 :(得分:4)

在./include/caffe/util/device_alternate.hpp

line  4: #ifdef CPU_ONLY
line 32: #else
line 34: #include <cublas_v2.h>
line 99: #endif

如果启用了CPU_ONLY标志,则else条件不应该有效。

确保您正在编辑Makefile.config而不是Makefile.config.example文件。

通过编辑这部分代码来尝试调试,以了解编译过程中发生的事情。

答案 1 :(得分:2)

我遇到了同样的问题并且搜索了几个小时才意识到我必须在安装时更加小心! 首先要在Makefile.config中取消注释CPU_ONLY:= 1而不是Makefile.config.example。此文件位于git cloned caffe的目录中。 其次是改变cmake选项。将OpenBLAS库添加到.bashrc并获取后,执行以下命令 -

cd /../../src/caffe //where you have git cloned
mkdir build && cd build
cmake -D CPU_ONLY=ON ..
cd ..
sudo make clean
sudo make all -j2
sudo make install -j2
sudo make runtest -j2

第三步是在头文件夹中定义CPU_ONLY = 1。我使用Qt(v5.7)并在.pro文件中添加它

DEFINES += CPU_ONLY=1

Caffe库和您的代码可能不知道在编译代码时是否定义了CPU_ONLY标志。这应该可以解决你的问题。

答案 2 :(得分:1)

与Anoop的回答相反,这对我有用:

  • MacOS 10.12 Sierra,无CUDA,CPU_ONLY

  • #define CPU_ONLY添加到device_alternate.hpp的顶部

  • 这将强制程序与#ifdef CPU_ONLY一起使用,因此不会引发cublas_v2.h错误。

也就是说,当我这样做时,我遇到的下一个错误是

caffe/build$ make
.
.
.
build/install/include/caffe/util/mkl_alternate.hpp:14:10: fatal error: 'cblas.h' file not found
#include <cblas.h>

通过在-DCMAKE_CXX_FLAGS=-I/usr/local/opt/openblas/include命令中添加cmake来解决。

但是后来我得到的新错误是

make[2]: *** No rule to make target ../caffe/build/lib/libcaffe.so', needed by `libdeeplcd.dylib'.

所以冒险继续...!

答案 3 :(得分:1)

我把最终的解决方案放在这里:

  • 第一步:运行 find
find /usr/local/ -name cublas_v2.h

然后我们找到文件的路径:

/usr/local/cuda-10.2/targets/x86_64-linux/include/cublas_v2.h

  • Step2:导出路径
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/cuda-10.2/targets/x86_64-linux/include/

好的!问题解决了。

export 命令只能工作一次。要使其永久更改,您需要修改 ~/.bashrc :

vi ~/.bashrc

添加

CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/cuda-10.2/targets/x86_64-linux/include/

答案 4 :(得分:0)

我使用Nvidia TX1并遇到了这个问题。 我通过这个指令解决了:

  export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/cuda-7.0/targets/armv7-linux-gnueabihf/include/

您可以更改目录以进行尝试。

希望它有效。

萨姆

答案 5 :(得分:0)

在编译全部内容之前,可能必须在Makefile.config文件中取消注释CPU_ONLY := 1。 希望对您有帮助