OpenMP* SCHEDULE 節の chunk_size の副作用

OpenMP* SCHEDULE 節で使用される chunk_size 式には副作用があってはなりません。

ワークシェアリング・ループを実行する際には、ループの反復はスレッドチーム間で分配する必要があります。反復は一度に 1 つ配布できます。または呼び出されたチャンクの連続したサブセットで配布できます。SCHEDULE 節の chunk_size 節はチャンクサイズを決定します。チャンクサイズは定数、または式です。

ループ構造でプライベートに指定された任意の変数の元のリスト項目を使用して、 chunk_size 式が評価されます。この式の評価の副作用がどの順序で、何回発生するか未定義です。そのため、chunk_size 式に副作用が存在すると、未定義の動作を引き起こします。

ID

問題箇所

説明

1

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

不正な chunk_size 式が指定された場所

          
    integer OMP_GET_THREAD_NUM
    j = 1
    call OMP_SET_NUM_THREADS(4)
!$OMP PARALLEL DO ORDERED SCHEDULE(static, j + mysub())
    do i = 1, 10
!$OMP ORDERED
      print *, OMP_GET_THREAD_NUM()
!$OMP END ORDERED
    end do
!$OMP END PARALLEL DO
    
    contains

    integer function mysub()
        j = 2
        mysub = 1
    end function mysub
    end
        

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