問題タブ [kcachegrind]

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.

0 投票する
1 に答える
1002 参照

c++ - kcachegrind の理解に助けが必要

kcachegrind を理解しようとしていますが、そこにはあまり情報がないようです。たとえば、左側のウィンドウには、「Self」とは何ですか、「incl.」とは何ですか? ( 1 コアを参照)。

私はいくつかの弱いスケーリング テストを行いましたが、通信がないため、キャッシュ ミスと関係があると思います。しかし、私が見る限り、1 コアと 16 コアの両方で同じ数のデータ ミスがあります。 16 コアを参照してください。

1 コアと 16 コアの間に見られる唯一の違いは、16 コアでは memcpy の呼び出しが大幅に少ないことです (これについては説明できます)。しかし、1 つのコアでは実行時間が 0.62 秒であるのに対し、16 コアでは実行時間が 1 秒に近い理由はまだわかりません。各プロセッサは同じ量の作業を行っています。誰かが kcachegrind で何を探すべきか教えてくれたら、それは素晴らしいことです。kcachegrind と valgrind を使用するのはこれが初めてです。

編集:私のコードは、行列を圧縮された行形式で連結します。サブマトリックスのエントリをループし、memcpy を使用して値を結果マトリックスにコピーする必要があります。コードは次のとおりです: - 2 つ以上のリンクを投稿できないので、コメントに投稿します。

ループ自体で valgrind を開始しただけです。ループは、0.62 秒の実行時間と 1 秒の実行時間の違いを生んでいるものでもあります。最も時間がかかる部分は memcpy の呼び出しです (以下の github gist の 37 行目)。これをコメントアウトすると、コードは 0.2 秒未満で実行されますが、1 コアから 16 コアの間でまだ増加しています (約30%増)。

24 個のコア (2 つの Intel® Xeon® Processor E5-2690 v3) で構成される haswell ノードでコードを実行しています。

各コアには 5 GB のメモリが搭載されています。

0 投票する
0 に答える
268 参照

c++ - C++ プロファイリングは、ベクトルのホットスポットを明らかにします。最適化する方法は?

での多くの操作を含む callgrind / qcachegrind を使用して、いくつかの信号処理コードをプロファイリングしていstd::vector<float>ます。

Mac OS のビルトインnearbyint機能からかなり深刻なホットスポットが発生しています。

ここに画像の説明を入力

これは、このベクトル関数によってほぼ完全に呼び出されているようです。

ここに画像の説明を入力

これは、多くのクラス メンバー関数から呼び出されます。私には、_push_back_slow_path割り当てのボトルネックのように見えますが、その理由は完全にはわかりません。実行ループのどの時点でも、ベクトルのサイズを変更していません。起こっていることはすべて、参照によってコピーされたり、反復されたり、data()op を使用して vDSP 操作の生のポインターを取得したりすることがあります。例えば ​​。. .

ここに画像の説明を入力

  • vectorホットスポットに未加工のデータ ポインターを渡しているときに、vDSP 関数がこのホットスポットの原因になるのはなぜですか?
  • このホットスポットの原因として考えられるものは何ですか?
  • 登場する理由はbasic_string?プロファイルされたライブラリは文字列を使用しません。
  • std::array可能な限り に切り替えることは賢明な次の動きでしょうか?

さらに詳しい情報をお気軽にお尋ねください。喜んで質問を編集します。

編集1

最初の答えに応えて、私は明示的にpush_backどこにも電話していません。ホットスポットは、フロートでのインライン化されたログ操作など、一見おかしな場所で発生しています。これは奇妙なことをしているコンパイラの最適化でしょうか?

ここに画像の説明を入力

0 投票する
1 に答える
1335 参照

c++ - Kcachegrind サイクルの見積もり

彼らの github ページにアクセスして、kde docs サイトから PDF マニュアルをいくつか見た後でも、私はまだ混乱しています。テスト コードに次の 2 行があるとします。

は、ep事前定義できる値です。コメントは私のもので、コードブロックで、逆アセンブラーでデバッガーを実行し、辛抱強く「次の命令」を押してカウントすることによって行われます。これらは、「命令フェッチ」を表示するように設定した場合に Kacachegrind が言うことと一致します。それは理にかなっていると思います(私はC ++の初心者です)。しかし、「サイクル推定」に切り替えると、非常に奇妙な測定値が得られます。現在の例では、115and122ですが、次のように一見似ている他の表現もあります。

show 222and 2(instr. fetch shows 2for both)! ここで何が起こっていますか?誰か説明してくれませんか?

0 投票する
0 に答える
335 参照

php - QCachegrind が PHP プロファイリングのデータを表示しません。設定の問題が考えられます

xdebug と、KCachegrind の Windows バージョンである qCachegrind をインストールしましたが、このインターフェイスでプロファイリング データを確認できませんでした。

正しく構成できない可能性があります。

Xdebug を既にインストールしており、webgrind で表示しています。

ここでは、xdebug の ini 設定を投稿しています。

以前に使用したことがある人は、インターネットで多くの助けを見つけることができませんでした。

0 投票する
1 に答える
31 参照

php - KCacheGrind のクロージャとは?

closureとはどういう意味KCacheGrindですか? 私は自分の関数の1つでそれを持っており、関数を指してspl_autoload_register()spl_autoload_callますKCacheGrind. 関数のself時間は 60+ であるため、もちろん最適化したいのですが、どこから始めればよいかわかりません。

closureインは何KCacheGrindですか?

上記の関数を最適化してself時間を短縮するには何が必要ですか?

0 投票する
4 に答える
3259 参照

c++ - Kcachegrind。自分のコードの関数のみを表示

コードをプロファイリングしたい。私もです:

今、私はkcachegrindこのようなウィンドウを持っています:

ここに画像の説明を入力

多くのコア関数とライブラリ関数がありますが、コード内にある関数のみを設定valgrindまたはトレースするにはどうすればよいですか (もちろん、ライブラリ関数を呼び出します)。kcachegrind

予想される出力は次のようなものです。