ソフトウェア プログラマ向けのデータセンター アクセラレーション入門 - 2022.1 日本語

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語

この資料は、AMD の FPGA ベースの Alveo™ アクセラレータ カードを使用してデータセンター アプリケーションを高速化する C/C++ ソフトウェア開発者を対象としています。このガイドでは、ソフトウェア開発者向けに主な概念を紹介し、Vitis コンパイラと統合開発環境 (IDE) を使用してアプリケーションの高速化を開始する方法を説明します。

次は、FPGA 上でアクセラレーションしたアプリケーションを作成し、CPU よりも優れたアクセラレーション パフォーマンスにするための重要な概念です。

  • CPU 用と FPGA 用に記述されたアプリケーションはまったく異なるので、FPGA でのアクセラレーション用に関数を書き換える必要があります。関数は CPU では順次実行されるため、FPGA で並列処理を推論して、パフォーマンスを向上させる必要があります。
  • アプリケーション アクセラレーションの場合、ソフトウェア プログラムは、CPU および計算関数で実行されるホストアプリケーション、または Alveo データセンター アクセラレータ カードで実行されるカーネルに分割されます。XRT ランタイム ライブラリには、ホスト アプリケーションがアクセラレータ カード上のカーネルと対話できるようにする API があります。
  • ホストとグローバル メモリ間のデータ転送によりレイテンシが発生し、アクセラレーション全体に悪影響を及ぼすことがあります。実際のシステムでアクセラレーションを達成するには、ハードウェア アクセラレーション カーネルで達成されるパフォーマンスがこのデータ転送のレイテンシを上回る必要があります。
  • ソフトウェア開発者は、元のアプリケーションをプロファイリングし、アクセラレーションの可能性がある関数を特定する必要があります。ターゲット関数を特定したら、各カーネルのパフォーマンス バジェットを決定して、アプリケーションの全体的なパフォーマンス目標を達成します。
  • メモリ階層は、アプリケーション全体のパフォーマンスにおいて重要な役割を果たします。カーネルがアクセスするメモリは、load-compute-store アーキテクチャを使用して、別々の関数にメモリ読み出しと書き込みとしてグループ分けされている必要があります。カーネルは、可能であれば連続したメモリにアクセスする必要があり、アクセス数は冗長アクセスを削除するか、ローカル キャッシュを作成して最適化する必要があります。

ここでの内容と、次のトピックで参照される資料を確認することをお勧めします。重要な概念と例をリストしたこの資料を確認したら、パフォーマンスのニーズを満たす適切なアーキテクチャを使用して、アクセラレーションする既存の関数を開発または変更するための実用的な知識を習得しておく必要があります。