CUDA常见错误及其解决办法(转载加自己补充)

转载自http://blog.csdn.net/chengman2009/article/details/5474141

记录一下最近在CUDA编程上遇到的错误,觉得有必要写一写,这里也不是一点技术含量也没有的...

    CUDA上获取错误信息是通过函数cudaGetErrorString()实现的,具体怎么用自己去查手册吧...下面说的是返回错误的信息以及应该如何处理。我在这方面才刚开始,处理方法都是基于实际程序,未必是通用的。

    1. time out

    这是因为在windows下,显卡线程运行超过5秒就会被windows终止。这对于大计算量的kernel来说基本上是个致命的错误。可以尝试把kernel分解,或者使用linux不带x-windows的模式。我就因此装了个fedora…

    2. unspecified launch failure

    据说主要是尝试访问没有分配的空间而产生的。这要很小心地看看代码,到底哪里越界了。

    3. setting the device when a process is active is not allowed

    原因是cutilDeviceInit()初始化显卡之后,没有调用cudaThreadExit()释放资源,导致第二次调用cutilDeviceInit()时出错。这个是CUDA从2.0升级到2.1后出现的,2.0时对再次调用cutilDeviceInit()对原有的资源不作任何处理,但2.1的时候就显式提示错误了。

    4. invalid argument

    据说是CUDA的对于__global__函数的参数传递使用的是shared memory,大小只有256bytes,传递参数的大小超过了这个限制。后来不知道为什么再也没报过这个错,也就没管了。

==========================================

    5.  unknown error (补充 6.28)

    看名字就觉得无语...据说是调用cudaMalloc或者cudaFree次数太多。有时还会促发segment fault...据说可以一次性分配显存解决问题,而且需要在最开始/结束的地方调用cudaMalloc/cudaFree。这个解决方法还没试过...

    出现问题还是要多看看NVIDIA的论坛,上面也许会有解决的办法。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值