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