Sun Studio 12: パフォーマンスアナライザ

コンパイラ生成の本体関数

コンパイラは、関数内のループまたは並列化指令のある領域を並列化する場合、元のソースコードに含まれていない新しい本体関数を作成します。こうした関数については、「OpenMP ソフトウェアの実行の概要」で説明しています。

コンパイラは、並列構造の種類、構造の取り出し元関数の名前、元のソースにおける構造の先頭の行番号、並列構造のシーケンス番号などをエンコードする本体関数に、符号化名を割り当てます。これらの符号化された名前は、マイクロタスクライブラリのリリースごとに異なりますが、より分かりやすい名前に復号化されて表示されます。

次に、関数リストに表示されるような一般的なコンパイラ生成の本体関数を示します。


7.415      14.860      psec_ -- 行 9 [_$s1A9.psec_] からの OMP 領域
3.873       3.903      craydo_ -- 行 10 [_$d1A10.craydo_] からの MP doall

この例で分かるように、構造が抽出された関数の名前が最初に示され、次に並列構造の種類、並列構造の行番号、コンパイラ生成の本体関数の符号化名が角括弧に表示されます。同様に、逆アセンブリコードには、特別なインデックス行が生成されます。


0.       0.            <関数: psec_ -- 行 9 [_$s1A9.psec_] からの OMP 領域>
0.       7.445         [24]    1d8cc:  save        %sp, -168, %sp
0.       0.            [24]    1d8d0:  ld          [%i0], %g1
0.       0.            [24]    1d8d4:  tst         %i1

0.       0.            <関数: craydo_ -- 行 10 [_$d1A10.craydo_] からの OMP doall>
0.       0.030         [ ?]    197e8:  save        %sp, -128, %sp
0.       0.            [ ?]    197ec:  ld          [%i0 + 20], %i5
0.       0.            [ ?]    197f0:  st          %i1, [%sp + 112]
0.       0.            [ ?]    197f4:  ld          [%i5], %i3

Cray の指令では、関数はソースコード行番号に関連付けされていない可能性があります。このような場合は、行番号の代わりに [ ?] が表示されます。注釈付きソースコードにインデックス行が表示される場合は、次のようにインデックス行は行番号なしで命令を示します。


                     9. c$mic  doall shared(a,b,c,n) private(i,j,k)
                  
                   以下のループは 23 行目のループと融合しました
                   以下のループは自動並列化処理が有効でないため並列化されていません
                   以下のループは自動並列化されました
                   以下のループは 12 行目のループと交換されました
                   以下のループは 12 行目のループと交換されました
3.873     3.903         <関数: craydo_ -- 行 10 [_$d1A10.craydo_] からの MP doall,
                      行番号なしの命令>
0.        3.903     10.            do i = 2, n-1

注 –

インデックス行やコンパイラのコメント行は、実際の表示では折り返されません。