用OpenCL实现FFT和流运算

用OpenCL实现FFT和流运算,opencl,gpgpu,Opencl,Gpgpu,我认为这是一个奇怪的问题 有谁知道OpenCL中的1D FFT的快速实现是不并行的 这就是为什么我想要一个这样实现的版本 我当前有一个执行处理的任务,该任务包括: 接受64个值 对该数据执行FFT 对FFT的输出进行更多的分析 生成大约6个值并返回 这在输入的不同值上重复大约100-400万次。每组输入相互独立 由于输入对于单个操作来说太大了,所以我要么将输入分成组,要么进行某种流式处理 有人知道做类似事情的示例代码吗 我正处于学习OpenCL的早期阶段,但这项任务有点超前。任何帮助都将不胜感激

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

有谁知道OpenCL中的1D FFT的快速实现是不并行的

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

我当前有一个执行处理的任务,该任务包括:

  • 接受64个值
  • 对该数据执行FFT
  • 对FFT的输出进行更多的分析
  • 生成大约6个值并返回
  • 这在输入的不同值上重复大约100-400万次。每组输入相互独立

    由于输入对于单个操作来说太大了,所以我要么将输入分成组,要么进行某种流式处理

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

    我正处于学习OpenCL的早期阶段,但这项任务有点超前。任何帮助都将不胜感激。

    一些库(例如cufft)提供“批处理”模式fft,类似于对不同数据并行执行许多较短的fft


    对于固定大小64,您几乎可以展开连续的基数-2或基数-4 fft(请参阅),前两个阶段仅包含和和和差,以及后续阶段中的一些复数乘法。如果输入数据是实数(没有虚部),则可以进行进一步优化。

    如果您想要非并行版本,并且仍然打算使用GPU,为什么不从主机程序启动单个线程,并在内核内部使用循环进行蝶形计算和阶段。
    我曾经为好玩而实现这个东西。

    你可以在英伟达、AMD和英特尔SDK中找到一些FFT的例子。看看OpenCL的实际应用和OpenCL编程指南,我已经看过了大部分,它们都是FFT的并行版本。我想要的是一个非并行化版本,这样每一组输入在它的执行中都不会并行化。我应该得到更好的利用,因为不同的输入集的数量,如果不需要在一个操作中调度线程的话。为什么你不能只使用一个C实现,然后将它移植到OpenCL?这是我最有可能做的,我只是希望有一个已经针对GPU进行了优化和测试的版本。事实上,我已经确定了如果没有可用的版本,我将移植的版本。