compilation is broken with flag OPENMP_REPRODUCIBLE flag on.
core issue is errors like this when reproducible is on:
790 | !$OMP ORDERED
| ^
Error: 'ordered' region must be closely nested inside a loop region with an 'ordered' clause
fix for instance in code block example would be
|
!$OMP DO |
|
#if !defined(DISABLE_OPENACC_ATOMICS) |
|
!$ACC PARALLEL LOOP GANG VECTOR PRIVATE(elnodes) DEFAULT(PRESENT) |
|
#else |
|
!$ACC UPDATE SELF(m_snow, icefluxes) |
|
#endif |
|
do elem=1, myDim_elem2D |
|
! if cavity cycle over |
|
if(ulevels(elem)>1) cycle !LK89140 |
|
|
|
elnodes=elem2D_nodes(:,elem) |
|
do q=1,3 |
|
n=elnodes(q) |
|
#if defined(_OPENMP) && !defined(__openmp_reproducible) |
|
call omp_set_lock (partit%plock(n)) |
|
#else |
|
!$OMP ORDERED |
|
#endif |
|
#if !defined(DISABLE_OPENACC_ATOMICS) |
|
!$ACC ATOMIC UPDATE |
|
#endif |
|
m_snow(n)=m_snow(n)+icefluxes(elem,q) |
|
#if defined(_OPENMP) && !defined(__openmp_reproducible) |
|
call omp_unset_lock(partit%plock(n)) |
|
#else |
|
!$OMP END ORDERED |
|
#endif |
|
end do |
|
end do |
|
#if !defined(DISABLE_OPENACC_ATOMICS) |
|
!$ACC END PARALLEL LOOP |
|
#else |
|
!$ACC UPDATE DEVICE(m_snow) |
|
#endif |
|
!$OMP END DO |
|
end if |
to add ordered to all clauses where we may use OMP_ORDERED like: !$OMP DO ordered.
compilation is broken with flag OPENMP_REPRODUCIBLE flag on.
core issue is errors like this when reproducible is on:
fix for instance in code block example would be
fesom2/src/ice_fct.F90
Lines 864 to 899 in 231c416
to add ordered to all clauses where we may use OMP_ORDERED like:
!$OMP DO ordered.