在CUDA程序中禁用所有异步执行

时间:2011-01-18 22:35:40

标签: asynchronous cuda

根据CUDA编程指南,您可以通过设置环境变量(CUDA_LAUNCH_BLOCKING = 1)在运行时禁用异步内核启动。

这是一个有用的调试工具。我还想确定我的代码使用并发内核和传输的好处。

我还想禁用其他并发调用,特别是cudaMemcpyAsync

除了内核启动之外,CUDA_LAUNCH_BLOCKING会影响这些类型的调用吗?我怀疑不是。什么是最好的选择?我可以添加cudaStreamSynchronize次呼叫,但我更喜欢运行时解决方案。我可以在调试器中运行,但这会影响时间并使目的失败。

1 个答案:

答案 0 :(得分:1)

设置CUDA_LAUNCH_BLOCKING根本不会影响流API。如果添加一些调试代码以强制所有流代码使用流0,则除内核调用之外的所有调用都将恢复为同步行为。