使用OpenCL进行FFT和流操作

时间:2012-11-15 13:46:18

标签: opencl gpgpu

这是我认为可能是一个奇怪的问题。

有没有人知道在OpenCL中快速实现1D FFT并非并行。

这就是为什么我想要一个像这样实现的版本。

我有一个当前任务实施处理:

  1. 接受64个值。
  2. 对此数据执行FFT
  3. 预先对FFT的输出进行更多分析
  4. 生成约6个值并返回。
  5. 对于输入的不同值,重复约1-4百万次。每组输入都是相互独立的。

    由于输入对于单个操作而言太大,我跳跃到要么将输入分成组或某种流式传输。

    有没有人知道做类似事情的示例代码。

    我正处于学习OpenCL的早期阶段,但这项任务更进一步。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

某些库(例如cufft)提供了“批处理”模式fft - 就像在不同数据上并行执行许多较短的fft一样。

对于固定大小64,你几乎可以展开连续的基数-2或基数-4 fft(见http://cnx.org/content/m12027/latest/),前两个阶段只包含和和差,以及后续阶段的一些复数乘法。如果输入数据是实值的(没有虚部),则可以进一步优化。

答案 1 :(得分:0)

如果你想要一个非并行版本并且仍然有意使用GPU,为什么不从主机程序启动一个线程,在内核中使用循环进行蝶形计算和阶段。 我曾经为了好玩而实施了这件事。