Opencl 工作项和流处理器

问题描述 投票:0回答:2

工作项和流处理器(cuda core)之间有什么关系?我在某处读到,工作项的数量应该大大超过核心的数量,否则,性能不会提高。但为什么会这样呢?我认为 1 个核心代表 1 个工作项。有人可以帮助我理解这一点吗?

cuda opencl
2个回答
1
投票

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

这是一个关于 opencl 优化的好页面。 向下滚动到“ 2.4.删除“昂贵的”全局 GPU 内存访问”,其中涉及到这个概念。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.