デバッガーでC/CUDAコードをステップスルーしていました。
for(uint i = threadIdx.x; i < 8379; i+=256)
sum += d_PartialHistograms[blockIdx.x + i * HISTOGRAM64_BIN_COUNT];
そして、出力は正しいのに、デバッガーが1つのステップでそれを通過していたので、私は完全に混乱しました。次のスニペットのようにループを中かっこで囲むと、デバッガーで期待どおりに動作することに気付きました。
for(uint i = threadIdx.x; i < 8379; i+=256) {
sum += d_PartialHistograms[blockIdx.x + i * HISTOGRAM64_BIN_COUNT];
}
したがって、Cまたはデバッガーで異なる方法で処理されるループの括弧はありません。または、おそらくCUDAに固有です。
ありがとう