调用CUDA内核时出现“invalid configuration argument”错误

时间:2015-02-11 00:36:35

标签: cuda gpu

我有GeForce 620M,我的代码是:

int threadsPerBlock = 256;                  
int blocksPerGrid = Number_AA_GPU / threadsPerBlock; 
for(it=0;it<Number_repeatGPU;it++)
{
    Kernel_Update<<<blocksPerGrid,threadsPerBlock>>>(A, B, C, D, rand(), rand());     
}

我明白了:

  

配置参数无效。

可能是什么原因?

1 个答案:

答案 0 :(得分:2)

内核配置参数是<<<...>>>符号之间的参数。

您的GeForce 620M是compute capability 2.1设备。

计算能力2.1设备is limited to 65535,当您为每个网格块的参数传递一个1维参数时(您传递的两个参数中的第一个参数)。

由于您传递的其他参数(256,threadsPerBlock)绝对是入界的,我得出结论,您的第一个参数超出范围:

int blocksPerGrid = Number_AA_GPU / threadsPerBlock; 

即。 Number_AA_GPU大于65535 * 256(大于或等于65536 * 256会触发失败),或者它为零(实际上Number_AA_GPU小于256会因整数除法而失败),或者是否定的。

将来,如果您提供完整的示例,您可以编写更易于解读的问题。在这种情况下,告诉我们Number_AA_GPU是什么可以使我的答案更明确。