- 161 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:28:38.68 ]
- >>159
バイナリツリーで足していくしか。 Ex. thread数が64のとき if (threadIdx < 32) data[threadIdx] += data[threadIdx + 32]; __syncthreads(); if (threadIdx < 16) data[threadIdx] += data[threadIdx + 16]; __syncthreads(); if (threadIdx < 8) data[threadIdx] += data[threadIdx + 8]; __syncthreads(); if (threadIdx < 4) data[threadIdx] += data[threadIdx + 4]; __syncthreads(); if (threadIdx < 2) data[threadIdx] += data[threadIdx + 2]; __syncthreads(); if (threadIdx < 1) result = data[threadIdx] + data[threadIdx + 1]; >>160 データ量によってはそうでもないよ。
|

|