NVIDIA的GPU的CUDA核心和OpenCL计算单元之间有什么关系?

3

我的电脑有一块GeForce GTX 960M显卡,NVIDIA声称它拥有640个CUDA核心。然而,当我运行clGetDeviceInfo来查找计算机中的计算单元数量时,它打印出5个(见下图)。听起来CUDA核心与OpenCL认为的计算单元有所不同?或者一组CUDA核心形成一个OpenCL计算单元?你能解释一下吗?

enter image description here


3
互联网上有一张将OpenCL <-> CUDA语言进行映射的表格。OpenCL中所称的“计算单元”在CUDA中被称为“流式多处理器”。CUDA的“核心”本质上是ALU / FPU。 GTX 960M具有5个SM,每个SM有128个核心,总共有640个核心。 - user703016
@Angy Lettuce 感谢您的回答。所以,如果我理解正确的话,每个工作组将在一个计算单元中执行;因此,假设最大工作组大小为1024,在这个GPU中我可以实现的最佳并行性是同时执行1024*5=5120个工作项。这样对吗? - mfaieghi
2个回答

6

NVIDIA GPU的CUDA核心和OpenCL计算单元之间有什么关系?

您的GTX 960M是一款Maxwell设备,具有5个流式多处理器,每个多处理器具有128个CUDA核心,总共有640个CUDA核心

NVIDIA流式多处理器相当于一个OpenCL计算单元。先前链接的答案也会为您提供一些有用的信息,这可能有助于回答您在评论中提出的内核大小问题。


0
CUDA架构与OpenCL架构非常相似。
CUDA设备围绕可扩展的多线程流处理器(SM)阵列构建。每个多处理器对应一个OpenCL计算单元。
每个多处理器为每个OpenCL work-item执行一个CUDA线程,并为每个OpenCL work-group执行一个线程块。通过线程块网格执行OpenCLNDRange内核。如图2-1所示,执行内核的每个线程块都由其工作组ID唯一标识,每个线程都由其全局ID或其本地ID和工作组ID的组合标识。
摘自CUDA架构的OpenCL编程指南 http://www.nvidia.com/content/cudazone/download/OpenCL/NVIDIA_OpenCL_ProgrammingGuide.pdf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接