我有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());
}
我明白了:
配置参数无效。
可能是什么原因?
答案 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
是什么可以使我的答案更明确。