Sun Studio 12:OpenMP API 用户指南

2.2 Fortran 95 OpenMP 验证

使用 f95 编译器的全局程序检查功能,可以对 Fortran 95 程序的 OpenMP 指令进行静态的过程间验证。使用 -XlistMP 标志进行编译可启用 OpenMP 检查。(来自 -XlistMP 的诊断消息会出现在另一种文件中,该文件的名称由源文件名和 .lst 扩展名构成)。编译器将诊断下列违规和并行化抑制因素:

例如,使用 -XlistMP 编译源文件 ord.f 会生成诊断文件 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:  It is illegal for an ORDERED directive to bind to a
directive (ord.f, line 10, column 2) that does not have the
ORDERED clause specified.
    19                  write(*,*) k
    20  !$OMP END ORDERED
    21                  return
    22                  end

本例中,WORK 子例程中的 ORDERED 指令收到有关第二个 DO 指令的诊断,因为该指令缺少 ORDERED 子句。