x86 論理シミュレータ - 2023.2 日本語

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

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

AI エンジン グラフおよびカーネルの開発を開始する際は、デザインの動作を検証することが重要です。これは論理シミュレーションと呼ばれ、デザインのエラーを特定するのに有益です。たとえば、グラフのウィンドウ サイズはカーネルの反復回数に関係します。大型グラフの各カーネルが正しい数のサンプルを消費して生成するかどうかをトラブルシューティングするのは、時間のかかる繰り返し作業です。x86 シミュレータは、反復実行が高速で、データの可視化に優れているので、このような動作をテスト、デバッグ、および検証するのに理想的です。x86 シミュレーションでは、タイミング、リソース、またはパフォーマンス情報は提供されません。x86 シミュレータは、ツール開発マシン上でのみ実行されます。つまり、パフォーマンスとメモリ使用量は、開発マシンで定義されます。

AI エンジン シミュレータでは、AI エンジン アレイの場合はグラフおよびカーネルのメモリが完全にモデル化されますが、これは AI エンジン シミュレータが AI エンジンのメモリ空間に制限されるということです。x86 シミュレータはこの制限を受けまず、デバッグ printf()s、大型アレイ、および変数が無制限に提供されます。カーネルをシングル ステップ実行できる機能と組み合わせると、複雑なデザインの問題をすばやく特定して解決できます。

カーネル デバッグに役立つマクロが提供されています。これらのマクロは、x86 シミュレータと使用するためのもので、メンテナンス目的でコードに含めておくことができます。x86 シミュレータにはこれらの利点がありますが、トレードオフもあります。サポートされていないタイプのグラフ コンストラクトがあり、サイクル精度の動作が AI エンジン シミュレータと x86 シミュレータの間で一致するとは限りません。x86 シミュレータは、AI エンジン シミュレータの代わりにはなりません。動作を検証してパフォーマンス情報を取得するには、すべてのデザインで AI エンジン シミュレータも実行する必要があります。プロジェクト開発の段階によって、適切なツールは異なります。

注記: x86 シミュレーションの制限については、制限 を参照してください。

x86 シミュレータを実行するには、AI エンジン コンパイラのターゲットを x86sim に変更します。

aiecompiler --target=x86sim graph.cpp

アプリケーションを x86 シミュレーション用にコンパイルしたら、x86 シミュレータを次のように起動できます。

x86simulator

次に、x86 シミュレータ コマンドのヘルプを示します。

$ 
x86simulator [-h] [--help] [--h] [--pkg-dir=PKGDIR]
optional arguments:
-h,--help --h               Show this help message and exit
--pkg-dir=PKG_DIR           Set the package directory. ex: Work
--i, -i ,--input-dir=PATH   Set the input directory
--o, -o ,--output-dir=PATH  Set the output directory
--timeout=secs 		   Terminate simuation after specified number of seconds
--dump 			      Enable snapshots of data traffic on kernel ports
--dump-size    		   Set the maximum size of the snapshot file in MB
--gdb          		   Invoke from gdb
--valgrind     		   Run simulator under valgrind to detect access violations
--valgrind-gdb 		   Run simulator under valgrind and debug via gdb server
--valgrind-args=ARGS        Override default options for valgrind. Used in conjunction with --valgrind.
--disable-stop-on-deadlock  Disable deadlock detection
--trace                     Enable trace of kernel stall events
--trace-print               Print kernel stall events during simulation

AI エンジン コンパイラにより x86 ネイティブ シミュレーション用にコンパイルされたバイナリが Work ディレクトリ (AI エンジン グラフ アプリケーションのコンパイル を参照) に生成され、x86 シミュレータにより自動的に開始されます。

入力および出力ファイルは、グラフ コードの次の部分で指定されます。

adf::input_plio in1=adf::input_plio::create("In", adf::plio_32_bits, "In1.txt");
adf::output_plio out1=adf::output_plio::create("Out", adf::plio_32_bits, "Out1.txt");

x86 シミュレータを実行すると、現在の作業ディレクトリで data/In1.txt が検索されます。このファイルは、ADF グラフにより使用される入力の 1 つです。x86 シミュレータの出力ファイルを AI エンジン グラフおよびカーネルの出力ファイルと区別するため、デザイン シミュレータの Out1.txtcurrent_working_dir/x86simulator_output/data/ に配置されていることを検証することが重要です。

CSV (Comma Separated Value) 入力ファイルを使用すると、入力ファイル名は In1.csv に置き換えられます。

オプションで、シミュレータで生成される出力ファイルは、ゴールデン出力と比較できます (空白の違いは無視)。

diff –w <data>/golden.txt <data>/output.txt
シミュレーション ログと出力は、Vitis IDE で表示できます。
図 1. [Log] ビュー
図 2. [Simulator Output] ビュー
[Simulator Output] ビューでは、表示する出力を選択できます。