アクセラレーションの可能性の特定 - 2021.1 Japanese

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

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

ソフトウェア アプリケーションのボトルネックとなっている関数は、必ずしもデバイスで高速に実行できるとは限りません。その関数をアクセラレーションする価値があるかどうかを実際に決定するには、詳細な解析を実行する必要があります。関数をハードウェア アクセラレーションできるかどうかは、次のガイドラインを使用して判断できます。

  • 関数の計算の複雑性

    計算の複雑性は、関数を実行するのに必要な基本的な演算の数です。プログラマブル デバイスでは、並列処理を多用し、パイプラインを深くしたデータパスを作成することにより、アクセラレーションを達成できます。これらは、前述のたとえの「組立ライン」です。組立ラインが長くなり、工程が増えるほど、作業場内で手順を順次実行する作業員の場合と比較して、効率的になります。

    アクセラレーションの良い候補は、入力サンプルごとに深い演算シーケンスを実行して出力サンプルを生成する必要のある関数です。

  • 関数の計算負荷

    関数の計算負荷は、入力データおよび出力データの総量に対する演算の総数の比で表されます。計算負荷の高い関数は、アクセラレータにデータを移動するオーバーヘッドが比較的低いので、アクセラレーションの良い候補です。

  • 関数のデータ アクセス局所性プロファイル

    データの再利用、空間局所性、時間的局所性の概念は、データをアクセラレータに移動するオーバーヘッドをどの程度最適化できるかを評価するのに有益です。空間局所性は、連続するメモリ アクセス操作の平均距離を表します。時間的局所性は、プログラムの実行中にメモリの特定のアドレスに対するアクセス操作の平均数を表します。これらの値が低いほど、データをアクセラレータに簡単にキャッシュでき、グローバル メモリにアクセスする頻度を下げることができます。

  • 関数のスループットをデバイスで達成可能な最大スループットと比較

    デバイス アクセラレーション アプリケーションは、分散マルチプロセス システムです。アプリケーション全体のスループットは、最低速の関数のスループット以下になります。このボトルネックの特性はアプリケーション特定であり、I/O、計算、データの移動など、原因はさまざまです。最低速の関数のスループットを選択した関数のスループットで除算すると、達成可能な最大アクセラレーションを判断できます。

    達成可能な最大アクセラレーション = TMin / TSW

    Alveo データセンター アクセラレータ カードでは、PCIe バスがデータ転送のスループットを制限します。これがアプリケーションの実際のボトルネックになるとは限りませんが、上限となり得るので、早期の見積もりに使用できます。たとえば、PCIe のスループットが 10 GB/s で、ソフトウェアのスループットが 50 MB/s の場合、この関数の最大アクセラレーション係数は 200 倍になります。

これらの 4 つの条件を満たしていれば、必ずアクセラレーションできるというわけではありませんが、デバイスでアクセラレーションする関数を特定するのには有益です。