我已经启动了一个包含 2100 个块和每个块 4 个线程的内核。
在这个内核中,所有线程都必须执行一个函数,并将其结果放在一个数组(在全局内存上)的“threadIdx.x”位置。
我当然知道,在这个项目中,函数总是返回 1.012086。现在,我编写了这段代码来完成这个总和:
currentErrors[threadIdx.x]=0;
for(i=0;i<gridDim.x;i++)
{
if(i==blockIdx.x)
{
currentErrors[threadIdx.x]+=globalError(mynet,myoutput);
}
}
但是当内核结束时,所有数组的位置都有 1.012086 作为值(而不是 1.012086*2100)。
我哪里错了?感谢您的帮助!