3

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

内核<<<1, 1>>>

这个内核是否只在指定的单个CUDA 内核上执行?例如,如果 GPU 有 128 个内核,那么 128 个内核中只有 1 个可以工作?

多谢!

4

2 回答 2

7

不。CUDA 是一种 SIMD 风格的架构,基本执行单元是一个warp——一组 32 个线程,它们在硬件上按锁步方式执行。如果您启动包含单个线程的单个块,则硬件将执行 32 个线程的单个 warp,其中 31 个被屏蔽并执行相当于 noops 流。任何给定的 warp 都在单个流式多处理器上执行,并且取决于您使用的硬件的生成,这可能涉及运行它的 SM 的 8、16 或 32 个内核。

于 2012-12-10T05:45:29.123 回答
2

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

于 2012-12-10T05:44:29.823 回答