CUDA上的一个线程

时间:2012-12-10 05:26:32

标签: cuda

我正在调用一个只有一个块的CUDA内核,并且该块中只有一个线程,例如

kernel<<<<< 1,1>>>

此内核是否仅在指定的单个 CUDA核心上执行? 那么,例如,如果GPU有128个核心,128个核心中只有1个会起作用吗?

非常感谢!

2 个答案:

答案 0 :(得分:7)

没有。 CUDA是一种SIMD风格的体系结构,基本执行单元是 warp - 一组32个线程,在硬件上逐步执行锁定。如果启动包含单个线程的单个块,则硬件将执行32个线程的单个warp,其中31个被屏蔽掉并执行等效的noop流。任何给定的warp都在单个流式多处理器上执行,并且取决于您使用的硬件的生成,可能涉及运行它的SM的8个,16个或32个核心。

答案 1 :(得分:2)

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