問題タブ [papi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Papi を使用して retval、cleanup、destroy を取得できませんでした
papi を使用してテストしようとしていますが、エラーが発生する理由がわかりません。私は彼らのためにオンラインで何かを見つけることができませんでした. コードは以下です
PAPIと Cを使用しています。
出力ファイルには、以下が表示されます。
ret、ret2、クリーンアップ、および破棄が失敗した理由がわかりません。なんで?
cpu - Xeon Phi のコア使用率を 10Hz で監視するにはどうすればよいですか?
Xeon Phi (Knights Corner、インオーダー プロセッサ) の 60 コアすべての使用率を、比較的高い周波数で、たとえば少なくとも 0.1 秒ごとに測定/監視しようとしてきました。これは 10Hz になります。
最新の PAPI ライブラリを試しました。ただし、完了した命令のカウンターである PAPI_TOT_INS のみをサポートします。0.1秒ごとに発行される命令に関連する何かが実際に必要であり、完了していないため、これは機能しません。異なるサイクルで発行されたいくつかの命令は、同じサイクルで終了する場合があります。命令の発行は、コアが停止しているかどうかによって影響を受けます。
「top」や「perf」などの他のコマンドは 1 Hz で動作しますが、これは私の測定には遅すぎます。より高い周波数が必要です。また、測定をコードの重要なフェーズと同期させる必要もあります。そのため、インテル Vtune プロファイルも機能しません。
Xeon Phi に関する指示の問題や、それらの使用に関連するその他の活動を監視する方法はありますか? これらのハードウェア カウンターがあることは理解していますが、それらを読み取るのは非常に難しいように思えます。各スレッドの CPU 時間を測定することで、この使用率を推測できるでしょうか?
ありがとう。
papi - papi_avail: 利用可能なイベントはありません
PAPIに入りたいです。Debian GNU/Linux でバージョン 5.3.2.0 を使用しています。papi_avail
ハードウェアイベントが利用できないことを教えてくれます:
ドキュメントにも FAQ にも何も見つかりませんでした。ここで何が悪いのか誰か知っていますか?
intel - Intel trace Collector&Analyzer と PAPI で GET COUNTERS
皆さん、インテル トレース コレクターと PAPI を使用してカウンターを取得しようとしていますが、(インテル アナライザーで開いた) stf トレース ファイルにはカウンターがありません。
コレクター ガイドに従って、収集したいカウンターを追加して conf ファイルを編集しました。
- COUNTER "PAPI_FP_OPS" ON
- カウンター「PAPI_BR_CN」オン
- COUNTER "PAPI_TOT_INS" ON
そして、このファイルを指すように VT_CONFIG 環境変数を設定しました。
コンパイル行は次のとおりです。
mpiifort -r8 -O3 -xHost -fp-model ソース -traceback file.F90 -L$VT_SLIB_DIR -L. -lVT -L$PAPI_ROOT/lib64 -lpapi $VT_ADD_LIBS -o file.exe
なにが問題ですか?
前もって感謝します。
c++ - コードをベクトル化する際のキャッシュ ミス数の増加
以下に示すように、SSE 4.2 と AVX 2 を使用して 2 つのベクトル間の内積をベクトル化しました。コードは、-O2 最適化フラグを指定して GCC 4.8.4 でコンパイルされました。予想どおり、パフォーマンスは両方で改善されました (そして、SSE 4.2 よりも AVX 2 の方が高速でした) が、PAPI を使用してコードをプロファイリングしたところ、ミスの総数 (主に L1 と L2) が大幅に増加したことがわかりました。
ベクトル化なし:
SSE 4.2 の場合:
AVX 2 の場合:
私のコードに何か問題があるのでしょうか、それともこの種の動作は正常ですか?
AVX2 コード:
SSE 4.2 コード:
ベクトル化されていないコード:
編集:ベクトル化されていないコードのアセンブリ:
Edit2: 以下は、より大きな N (x ラベルの N と y ラベルの L1 キャッシュ ミス) のベクトル化されたコードとベクトル化されていないコードの間の L1 キャッシュ ミスの比較を見つけることができます。基本的に、より大きな N の場合、ベクトル化されたバージョンでは、ベクトル化されていないバージョンよりも多くのミスが発生します。
powerpc - Power8 での PM_DATA_ALL* イベントと PM_DATA* イベントの違いは何ですか?
を使用して Power8 プロセッサのメモリ パフォーマンスを評価しているときに、イベントとperf
の違いを理解するという問題が発生しました。ほとんどのカウンターは両方のバージョンに存在しますが、oprofile のドキュメントとの説明は同じです。たとえば、次のようになります。PM_DATA_ALL_*
PM_DATA_*
papi_native_avail
PM_DATA_FROM_LMEM
MMCR1[16] が 1 の場合、デマンド ロードのみ、またはデマンド ロードとプリフェッチにより、プロセッサのデータ キャッシュがローカル チップのメモリからリロードされました。
私はいくつかのデータを測定することによって違いを理解します. 十分な大きさのタスクを提供すると、*_ALL
バージョンがより高い値を持つという予想される違いを観察できます。を使用したメジャーでのカウンターの多重化の概念を理解していperf
ます。
では、実際にこれらのイベントのすべてとは何でしょうか?
c - papi_native_avail を適切に使用して、BG/Q システムでネットワーク パフォーマンス監視イベントを取得するにはどうすればよいですか?
BG Torus 相互接続を使用して BG/Q システムでネットワーク パフォーマンス カウンター データを収集しようとしています。これが最も推奨される方法のように思われるため、私は PAPI を使用しています。他のオプションは bgpm ライブラリであり、このシステムにはインストールされていないと思います。(locate bgpm
私には何もくれませんでした。)
システムで利用可能なすべてのカウンターの名前を取得しようとしています。を実行するpapi_native_avail
と、一連のイベントが返されます。たとえば、ネット カテゴリからの抜粋を次に示します。
papi_native_avail
セグメンテーション違反ですが、それは関係ないと思います。
したがって、この時点での私の理解では、イベント名を使用して を使用してイベント コードを取得できるはずですPAPI_event_name_to_code()
が、これは機能していないようです。これらは、その関数が期待するイベント名ではないと推測しています。だから誰かが説明できます:
BG/Q のすべてのネットワーク イベントはどこにありますか?
これらのイベントのコードを取得するにはどうすればよいですか?
完全を期すために、ここに私のコードと出力があります:
出力: