首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CUDA和图形内核的执行顺序

CUDA和图形内核的执行顺序
EN

Stack Overflow用户
提问于 2014-02-07 10:18:20
回答 1查看 311关注 0票数 1

我有一个类似这样的代码。

1)主机:启动图形内核2)主机:启动CUDA内核(所有异步调用) 3)主机:在主机上执行一系列数字运算4)返回步骤1

我的问题是。CUDA API保证CUDA内核即使是异步的,也会按启动顺序执行。这是否适用于渲染?假设我在GPU上进行了一些渲染相关的计算。如果我启动异步CUDA调用,它们是否只在渲染完成后才执行?或者这两个操作会重叠吗?

此外,如果我在步骤2之后调用CUDA设备同步,它肯定会强制设备完成CUDA相关函数调用。那么渲染呢?它是否会停止主机,直到渲染相关的操作也完成?

EN

回答 1

Stack Overflow用户

发布于 2014-02-07 10:58:36

调用CUDA内核会以某种方式锁定GPU,因此不支持GPU的任何其他用法。主机代码的每个进程必须在特定上下文中执行设备代码,并且一次只能在单个设备上激活一个上下文。

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

编辑:查看this非常全面但有些过时的答案,你可以研究this论文,看看哪些是最后的设备。简而言之,启动CUDA内核,甚至在正在被另一个线程并发使用的设备上调用cudaSetDevice(),都会因为抛出一些错误而崩溃。如果您希望通过并发CUDA进程利用GPU,则有可能(在纯linux计算机上)在主机线程和CUDA API调用之间使用某种类型的中间层(称为MPS)。这在我的second链接中有描述。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21618066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档