CUDA线程的执行顺序与它们开始的顺序相同

时间:2016-10-03 11:17:42

标签: cuda

是否正常,CUDA并行块每次都从头到尾执行?我的意思是:

如果我有3个帖子,我总是这样:

•第一个线程结束。 •第二个线程结束。 •第三个线程结束。

我想知道这是否是正常的行为,因为我是CUDA的新手。我知道Open MP,C ++ Threads或Java Threads通常每次都会给出不同的结果。但在CUDA中,我总是得到相同的订单。那可能吗?或者这意味着某些东西不能很好地运作?

2 个答案:

答案 0 :(得分:1)

CUDA无法保证此行为。

由于32个线程被分组为warp,您可能会在那里观察到典型或可重复的行为,但如果您启动300万个线程,您将观察到从运行到运行的不同顺序。

答案 1 :(得分:0)

如果这些线程处于相同的warp中,它们将以锁步方式执行,其中顺序由硬件确定,很可能是从0到31。

如果这些线程处于不同的warp但在同一个线程块中,则warp调度程序确定的顺序将是不可预测的。

如果这些线程在不同的线程块中,则块调度程序确定的顺序将是不可预测的。