2

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

例如:

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

谢谢!

4

2 回答 2

9

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

于 2012-05-23T17:55:50.970 回答
2

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

不过,关于线程执行有一些话可以说。在 CUDA 的执行模型中,线程被分组在“warp”中。根据底层设备的计算能力,每个扭曲(或半扭曲)是同时执行的——实际上是同时执行。执行继续进行,直到代码由于等待内存转移而锁定,并且计划运行另一个扭曲(或半扭曲)。

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

于 2012-05-23T18:00:43.313 回答