【问题标题】:CUDA FFT plan reuse across multiple 'overlapped' CUDA Stream launches跨多个“重叠”CUDA Stream 启动的 CUDA FFT 计划重用
【发布时间】:2015-05-05 12:28:52
【问题描述】:

我正在尝试使用与 GPU 计算重叠的异步内存传输来提高代码的性能。

以前我有一个代码,我在其中创建了一个 FFT 计划,然后多次使用它。在这种情况下,创建 CUDA FFT 计划所花费的时间可以忽略不计,尽管根据 earlier post 这可能非常重要。

现在我转向流,我正在做的是“多次”创建“相同”计划,然后设置 CUDA FFT 流。根据你们中的一些人在这个other post 中给出的答案,这是浪费。但是,还有其他方法吗?

注意:我正在实时获取数据,因此启动“批量”CUDA FFT 是不可能的。我正在做的是创建并启动一个新的 CUDA 流作为完整脉冲传输的结果。

注意 2:我也在考虑使用“CUDA 流/FFT 计划”的“池”,但我认为这不是一个优雅、明智的解决方案,有什么想法吗?

在分配 CUDA 流之前,是否有其他方法可以“复制”“现有的”fft 计划?

谢谢大家!/gals?希望在圣何塞见到你们中的一些人。 =)

奥马尔

【问题讨论】:

    标签: cuda cufft cuda-streams


    【解决方案1】:

    我正在做的是创建并启动一个新的 CUDA 流作为完整脉冲传输的结果。

    重复使用流,而不是每次都创建一个新流。然后,您可以提前重新使用为该流创建的计划,而无需即时重新创建“相同”计划。

    也许这就是您所说的流池方法的意思。您的批评是它不“优雅”或“明智”。我不知道那是什么意思。流水线算法中的流重用是一种常见策略,如果没有其他原因,只是为了避免cudaStreamCreate 开销(不管它是大是小)。

    袖口计划has a stream associated with it。您无法复制没有流关联的计划。计划是一个不透明的容器。

    【讨论】:

    • 你好罗伯特,谢谢!是的,你是对的。我只是懒惰。像我这样的懒惰的程序员经常认为长行代码并不“优雅”。另外我想知道将流作为属性的计划的原因是什么。我已经看到使用推力变换时处理不同。流与函数(执行计划)一起作为参数给出。更紧密地集成 Thrust 和 CUDA FFT 会很酷。你不觉得吗?
    猜你喜欢
    • 2011-08-29
    • 2011-04-14
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2021-05-31
    • 1970-01-01
    相关资源
    最近更新 更多