多くの er_print コマンドでは、メトリックキーワードのリストを使用します。リストの構文は次のとおりです。
metric-keyword-1[:metric-keyword2…] |
測定されたデータに基づく動的メトリックスの場合、メトリックのキーワードは、メトリックフレーバー文字列、メトリック表示形式文字列、およびメトリック名文字列の 3 つの部分から構成されます。これらは、空白を入力せずに次のように続けて指定します。
flavorvisibilityname |
実験内のロードオブジェクトの静的プロパティー (名前、アドレス、およびサイズ) に基づく静的メトリックスの場合、メトリックのキーワードは、メトリック名とその前に付加されるメトリック表示形式文字列 (省略可能) を空白なしに結合して構成されます。
[visibility]name |
メトリックの flavor 文字列と visibility 文字列は、フレーバー文字と表示形式文字を使用して指定します。
指定可能なメトリックフレーバー文字を表 5–1 に示します。複数のフレーバー文字を含むメトリックキーワードが展開されて、メトリックキーワードリストになります。たとえば、ie.user は、展開されて i.user:e.user になります。
表 5–1 メトリックフレーバー文字
文字 |
内容の説明 |
---|---|
e |
排他的メトリック値を表示します。 |
i |
包括的メトリック値を表示します。 |
a |
属性メトリック値を表示します (呼び出し元 - 呼び出し先メトリックの場合のみ)。 |
d |
データ空間メトリック値を表示します (データ派生メトリックスの場合のみ)。 |
指定可能なメトリック表示形式文字を表 5–2 に示します。指定可能なメトリック表示形式文字をTable 5–2 に示します。表示形式文字列の文字の順序は重要ではありません。対応するメトリックスの表示順序には影響しません。たとえば、i%.user と i.%user はともに i.user:i%user と解釈されます。
表示形式だけが異なるメトリックスは、常に標準の順序で一緒に表示されます。表示形式だけが異なる 2 つのメトリックキーワードがほかのキーワードで区切られている場合は、標準の順序で 2 つのメトリックスの 1 つ目の位置にメトリックスが表示されます。
表 5–2 メトリック表示形式文字
文字 |
内容の説明 |
---|---|
. |
メトリックを時間で表示します。この指定は、サイクルカウントを計測する時間メトリックスとハードウェアカウンタメトリックスに適用されます。そのほかのメトリックスは「+」と解釈されます。 |
% |
プログラム全体のメトリックを百分率で表示します。呼び出し元 - 呼び出し先リストの属性メトリックスの場合は、選択した関数の包括的メトリックにの割合が表示されます。 |
+ |
メトリックを絶対値で表示します。ハードウェアカウンタの場合、この値はイベントの回数です。時間メトリックスの場合は「.」と解釈されます。 |
! |
メトリック値を表示しません。ほかの表示形式文字と組み合わせることはできません。 |
フレーバー文字列と可視文字列のそれぞれが複数の文字から構成されている場合は、フレーバー文字列が先に展開されます。すなわち、ie.%user は展開されて i.%user:e.%user になり、i.user:i%user:e.user:e%user と解釈されます。
静的メトリックスの場合、ソート順序の定義という観点からは、表示形式文字のピリオド (.)、正符号 (+)、パーセント記号 (%) は同等と見なされます。つまり、sort i%user、sort i.user、sort i+user はすべて、「どのような形式で表示するにせよ、包括的ユーザー CPU 時間を基準にソートする」ことを意味します。また、sort i!user は、「表示するかどうかに関係なく、包括的ユーザー CPU 時間を基準にソートする」という意味になります。
可視文字の感嘆符 (!) を使用すると、各フレーバーのメトリックに組み込みのデフォルト値を置き換えられます。
メトリックリスト内で同じメトリックを複数回表示した場合は、最初に出現したものだけが処理され、それ以後のものは無視されます。名前付きメトリックがリストにない場合は、そのメトリックがリストに付加されます。
表 5–3 に、時間メトリックス、同期遅延メトリックス、メモリー割り当てメトリックス、MPI トレースメトリックス、および 2 つの一般的なハードウェアカウンタメトリックスに指定可能な er_print メトリック名文字列を示します。ほかのハードウェアカウンタメトリックスの場合、メトリック名文字列はカウンタ名と同じです。読み込まれた実験に適用できるすべてのメトリック名文字列のリストは、metric_list コマンドで取得できます。カウンタ名は、collect コマンドを引数なしで使用することによって一覧表示できます。ハードウェアカウンタについての詳細は、「ハードウェアカウンタオーバーフローのプロファイルデータ」を参照してください。
表 5–3 メトリック名文字列
カテゴリ |
文字列 |
内容の説明 |
---|---|---|
時間メトリックス |
user |
ユーザー CPU 時間 |
wall |
実経過時間 |
|
total |
LWP 合計時間 |
|
system |
システム CPU 時間 |
|
wait |
CPU 待ち時間 |
|
ulock |
ユーザーロック時間 |
|
text |
テキストページフォルト時間 |
|
data |
データページフォルト時間 |
|
owait |
ほかの待ち時間 |
|
時間ベースのプロファイルメトリックス |
mpiwork |
MPI ランタイムで作業する (処理の要求やメッセージなど) 時間 |
mpiwait |
MPI ランタイムで、イベント、バッファー、またはメッセージを待っている時間 |
|
ompwork |
作業を直列または並列で実行する時間 |
|
ompwait |
OpenMP ランタイムが同期を待っている時間 |
|
同期遅延メトリックス |
sync |
同期待ち時間 |
syncn |
同期待ち回数 |
|
MPI トレースメトリックス |
mpitime |
MPI 呼び出しに費やされた時間 |
mpisend |
開始された MPI ポイントツーポイント送信数 |
|
mpibytessent |
MPI で送信されるバイト数 |
|
mpireceive |
完了した MPI ポイントツーポイント受信数 |
|
mpibytesrecv |
MPI で受信されるバイト数 |
|
mpiother |
その他の MPI 関数の呼び出し数 |
|
メモリー割り当てメトリックス |
alloc |
割り当て数 |
balloc |
割り当てバイト数 |
|
leak |
リーク数 |
|
bleak |
リークバイト数 |
|
ハードウェアカウンタオーバーフローのメトリックス |
cycles |
CPU サイクル |
insts |
発行された命令 |
|
スレッドアナライザのメトリックス |
raccesses |
データ競合のアクセス |
deadlocks |
デッドロック |
表 5–3 に示した名前文字列のほかに、2 つの名前文字列をデフォルトのメトリックスリスト内でのみ使用できます。この 2 つの文字列は、任意のハードウェアカウンタ名に一致する hwc と、任意のメトリック名文字列に一致する any です。また、cycles と insts は、SPARC プラットフォームと x86 プラットフォームに共通のものですが、それ以外のアーキテクチャー固有のフレーバーも存在します。使用可能なすべてのカウンタを一覧表示するには、引数を指定せずに collect コマンドを使用します。
読み込んだ実験から使用可能なメトリックスを確認するには、metric_list コマンドを使用します。