まとめ - 2021.1 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2022-03-29
Version
2021.1 Japanese

前のトピックで説明したように、C/C/C++ を使用した FPGA アクセラレーションのカーネルをコード記述する際には、重要な点がいくつかあります。

  1. 任意精度データ型 ap_int および ap_fixed を使用することを考慮します。
  2. カーネル インターフェイスを理解して、スカラー インターフェイスを使用するかメモリ インターフェイスを使用するかを決定します。リンク段階で別の DDR メモリ バンクを指定する場合は、bundle キーワードを使用して異なる名前を指定します。
  3. メモリ インターフェイスに対する読み出しおよび書き込みにはバースト コーディング スタイルを使用します。
  4. メモリ データのデータ入力および出力入力および出力の幅を選択する際は、データ転送に DDR バンクの全幅を使用することを考慮します。
  5. パイプライン処理およびデータフローを使用して最大限のパフォーマンスを得られるようにします。
  6. v++ コンパイラで平坦化を実行してパイプラインを効果的に適用できるように、完全または半完全な入れ子のループを記述します。
  7. 反復回数が少なく、ループ本体内の演算数が少ないループを展開します。
  8. 配列のアクセス パターンを理解し、配列全体に complete 分割を適用するのではなく、特定の次元に complete 分割を適用するか、block または cyclic 分割を適用します。
  9. カーネルのパフォーマンスを向上するため、ローカル キャッシュを使用して配列へのアクセスを最小限に抑えます。
  10. 関数 (特にパイプライン処理された領域内) をインライン展開することを考慮します。データフロー領域内の関数はインライン展開しないでください。