CUDA:可能一个宿主方法调用内核/cudaMemcpy在内核/memcpy结束之前返回
CUDA : Might a host method that calls a kernel/cudaMemcpy return before the kernel/memcpy finish?
我有一个方法,将一些数据复制到设备,在自己的流上调用多个内核,然后为不同的流调用cudaMemcpyAsync
,以便它们在各自的内核之后运行。
因为我读到内核和cudaMemcpyAsync
都是与主机代码并行启动和运行的,我可能在这些完成之前调用它们的函数,或者它只在同一个函数中与主机代码并行运行?
调用内核/cudaMemcpy的宿主方法可能在内核/memcpy完成之前返回吗?
是的,它可能。如果您所做的只是调用内核和cudaMemcpyAsync
操作,那么调用这些操作的cpu函数可能会在操作完成之前结束/返回(即使它是您的main
例程!)
这些操作都是异步的,这意味着它们不会阻塞调用它们的CPU线程。
即使你有很多CPU代码在内核调用和cudaMemcpyAsync
调用之后运行,也不能保证GPU活动将完成(甚至开始!)除非你使用一些函数来同步主机线程与设备活动,例如普通的cudaMemcpy
调用或cudaDeviceSynchronize()
调用或cudaStreamSynchronize()
或其他类似的调用。
这不受cpu/主机代码的功能结构的影响。
相关文章:
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- CUDA内核和数学函数的显式命名空间
- 码头化的C++应用程序是否向后兼容早期的内核版本
- C++内核出现Jupyter笔记本错误
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 内存围栏是否涉及内核
- 将 2D 推力::d evice_vector 复矩阵传递给 CUDA 内核函数
- OpenCL 内核参数中的字符***?
- 具有可分离内核的 2D 模糊卷积
- 如何在Windows内核中获取文件大小
- 库达如何将字符**从内核复制到主机
- OpenCL 是否支持向量作为内核参数?
- pthread_spinlock是否会导致从用户空间切换到内核空间
- 如何在内核中添加包含库的路径?
- openCL 内核返回垃圾值,尽管没有错误
- OpenCL 内核计时测量 0 秒或导致 SIGABRT
- Visual Studio 如何在内核模式驱动程序项目中使用C++标准库?
- 分段错误(内核转储) C++面向对象编程
- OpenCL 在 NVIDIA 和 Intel GPU 上启动内核时CL_INVALID_COMMAND_QUEUE
- CUDA:可能一个宿主方法调用内核/cudaMemcpy在内核/memcpy结束之前返回