0

ここで、奇妙な質問かもしれないと思います。

並列化されていない OpenCL での 1D FFT の高速実装を知っている人はいますか。

これが、このように実装されたバージョンが欲しい理由です。

次の処理を実装する現在のタスクがあります。

  1. 64 個の値を受け取ります。
  2. このデータに対して FFT を実行します
  3. FFT の出力に対してさらに分析を実行します。
  4. 約 6 つの値を生成して返します。

これは、入力のさまざまな値に対して約 100 万から 400 万回繰り返されます。入力の各セットは互いに独立しています。

1 回の操作では入力が大きすぎるため、入力をグループに分割するか、ある種のストリーミングを行うことにしました。

似たようなことをするサンプルコードを知っている人はいますか?

私は OpenCL の学習の初期段階にありますが、このタスクはもう少し進んでいます。どんな助けでも大歓迎です。

4

2 に答える 2

1

一部のライブラリ (たとえば cufft) は、「バッチ」モードの fft を提供します。これは、さまざまなデータに対して多くの短い fft を並行して実行するようなものです。

固定サイズ 64 の場合、連続した基数 2 または基数 4 の fft をほぼアンロールできます ( http://cnx.org/content/m12027/latest/を参照)。最初の 2 つの段階には合計と差のみが含まれ、いくつかの複雑な後続の段階での乗算。入力データが実数値 (虚部なし) の場合、さらに最適化が可能です。

于 2012-11-17T18:23:12.563 に答える
0

非並列バージョンが必要で、GPU を使用する意図がある場合は、ホスト プログラムから 1 つのスレッドを起動し、カーネル内でバタフライ計算とステージにループを使用しないでください。私はかつて楽しみのためにこのことを実装しました。

于 2013-11-29T15:48:13.583 に答える