ai-infra-interview-305

第 28 题:什么是warp divergence?如何检测和避免?

题目

什么是warp divergence?如何检测和避免?


完整讲解

一、什么是 warp divergence?

Warp 是 32 个线程一起取指、执行;若这 32 线程走 不同分支(如 if (tid < 8) ... else ...),硬件会 串行执行 各分支(先执行满足条件的,再执行不满足的),未参与的分支线程被 mask 掉。这种同一 warp 内分支不一致叫 warp divergence,会导致有效并行度下降、利用率低。

二、如何检测?

三、如何避免或减轻?


面试要点


记忆要点

  1. Divergence = 同 warp 内分支不同 → 串行执行各分支,mask 部分线程。
  2. 看 Nsight warp 效率;分支条件依赖 tid 易产生 divergence。
  3. 对齐分支到 warp、用无分支写法、或重排数据使同分支同 warp。
返回模块 返回总览