問題タブ [intel-pmu]
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.
performance - Intel Core Duo のハードウェア パフォーマンス カウンター
キャッシュのヒット数とミス数を測定できる AMD プロセッサがあることを読みました。そのような機能が Intel Core Duo マシンでも利用できるのか、それともまだサポートされていないのか疑問に思っています。
linux - ユーザー空間で Intel Xeon のパフォーマンス カウンターを読み取る
ユーザー空間でシェル スクリプトを使用して Intel Xeon のパフォーマンス カウンターを読み取りたいと考えています。私の要件を満たすには硬すぎるため、Oprofile は機能しません。FC13を使用しています。ありがとう
c - Intel Performance Monitor -- プロセスごとに監視する方法はありますか?
他のプロセスの情報を除外しながら、インテル パフォーマンス カウンターモニターを使用して、特定のプロセスの実行 (つまり、Branch Trace Store からのそのブランチ) を監視するにはどうすればよいですか?
x86 - Intel Last Branch Record を使用した場合のオーバーヘッドはどのくらいですか?
最後の分岐レコードは、最近実行された分岐に関連するソース アドレスと宛先アドレスを格納するレジスタ ペア (MSR) のコレクションを指します。興味がある場合は、http://css.csail.mit.edu/6.858/2012/readings/ia32/ia32-3b.pdfドキュメントに詳細情報があります。
- a) CPU と IO の両方を集中的に使用する一般的なプログラムの実行速度が LBR によってどの程度低下するかを誰かが教えてくれますか?
- b) LBR トレースがオンの場合、分岐予測はオフになりますか?
performance - Haswell メモリ アクセス
AVX -AVX2 命令セットを試して、連続した配列でのストリーミングのパフォーマンスを確認しました。したがって、基本的なメモリの読み取りと保存を行う例を以下に示します。
そして g++-4.9 -ggdb -march=core-avx2 -std=c++11 struct_of_arrays.cpp -O3 -o struct_of_arrays でコンパイルした後
ベンチマーク サイズ 4000 では、1 サイクルあたりの命令のパフォーマンスとタイミングが非常に良好であることがわかります。しかし、ベンチマーク サイズを 5000 に増やすと、1 サイクルあたりの命令が大幅に低下し、レイテンシーが急上昇することがわかります。私の質問は、パフォーマンスの低下が L1 キャッシュに関連しているように見えることはわかりますが、なぜこれが突然起こるのか説明できません。
ベンチマーク サイズ 4000 および 5000 で perf を実行すると、さらに洞察が得られます。
私の質問は、haswell が 2* 32 バイトを読み取りに配信し、32 バイトを各サイクルに格納できる必要があることを考えると、なぜこの影響が発生しているのかということです。
編集1
このコードでは、gcc が 0 に設定されているため、myData.a へのアクセスをスマートに排除していることに気付きました。これを回避するために、a が明示的に設定されている、わずかに異なる別のベンチマークを実行しました。
2 番目の例では、1 つの配列が読み取られ、他の配列が書き込まれます。そして、これはさまざまなサイズに対して次の perf 出力を生成します。
回答で指摘されているのと同じパターンが再び見られます。データセットのサイズが大きくなると、データが L1 に収まらなくなり、L2 がボトルネックになります。また興味深いのは、プリフェッチが役に立っていないようで、L1 ミスが大幅に増加していることです。ただし、読み取りのために L1 に持ち込まれた各キャッシュ ラインが 2 回目のアクセスでヒットすることを考慮すると、少なくとも 50% のヒット率が見込めると予想されます (64 バイトのキャッシュ ラインは、各反復で 32 バイトが読み取られます)。ただし、データセットが L2 にスピルオーバーすると、L1 ヒット率は 2% に低下するようです。配列が実際には L1 キャッシュ サイズとオーバーラップしていないことを考慮すると、これはキャッシュの競合によるものではありません。したがって、この部分はまだ私には意味がありません。
performance - Intelの汎用パフォーマンスカウンターをリセットする方法
wrmsr
命令を使用しrdmsr
て、パフォーマンス カウンターを設定し、汎用パフォーマンス カウンター レジスタを読み取ることができることはわかっています。
ただし、私の質問は次のとおりです。
を発行する前に、汎用パフォーマンス カウンタ レジスタをリセットする必要がありwrmsr
ますか?
つまり、次のコードでは、次のコードの前にパフォーマンス カウンターをリセットする必要がありますか? リセットする必要がある場合、どうすればリセットできますか?