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



我尝试按照这些说明在 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。我误解了什么吗?

In ./

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 文件。

尝试通过编辑这部分代码进行调试,以了解编译期间发生的情况。

我遇到了同样的问题,搜索了几个小时才意识到我在安装过程中必须更加小心!首先要取消注释 CPU_ONLY := 1 在 Makefile.config 而不是 Makefile.config.example 中。此文件位于您 git 克隆的 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标志。这应该可以解决您的问题。

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

在这里我提出最终解决方案:

  • 步骤 1:运行查找
find /usr/local/ -name cublas_v2.h

我们找到文件的路径:

/

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

  • 步骤2:导出路径
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/

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

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

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

希望它有效。

山 姆

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

  • MacOS 10.12 Sierra, no 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>

我通过在cmake命令中添加-DCMAKE_CXX_FLAGS=-I/usr/local/opt/openblas/include来修复它。

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

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

所以冒险继续...!

最新更新