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

标签 asynchronous cuda

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

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

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

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

最佳答案

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

关于asynchronous - 在 CUDA 程序中禁用所有异步执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4729852/

相关文章:

javascript - 在这种情况下如何避免回调 hell ?

cuda - 漏斗转移 - 这是什么?

performance - 如何为 CUDA 内核选择网格和 block 尺寸?

cuda - cuDNN库是否可以与所有nvidia图形卡一起使用?

python - 在 Tensorflow 中限制 GPU 设备

c++ - GPGPU:一维线程索引的 CUDA 内核配置 - 线程、 block 、共享内存和寄存器

javascript - 如何在 node.js 中完成异步函数后运行函数?

ios - 使用 RxSwift 同步异步网络调用

c# - 异步/等待。方法的可等待部分的延续在哪里执行?

javascript - Promise.all 和 for-await-of 的性能