我猜你想要这样的东西:
int offset = (threadIdx.x == 33) ? threadIdx.x : 0;
int val = bases[threadIdx.x + offset];
以便最后一个线程从块内的线程索引获得非零偏移量。三元运算符将有条件地进行评估,不会导致任何分支分歧。但是,我建议重新考虑使用不是扭曲大小 (32) 倍数的块大小。这样做会浪费很多内核和周期。例如,没有什么会阻止您使用具有 32 个线程的块并让最后两个线程执行额外的计算以覆盖每个块所需的 34 个操作。