在进行CUDA编程时,我们都知道一个线程块会被调度在一个SM上,不会迁移到其他SM上。对于线程块中的一个线程来说,它在整个执行过程中是停留在单个SP上,还是可以将其指令任意调度到不同的SP上?
编程模型不将线程限制为单个 CUDA 核心。线程块必须在单个 SM 上执行,因为块内的线程可以通过共享内存进行通信,并且共享内存只能由同一 SM 内的线程访问。这种限制是 GPU 能够从移动扩展到超级计算的部分原因。
为什么了解线程是否在单个 CUDA 核心上执行很有帮助?CUDA 模型用于吞吐量计算,这意味着当一个线程(warp)正在执行具有一定延迟的操作时,硬件可以立即引入另一个线程(warp)来填补空白。因此,任何给定线程在哪里执行都无关紧要。
归档时间: |
|
查看次数: |
651 次 |
最近记录: |