gpt4 book ai didi

cuda - 在长内核期间避免延迟显示的任何提示?

转载 作者:行者123 更新时间:2023-12-01 05:03:54 24 4
gpt4 key购买 nike

亲爱的 CUDA 用户,我正在重新发布一个来自 nvidia 开发板的问题:我目前正在 GPU 上进行图像处理,我有一个内核在大图像上运行时大约需要 500 到 700 毫秒。它曾经在较小的图像上完美运行,但现在的问题是整个显示甚至鼠标光标都变得滞后 (OS=win7)

我的想法是在 4 或 8 次内核启动中拆分我的内核,希望驱动程序可以更频繁地刷新(在每次内核启动之间)。不幸的是,它根本没有帮助,那么我还能尝试什么来避免这种卡住显示效果呢?我被建议在每个内核之间添加一个 cudaStreamQuery(0) 调用以避免被驱动程序打包。

注意:我准备用性能换取流畅度!

最佳答案

GPU(目前)尚未设计为在内核启动之间进行上下文切换,这就是长时间运行的内核导致显示滞后的原因。在 Windows Vista/Windows 7 以外的平台上,将内核分成多个启动可能会有所帮助。在这些平台上,每次 CUDA 驱动程序想要提交时,Windows 显示驱动程序模型都需要昂贵的用户-> 内核转换(“kernel thunk”)为 GPU 工作。

为了分摊内核 thunk 的成本,CUDA 驱动程序将 GPU 命令排队并分批提交。驱动程序使用启发式方法来权衡内核 thunk 对性能的影响与不立即提交工作而增加的延迟。您的多内核解决方案发生的情况是,驱动程序将您的内核或一系列内核同时提交给 GPU。

您是否尝试过 cudaStreamQuery(0) 建议?这可能有帮助的原因是它强制 CUDA 驱动程序将工作提交给 GPU,即使只有很少的工作待处理。

关于cuda - 在长内核期间避免延迟显示的任何提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8034186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com