CUDA流和事件:澄清

时间:2017-03-07 17:51:21

标签: cuda gpgpu

我正在阅读有关CUDA流和事件的内容。主持人在下面给出链接的帖子中说(我引用):

在CUDA中,保证按顺序完成提交给流的命令。如果应用程序向流提交网格启动和事件记录,则驱动程序将把网格启动,同步命令和事件记录推送到连接。在内核启动完成并清除同步令牌之前,前端不会处理事件记录命令。 连接被阻止。在计算能力3.5设备上,前端可以继续处理其他连接。关于计算能力< 3.5设备前端被简单阻止。

我努力了,但我无法理解为什么主持人说连接被阻止了。请问有什么解释吗?谢谢。

主题网址:https://devtalk.nvidia.com/default/topic/599056/concurrent-kernel-and-events-on-kepler/?offset=4

1 个答案:

答案 0 :(得分:3)

此上下文中的连接类似于命令队列。具有计算能力的设备< 3.5只有一个连接/命令队列。虽然逻辑上可以有多个流,但是当命令被发送到设备时,它们都会在同一队列中结束,并且不能再相互超越。

因此,阻止设备端的一个命令(如记录事件)会阻止所有其他命令。 Later devices support multiple connections,所以(直到某个限制)每个流都获得它自己的命令队列。