[英]Can two blocks be executed in the same warp?
从CUDA C编程指南中:
线程块的线程在一个多处理器上同时执行,而多个线程块可以在一个多处理器上同时执行 。 随着线程块的终止,新的块将在腾出的多处理器上启动。
现在,假设我有很多线程(例如1000个),每个线程只有几个(例如4个),每个线程使用几个寄存器,以便多个线程可以一起运行。
我想了解一下,如果给定一个例如32个线程的扭曲,则实际上是否会同时运行8个块以填充该扭曲,或者是否不会发生这种情况。
阅读上述报价之后,我的猜测是,如果将被执行的指令是用于在经纱的所有线程,而与该线程(在这种情况下,块,从8个块32周的螺纹碰巧相同,这可能发生具有相同的程序计数器)。
但是也许我是完全错误的。 因此,我想更好地了解如果块大小小于扭曲大小会发生什么。
每个warp都是某个线程块所独有的,因此,在您的示例中,如果您有一个带有8个线程的线程块,则将分配整个warp(32个线程)的资源,并执行整个warp。 唯一的区别是只允许前8个线程进行写操作,其余线程将被屏蔽。 无法在多个线程块之间共享扭曲。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.