2011-03-11 38 views
2

一个warp是32个线程。 32个线程是否在多处理器中并行执行? 如果32个线程没有并行执行,那么在warp中没有竞争条件。 我经历了一些例子后,得到了这个疑问。CUDA warp中的线程是否在多处理器上并行执行?

+0

似乎是重复的:http://stackoverflow.com/questions/5268103/cuda-threads-in-a-wrap你为什么问同样的问题两次? – 2011-03-11 04:48:46

+0

请不要提出重复的问题,只需编辑这一个。正如你在另一方面有答案一样,我已经合并了它们。 – 2011-03-11 08:27:28

回答

4

在CUDA编程模型中,一个warp内的所有线程并行运行。但是硬件中的实际执行可能并不是并行的,因为SM(流多处理器)中的内核数量可能少于32个。例如,GT200架构每个SM有8个内核,并且一个warp内的线程需要4个时钟周期完成执行。如果多个线程写入相同的位置(共享内存或全局内存),并且如果您不想竞争,那么您必须使用原子操作或锁定,因为CUDA编程模型并不能保证哪个线程是去写。

-1

是的。 WARP中的32个线程将并行执行。 GPU是SIMT(单指令多线程)机器,单指令由多线程并行执行。

顺便说一句,SIMT是一种营销术语,它基本上与SIMD相同。

+0

我读过每个多处理器中有8个标量处理器的情况32个线程怎么可能并行执行 – kar 2011-03-11 04:39:58

+0

8种相同类型的标量处理器 – kar 2011-03-11 04:44:19

+2

1个标量处理器同时处理4个线程,这对于编程人员来说是不可见的。请注意,费米卡在多处理器中具有更多的SP,并且它们可以一次(独立地)实际执行2次变形。 – CygnusX1 2011-03-11 07:35:24