4.3.3 扫描与规约 (Scan and Reduce) 4.3.3 扫描与规约(Scan and Reduce):当“前缀和”在GPU上突然不收敛——一个CUDA Warp-Level Scan的原子性陷阱与修复实录 你有没有在深夜调试一个本该线性加速的并行前缀和(prefix sum)kernel时,发现输出数组里总在第128、256、512这些位置“跳变”?不是全零,也不是全错,而是像被一只隐形的手悄悄抹掉了一段中间状态——左边正确,右边偏移,而错误位置恰好是warp边界?你查了三遍blockIdx和threadIdx,确认没有越界;你用cuda-memcheck扫过内存,没报错;你甚至把reduce逻辑抽出来单测,结果完美。可一旦放进真实pipeline,它就顽固地、规律性地出错。