CUDA和图形内核执行顺序



我有一个像这样的代码。

1)主机:启动图形内核2)主机:启动CUDA内核(所有异步调用)3)主机:在主机上做一堆数字4)返回步骤1

我的问题是这个。CUDA API保证CUDA内核即使是异步的,也可以按照启动来执行。这适用于渲染吗?可以说,我在GPU上正在进行一些相关的计算。如果我启动异步CUDA呼叫,只有在渲染完成后才执行它们?还是这两个操作会重叠?

另外,如果我在步骤2之后调用CUDA设备同步,则肯定会迫使该设备完成相关功能调用。那渲染呢?它是否会失望主机,直到渲染相关的操作也完成?

以某种方式调用cuda内核,因此不支持任何其他使用GPU的用法。主机代码的每个过程都必须在特定上下文中执行设备代码,并且唯一可以在单个设备上处于活动状态。

callig cudaDeviceSynchronize();阻止了调用主机代码。完成所有设备代码流的执行后,控制将返回到调用主机代码。

编辑:请参阅这个非常全面但有些过时的答案,您可以研究本文,以了解最后设备的能力。简而言之,启动CUDA内核,甚至在通过丢弃一些错误通过另一个线程崩溃的设备上调用cudaSetDevice()。如果您想通过并发的CUDA进程利用GPU,则有可能(仅Linux的机器上)在主机线程和CUDA API调用之间使用某种中层层(称为MPS)。这在我的第二个链接中描述。

相关内容

  • 没有找到相关文章

最新更新