我正在尝试使用与GPU计算重叠的异步内存传输来提高代码的性能。
以前我有一个代码,我创建了一个FFT计划,然后多次使用它。在这种情况下,根据这个earlier post投入创建CUDA FFT计划所花费的时间可以忽略不计。它可能非常重要。
现在我转移到流,我正在做的是“多次”创建“相同”计划,然后设置CUDA FFT流。根据你们中的一些人在other post给出的答案,这是浪费的。但是,还有其他办法吗?
注意:我正在实时获取数据,因此启动“批量”CUDA FFT是不可能的。我正在做的是通过完整的脉冲传输来创建和发布新的CUDA流。
注2:我也在考虑使用“CUDA Streams / FFT Plans”的“池”,但我认为这不是一个优雅,明智的解决方案,任何想法?
在分配CUDA流之前,是否有办法“复制”“存在的”fft计划?
谢谢你们!/加尔斯?希望在圣何塞见到你们。 =)
奥马
答案 0 :(得分:1)
我正在做的是通过完整的脉冲传输来创建和发布新的CUDA流。
重新使用流,而不是每次都创建新流。然后,您可以提前重新使用为该流创建的计划,而您无需重新创建"相同的"在飞行中计划。
也许这就是你的溪流方法的意思。你的批评是它不优雅"或者"明智的"。我不知道这意味着什么。流水线算法中的流重用是一种常见的策略,如果没有其他原因,除了避免cudaStreamCreate
开销(无论它可能是大,小)。
袖口计划has a stream associated with it。没有流关联,您无法复制计划。计划是一个不透明的容器。