インテル® VTune™ Amplifier XE のコマンドラインのレポートでループ情報をホット関数として表示する方法

インテル® VTune™ プロファイラー

この記事は、インテル® デベロッパー・ゾーンに公開されている「How to display loops info as hot functions in command line in Intel® VTune™ Amplifier XE’s report」(https://software.intel.com/en-us/blogs/2016/05/04/how-to-display-loops-info-as-hot-functions-in-command-line-in-intel-vtune-amplifier-xes-report) の日本語参考訳です。


インテル® VTune™ Amplifier XE には、アプリケーションのコールツリーでループを階層表示し、最適化の可能性があるコード領域を特定するオプションがあります。以下は、”-knob collection-detail=stack-call-and-tripcount” オプションを使用してデータを収集した結果です。

# amplxe-cl -c advanced-hotspots -knob collection-detail=stack-call-and-tripcount -r r001ah — ./matrix

# amplxe-cl -R hotspots -r r001ah -group-by function,callstack -column ‘Total Iteration Count’
amplxe: Using result path `/home/peter/problem_report/r001ah’
amplxe: Executing actions 75 % Generating a report             Column filter is ON.
Function/Function Stack        Total Iteration Count
————————————       ——————————
multiply                               1,075,237,174
 multiply                              1,075,237,174
  main                                 1,066,694,757
   __libc_start_main                   1,066,694,757
    _start                              1,066,694,757
  multiply                                 8,542,417
   main                                    8,542,417
    __libc_start_main                      8,542,417
     _start                                8,542,417

……

このレポートにはループに関する情報が含まれていません。インテル® VTune™ Amplifier XE のスタンドアロン GUI を起動して、”amplxe-gui r001ah” の結果を表示し、レポートの下にある [Filter] パネルで [Loop only] または [Loops and functions] を選択する必要があります。

そうすると、次のような結果が表示されます。

# amplxe-cl -R hotspots -r r001ah -group-by function,callstack -column ‘Total Iteration Count’
amplxe: Using result path `/home/peter/problem_report/r001ah’
amplxe: Executing actions 75 % Generating a report             Column filter is ON.
Function/Function Stack                      Total Iteration Count
———————————————            ——————————-
[Loop at line 19 in multiply]                    1,074,181,542
 [Loop at line 19 in multiply]                   1,074,181,542
  [Loop at line 14 in multiply]                  1,074,181,542
   [Loop at line 13 in multiply]                 1,074,181,542
    multiply                                            1,074,181,542
     main                                                1,065,647,177

……

しかし、インテル® VTune™ Amplifier XE のスタンドアロン GUI を開いて、結果の状態を変更しなければならないのは不便です。データ収集時に “-loop-mode=loop-only | loop-and-function” オプションを使用すると、結果の状態を設定できます (そのため、amplxe-gui を使用して状態を変更する必要がありません)。

# amplxe-cl -c advanced-hotspots -loop-mode=loop-and-function -knob collection-detail=stack-call-and-tripcount -r r002ah — ./matrix

これにより、必要な結果を素早く確認できます。

# amplxe-cl -R hotspots -r r002ah -group-by function,callstack -column ‘Total Iteration Count’
amplxe: Using result path `/home/peter/problem_report/r002ah’
amplxe: Executing actions 75 % Generating a report             Column filter is ON.
Function/Function Stack                              Total Iteration Count
—————————————————              ———————
[Loop at line 19 in multiply]                            1,074,255,875
 [Loop at line 19 in multiply]                           1,074,255,875
  [Loop at line 14 in multiply]                          1,074,255,875
   [Loop at line 13 in multiply]                         1,074,255,875
    multiply                                                     1,074,255,875
     main                                                        1,066,516,154
      [Loop@0x3d0c61eca9 in __libc_start_main]       1,066,516,154
       __libc_start_main                                   1,066,516,154
        _start                                                   1,066,516,154


……

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

タイトルとURLをコピーしました