プログラムのパフォーマンス解析

ループタイミングファイルの生成

ループタイミングファイルを生成するには、自動的にコードを並列化し、最適化するコンパイラオプション (-xparallel と -xO4) を使って、プログラムをコンパイルします。 また、ループツールやループレポート用にコンパイルを行うには、 -Zlp オプションを追加します。これらのオプションを使ってプログラムをコンパイルすると、Sun WorkShop はループツールおよびループレポートが処理するためのタイミングファイルを生成します。

これら 3 つのコンパイルオプションの使用例を以下に示します。


% f77 -xO4 -xparallel -Zlp source_file


注 -

いずれの例も FORTRAN 77、Fortran 90、および C プログラムに適用されます。


ループの確認および並列化に使用できる便利なオプションがほかにも多数あります。

表 3-1 ループタイミングファイル生成用オプション

オプション 

効果 

-o program

実行可能ファイル名を program に変更します。

-xexplicitpar

DOALL プラグマの付いたループを並列化します。

-xloopinfo

ファイルをリダイレクトして、stderr にヒントを出力します。

その他のコンパイラオプション

ループツールおよびループレポートでは、各種のコンパイラオプションを組み合わせることができます。

コンパイル時に自動並列化を行うための代表的なスイッチは、 -xparallel-x04 です。ループツールとループレポート用のコンパイルを行うには、-Zlpを追加します。


% f77 -x04 -xparallel -Zlp source_file

-xO3 または -xO4-xparallel は併用できます。-xO3-xO4 のいずれも指定せず、-xparallel のみ指定する場合、コンパイラは -xO3 を使用します。表 3-2 には、特定のオプションについての最適化レベルオプションの追加方法をまとめてあります。

表 3-2 最適化レベルオプションと暗黙指定

入力 

変換結果 

-xparallel 

-xparallel -xO3 

-xparallel -Zlp 

-xparallel -xO3 -Zlp 

-xexplicitpar 

-xexplicitpar -xO3 

-xexplicitpar -Zlp 

-xexplicitpar -xO3 -Zlp 

-Zlp 

-xdepend -xO3 -Zlp 

これ以外に、-xexplicitpar-xloopinfo というコンパイルオプションがあります。

Fortranコンパイラオプション -xexplicitpar は、 プラグマ DOALL とともに使用されます。ソースコード中で、あるループの前に DOALL を挿入すると、並列化のための明示的なマークが付けられます。-xexplicitpar を指定してコンパイルすると、そのループが並列化されます。

以下のコードは、ループの並列化を明示的にマークする方法を示したものです。


    subroutine adj(a,b,c,x,n)
      real*8 a(n), b(n), c(-n:0), x
        integer n
c$par DOALL
    do 19 i = 1, n*n
      do 29 k = i, n*n
        a(i) = a(i) + x*b(k)*c(i-k)
29    continue
19  continue
    return
    end

-Zlp を単独で使用すると、-xdepend-xO3 が追加されます。-xdepend オプションは、コンパイラに対してループを識別するときに必要なデータ依存関係の解析を実行するよう指示します。-xparallel オプションには -xdepend も含まれますが、-xdepend-xparallel の暗黙指定 (トリガー) ではありません。

-xloopinfo オプションは、プログラムのコンパイル時に、ループに関するヒントを stderr (ファイル記述子2のUNIX標準エラーファイル)に出力します。このヒントには、ルーチン名、ループの開始地点を示す行番号、ループの並列化の有無、並列化されていない場合はその理由などが示されます。

以下の例では、ソースファイル gamteb.F のループに関するヒントをファイル gamtab.loopinfo にリダイレクトしています。


% f77 -xO3 -parallel -xloopinfo -Zlp gamteb.F 2> gamteb.loopinfo

-Zlp-xloopinfo の最大の違いは、ループに関するコンパイラヒントを出力することに加えて、-Zlp によって実行時にタイミングに関する統計情報を記録するようになるという点です。このため、ループツールとループレポートは、-Zlp を指定してコンパイルされたプログラムだけを対象として解析を行います。

プログラムの実行

-Zlp を指定してコンパイルした後、実行可能ファイルを実行してください。この結果、ループタイミングファイル program.looptimes が作成されます。ループツールとループレポートは、計測機構付きの実行可能ファイルとループタイミングファイルの 2 つのファイルを処理します。