1

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

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

现在我转向流,我正在做的是“多次”创建“相同”计划,然后设置 CUDA FFT 流。根据你们中的一些人在一篇文章中给出的答案,这是浪费。但是,有没有其他方法可以做到这一点?

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

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

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

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

奥马尔

4

1 回答 1

1

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

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

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

袖口计划有一个与之关联的流。您无法复制没有流关联的计划。计划是一个不透明的容器。

于 2015-03-04T17:34:33.523 回答