Opencl工作项和流处理器

Opencl工作项和流处理器,opencl,core,workitem,Opencl,Core,Workitem,workitem和流处理器(cuda core)之间的关系是什么。我在某个地方读到,工作项的数量应该大大超过核心的数量,否则就没有性能改进。但为什么会这样呢??我认为1个核心代表代表1个工作项目。有人能帮我理解这一点吗? 多亏了原因主要是调度-单个核心/处理器/单元通常可以运行多个线程,并在它们之间切换以隐藏内存延迟(SMT)。因此,对于每个核心来说,让多个线程排队等待它通常是一个好主意 一个线程通常至少对应一个工作项,尽管根据驱动程序和硬件的不同,多个工作项可能组合成一个线程,以利用内核的SI

workitem和流处理器(cuda core)之间的关系是什么。我在某个地方读到,工作项的数量应该大大超过核心的数量,否则就没有性能改进。但为什么会这样呢??我认为1个核心代表代表1个工作项目。有人能帮我理解这一点吗?
多亏了

原因主要是调度-单个核心/处理器/单元通常可以运行多个线程,并在它们之间切换以隐藏内存延迟(SMT)。因此,对于每个核心来说,让多个线程排队等待它通常是一个好主意


一个线程通常至少对应一个工作项,尽管根据驱动程序和硬件的不同,多个工作项可能组合成一个线程,以利用内核的SIMD/vector功能。

GPU和大多数其他硬件的运算速度往往比访问其大部分可用内存的速度快得多。拥有比处理器多得多的工作项可以让调度器错开内存使用,而那些已经读取数据的工作项正在使用ALU硬件进行处理

向下滚动至“ 2.4.删除“昂贵的”全局GPU内存访问”,这一概念就涉及到了这一点