我正在调试器中单步执行一些 C/CUDA 代码,例如:
for(uint i = threadIdx.x; i < 8379; i+=256)
sum += d_PartialHistograms[blockIdx.x + i * HISTOGRAM64_BIN_COUNT];
我完全糊涂了,因为调试器一步步通过了它,尽管输出是正确的。我意识到,当我像下面的代码片段那样在循环周围放置大括号时,它在调试器中的行为与预期的一样。
for(uint i = threadIdx.x; i < 8379; i+=256) {
sum += d_PartialHistograms[blockIdx.x + i * HISTOGRAM64_BIN_COUNT];
}
在 C 或调试器中以不同方式处理的循环也是无括号的,或者它可能是 CUDA 特有的。
谢谢