warp是32个线程。 32个线程是否在多处理器中并行执行? 如果32个线程没有并行执行,则warp中没有竞争条件。 经过一些例子后,我对此产生了怀疑。
答案 0 :(得分:4)
在CUDA编程模型中,warp中的所有线程并行运行。但是硬件中的实际执行可能不是并行的,因为SM(流多处理器)中的内核数量可能小于32.例如,GT200架构每个SM有8个内核,并且warp中的线程需要4个时钟周期完成执行。
如果多个线程写入同一位置(共享内存或全局内存),并且您不想要竞争,则必须使用原子操作或锁定,因为CUDA编程模型不保证哪个线程正在运行写。
答案 1 :(得分:-1)
是。 WARP中的32个线程将并行执行。 GPU是SIMT(单指令多线程)机器,单指令由多个线程并行执行。
顺便说一句,SIMT在某种程度上是一个营销术语,它与SIMD基本相同。