我试图了解Nividia GPU和普通(多线程)CPU使用的线程技术之间的区别。特别是我的两个问题是:
系统的哪个部分负责线程调度,并且根据哪个方面进行调度?
线程是否被同步处理?
答案 0 :(得分:1)
CUDA内核和CPU内核实际上是完全不同的东西-名称更像是一种营销产品。
负责线程调度是什么意思?它主要是软件和硬件。例如,纯CPU与实际的线程调度几乎没有关系,但是提供了必要的功能来将线程调度器实现为OS的一部分。因此,调度参数由软件定义。因此,您应该将问题采纳到特定的操作系统。
CPU提供的一件事就是所谓的硬件线程。每个硬件线程都允许“并行”执行一个软件线程。 (注意:使用超线程,执行实际上不是更多并行的并行操作)。调度程序将所有正在运行的线程分配在这些硬件线程上。
这基本上是一个MIMD系统。
在图形卡上的调度要复杂得多。简而言之: 您有数千个CUDA核心-但是与CPU相比,您不能为每个核心分配唯一的应用程序。 CUDA内核按组(称为“扭曲”)组织,同一组内的所有CUDA内核同时执行同一线程。
这称为SIMT