アプリケーションでのプロファイリングのイネーブル で説明するように、ランタイムの実行中にアプリケーション イベントとカーネル イベントのプロファイリングを有効にするための --profile
オプションがいくつかあります。このオプションを使用すると、カーネルとホスト間のデータ トラフィック、カーネルの停止、カーネルと計算ユニット (CU) の実行時間のプロファイル データを取り込んだり、Versal
AI エンジン の動作を監視したりできます。
--profile
コマンドは、コンフィギュレーション ファイルの [profile]
セクション ヘッドの下で次のフォーマットを使用して指定できます。[profile]
data=all:all:all # Monitor data on all kernels and CUs
data=k1:all:all # Monitor data on all instances of kernel k1
data=k1:cu2:port3 # Specific CU master
data=k1:cu2:port3:counters # Specific CU master (counters only, no trace)
stall=all:all # Monitor stalls for all CUs of all kernels
stall=k1:cu2 # Stalls only for cu2
exec=all:all # Monitor execution times for all CUs
exec=k1:cu2 # Execution tims only for cu2
aie=all # Monitor all AIE streams
aie=DataIn1 # Monitor the specific input stream in the SDF graph
aie=M02_AXIS # Monitor specific stream interface
このコマンドには、次に示すさまざまなオプションを指定できます。
--profile.aie <arg>
ADF (Adaptive Data Flow) アプリケーションで AI エンジン ストリームのプロファイリングを有効にします。この場合、<arg>
は次のとおりです。
<ADF_graph_argument|pin name|all>
-
<ADF_graph_argument>
: ADF グラフ アプリケーションから引数名を指定します。 -
<pin_name>
: AI エンジン カーネル上のポートを示します。 -
<all>
: ADF アプリケーション内のすべてのストリーム接続を監視します。
DataIn1
入力ストリームを監視するには、次のコマンドを使用します。v++ --link --profile.aie:DataIn1
--profile.data <arg>
モニター IP を介してデータ ポートを監視します。このオプションは、リンク時には指定する必要があります。
<arg>
は次のようになります。
[<kernel_name>|all]:[<cu_name>|all]:[<interface_name>|all](:[counters|all])
-
[<kernel_name>|all]
: コマンドを適用する特定のカーネルを定義します。all
キーワードを使用して、1 つのオプションで既存のカーネル、計算ユニット、インターフェイスすべてを監視できるよう設定することもできます。 -
[<cu_name>|all]
:<kernel_name>
が指定されている場合は、コマンドを適用する特定の CU を定義したり、カーネルのすべての CU に適用する必要があることを指定したりできます。 -
[<interface_name>|all]
: カーネルまたは CU の特定のインターフェイスを定義して、データ アクティビティを監視するか、すべてのインターフェイスを監視します。 -
[<counters|all]
: オプションの引数で、指定しない場合はデフォルトでall
になります。大型デザインの場合は情報の収集をcounters
に制限できますが、all
を指定して実際のトレース情報が収集されるようにすることもできます。
たとえば、k1
カーネルのすべての CU およびインターフェイスにデータ プロファイルを割り当てるには、次のコマンドを使用します。
v++ --link --profile.data:k1:all:all
--profile.exec <arg>
カーネルの実行時間を記録し、システム実行中に最小限のポート データ コレクションを示します。このオプションは、リンク時には指定する必要があります。
--profile.data
または --profile.stall
が指定さるとデフォルトで収集されます。--profile.exec
は data
または stall
が適用されていない CU すべてに指定できます。
exec
プロファイルの構文は、次のとおりです。
[<kernel_name>|all]:[<cu_name>|all](:[counters|all])
たとえば、k1
カーネルの cu2
の実行をプロファイルするには、次のコマンドを使用します。
v++ --link --profile.exec:k1:cu2
--profile.stall
デバイス バイナリ (.xclbin) に停止監視ロジックを追加します。これには、カーネル インターフェイスに停止ポートを追加する必要があります。これには、コンパイルおよびリンクの両方で stall
オプションを指定する必要があります。
stall
プロファイルの構文は、次のとおりです。
[<kernel_name>|all]:[<cu_name>|all](:[counters|all])
たとえば、k1
カーネルの cu2
の停止を監視するには、次のコマンドを使用します。
v++ --compile -k k1 --profile.stall ...
v++ --link --profile.stall:k1:cu2 ...
--profile.trace_memory
ハードウェア ターゲット (-t=hw
) をビルド際に、トレース データを取り込むのに使用するメモリのタイプおよび量を指定できます。この引数は、次のように設定できます。
<FIFO>:<size>|<MEMORY>[<n>]
プロファイルのトレース バッファー メモリのタイプを指定します。
- FIFO:<size>
- KB 単位で指定します。デフォルトは FIFO:8K です。最大値は 4G です。
- Memory[<N>]
- プラットフォームのメモリ リソースのタイプおよび数を指定します。ターゲット プラットフォームのメモリ リソースは、
platforminfo
コマンドで指定できます。サポートされるメモリ タイプは、HBM、DDR、PLRAM、HP、ACP、MIG、および MC_NOC などです。DDR[1]
のように範囲で指定します。