On 7/19/25 5:06 PM, Jerry D wrote:
On 7/19/25 2:26 PM, Thomas Koenig wrote:
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


Thank you, this helps me to understand better. I will strive to achieve this kind of testing. Suggestions from others as code samples would be greatly appreciated.

We should be able to build up a suite of tests to use for validation.

Best Regards,

Jerry

Andre, one of the the other things I have not got to yet is reviewing the interface between gfortran and the caf_shmem. Is this interface generic enough to allow other libraries to be used. For example, we have the caf_shmem library and we have the OpenCoarrays library, down the road there may be others and we should make sure we don't artificially constrain another approach. I hope I am making sense here. One of things I have learned over the years is 'interfaces' between software objects/components/parts is likely the most critical thing.

I am out of town the rest of this week, I wanted to capture the thought before I leave.

Best regards,

Jerry

Reply via email to