cudaEventSynchronize在不同情况下的行为

时间:2012-08-01 08:47:40

标签: asynchronous cuda

我有一个关于CUDA调用cudaEventSynchronize的问题。

AFAIK,它主动轮询事件,从而消耗CPU周期。如果我想让它同步,那么就像我可以用内核执行那样可以产生CPU,我怎么能这样做呢?

更具体地说,在下面的预期行为是什么:

  • 使用CUDA_LAUNCH_BLOCKING = 1 env变量。
  • 使用cudaDeviceScheduleBlockingSync
  • 使用cudaDeviceScheduleYield

我一直在经历奇怪的行为,需要一些帮助来阐明这一点。 Nvidia关于特定技术方面的信息非常不愿意帮助...我认为实施细节必须保密。

提前致谢,

何。

1 个答案:

答案 0 :(得分:1)

如果您希望cudaEventSynchronize使用阻止同步,则需要使用创建事件
cudaError_t cudaEventCreateWithFlags (cudaEvent_t event, unsigned int flags)

并将cudaEventBlockingSync作为标志传递。