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) になります。
どこが間違っていますか?助けてくれてありがとう!