I have realized that MPAS-8.2.2 results are not bit-repeatable when re-run with the same number of OpenMP threads. It looks like there is race-condition in 'subroutine driver_microphysics' routine. If an OpenMP directive (before 'call driver_microphysics' in mpas_atm_time_integration.F) is disable, the results are bit-identical.
I haven't seen the non bit-repeatable results with old version of MPAS.
mpas_atm_time_integration.F:
if (trim(config_microp_scheme) /= 'off') then
call mpas_timer_start('microphysics')
!!$OMP PARALLEL DO
do thread=1,nThreads
call driver_microphysics ( block % configs, mesh, state, 2, diag, diag_physics, tend_physics, tend, itimestep, &
cellSolveThreadStart(thread), cellSolveThreadEnd(thread))
end do
!!$OMP END PARALLEL DO
call mpas_timer_stop('microphysics')
end if
Thanks,
I haven't seen the non bit-repeatable results with old version of MPAS.
mpas_atm_time_integration.F:
if (trim(config_microp_scheme) /= 'off') then
call mpas_timer_start('microphysics')
!!$OMP PARALLEL DO
do thread=1,nThreads
call driver_microphysics ( block % configs, mesh, state, 2, diag, diag_physics, tend_physics, tend, itimestep, &
cellSolveThreadStart(thread), cellSolveThreadEnd(thread))
end do
!!$OMP END PARALLEL DO
call mpas_timer_stop('microphysics')
end if
Thanks,