AI エンジン グラフおよびカーネルの開発を開始する際は、デザインの動作を検証することが重要です。これは論理シミュレーションと呼ばれ、デザインのエラーを特定するのに有益です。たとえば、グラフのウィンドウ サイズはカーネルの反復回数に関係します。大型グラフの各カーネルが正しい数のサンプルを消費して生成するかどうかをトラブルシューティングするのは、時間のかかる繰り返し作業です。x86 シミュレータは、反復実行が高速で、データの可視化に優れているので、このような動作をテスト、デバッグ、および検証するのに理想的です。x86 シミュレーションでは、タイミング、リソース、またはパフォーマンス情報は提供されません。x86 シミュレータは、ツール開発マシン上でのみ実行されます。つまり、パフォーマンスとメモリ使用量は、開発マシンで定義されます。
AI エンジン シミュレータでは、AI エンジン アレイの場合はグラフおよびカーネルのメモリが完全にモデル化されますが、これは AI エンジン シミュレータが AI エンジンのメモリ空間に制限されるということです。x86 シミュレータはこの制限を受けまず、デバッグ printf()s
、大型アレイ、および変数が無制限に提供されます。カーネルをシングル ステップ実行できる機能と組み合わせると、複雑なデザインの問題をすばやく特定して解決できます。
カーネル デバッグに役立つマクロが提供されています。これらのマクロは、x86 シミュレータと使用するためのもので、メンテナンス目的でコードに含めておくことができます。x86 シミュレータにはこれらの利点がありますが、トレードオフもあります。サポートされていないタイプのグラフ コンストラクトがあり、サイクル精度の動作が AI エンジン シミュレータと x86 シミュレータの間で一致するとは限りません。x86 シミュレータは、AI エンジン シミュレータの代わりにはなりません。動作を検証してパフォーマンス情報を取得するには、すべてのデザインで AI エンジン シミュレータも実行する必要があります。プロジェクト開発の段階によって、適切なツールは異なります。
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.txt が current_working_dir/x86simulator_output/data/ に配置されていることを検証することが重要です。
CSV (Comma Separated Value) 入力ファイルを使用すると、入力ファイル名は In1.csv
に置き換えられます。
オプションで、シミュレータで生成される出力ファイルは、ゴールデン出力と比較できます (空白の違いは無視)。
diff –w <data>/golden.txt <data>/output.txt