cuda中unspecified launch failure 错误

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

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

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

        问题解决啦~

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

你可能感兴趣的:(CUDA,cuda)