Opencl工作项和流处理器

时间:2016-07-15 20:12:35

标签: opencl core workitem

工作项和流媒体处理器(cuda核心)之间的关系是什么。我在某处读到,工作项的数量应该大大超过内核的数量,否则就没有性能提升。但为什么会这样呢?我认为1核心代表1个工作项目。有人能帮助我理解这个吗? 谢谢

2 个答案:

答案 0 :(得分:1)

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

Here is a good page about optimization in opencl.向下滚动到“ 2.4。删除“昂贵的”全局GPU内存访问“,它进入了这个概念。

答案 1 :(得分:0)

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

线程通常对应于至少一个工作项,尽管取决于驱动程序和硬件,多个工作项可能会合并到一个线程中,以利用核心的SIMD /矢量功能。