English | 日本語
最適化したアクセラレーション アプリケーションを開発する手法には、アプリケーションの構築と必要なパフォーマンス目標を達成するアクセラレータの開発の 2 つの主な段階があります。
- 最初の段階では、どのソフトウェア関数を FPGA カーネルでアクセラレーションするか、どれくらい並列処理が達成可能か、どのようにコードで記述するかなど、アプリケーション アーキテクチャに関する重要事項を決定します。
- 次の段階では、ソース コードを構築し、必要なコンパイラ オプションとプラグマを適用して、パフォーマンス ターゲットを達成するのに必要なカーネル アーキテクチャを作成して、カーネルをインプリメントします。
基準アプリケーションを使用してこのチュートリアルを開始し、プロファイルしてハードウェア アクセラレーションの可能性を検証します。チュートリアルのアプリケーションは、多くの音声/画像形式を再生し、コードを変換し、多重化および分離し、フィルターできるマルチメディア フレームワークの ffmpeg を使用して、RGBA ビデオの 2D たたみ込みとフィルター係数をのセットを実行します。この後、ホスト プログラムおよびカーネル側の両方でさまざまな最適化を実行します。このチュートリアルでは、次の最適化手法を使用します。
- メモリ転送の最適化
- 固定小数点データ型の適用
- データフローおよびストリーム
- ループの最適化
CPU ベースのアプリケーションを最適化した FPGA アクセラレーションされたデザインに移行する方法については、『SDAccel 設計手法ガイド』 (UG1346) を参照してください。このチュートリアルを実行する際は、この資料も確認することでより理解が深まります。
このチュートリアルでは、手順を実行するマシンに ffmpeg フレームワークがインストールされている必要があります。これらの依存ファイルは、次のコマンドを実行するとダウンロードできます。
-
CentOS の場合:
sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm sudo yum install ffmpeg
-
Ubuntu の場合:
sudo apt update sudo apt install ffmpeg ffmpeg -version
このチュートリアルでは、次を使用します。
- BASH Linux シェル コマンド
- 2019.1 SDx リリースおよび xilinx_u200_xdma_201830_1 プラットフォーム。必要であれば、その他のバージョンおよびプラットフォームも使用できます。
- 多くの手順および変数を含む
Makefile
。Makefile
の構造および内容については、makefile の理解を参照してください。
重要:
- リファレンス ファイルを入手するには、ターミナルに
git clone http://github.com/Xilinx/SDAccel-Tutorials
と入力します。 SDAccel-Tutorials-master/docs/convolution-tutorial
に移動します。
次の演習では、既存のアプリケーションを FPGA アクセラレーションされたアプリケーションとして最適化するためのベスト プラクティスを説明します。このチュートリアルでは、複数の演習に分けて手法をお見せします。演習は、次の順序で実行することをお勧めします。
- 元のアプリケーションの評価: この演習では、元の C ベースのアプリケーションが入力ビデオを処理してたたみ込み出力ビデオを生成するところをお見せします。この演習では、アクセラレーションされたアプリケーションの現実的なパフォーマンス目標設定についても説明します。
- C アプリケーションからの SDAccel アプリケーションの作成: 元の C コードをホスト プログラムおよびハードウェア カーネルに変換し、OpenCL™ API を使用してホストから呼び出されるようにします。
- メモリ転送の最適化: メモリ アクセスを改善するためのハードウェア カーネルの最適化方法を学びます。ローカル キャッシュを使用して効率的に FPGA 帯域幅を使用できるようにする方法を学びます。
- 固定小数点データ型を使用した最適化: データ型のデザイン パフォーマンスに与える影響について説明します。
- データフローを使用した最適化: データフローおよびストリーミングを適用してデータパスを改善することで、カーネルの計算効率を改善します。
- 順不同キューと複数の計算ユニットの使用: ホスト プログラムの OpenCL API 呼び出しを順不同のタスク実行ができるように変更し、作業を実行する複数カーネルを合成してアクセラレータの並列処理を増加します。
- ハードウェアでのアクセラレータの実行: 前の手順はすべてハードウェア エミュレーション モードで実行されました。ここでは、アクセラレーション ハードウェアでアプリケーションを実行します。
Copyright© 2019 Xilinx
この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。