我正在尝试使用与GPU计算重叠的异步内存传输来提高代码的性能。
以前我有一个代码,我创建了一个FFT计划,然后多次使用它。在这种情况下,创建CUDA FFT计划所投入的时间可以忽略不计,尽管根据之前的帖子,这可能非常重要。
现在我转到流,我要做的是"多次"创建"同一"计划,然后设置CUDA FFT流。根据你们中的一些人在另一篇文章中给出的答案,这是浪费。但是,还有其他方法吗?
注意:我正在实时获取数据,因此不可能启动"批量"CUDA FFT。我正在做的是创建并发射一个新的CUDA流,作为完整脉冲传输的结果。
注2:我也在考虑使用"CUDA流/FFT计划"的"池",但我认为这不是一个优雅、明智的解决方案,有什么想法吗?
在分配CUDA流之前,是否有其他方法可以"复制"现有"fft计划?
谢谢大家/女孩?希望能在圣何塞见到你们中的一些人
Omar
我正在做的是创建并发射一个新的CUDA流,作为完整脉冲传输的结果。
重新使用流,而不是每次都创建一个新的流。然后,您可以提前重用为该流创建的计划,并且无需在运行中重新创建"相同"的计划。
也许这就是您所说的流池方法的含义。你的批评是它不"优雅"或"明智"。我不知道这意味着什么。流水线算法中的流重用是一种常见的策略,如果不是因为其他原因,只是为了避免cudaStreamCreate
开销(无论大小)。
cufft计划有一个与之关联的流。没有流关联就无法复制计划。计划是一个不透明的容器。