AI エンジン アーキテクチャの概要 - 2023.2 日本語

AI エンジン ツールおよびフロー ユーザー ガイド (UG1076)

Document ID
UG1076
Release Date
2023-12-04
Version
2023.2 日本語

AI エンジン アレイのプログラミングには、インプリメントするアルゴリズム、AI エンジン の機能、および個々の関数ユニット間の全体的なデータフローを理解する必要があります。AI エンジン アレイでは、次の 3 つのレベルの並列処理がサポートされています。

SIMD
ベクトル レジスタを使用し、複数の要素を並列に演算します。
命令レベル
VLIW アーキテクチャにより、1 クロック サイクルで複数の命令を実行できます。
マルチコア
AI エンジン アレイにより、何百もの AI エンジンを並列に実行します。

ほとんどの標準 C/C++ コードは AI エンジン用にコンパイルできますが、AI エンジン アレイで最適なパフォーマンスを達成するには、コードを大幅に記述し直すことが必須な場合があります。AI エンジンの最大の利点は、各クロック サイクルで、ベクター MAC 演算を実行、次の演算用に 2 つの 256 ビット ベクターをロード、前の演算からの 256 ビット ベクターを格納、およびポインターをインクリメントまたは別のスカラー演算を実行できることです。ベクター プロセッサを利用するには、AIE API または組み込み関数を使用し、パイプライン処理されたベクター演算用にコードを構成する必要があります。AI エンジン コンパイラによって、自動またはプラグマ ベースのベクター化は実行されません。SIMD 組み込み関数のデータ型 (例: v8int32) およびベクター組み込み関数 (例: mac(…)) を使用してコードを記述し直す必要があり、最適なパフォーマンスを達成するためこれらをパイプライン ループ内で実行する必要があります。32 ビット スカラー RISC プロセッサには、ALU、いくつかの非線形関数、およびデータ型変換が含まれます。各 AI エンジン でアクセスできるメモリの量は限られるので、大きなデータ セットは分割する必要があります。

AI エンジン カーネルは、AI エンジン上で実行される関数で、データフロー グラフ仕様の基本的な構築ブロックを形成します。データフロー グラフは、さまざまな計算遅延または通信遅延に依存しない、動作が決定的なカーン プロセス ネットワークです。AI エンジン カーネルは void C/C++ 関数として宣言され、グラフの接続にバッファーまたはストリーム引数を取ります。カーネルには、スタティック データおよび非同期またはトリガーとなるランタイム パラメーター引数を含めることもできます。各カーネルは、個別のソース ファイルで定義する必要があります。

全体的なシステム パフォーマンスを達成するには、アーキテクチャ、分割、AI エンジン データフロー グラフの生成、データフロー接続の最適化に関する知識と経験が必要です。詳細は、 『Versal アダプティブ SoC AI エンジン アーキテクチャ マニュアル』 (AM009) および 『Versal アダプティブ SoC AIE ML アーキテクチャ マニュアル』 (AM020) で説明されています。

AMDでは、AI エンジン用に最適化されたコードを含む DSP および通信ライブラリを提供しており、できるだけこれらを使用する必要があります。提供されているソース コードも、AI エンジン カーネルのコード記述を学ぶのに有益です。