OpenCL™ 高速フーリエ変換 FFT (1D) オフチップ

お勧めの用途:

  • デバイス: 不明

  • Quartus®: バージョン 17.1

author-image

投稿者:

このベンチマークでは、1D 高速フーリエ変換 (1D FFT) をインテル® FPGA 上で OpenCL™ 実装します。このベンチマークは、最大 1,600 万個の複素単精度浮動小数点値を処理でき、動的に変化するデータサイズをサポートします。

この種の大規模なデータセットの処理に使用するアルゴリズムには、6 つの段階があります。例えば、100 万ポイントを処理したいとします。

  • 1M ポイントを 1K × 1K のマトリクスとして扱い、外部メモリーから読み込んで、その場で転置します。
  • (転置したマトリクスの) すべての行に対して 1K 1D FFT を実行します。
  • 得られた値に、調整用のツイドル係数を乗算します。
  • マトリクスを転置し、外部メモリーの一時バッファーに書き込みます。
  • すべての行で 1K 1D FFT を実行します。
  • マトリクスを転置し、出力を外部メモリーに書き込みます。

システム全体は、チャネルで接続された 3 つのカーネルで構成されています。3 つのカーネルのセットは、完全な計算を行うためにホストにより 2 回キューに追加されます。最初のキュー追加により上記の 1~4 の手順が、2 番目のキュー追加により 5~6 の手順がそれぞれ実行されます。これは基本的には、2D FFT コアに追加の転置とツイドル乗算を加えたものです。

このコードは、簡単にパラメータ化して、さまざまな FFT サイズやさまざまなパフォーマンス要件に対応できます。

FFT のパフォーマンス

コアのパフォーマンスは、並行して処理するポイント数、使用するデータレイアウト、外部メモリーの数と速度に依存します。以下の測定は、BittWare S5-PCIe-HQ D8 に 2 枚の DDR3-1600 を装着して行いました。測定は、8 ポイント並列の 1M ポイント FFT と 4 ポイント並列の 4M FFT で行われました。

MSPS は「百万サンプル/秒 (millions of samples per second)」を意味します。

機能

  • 単一動作項目カーネル
  • カーネルチャネル
  • 最適化されたマトリクス転置

ダウンロード

このデザイン例は、OpenCL™ デバイス (.cl) およびホスト・アプリケーション用のソースコードを提供します。ホスト・アプリケーションをコンパイルするため、Linux* パッケージには Makefile が含まれており、Windows パッケージには Microsoft* Visual Studio 2010 プロジェクトが含まれています。

以下のダウンロードは、この例のために提供されています。

このデザインの使用には、ハードウェア・リファレンス・デザイン・ライセンス契約の使用条件が適用されます。

ソフトウェア要件とハードウェア要件

このデザイン例には、以下のツールが必要です。

  • インテル® FPGA ソフトウェア・バージョン 17.1 以降
  • インテル® FPGA SDK for OpenCL バージョン 17.1 以降
  • Linux* の場合: GNU make および gcc
  • Windows* の場合: Microsoft* Visual Studio* 2010

インテル® のデザインツールをダウンロードするには、OpenCL™ ダウンロードページをご覧ください。このデザイン例では、Linux オペレーティング・システムのみがサポートされています。

OpenCL および OpenCL ロゴは Apple Inc. の商標であり、Khronos の許可を得て使用しています。

* 製品は Khronos 公開の仕様に基づいており、Khronos コンフォーマンス・テスト・プロセスに合格しています。現在のコンフォーマンス条件は、www.khronos.org/conformance で確認できます。