0

atomicAdd関数をすべてのブロックで機能させることができません。次のカーネル コードは、ブロック内のスレッドの総数を示していることがわかりました (< 5000たとえば)。

__global __ void kernelCode(float *result)
{
    int index = threadIdx.x+blockIdx.x*blockDim.x;
    if (index < 5000)
    {
        atomicAdd(result, 1.0f);
    }
}

1.0fの配列全体を割り当てずに、値に何かを追加する方法を教えてください。これは、リソースが非常に限られているシステムでこのコードを使用しているためです。すべてのビットが重要です。

4

1 に答える 1