gpt4 book ai didi

cuda - 使用 CUDA 流重叠数据传输和内核执行

转载 作者:行者123 更新时间:2023-12-01 06:29:18 25 4
gpt4 key购买 nike

我想通过将数据传输与内核执行重叠来优化我的 CUDA 程序。但是 CUDA SDK 中的示例程序 asyncAPI.cu 太简单了,无济于事。

我确实搜索了这个问题,发现一些教程使用两个 CUDA 流来实现重叠。在我的例子中,需要计算大量数据,因此我需要循环遍历并将一部分数据分派(dispatch)给 GPU 每次迭代。但是我不知道怎么写这样的循环,因为所有操作都是异步的,我担心传输数据会删除/覆盖当前正在计算的数据。

有人遇到过吗?
任何帮助将不胜感激。

最佳答案

您应该记住的一件事是,同一流中的操作将按顺序执行,并且只会与其他流中的操作重叠。当我使用流时,我的方法是为每个流使用单独的内存位置。这将消除流之间的同步问题。如果由于内存限制这不是您的选择,或者您需要在内核之间共享数据,则您必须自己编写同步程序。

此外,如果您对默认流执行任何调用,此流将在执行之前等待所有其他流完成,并且在默认流上运行时没有其他流可以执行。

希望这对您有所帮助。

关于cuda - 使用 CUDA 流重叠数据传输和内核执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6248425/

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