cuda中unspecified launch failure 错误

       在运行一个cuda核函数之后,内存拷贝的时候抛出了这个错误。当然,cuda是不会主动抛出错误的,需要用下面的代码抓取错误:
 cudaError_t  error_check101 ;
			error_check101 = cudaGetLastError();
	        if( error_check101 != cudaSuccess ){
		   cout<<"error when count1!"<<endl;
            printf("%s\n" , cudaGetErrorString( error_check101 ) );
         }
        虽然是在cudaMemcpy的时候报的错,但是错误显然出在前面的核函数。

        为了这个错误翻了很多网站,刚开始以为是核函数的线程开的太多,想了一些办法把线程数缩小,但是仍然报错。

        后来看到有人说可能是在核函数中尝试访问未声明的内存空间,类似于c++中的segmentation default错误。仔细检查了这个核函数的所有参数,发现有一个指针数组,id最大的一些线程会访问到它未声明的空间。把这个指针数组的声明空间扩大,就不会出错了。

        问题解决啦~

        这个错误花了我两天多的时间来调,为什么会花这么久呢?因为这个核函数和其他两个核函数一起嵌套在一个for循环里,要定位到这个参数是比较困难的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值