GPU如何处理多线程?
例如,在CPU中,每个线程都有独立的寄存器文件副本。但是使用GPU中的大型寄存器文件是不可能的。那么GPU如何处理线程? 它们是否适合相同的寄存器文件?如果在多个线程中使用某些寄存器怎么办?这有什么作用?
答案 0 :(得分:4)
NVIDIA GPU每个流多处理器(SM)有1-4个warp调度程序。每个SM warps调度程序都有一个本地寄存器文件。 Warp被分配给warp调度程序,寄存器从寄存器文件中分配。分配持续经线的生命周期。在每个循环中,每个warp调度程序从其活动warp列表中选择一个符合条件的warp(未停止)并发出1-2条指令(CC <= 2.0只能发出单一问题)。
这与SMT CPU不同,后者具有某些资源的单独副本,但共享前端和执行路径。支持超线程的英特尔CPU可以在每个周期从两个硬件线程发送指令,具体取决于调度端口的仲裁。