最近在复现R-CNN一系列的实验时,配置代码环境真是花费了不少时间。由于对MATLAB不熟悉,实验采用的都是github上rbg大神的Python版本。在配置Faster
R-CNN时,编译没有问题,一运行 ./tools/demo.py --net zf  就会出现如下错误:

<span style="font-size:14px;">Loaded network ./data/faster_rcnn_models/ZF_faster_rcnn_final.caffemodel    

F1008  roi_pooling_layer.cu:91] Check failed: error == cudaSuccess (8 vs. 0) invalid device function    

*** Check failure stack trace: ***  </span>

但是采用CPU mode运行时可以成功。

最后在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文件中就开始修改,不过我没有试过,具体步骤如下

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

【CUDA开发】 Check failed: error == cudaSuccess (8 vs. 0) invalid device function的更多相关文章

  1. caffe运行错误: im2col.cu:61] Check failed: error == cudaSuccess (8 vs. 0) invalid device function

    错误: im2col.cu:61] Check failed: error == cudaSuccess (8 vs. 0)  invalid device function 原因:由于Makefil ...

  2. 配置SSD-caffe测试时出现“Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal”解决方案

    这是由于GPU数量不匹配造成的,如果训练自己的数据,那么我们只需要将solver.prototxt文件中的device_id项改为自己的GPU块数,一块就是0,两块就是1,以此类推. 但是SSD配置时 ...

  3. caffe 训练时,出现错误:Check failed: error == cudaSuccess (4 vs. 0) unspecified launch failure

    I0415 15:03:37.603461 27311 solver.cpp:42] Solver scaffolding done.I0415 15:03:37.603549 27311 solve ...

  4. Caffe 分类问题 Check failed: error == cudaSuccess (2 vs. 0) out of memory

    如果图片过大,需要适当缩小batch_size的值,否则使用GPU时可能超出其缓存大小而报错

  5. check failed status == cudnn_status_success (4 vs. 0) cudnn_status_internal_error

    Check failed: error == cudaSuccess (30 vs. 0) unknown error  这个有可能是显存不足造成的,或者网络参数不对造成的 check failed ...

  6. 目标检测faster rcnn error == cudaSuccess (2 vs. 0) out of memory

    想尝试 更深更强的网络,或者自己写了一个费显存的层,发现1080 ti的11G显存不够用了,老师报显存不够怎么办? Check failed: error == cudaSuccess (2 vs. ...

  7. Check failed: status == CUBLAS_STATUS_SUCCESS (11 vs. 0) CUBLAS_STATUS_MAPPING_ERROR

    I0930 21:23:15.115576 30918 solver.cpp:281] Learning Rate Policy: multistepF0930 21:23:17.263314 310 ...

  8. CUDA报错: Cannot create Cublas handle. Cublas won't be available. 以及:Check failed: status == CUBLAS_STATUS_SUCCESS (1 vs. 0) CUBLAS_STATUS_NOT_INITIALIZED

    Error描述: aita@aita-Alienware-Area-51-R5:~/AITA2/daisida/ssd-github/caffe$ make runtest -j8 .build_re ...

  9. windows7下解决caffe check failed registry.count(type) == 1(0 vs. 1) unknown layer type问题

    在Windows7下调用vs2013生成的Caffe静态库时经常会提示Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer t ...

随机推荐

  1. Sql操作时间

    --. 当前系统日期.时间 -- ::27.277 --.时间操作 dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 dateadd(datepart,number,d ...

  2. BZOJ1113 海报PLA1(单调栈入门题)

    一,自己思考下 1,先自己思考下 N个矩形,排成一排,现在希望用尽量少的海报去cover住它们. 2,不懂. 着实不懂. 3,分析下,最优性问题对吧,然后就每什么想法了.. 虽然肯定和单调栈和单调队列 ...

  3. gin+redis

    var RedisDefaultPool *redis.Pool func newPool(addr string) *redis.Pool { return &redis.Pool{ Max ...

  4. WinDbg常用命令系列---!cppexr

    !cppexr 简介 !cppexr显示C++异常记录的内容. 使用形式 !cppexr Address 参数 Address指定要显示的C++异常记录的地址. 支持环境 Windows 2000 E ...

  5. 51 NOD 1239 欧拉函数之和(杜教筛)

    1239 欧拉函数之和 基准时间限制:3 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 收藏 关注 对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目.此函数以其首名研究 ...

  6. Stringbuilde方法的用法以及其作用

    Stringbuilde的方法有以下几种(常用的):(java中的语法) 在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过"+"符号来实现,但是这种方式达到目 ...

  7. 打印出js对象里面的内容

    最近调试的时候遇到需要打印出js对象里面的内容,两种方式: 1.直接使用 JSON.stringify(obj) 方法把对象转成字符串,打印出来.但是因为维护的项目比较老,使用的还是ie11的ie5兼 ...

  8. Linux 权限规划ACL

    什么是ACL ACL是Access Control List的缩写,主要目的是提供传统的owner.group.others的read.write.execute权限之外的具体权限设置 ACL可以针对 ...

  9. NIO Channel Socket套接字相关Channel

    阻塞非阻塞: NIO中的Channel主要分为两大类:一类是FileChannel,另一类是SocketChannel.NIO提供的核心非阻塞特性主要针对SocketChannel类,全部socket ...

  10. 20189220 余超《Linux内核原理与分析》第九周作业

    理解进程调度时机跟踪分析进程调度与进程切换的过程 本章的基础知识总结 一般来说,进程调度分为三种类型:中断处理过程(包括时钟中断.I/O 中断.系统调用和异常)中,直接调用schedule,或者返回用 ...