2016-07-15 43 views
2

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

回答

0

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

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

1

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

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