我的电脑有一块GeForce GTX 960M显卡,NVIDIA声称它拥有640个CUDA核心。然而,当我运行clGetDeviceInfo来查找计算机中的计算单元数量时,它打印出5个(见下图)。听起来CUDA核心与OpenCL认为的计算单元有所不同?或者一组CUDA核心形成一个OpenCL计算单元?你能解释一下吗?
NVIDIA GPU的CUDA核心和OpenCL计算单元之间有什么关系? 您的GTX 960M是一款Maxwell设备,具有5个流式多处理器,每个多处理器具有128个CUDA核心,总共有640个CUDA核心。 NVIDIA流式多处理器相当于一个OpenCL计算单元。先前链接的答案也会为您提供一些有用的信息,这可能有助于回答您在评论中提出的内核大小问题。
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