これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションのXNUMXつを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドlikwid-perfctrです。
プログラム:
NAME
likwid-perfctr-x86CPUでハードウェアパフォーマンスカウンターを構成して読み取ります
SYNOPSIS
likwid-perfctr [-vhHVmaeiMoO] [-c / -C ] [-g or
] [-t ] [-S ] [-s ] [-o
]
DESCRIPTION
likwid-perfctr 設定して読み取るための軽量のコマンドラインアプリケーションです
サポートされているx86プロセッサのハードウェアパフォーマンス監視データ。 それはどちらかとして測定することができます
測定されたアプリケーションを変更せずに、または内部のマーカーAPI関数を使用してラッパー
カウンターのオンとオフを切り替えるコード。 便利な構成済みのグループがあります
イベントセットと派生メトリック。 さらに、任意のイベントをカスタムで測定できます
イベントセット。 マーカー API は、複数の名前付き領域を測定できます。 結果は
複数の呼び出し。 次の x86 プロセッサがサポートされています。
· インテル 基本 2: すべての亜種。 カウンター: PMC [0-1]、 FIXC [0-2]
· インテル ネハレム: カウンター: PMC [0-3]、 FIXC [0-2]、 UPMC[0-7]
· インテル Nehalemの EX: カウンター: PMC [0-3]、 FIXC [0-2]、 MBOX [0-1] C [0-5]、 BBOX[0-1]C[0-3]、
RBOX [0-1] C [0-7]、 WBOX[0-5]、 UBOX0、 SBOX [0-1] C [0-3]、 CBOX [0-9] C [0-4]
· インテル ウェストメア:
カウンター: PMC [0-3]、 FIXC [0-2]、 UPMC[0-7]
· インテル Westmere EX: カウンター: PMC [0-3]、 FIXC [0-2]、 MBOX [0-1] C [0-5]、 BBOX[0-1]C[0-3]、
RBOX [0-1] C [0-7]、 WBOX[0-5]、 UBOX0、 SBOX [0-1] C [0-3]、 CBOX [0-9] C [0-4]
· インテル 砂の ブリッジ: 完全なRAPLサポート。 カウンター: PMC [0-3]、 FIXC [0-2]、 PWR[0-3]
· インテル 砂の ブリッジ EP: アンコアの部分的なサポート、完全なRAPLサポート。 カウンター:
PMC [0-3]、 FIXC [0-2]、 PWR[0-3]。 MBOX[0-3]C[0-3]
· インテル ツタ ブリッジ: 完全なRAPLサポート。 カウンター: PMC [0-3]、 FIXC [0-2]、 PWR[0-3]
· インテル ツタ ブリッジ EP: アンコアの部分的なサポート、完全なRAPLサポート。 カウンター:
PMC [0-3]、 FIXC [0-2]、 PWR[0-3]、 CBOX[0-9]C[0-3]、 MBOX [0-3] C [0-3]、 MBOX [0-3] FIX
· インテル Haswell: 完全なRAPLサポート。 カウンター: PMC [0-3]、 FIXC [0-2]、 PWR[0-3]
· インテル Haswell EP: アンコアサポートなし、完全なRAPLサポート。 カウンター: PMC [0-3]、
FIXC [0-2]、 PWR[0-3]
· インテル アトム シルバーモント: 完全なRAPLサポート。 カウンター: PMC [0-1]、 FIXC [0-2]、 PWR[0-1]
· インテル ペンティアム M: バニアスとドーサンの亜種。 カウンター: PMC [0-1]
· インテル P6: P3でテスト済み。
· AMD K8: すべての亜種。 カウンター: PMC [0-3]
· AMD K10: バルセロナ、上海、イスタンブール、マニクール ベースのプロセッサ。 カウンター:
PMC [0-3]
OPTIONS
-v バージョン情報を標準出力に出力してから終了します。
-h ヘルプメッセージを標準出力に出力してから終了します。
-H グループヘルプメッセージを出力します(-gスイッチと一緒に使用します)。
-V デバッグ用の実行中の詳細出力。
-m マーカーAPIモードで実行
-a 現在のプロセッサで利用可能なパフォーマンスグループを印刷します。
-e 現在のプロセッサの使用可能なカウンタとパフォーマンスイベントを出力します。
-o
すべての出力を stdout ではなくファイルに保存します。 ファイル名については、次の
プレースホルダーがサポートされています:PBS_JOBIDの場合は%j、MPI RANKの場合は%r(IntelMPIのみ
瞬間)、%hホスト名およびプロセスpidの%p。 プレースホルダーは
-o test_%h_%p のようにアンダースコアで区切ります。 に接尾辞を指定する必要があります
ファイル名。 txtの場合、出力はそのままファイルに出力されます。 他の接尾辞は
出力をフィルタリングします。 使用可能なフィルターは、csv (カンマ区切り値) および xml です。
現時点では。
-O 結果の表を印刷せず、代わりに簡単に解析できるCSVを使用してください。
-i プロセッサおよびIntelPerformanceMonitoringに関するcpuid情報を出力します
機能を終了し、終了します。
-c
プロセッサーの数値リストを指定します。 リストには複数のアイテムが含まれる場合があります。
カンマと範囲で区切ります。 たとえば、0,3,9-11です。
-C
プロセッサーの数値リストを指定します。 リストには複数のアイテムが含まれる場合があります。
カンマと範囲で区切ります。 たとえば、0,3,9-11です。 このバリアントも固定されます
コアへのスレッド。 また、論理的な番号付けを使用することもできます。
-g <パフォーマンス グループ> or <パフォーマンス イベント セッションに 文字列>
測定するパフォーマンスグループを指定します。 これは、で出力されるタグのXNUMXつである可能性があります
-aフラグ。 また、カスタムイベントセットは、次のコンマ区切りのリストで指定できます。
イベント。 各イベントの形式はeventId:registerで、レジスターはXNUMXつです。
パフォーマンス カウンター レジスタをサポートするアーキテクチャの。
-t <周波数 of 採寸>
時間分解測定のタイムラインモード、可能な接尾辞「s」および「ms」のような
100ミリ秒。 出力の形式は次のとおりです。
<結果 thread0> <結果 thread1> ...
-S
秒単位の持続時間を持つ聴診器モード。 アプリケーションの測定に使用可能
外部から。
実施例
なぜなら likwid-perfctr 単一のアプリケーションではなく、プロセッサでの対策が必要です
プロセスとスレッドが専用リソースに確実に固定されるようにします。 ピン留めすることができます
アプリケーションを自分で作成するか、組み込みのピン機能を使用します。
1. パフォーマンス グループのラッパーとして:
likwid-perfctr -C 0-2 -g TLB ./cacheBench -n 2 -l 1048576 -i 100 -t Stream
親プロセスはプロセッサ0に固定され、スレッド0はプロセッサ1に固定され、スレッド1はプロセッサXNUMXに固定されます。
プロセッサ2。
2. AMDでカスタムイベントが設定されたラッパーとして:
likwid-perfctr -C 0-4 -g INSTRUCTIONS_RETIRED_SSE:PMC0、CPU_CLOCKS_UNHALTED:PMC3 ./myApp
イベントと明記されている INSTRUCTIONS_RETIRED_SSE カウンターで測定されます PMC0 &
行事 CPU_CLOCKS_UNHALTED カウンターで PMC3。 の実行時間を計算することが可能です
に基づくすべてのスレッド CPU_CLOCKS_UNHALTED イベント。 これが必要な場合は、含める必要があります
上記のように、カスタムイベント文字列内のこのイベント。
3. Intelで設定されたカスタムイベントのラッパーとして:
likwid-perfctr -C 0 -g INSTR_RETIRED_ANY:FIXC0、CPU_CLK_UNHALTED_CORE:FIXC1 ./myApp
Intelプロセッサでは、固定イベントは専用のカウンタで測定されます。 これらは
INSTR_RETIRED_ANY , CPU_CLK_UNHALTED_CORE。 & CPU_CLK_UNHALTED_REF 構成する場合
これらの固定カウンター、 likwid-perfctr のランタイムとCPIメトリックを計算します
実行されます。
4.マーカーAPIを使用して、コードの一部のみを測定します(これは、
グループまたはカスタムイベントセット):
likwid-perfctr -m -C 0-4 -g INSTRUCTIONS_RETIRED_SSE:PMC0、CPU_CLOCKS_UNHALTED:PMC3
./cacheBench
コードをliblikwid.a/.soにリンクし、マーカーAPI呼び出しを使用する必要があります。 The
次のコードスニペットは、必要な呼び出しを示しています。
#含む
/*initを呼び出すスレッドはXNUMXつだけです*/
場合 (threadId == 0)
{
likwid_markerInit();
}
/*スレッド化されたアプリケーションを測定する場合
* likwid_markerThreadInit() を呼び出す必要があります
*準備、OpenMPを使用した例* /
#pragma omp 並列
{
likwid_markerThreadInit();
}
バリア;
likwid_markerStartRegion("ベンチマーク");
/*測定するコードはこちらです。*/
likwid_markerStopRegion( "Benchmark");
バリア;
/* ここでも、XNUMX つのスレッドだけがマーカーを閉じることができます */
場合 (threadId == 0)
{
likwid_markerClose();
}
5.タイムラインモードでのlikwidの使用:
likwid-perfctr -c 0-3 -g FLOPS_DP -t 300ms ./myApp > out.txt
これにより、物理コア300〜0で3ミリ秒ごとにカウンターが読み取られ、結果が次のように書き込まれます。
out.txt。 タイムラインモードには、フロントエンドアプリケーションのlikwid-scopeがあります。
選択したイベントのライブプロット。 その他のコード例については、likwidWIKIをご覧ください。
ページ。 プロセスは次のとおりです。 CPU 0〜3に固定されています。
6. 聴診器モードでの likwid の使用:
likwid-perfctr -c 0-3 -g FLOPS_DP -S 2s
これにより、カウンターが開始され、物理コア 2 ~ 0 で 3 秒後に読み取られ、書き込みが行われます。
結果をstdoutに。 プロセスは CPU 0〜3に固定されています。
onworks.netサービスを使用してオンラインでlikwid-perfctrを使用する