2012-11-15 22 views
0

這是我認爲可能是一個奇怪的問題。使用OpenCL進行FFT和流式傳輸操作

有沒有人知道OpenCL中一維FFT的快速實現,它不是並行的。

這就是爲什麼我想要一個這樣實現的版本。

我有一個當前任務實施處理,其中:

  1. 注意到在64個值。對FFT
  2. 的輸出
  3. 胚的FFT對這個數據
  4. 胚更多的分析生成約6的值並返回。

這是重複約1-4萬次上輸入不同的值。每組輸入都是相互獨立的。

由於輸入爲單次操作我被跳躍到或者分裂輸入成組或某種流的過大。

有誰知道類似的例子代碼。

我在學習OpenCL的早期階段,但是這個任務稍微提前一點。任何幫助,將不勝感激。

+0

您可以在NVIDIA,AMD和Intel SDK中找到FFT的一些示例。並看看_OpenCL in Action_和_OpenCL Programming Guide_書籍。 –

+0

我已經看過大部分這些,它們都是FFT的並行版本。我想要的是一個非並行版本,因此每個輸入集在其執行過程中都不會被並行化。如果不需要在單個操作中調度線程,那麼由於不同輸入集的數量,我應該得到更好的利用率。 –

+0

爲什麼你不能只是採取C實現,然後將其移植到OpenCL? – KLee1

回答

0

一些庫(例如CUFFT)提供一個「批處理」模式FFT - 等上不同的數據並行地執行許多短的FFT。

對於固定大小的64,您幾乎可以展開順序基數爲2或基數爲4的fft(請參閱http://cnx.org/content/m12027/latest/),前兩個階段僅包含總和和差異,以及後續階段的一些複數乘法。如果輸入數據是實值(沒有虛部),則可以進一步優化。

0

如果你想有一個非平行的版本,仍然有意向使用的GPU爲什麼不直接從您的主機程序和內核裏面使用循環的蝶形運算和階段啓動一個線程。 我曾經爲了好玩而實施過這件事。