我正在尝试调用两个内核,如下所示
for (t=0; t<=time_total; t++)
{
//kernel calls
kernel1<<<noOfBlocks,noOfThreadsPerBlock>>>(** SOME PARAMETERS **);
checkCudaError(cudaThreadSynchronize());
kernel2<<<noOfBlocks,noOfThreadsPerBlock>>>(** SOME PARAMETERS **);
checkCudaError(cudaThreadSynchronize());
}
第二个内核的结构是
var[index+0]=**SOME CALCULATION**
var[index+1]=**SOME CALCULATION**
var[index+2]=**SOME CALCULATION**
现在,当我执行此代码时, checkCudaError 不报告任何内容,并且执行代码并给出一些输出,但 Visual Studio 给出以下异常
First-chance exception at 0x7640c41f in **.exe: Microsoft C++ exception: cudaError_enum at memory location 0x0039f9c4..
First-chance exception at 0x7640c41f in **.exe: Microsoft C++ exception: cudaError_enum at memory location 0x0039f9c4..
当我检查 Nsight 时,它说内核 2 出现以下错误
CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES
现在的问题是内核 2 中的 var 数组给出了一些正确的行,一些是其他行值的副本,一些是垃圾。
当我这样做时
var[index+0]=3
var[index+1]=3
var[index+2]=3
var 的所有值都设置为 3