2

私は基本的な構造が以下のようなプログラムを持っています:

<c language headers>
main() {
    some malloc() allocations and file reads into these buffers
    call to an assembly language routine that needs to be optimized to the maximum
    write back the output of to files and do free()
exit()
}

アセンブリ言語プログラムは基本的に、バッファー内のデータのチェックサムを計算します。私の意図は、それを絶対最大値まで最適化することです。システム コールやライブラリ関数の呼び出しは行いません。

Intel vTune Amplifier XE スイートを VS 2015 にインストールしました。

アセンブリ言語のルーチン部分だけに絞って、「C」言語の準備部分の解析をすべてスキップするように vtune に指定するにはどうすればよいでしょうか。INSTRUCTION COUNT や CPI など、すべてのデータが累積されているようです。アセンブリ言語サブルーチン内のループと分岐のみのデータを取得することは可能ですか。もしそうなら、どうすればそれができるか教えてください。

ありがとう

4

1 に答える 1

5

VTune が提供する API を介してコードを計測し、ワークロードの特定の領域を分析できます。タスク APIを使用してスレッド固有のアクティビティを追跡するか、フレーム APIを使用してワークロードのグローバル ステージを分析します。

分析タイプを設定し、インストルメント化されたタスクを処理するオプション「ユーザー タスクの分析」を選択します。収集が終了したら、タスクまたはフレームで始まるグループを選択して、計測された間隔に集計されたパフォーマンス データを表示します。タイムラインにもタスク/フレームが表示されます。

例として、次のようにコードを変更できます。

<c language headers>
#include "ittnotify.h"

main() {

  __itt_domain* domain = __itt_domain_create("MyDomain");
  __itt_string_handle* task = __itt_string_handle_create("MyTask");

  some malloc() allocations and file reads into these buffers

  __itt_task_begin(domain, __itt_null, __itt_null, task);

  call to an assembly language routine that needs to be optimized to the maximum

  __itt_task_end(domain);

  write back the output of to files and do free()
  exit()
}

このコードをコンパイルするには、基本的な構成に従うことを忘れないでください。

于 2016-04-21T14:15:47.303 に答える