GPU 中的多线程是如何工作的?

Pro*_*oWi 2 multithreading gpu gpgpu

GPU 如何处理多线程?

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

Gre*_*ith 5

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

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