Check failed: error == cudaSuccess (8 vs. 0) invalid device function

最近在复现R-CNN一系列的实验时,配置代码所需要的环境真是花费了不少时间。由于对MATLAB不熟悉,故实验采用的都是github上rbg大神的python版本。上周在做Fast R-CNN时,按照教程一步步的来,一路有惊无险,顺利通过,而这次在配置Faster R-CNN时,前面的编译没有问题,一运行 ./tools/demo.py --net zf  就会出现如上错误:

Loaded network /home/ubuntu/py-faster-rcnn/data/faster_rcnn_models/ZF_faster_rcnn_final.caffemodel  
F1008 04:30:16.139123 5360 roi_pooling_layer.cu:91] Check failed: error == cudaSuccess (8 vs. 0) invalid device function  
*** Check failure stack trace: ***  

采用CPU mode运行时却可以成功。折腾了两天后(中间放弃过一次,转投matlab版本,不过实在看不懂matlab在干嘛,又决然回到python,哈哈!)终于在https://github.com/rbgirshick/py-faster-rcnn/issues/2 找到了我想要的答案,有兴趣的可以慢慢阅读。不想看的话,就直接按照我下面的方式修改。

一般情况下都是因为显卡的计算能力不同而导致的(这里假设你前面的步骤都无误),修改 py-faster-rcnn/lib/setup.py 的第135行,将arch改为与你显卡相匹配的数值,(比如我的GTX 760,计算能力是3.0,就将sm_35改成了sm_30)然后删除utils/bbox.c,nms/cpu_nms.c ,nms/gpu_nms.cpp 重新编译即可

我看到有些人说还有其他的问题,那么可以在最开始的makefile.config文件中就开始修改,不过我没有试过,具体步骤如下

As below, there is my solution (thress steps):  
1 if you're using the GPU instance on AWS, then please change the architecture setting into:  
# CUDA architecture setting: going with all of them.  
# For CUDA < 6.0, comment the *_50 lines for compatibility.  
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \  
-gencode arch=compute_50,code=sm_50 \  
-gencode arch=compute_50,code=compute_50  
Because the GPU in AWS does not support compute_35  
2 I changed sm_35 into sm_30 in lib/setup.py file  
3 cd lib, remove these files: utils/bbox.c nms/cpu_nms.c nms/gpu_nms.cpp, if they exist.  
And then make && cd ../caffe/ && make clean && make -j8 && make pycaffe -j8  

最后,祝每一个运行环境出问题的孩子好运!



你可能感兴趣的:(8,0,vs.,cudaSuccess)