2

GPU如何处理多线程?

例如,在 CPU 中,每个线程都有独立的寄存器文件副本。但是对于像 GPU 这样的大型寄存器文件,这是不可能的。那么 GPU 是如何处理线程的呢?它们是否适合它们在同一个注册文件中?如果在多个线程中使用了一些寄存器怎么办?这是如何运作的 ?

4

1 回答 1

5

NVIDIA GPU 的每个流式多处理器 (SM) 有 1-4 个扭曲调度器。每个 SM warps 调度器都有一个本地寄存器文件。Warp 被分配给一个 warp 调度器,并且寄存器是从寄存器文件中分配的。分配在经线的整个生命周期内持续。在每个周期,每个 warp 调度程序从它的活动 warp 列表中选择一个合格的 warp(未停止)并发出 1-2 条指令(CC <= 2.0 只能发出一次)。

这与 SMT CPU 不同,后者具有一些资源的单独副本,但共享前端和执行路径。支持超线程的 Intel CPU 可以根据调度端口的仲裁在每个周期从两个硬件线程调度指令。

于 2013-07-04T05:45:02.290 回答