OpenMP* で共有変数が必要

OpenMP* では、特定のコンテキストで使用される変数が共有変数でなければなりません。

共有変数を制御するために各種の OpenMP* 構造が使用されますが、これらの構造は、非共有変数または "スレッド・プライベート" 変数に適用されても意味がありません。特に、PRIVATE 変数は FIRSTPRIVATE 宣言子や LASTPRIVATE 宣言子の変数リストには現れません。同様に、ワークシェアリング構造の REDUCTION 節の変数も外側の領域で共有される必要があります。この診断は、これらの制限のいずれかに違反していることを示します。

ID

問題箇所

説明

1

OpenMP* の使用方法に関するエラー

非共有変数が不適切に使用された場所


    module mod
    contains
    subroutine sub(last, N)
    integer last, i, N
!$OMP DO LASTPRIVATE(last)
    do i = 1, N
        last = i
    end do
!$OMP END DO
    end subroutine sub
    end module mod

    use mod
    integer, parameter :: N=10
    integer last
    real, dimension(N) :: a
    a = 1.0
!$OMP PARALLEL SHARED(a, b, c) PRIVATE(last)
    call sub(last, N)
!$OMP END PARALLEL
    end
        

© 2010 Intel Corporation. 無断での引用、転載を禁じます。