有没有办法在执行CUDA设备函数的同时运行主机代码?由于CUDA运行时必须等到设备函数完成,我想知道是否有可能在此期间调用提供的主机函数委托。
类似于这样的东西:
对我来说,在<>调用之前启动线程不是同一件事情[开销,……]。
类似于这样的东西:
![enter image description here](https://istack.dev59.com/HRTdp.webp)
cudaDeviceSynchronize()
或cudaMemcpy()
)之前)来与内核同时运行主机代码。放置在那里的主机代码将与内核并发运行,只要内核执行(以及主机代码执行)。如果您需要从设备(内核)获取结果,则非异步CUDA API调用(例如cudaDeviceSynchronize()
或cudaMemcpy()
)将强制主机代码(线程)等待先前发出的CUDA活动(内核)完成。您可能希望阅读编程指南中关于异步并发执行的内容。
<<<call>>>
之后和CudaDeviceSync()
之前调用我的线程函数,然后我就能实现想要的效果了吗? - Peter VARGACudaDeviceSync
会表现出何种行为。您应该参考CUDA编程指南。 - Ivan Solntsev