CUDA编程指南的内容如下:
warp一次执行一条通用指令,因此,当warp的所有32个线程都同意它们的执行路径时,就可以实现充分的效率。如果warp的线程通过依赖于数据的条件分支发散,则warp会串行执行所采用的每个分支路径,从而禁用不在该路径上的线程,并且当所有路径完成时,这些线程会聚回到同一执行路径。
由于一次常见的指示,我正在考虑步调一致。
经纱中的每条指令都在一个锁步中执行。仅当前一条指令完成时才能提取下一条指令。如果一条指令对于不同的线程需要不同的时间(例如,一个线程从缓存中加载数据,而另一个线程等待全局内存读取),则所有线程都必须等待。
话虽这么说,我不知道有任何一条指令具有复杂性O(n)。您可能要指的是n扭曲中的每个线程正在执行的大小循环。循环与任何其他控制流构造一样,具有条件跳转。提前退出循环的线程将被屏蔽,并等待线程仍在循环中。当所有线程发出要退出的信号时,它们会收敛,并且以下操作将再次以完美同步进行。
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |