并发块数无法被集群大小整除时H100 GPU的调度疑问
H100 GPU集群线程块调度疑问解答
问题背景
H100 GPU拥有132个SM。假设集群大小为5,且受资源限制每个SM仅能容纳1个线程块。CUDA编程指南指出:
正如线程块中的线程可保证在流式多处理器上协同调度一样,集群中的线程块也可保证在GPU的GPU Processing Cluster(GPC)上协同调度
疑问在于:这种协同调度的保证是否意味着仅会使用130个SM?还是剩余2个SM也会被使用,集群中剩下的3个块后续调度到同一GPC?(此时cluster.sync()需阻塞直到GPC有足够空间容纳另外3个块)
核心解答
- 132个SM都会被充分利用,不会仅限制使用130个。
- 调度逻辑为:当某一GPC的空闲SM不足以容纳完整的5块集群(比如只剩2个空闲SM)时,这2个SM会先分配给其他集群的线程块;当前未完成调度的3个块会等待该GPC内有足够SM释放(比如3个SM空闲),此时
cluster.sync()会阻塞,直到这3个块被调度到同一GPC,完成整个集群的协同调度。 - 编程指南的协同调度保证,核心是同一集群的所有线程块最终会在同一个GPC上协同执行,而非要求GPC必须一次性提供足够SM容纳整个集群。只要集群内所有块最终在同一GPC完成协同运行,就符合要求,期间允许分批次等待资源释放后补全调度。
内容的提问来源于stack exchange,提问作者Abator Abetor
相关产品推荐
相关产品推荐

