atomicAdd
関数をすべてのブロックで機能させることができません。次のカーネル コードは、ブロック内のスレッドの総数を示していることがわかりました (< 5000
たとえば)。
__global __ void kernelCode(float *result)
{
int index = threadIdx.x+blockIdx.x*blockDim.x;
if (index < 5000)
{
atomicAdd(result, 1.0f);
}
}
1.0f
の配列全体を割り当てずに、値に何かを追加する方法を教えてください。これは、リソースが非常に限られているシステムでこのコードを使用しているためです。すべてのビットが重要です。