2

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

4

2 回答 2

4

在 CUDA 编程模型中,warp 中的所有线程并行运行。但是硬件中的实际执行可能不是并行的,因为一个 SM(流多处理器)内的内核数量可能少于 32 个。例如,GT200 架构每个 SM 有 8 个内核,一个 warp 内的线程需要 4 个时钟周期完成执行。

如果多个线程写入同一位置(共享内存或全局内存),并且您不希望竞争,那么您必须使用原子操作或锁,因为 CUDA 编程模型不保证哪个线程将写入。

于 2011-03-11T04:09:50.673 回答
-1

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

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

于 2011-03-11T04:36:28.317 回答