I think I might have asked this question about a year ago.
There have been at least one new version of both Cray
and Intel compilers since then.
I'm still not sure what behaviour is correct.
The program:
use, intrinsic :: iso_fortran_env
implicit none
integer :: errstat=0
if ( this_image() .eq. 1 ) stop "kuku"
sync all ( stat=errstat )
if ( errstat .eq. stat_stopped_image) write (*,*) "mumu"
end
My understanding from MFE sec. 19.13.6
and FDIS (10-007r1) sec 8.5.7 par 2 is that
the correct behaviour of this program is:
1. Image 1 initiates normal termination
2. At "sync all (stat=errstat)" errstat
becomes defined with "stat_stopped_image"
on all images, but image 1.
3. Hence all images, but image 1, must output "mumu".
The critical point, for me at least, is that
with the use of (stat=errstat) the programmer can
avoid error termination and continue until
the end of the program on all images.
Am I wrong?
However, I see with these 2 compilers:
*************************
Intel 15.0.0 20140723:
kuku
Then nothing.
After waiting a minute, terminated with CTRL/C.
*************************
Cray 8.3.3:
STOP kuku
PE 2: ERROR: at least one image in current team is stopped (at or around line 5 in $main_() from file /home3/e347/e347/mexas/z.f90)
PE 3: ERROR: at least one image in current team is stopped (at or around line 5 in $main_() from file /home3/e347/e347/mexas/z.f90)
Application 12075703 is crashing. ATP analysis proceeding...
ATP Stack walkback for Rank 2 starting:
[log in to unmask]:113
[log in to unmask]:242
[log in to unmask]:5
__pgas_sync_all@0x40921f
libpgas::Interface_Impl<false>::__pgas_sync_all(void*) const@0x4096e0
libpgas::Log::error(char const*, ...)@0x403dff
[log in to unmask]:92
[log in to unmask]:42
ATP Stack walkback for Rank 2 done
Process died with signal 6: 'Aborted'
Forcing core dumps of ranks 2, 1
Which of the behaviours is correct, if any?
Thanks
Anton
|