PS ホスト アプリケーションのプログラミング - 2023.2 日本語

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

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

『AI エンジン カーネルおよびグラフ プログラミング ガイド』 (UG1079)カーネルを含むデータフロー グラフの作成では、単純な AI エンジン グラフ アプリケーションを中心に説明しました。最上位アプリケーションでグラフを初期化、実行、終了しました。実際の AI エンジン グラフ アプリケーションでは、ホスト コードでこれらの単純なタスクのほかにもさまざまな操作が実行されます。 Cortex®-A72 で実行する最上位 PS アプリケーションは、グラフと PL カーネルを制御し、グラフへのデータ入力の管理、グラフからデータ出力の処理、グラフと共に動作する PL カーネルの制御を実行します。

さらに、AI エンジン グラフ アプリケーションを Linux オペレーティング システムまたはベアメタル システムで実行できます。これらの 2 つのシステムでのプログラミング要件は、次のトピックで説明するように、大きく異なります。AMD では、グラフおよび PL カーネルを制御するためにホスト プログラムの API 呼び出しで使用されるオペレーティング システム別のドライバーを提供しています。Linux の場合は、XRT API で提供しており、ベアメタルの場合、AI エンジン カーネルはグラフ API を使用して制御され、PL カーネルは libUIO ドライバーの呼び出しを使用して制御されます。

複数のグラフの実行を回避

グラフが PS ベースのホスト アプリケーションにインプリメントされている場合、graph.cpp コードに条件付きプラグマ (#ifdef) を定義し、グラフが一回のみ初期化または実行されるようにする必要があります。次のコード例は、 『AI エンジン カーネルおよびグラフ プログラミング ガイド』 (UG1079)カーネルを含むデータフロー グラフの作成で定義した単純なアプリケーションに、保護マクロ __AIESIM__ および __X86SIM__ を追加したものです。

#include "project.h"

simpleGraph mygraph;

#if defined(__AIESIM__) || defined(__X86SIM__)

int main(void) {
  mygraph.init();
  mygraph.run(<number_of_iterations>);
  mygraph.end();
  return 0;
}
#endif

この条件付き指示子は、AI エンジン シミュレータで使用するためにのみアプリケーションをコンパイルします。グラフおよび PS ホスト アプリケーションの両方からグラフが複数回初期化または実行されるのを回避します。この指示子は、graph.cppAI エンジン シミュレータおよび x86 シミュレータで実行できるようにします。ただし、ハードウェアおよびハードウェア エミュレーションで実行する場合、グラフは初期化されて、graph.cpp からではなく PS アプリケーションから実行されます。