I wrote:

I have grave concerns.

At the last (to me an Nicolas) known state, before he was ousted
from the project, there were known race conditions, which can
cause freezing and/or data corruption.

I believe these have not been addressed, neither tested nor by
inspection.

Maybe a word of explanation.

What I would like to see are tests like

program memain
  integer :: i,j
  do j=0,5 ! To be adjusted
    do i=1,10**j
       sync all
    end do
    print *,"Finished 10**", j
  end do
end program

run on a few hundred cores in parallel.

Or counting (again, untested):

program memain
  use, interinsic :: iso_fortran_env, only : lock_type
  type(lock_type), codimension[*] :: lck
  integer, codimension(*) :: count
  integer :: i, j, s
  do j=0,5  ! To be adjusted, dunno how long this runs
    if (this_image() == 1) count = 0
    sync all
    do i=1,10**j
       lock (lck[1])
       count[1] = count[1] + 1
       unlock (lck[1])
    end do
    sync all
    if (this_image() == 1) then
       print *,"Expected: ",10**j*num_images(), "Found: ", count
    end if
    sync all
  end do
end program

plus similar torture cases for SYNC IMAGES, CRITICAL and END CRITICAL,
allocatable coarrays etc.

If this testing is not done (and resulting bugs fixed), there is an
extremely high chance that race conditions and other problems
such as memory leaks are introduced.

Best regards

        Thomas



Reply via email to