このベンチマークでは、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 で確認できます。