gpt4 book ai didi

c++ - CUDA : Might a host method that calls a kernel/cudaMemcpy return before the kernel/memcpy finish?

转载 作者:太空狗 更新时间:2023-10-29 20:54:29 27 4
gpt4 key购买 nike

我有一个方法可以将一些数据复制到设备,在各自的流上调用多个内核,然后为不同的流调用 cudaMemcpyAsync,以便它们在各自的内核之后运行。

因为我已经读到内核和 cudaMemcpyAsync 都已启动并与主机代码并行运行,我可能会在这些完成之前调用它们作为返回,或者它只会与主机代码并行运行宿主代码在同一个函数中?

最佳答案

Might a host method that calls a kernel/cudaMemcpy return before the kernel/memcpy finish?

是的,可能。如果您所做的只是调用内核和 cudaMemcpyAsync 操作,则调用这些操作的 cpu 函数可能会在操作完成之前完成/返回(即使它是您的 main 例程!)

这些操作都是异步的,这意味着它们不会阻塞调用它们的 CPU 线程。

即使您有大量 CPU 代码在内核调用和 cudaMemcpyAsync 调用之后运行,也不能保证 GPU 事件将完成(甚至开始!),除非您使用某些函数将主机线程与设备事件同步,例如普通的 cudaMemcpy 调用或 cudaDeviceSynchronize() 调用或 cudaStreamSynchronize() 或其他类似调用.

这不受您的 cpu/主机代码的功能结构的影响。

关于c++ - CUDA : Might a host method that calls a kernel/cudaMemcpy return before the kernel/memcpy finish?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38984619/

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