jmi*_*loy 3 synchronization cuda
创建CUDA事件时,您可以选择打开该cudaEventBlockingSync标志.但是 - 如果创建一个有或没有标志的事件之间的区别怎么办?我读了精美的手册 ; 它对我来说没有意义.什么是"调用主机线程",以及什么是"阻止" 不使用标志?
4.6.2.7 cudaError_t cudaEventSynchronize(cudaEvent_t事件)
直到事件实际被记录为止....等待使用cudaEventBlockingSync标志创建的事件 将导致调用主机线程阻塞,直到事件实际被记录为止.
cudaEventBlockingSync 将定义主机如何等待事件发生.
何时cudaEventBlockingSync设置 CPU可以放弃主机线程.即CPU将传递一个不同的线程(可能是一个进程).主机线程将在以后重新获取CPU.使用这种方法,主机线程不会独占所有CPU时间,主机可以被允许做其他工作.
当cudaEventBlockingSync未设置时,CPU将忙等待,即CPU将进入检查事件循环.当发生这种情况时,CPU只是旋转,寻找事件发生.这通常会导致CPU性能指标达到100%.使用此方法,主机线程独占所有CPU时间.
未设置cudaEventBlockingSync导致从内核执行结束到返回到线程的控件的最小延迟.您要使用的设置取决于内核正在执行的操作.即事件发生需要多长时间,相比之下,CPU阻塞涉及多少计划开销.不设置此标志的代价是在等待事件发生时无法执行任何其他CPU工作(其他线程).