gpt4 book ai didi

c++ - 在执行 CUDA 设备代码时在同一线程中运行主机代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:50 25 4
gpt4 key购买 nike

有没有办法在 CUDA 设备功能运行时运行主机代码?由于 CUDA 运行时必须等到设备功能完成,我想知道是否有可能在此期间调用提供的主机功能委托(delegate)。

像这样:

enter image description here

<<<function>>> 之前启动线程call 对我来说不一样 [Overhead, ...]。

最佳答案

CUDA 内核调用是异步。这意味着在内核实际开始执行之前,控制权返回到进行内核调用的主机线程。

因此,您只需将主机代码放在内核调用之后(以及任何其他 CUDA API 调用之前,例如 cudaDeviceSynchronize()cudaMemcpy( ))。放置在那里的主机代码将与内核同时运行,只要内核执行(并且只要主机代码执行。)如果您在主机代码中到达需要设备(内核)结果的位置, 然后非异步 CUDA API 调用如 cudaDeviceSynchronize()cudaMemcpy() 将强制主机代码(线程)等待,直到先前发出的 CUDA 事件(内核) 是完整的。

您可能希望阅读有关 asynchronous concurrent execution 的内容在编程指南中。

关于c++ - 在执行 CUDA 设备代码时在同一线程中运行主机代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28807172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com