我尝试按照这些说明在 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。我误解了什么吗?
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'.
所以冒险继续...!