# アクセラレーション FPGA アプリケーションの最適化: ブルーム フィルターの例
## 概要
FPGA 上でアプリケーションをアクセラレーションする手法は、複数の段階で構成されます。
- **アプリケーションの設計**: どのソフトウェア関数を FPGA カーネルにマップするか、どれくらい並列処理が必要か、どのように適用するかなど、アプリケーションのアーキテクチャに関する重要事項を決定します。
- **パフォーマンス目標を達成するためのアクセラレータの開発**: パフォーマンス目標を達成できるカーネル アーキテクチャを作成するため、ソース コードを変更し、プラグマを適用して、カーネルをインプリメントします。
- **ホスト コードの最適化**: アプリケーションのアクセス パターン、データの動き、CPU および FPGA のアイドル時間を調べ、パフォーマンス目標を満たすためにコードをアップデートします。
このチュートリアルでは、ベースライン アプリケーションから開始し、アプリケーションをプロファイリングしてハードウェア アクセラレーションの可能性を調べます。このチュートリアルのアプリケーションでは、検索プロファイルに基づいてユーザーの関心に一致するドキュメントを見つけるため、ドキュメントの入力ストリームを検索します。
ブルーム フィルター アプリケーションは、構造化されていない電子メールやテキスト ファイルのデータを検索し、特定のユーザーに関連したドキュメントを検索して通知を送信するなど、データ分析で使用されます。
## 開始前の確認事項
> **ヒント**: このチュートリアルには、約 2 時間かかります。
このチュートリアルでは、次を使用します。
* BASH Linux シェル コマンド。
* 2020.1 Vitis コア開発キット リリースおよび xilinx\_u200\_xdma\_201830\_2 プラットフォーム。必要であれば、ほかのバージョンおよびプラットフォームを使用するように変更することもできます。
このチュートリアルでは、設計したアクセラレータを FPGA 上で実行するので、ザイリンクス Alveo™ U200 データセンター アクセラレータ カードがこのチュートリアルを実行するために設定されていることが必要です。アクセラレータを実行するのに必要な複数の `xclbin` ファイルを生成するには 6 ~ 7 時間かかる可能性があるので、U200 カード用に生成済みの `xclbin` ファイルが提供されています。これらの生成済みファイルを使用するには、ハードウェア カーネルのビルド時またはハードウェアでのアクセラレータの実行時に、`SOLUTION=1` 引数を追加する必要があります。
> **重要:**
>
> * 例を実行する前に、『Vitis 統合ソフトウェア プラットフォームの資料』 (UG1416) のアプリケーション アクセラレーション開発フローの[インストール](https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2020.1;t=vitis+doc;d=vhc1571429852245.html)の手順に従って、Vitis コア開発キットをインストールしてください。
> * Alveo カードでアプリケーションを実行する場合は、[Alveo ポートフォリオ](https://japan.xilinx.com/products/boards-and-kits/alveo.html) ページの手順に従って、カードとソフトウェア ドライバーを正しくインストールしてください。
### チュートリアル リファレンス ファイルの入手
1. チュートリアルの内容を入手するには、ターミナルに `git clone http://github.com/Xilinx/Vitis-Tutorials` と入力します。
2. `bloom` ディレクトリに移動します。
* `makefile` ディレクトリの `Makefile` に、この演習で使用するコマンドが説明されています。異なるプラットフォームをターゲットとする場合は、`PLATFORM` 変数を使用します。
* `cpu_src` には、変更前のソース コードが含まれます。
* `reference_file` には、パフォーマンスを向上するために変更されたカーネルおよびホストに関連するファイルが含まれます。
* `xclbin_save` には、`make run` コマンドで `SOLUTION=1` を設定してハードウェア上で実行する際に使用可能な `xclbin` ファイルが含まれます。
### チュートリアルの概要
* [元のアプリケーションの概要](1_overview.md)
* [アクセラレーション パフォーマンスの体験](2_experience-acceleration.md)
* [デバイス アクセラレーション アプリケーションの構築](3_architect-the-application.md)
* [カーネルのインプリメント](4_implement-kernel.md)
* [ホストとカーネル間のデータの動きを解析](5_data-movement.md)
* [複数 DDR バンクの使用](6_using-multiple-ddr.md)
メイン ページに戻る — 入門コースの初めに戻る
Copyright© 2020 Xilinx
この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。
日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。