编译caffe的诸多注意事项

1.cudnn版本不匹配

首先第一步,编译caffe_train-master就遇到了问题:

  但是在同样的环境下(CUDA8.0  +  cudnn-8.0-linux-x64-v6.0)编译官方的caffe-master 就正常通过了:

  很显然就是cudnn版本的问题了,但是不巧的是NVIDIA官网在维护,无法下载cudnn5;从同学那里拷贝过来的cudnn-8.0-v5.1出现了

    Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal 

最终问题总结为: 最新版的cudnn 与 之前的caffe 版本不匹配!!!!不匹配!!!!不匹配!!!!

所以现在问题就很好解决了:

将caffe_train-master中的以下与cudnn有关的11个文件替换成最新的caffe中对应文件即可:

    /include/caffe/layers/cudnn_tanh_layer.hpp  /src/caffe/layers/cudnn_tanh_layer.cpp  /src/caffe/layers/cudnn_tanh_layer.cu

    /include/caffe/layers/cudnn_relu_layer.hpp  /src/caffe/layers/cudnn_relu_layer.cpp  /src/caffe/layers/cudnn_relu_layer.cu

    /include/caffe/layers/cudnn_sigmoid_layer.hpp  /src/caffe/layers/cudnn_sigmoid_layer.cpp  /src/caffe/layers/cudnn_sigmoid_layer.cu

    /include/caffe/util/cudnn.hpp  /src/caffe/util/cudnn.cpp

重新make all -j32 通过!!



2.由于terminal未正确重启导致的异常bug

最近在编译一个新的工程caffe时,出现了许多之前没有的莫名bug,但是我重新下了个官方的caffe编译了下一切正常。于是我开始回忆整个编译过程中的问题所在:

1)首先需要替换与cudnn相关文件

  但是由于我的粗心,直接make all 后出现error才反应过来,然后添加cudnn后又出现其他的Bug.

  鉴于这种情况,我直接将此caffe-master删除,重新解压一个新的再次编译,可是bug还是跟之前类似。(我的terminal并没有关闭,而且是界面删除的caffe-master文件夹,但是terminal中,我并没有退出这个文件夹,所以即便我删除了caffe-master,但是在terminal中还是在原先的caffe-master/ 路径下!!!!!不知道这算不算ubuntu的一个系统Bug,导致我接下来几个小时的郁闷....)

2)我装了两个版本的python,即Python3.6和Python2.7:后者通过source activate py2激活

  这里要说的是caffe一般需要Python2.7来make,至于Python3.6我也尝试过,但均已失败告终,若有大佬知道怎么做还望能留言告知。

  所以这里又容易出现一个问题,那就是切换成Python 2.7 来编译caffe. 

  因为长时间不去编译新的caffe,所以这个操作很容易被忘了(我就是忘了切换成2.7版本,导致编译caffe 时不通过)



 3.make Caffe 是必须用sudo make 才行,否则出现 no such file :  google/protobuf/arena.h


初步判断是由于权限问题,导致路径搜索不到。那么应该是我配置某个路径的时候,误用了sudo。

暂时问题还没解决,记下。

原文地址:https://www.cnblogs.com/caffeaoto/p/7728041.html