f95 コンパイラのプログラム全体のチェック機能を使用して、Fortran 95 プログラムの OpenMP 指令の手続き間の妥当性検査を静的に実行することができます。OpenMP のチェックは、-XlistMP フラグを指定してコンパイルを行うことによって有効になります。-XlistMP を指定した場合の診断メッセージは、ソースファイル名に .lst という拡張子の付いた名前の別ファイルの形で出力されます。コンパイラは、次の違反と並列化の阻害要因を診断します。
並列化指令の仕様の違反 (不正な入れ子を含む)
手続き間の依存性解析により検出される、データの使用が原因である並列化の阻害要因
手続き間のポインタ解析により検出される並列化の阻害要因
たとえば、ord.f というソースファイルを -XlistMP を指定してコンパイルすると、ord.lst という診断ファイルが生成されます。
FILE "ord.f"
1 !$OMP PARALLEL
2 !$OMP DO ORDERED
3 do i=1,100
4 call work(i)
5 end do
6 !$OMP END DO
7 !$OMP END PARALLEL
8
9 !$OMP PARALLEL
10 !$OMP DO
11 do i=1,100
12 call work(i)
13 end do
14 !$OMP END DO
15 !$OMP END PARALLEL
16 end
17 subroutine work(k)
18 !$OMP ORDERED
^
**** ERR-OMP: ORDERED 節が指定されていない DO 指令 (ord.f、10 行目、
2 列目) に ORDERED 指令を結合することは不当です。
19 write(*,*) k
20 !$OMP END ORDERED
21 return
22 end
|
この例では、サブルーチン WORK 内の ORDERED 指令で、2 番目の DO 指令に ORDERED 句がないことを指摘する診断が出力されています。