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

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

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

コンパイル時に自動並列化を行うための代表的なスイッチは、 -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 を指定してコンパイルされたプログラムだけを対象として解析を行います。