CUDA线程执行顺序

时间:2012-05-23 17:46:16

标签: cuda

  

在CUDA中,当我们谈论执行相同代码的并行线程时,它们的执行顺序是什么?

对于-示例:

如果,我有4个线程,对于4个元素的1D数组。所有四个线程在数组的某个索引上执行某些操作。 线程4是否总是在线程3之后执行,或者执行中没有特定的顺序?

谢谢!

2 个答案:

答案 0 :(得分:8)

通常,线程执行没有顺序。依靠设计算法的线程顺序是错误的。

答案 1 :(得分:1)

线程的执行没有确定性的顺序,如果你需要特定的顺序,那么你应该按顺序编程而不是使用并行执行模型。

但是可以说有关于线程执行的某些。在CUDA的执行模型中,线程被分组为“warp”。根据底层设备的计算能力,每个warp(或half-warp)同时执行 - 实际上是同时执行。执行继续执行,直到代码因等待内存传输而锁定,并且计划运行另一个warp(或half-warp)。

但是,文档非常具体地说明了您可以对此问题做出的假设:您拥有的最佳执行障碍是内核调用结束。