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。
暂时问题还没解决,记下。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:编译caffe的诸多注意事项 - Python技术站