問題タブ [intel-vtune]
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++ - プロファイリングにはどのコンパイルオプションを設定する必要がありますか?
VC++を介してIntelのコンパイラでコンパイルされたアプリケーションのプロファイルを作成する必要があります。VTuneを使用してコードのプロファイルを作成しています。
私の理解では、リリースモードでは、プロファイラーがデバッグモードでコードをプロファイリングするために必要なデバッグ情報がないため、プロファイリングの結果は適切ではありません。
私は何をすべきか ?リリースモードでデバッグ情報を追加することは可能ですか?このモードを設定するにはどうすればよいですか?
もしそうなら、私はまだすべての最適化(インライン化など)の恩恵を受けますか?
delphi - Delphi で VTune を検討する価値はありますか?
プロファイリング ツールに関するすべての質問を調べていると、聞いたことのないIntel の VTuneを発見して驚きました。700 ドルで、 AQTimeよりもさらに高価です。
しかし、AQTime に大金を投じる決定を下す前に、VTune for Delphi を使用した人はいますか?もしそうなら、AQTime やDelphi 用の他のプロファイリング ツールよりも優れた選択肢となる利点があると思いますか?そこにいますか?
performance - 選択したループの実行時間の測定
C プログラムで選択したループの実行時間を測定して、プログラム (Linux 上) の合計実行時間の何パーセントがこれらのループに費やされているかを確認したいと考えています。パフォーマンスを測定するループを指定できるはずです。ここ数日、いくつかのツール (vtune、hpctoolkit、oprofile) を試しましたが、どれもこれを行うようには見えません。それらはすべて、パフォーマンスのボトルネックを見つけて、それらの時間を表示するだけです。これは、これらのツールがしきい値 (~1ms) を超えた時間のみを保存するためです。したがって、1 つのループの所要時間がそれよりも短い場合、その実行時間は報告されません。
gprof の基本的なブロック カウント機能は、現在サポートされていない古いコンパイラの機能に依存しています。
またはそのようなものを使用して単純なタイマーを手動で作成できますgettimeofday
が、場合によっては正確な結果が得られません。例:
ここで、内側のループで費やされた合計時間を測定したいのでgettimeofday
、最初のループ内に呼び出しを入れる必要があります。そのgettimeofday
ため、それ自体が 1000 回呼び出され、独自のオーバーヘッドが発生し、結果が不正確になります。
optimization - インテル アセンブラーの最適化
私は現在、自作の言語用に、自作のコンパイラから出力されたコードを最適化しようとしています。
Intel VTune を試して、ボトルネックがどこにあるかを確認しました: http://www.imada.sdu.dk/~sorenh07/misc/vtune-assembly-optimization.png
「subl」命令が、30 ~ 90 秒間実行されるプログラムのクロックティックの 38% 以上を占めていることは非常に印象的です。誰でも理由を説明できますか?
VTune の「最適化レポート」機能は、icc でコンパイルされていないプログラムには存在しないようです。アセンブラコードの最適化を提案するプログラムはありますか? (つまり、高級言語からのコードではありません)。
c++ - プロファイリングのヘルプが必要
プロファイリングの問題があります - 次のコードがあると想像してください...
これを vtune (または他のプロファイラー) で実行すると、何か問題があることに気付くのは非常に困難です。すべてのホットスポットは、既に最適化されている「// 多くのコード」とマークされたセクションに表示されます。badly_written_function() は、すべての問題の原因であるにもかかわらず、強調表示されません。
問題を見つけるのに役立つ vtune の機能はありますか?
badly_written_function()とそのすべてのサブ関数にかかった時間を見つけることができるモードはありますか?
c++ - vtune-使用可能な記号はありません
私は過去にvtuneを数回使用しましたが、通常はそれほど問題はありません。残念ながら、それぞれの使用の間のギャップはしばしば非常に長いので、私は毎回それを使用する方法のいくつかの側面を忘れています。行番号と記号の情報を何らかの方法で保存する必要があることを私は知っています。必要なのは「プログラムデータベース」(/ Zi)を使用してexeをコンパイルすることだけだと思いましたが、サンプリングを行ったところ、vtuneが使用可能なシンボルがないと報告していることがわかりました。
見逃したことはありますか?
winapi - アプリレベルのベンチマークのWindowsAPIコードカバレッジを測定する方法
私の仕事には、ソースがないサードパーティツールを使用したシステムレベルのパフォーマンステストが含まれます。私はWindowsもテストしており、デバッグシンボルは使用できますが、Windowsソースコードは使用できません。テストでカバーするホストOSの領域を定量的に説明したいと思います。これには2つの大きなステップがあります。調べたいDLLと関数を特定し、それらへの呼び出しをプロファイリングする方法を決定します。
カバレッジのアイデア:
- kernel.dll、ntdll.dll、user.dllなどのすべての関数...メインの組み込みモジュール。これは膨大な量のやり過ぎかもしれず、おそらく非推奨の機能にのみ関係する多くのギャップを特定するでしょう。
- ターゲットアプリケーションで使用されるDLLのモジュール名のみ。詳細ではありませんが、ターゲットアプリの主要な機能を見逃す可能性も低くなります。
- DirectX10アプリ用のd3d10.dllなどのアプリ固有のモジュール。
- 基本ブロック。これは博士論文の仕事量になると思います。
プロファイリングのアイデア:
- すべてのテストでVTuneコールグラフ分析を実行します。この種の作業は機能しますが、実際に呼び出される組み込み関数のビューが制限されているようです。
- PinやDynamoRIOなどを使用してアプリを動的にインストルメント化します。考えられる欠点:遅い。
- WinDbgで通話をキャッチします。これがピンよりも簡単か速いかはわかりません。
- IDAProなどの分解ツールを使用した静的分析。
Windowsでこれらの方針に沿って公開された作品はありますか?これらのツールの1つをフックまたはロギングに使用して、推奨できるほど十分に使用したことがありますか?
performance - インテルの VTune Amplifier の Linux バージョンで使用するシンボル情報を生成するにはどうすればよいですか?
インテル VTune Amplifier XE 2011 を使用して、プログラムのパフォーマンスを分析しています。解析結果でソース コードを表示できるようにしたいのですが、ドキュメントにはシンボル情報を提供する必要があると書かれています。残念ながら、私のプログラムをコンパイルするときにそのシンボル情報を生成する方法については述べていません。VTune の Windows バージョンでは、Microsoft Visual Studio が生成する ".pdb" ファイルを用意するだけで済みました。このシンボル情報を提供するために g++ を使用して作成できる同様の種類のファイルはありますか?
c++ - プロファイラーによって報告されたタイミングと実際のタイミング - なぜ不一致なのか?
同じ操作を行うコードのチャンクが 2 つあります。1 つは自分で作成したチャンクで、もう 1 つはサード パーティが作成したチャンクです。どちらも単一の実行可能ファイルにコンパイルされます。サード パーティのコードは、私のコードよりもはるかに高速に処理できるようです。私の 500 と比較して、1 秒あたり 1,500 の操作を実行できます。次に、VTune 内で実行可能ファイルを実行し、callgraph プロファイリング オプションを使用して、時間を無駄にしている場所が明らかになることを期待しました。残念ながら、各関数にかかると考えられるマイクロ秒数を示す VTune 診断では、私の関数とサードパーティの関数の両方が呼び出しごとに約 0.002 秒かかっていると主張しています。これは私のコードでは問題ないように見えますが、サードパーティのコードの速度を (手動で) 測定した結果とは完全に一致していません。
これはどのように起こりますか?
編集: コードの両方のチャンクは大きく、サブ関数の独自の複雑なツリーを呼び出します。
編集:サードパーティのコードは純粋な C++ であるのに対し、私のコードは本質的に C++ コンパイラでコンパイルされたばかりの C コードであることを指摘しておく必要があります。
編集: VTune は非常に複雑なパッケージであり、理解できない構成オプションが多数あります。この不正確さを軽減するために使用できる設定がいくつかあるのではないでしょうか?
optimization - vtune with mingw
Windows で mingw を使用してコンパイルしたアプリケーションで vtune を使用しようとしています。ソース コード情報を表示しようとすると、vtune は結果の実行可能ファイルの行情報ではないと言います。-g オプションを付けてコンパイルしているので、どこに問題があるのかわかりません。質問は次のとおりです。
Windows で mingw でコンパイルされたプログラムでプロファイリングすることは可能ですか? すべてが MS-VC の準備ができているように見えますが、mingw の準備はできていません。
その場合、オブジェクト形式 (coff、xcoff、DWARF など) を変更する必要がありますか? 誰かが例を投稿すれば、それは価値があるでしょう。