CU_CTX_SCHED_BLOCKING_SYNC是否使内核同步?

时间:2018-05-24 07:22:21

标签: c++ cuda gpu nvidia

使用CU_CTX_SCHED_BLOCKING_SYNC创建CUDA上下文是否会使CUDA内核启动实际上是同步的(即将CPU线程停止为普通的CPU同一线程函数)?

仅文档说明

  

CU_CTX_SCHED_BLOCKING_SYNC:指示CUDA在等待GPU完成工作时阻止同步原语上的CPU线程。

但我不确定我是否理解正确。

1 个答案:

答案 0 :(得分:2)

没有。

这些标志控制主机线程在使用主机API调用主机< - >设备同步API(如https://developer.android.com/guide/topics/ui/menuscuCtxSynchronize cuEventSynchronize时的行为方式。在这两种情况下,其他非阻塞API调用都是异步的。

主机行为有两种模式,即阻塞或屈服。阻塞意味着调用主机线程将在等待调用返回时旋转并阻止其他线程访问驱动程序,yield意味着它可以屈服于尝试与GPU驱动程序交互的其他主机线程。

如果要在内核启动时强制执行阻塞行为,请使用CUDA_​LAUNCH_​BLOCKING环境变量。