warp shuffle指令的使用?__shfl_sync?warp shuffle指令的使用?__shfl_sync?
Warp 是 32 个线程的 SIMD 组;warp shuffle 指同一 warp 内线程直接交换寄存器,不经过 shared memory 或 global memory,延迟低、带宽高。用于 warp 内 reduce、broadcast、scan 等。
__shfl_sync(mask, value, src_lane, width):在同一 warp 内,当前线程从 src_lane 号线程读其 value。mask 为参与线程的位掩码(通常 0xffffffff)。变体:__shfl_down_sync(从 lane + delta 读)、__shfl_up_sync、__shfl_xor_sync(用于 butterfly reduce)等。sync 表示参与线程需先在该 warp 内同步(符合 CUDA 9+ 的 convergent 要求)。
仅限 warp 内、同一 warp 的 32 线程;width 可小于 32 表示逻辑子 warp。用于 warp 内 sum、max、broadcast 时比 shared memory 更高效;跨 warp 仍用 shared。
| 返回模块 | 返回总览 |