一个关于CUDA的单线程

3
我正在调用一个只包含一个线程块的CUDA核心,例如:
kernel<<<1, 1>>>
这个核心将只在指定的单一CUDA核心上运行吗?例如,如果GPU有128个核心,则只有其中一个核心会工作吗?
非常感谢!
2个回答

8

不可以。CUDA是一种SIMD风格的架构,其基本执行单元是一个“warp”——由32个线程组成的组合,在硬件上step执行。如果您启动包含单个线程的单个块,则硬件将执行32个线程的单个warp,其中31个被屏蔽并执行无操作流的等效函数。任何给定的warp在单个流多处理器上执行,具体取决于您使用的硬件的代数,这可能涉及到SM上运行的8、16或32个核心。


2

每个CUDA核心都是SM的SIMD中的一条通道。您的内核仅激活一个SM并利用其中一个通道。因此,内核<<<1,1>>>非常低效,只利用一个SM的一个通道。


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