创建 CUDA 事件时,您可以选择打开cudaEventBlockingSync
旗帜。但是 - 如果创建带有或不带有标志的事件之间存在差异怎么办?我阅读精美的手册 http://developer.download.nvidia.com/compute/cuda/3_0/toolkit/docs/CudaReferenceManual.pdf;这对我来说没有意义。什么是“调用主机线程”,以及什么时候“阻塞”don't使用旗帜?
4.6.2.7 cudaError_t cudaEventSynchronize(cudaEvent_t事件)
阻塞直到事件实际发生
被记录。 ...等待一个
使用创建的事件cudaEventBlockingSync标志将导致
调用主机线程阻塞直到
该事件实际上已经被记录下来。
cudaEventBlockingSync
将定义主机将如何等待事件发生。
When cudaEventBlockingSync
is SETCPU可以放弃宿主线程。即 CPU 将被传递给不同的线程(可能是一个进程)。宿主线程稍后会重新获取CPU。采用这种方式,主机线程不会独占所有CPU时间,可以允许主机做其他工作。
When cudaEventBlockingSync
未设置CPU 将忙等待,即 CPU 将进入检查事件循环。当这种情况发生时,CPU 就会旋转,寻找要发生的事件。这通常会导致 CPU 性能表显示为 100%。通过这种方法,主机线程独占所有 CPU 时间。
未设置cudaEventBlockingSync
导致从内核执行结束到控制返回线程的最小延迟。您要使用哪个设置取决于内核正在执行的操作。即事件发生需要多长时间,以及 CPU 阻塞涉及多少调度开销。不设置此标志的代价是在等待事件发生时无法执行任何其他 CPU 工作(其他线程)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)