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 句がないことを指摘する診断が出力されています。