関数内のループまたは並列化ディレクティブが指定された領域を並列化する場合、コンパイラは、元のソースコードには含まれていない新しい本体関数を作成します。こうした関数については、OpenMP実行の概要 で説明しています。
コンパイラは、並列構造の種類、構造が抽出された元の関数の名前、構造の元のソース内の先頭の行番号、および並列構造のシーケンス番数をエンコードする本体関数に符号化された名前を割り当てます。これらの符号化された名前は、マイクロタスクライブラリのリリースごとに異なりますが、より分かりやすい名前に復号化されて表示されます。
次の例は、マシンモードで関数リストに表示される一般的なコンパイラ生成の本体関数を示しています。
7.415 14.860 psec_ -- OMP sections from line 9 [_$s1A9.psec_] 3.873 3.903 craydo_ -- MP doall from line 10 [_$d1A10.craydo_]
これらの例では、構造が抽出された元の関数の名前が最初に示され、次に並列構造の種類、並列構造の行番号、コンパイラ生成の本体関数の符号化された名前が角括弧で示されます。 同様に、逆アセンブリコード内にも特殊なインデックス行が生成されます。
0. 0. <Function: psec_ -- OMP sections from line 9 [_$s1A9.psec_]> 0. 7.445 [24] 1d8cc: save %sp, -168, %sp 0. 0. [24] 1d8d0: ld [%i0], %g1 0. 0. [24] 1d8d4: tst %i1
0. 0. <Function: craydo_ -- MP doall from line 10 [_$d1A10.craydo_]> 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) Loop below fused with loop on line 23 Loop below not parallelized because autoparallelization is not enabled Loop below autoparallelized Loop below interchanged with loop on line 12 Loop below interchanged with loop on line 12 3.873 3.903 <Function: craydo_ -- MP doall from line 10 [_$d1A10.craydo_], instructions without line numbers> 0. 3.903 10. do i = 2, n-1