- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi All,
Just started playing with coarrays, and have this simple program
! This looks at a simple coarray version of doing a numerical gradient program CoarrayTest2 implicit none real(8), allocatable:: cntl(:), grad(:)[:], gradF77(:) real(8) fcn integer n
This compiles and runs fine under Parallel Studio XE 2016 Update 2 under Windows, and it compiles fine under same version of PSXE for Linux, but when I run it (Centos 7, 3.10.0-229.4.2.el7.x86_64), it produces segment faults, suc as:
Number of images: 8 Enter size of vector: 1 forrtl: severe (174): SIGSEGV, segmentation fault occurred In coarray image 1 Image PC Routine Line Source a.out 0000000000480D85 Unknown Unknown Unknown a.out 000000000047E9A7 Unknown Unknown Unknown a.out 0000000000455354 Unknown Unknown Unknown a.out 0000000000455166 Unknown Unknown Unknown a.out 0000000000435276 Unknown Unknown Unknown a.out 00000000004051E0 Unknown Unknown Unknown libpthread.so.0 00007FE3F0099100 Unknown Unknown Unknown libicaf.so 00007FE3F05AC554 Unknown Unknown Unknown a.out 00000000004041D9 Unknown Unknown Unknown a.out 000000000040399E Unknown Unknown Unknown libc.so.6 00007FE3EFCEAB15 Unknown Unknown Unknown a.out 00000000004038A9 Unknown Unknown Unknown application called MPI_Abort(comm=0x84000000, 3) - process 0 Fatal error in MPI_Win_lock: Wrong synchronization of RMA calls , error stack: MPI_Win_lock(167)...: MPI_Win_lock(lock_type=235, rank=4, assert=0, win=0xa0000000) failed MPIDI_Win_lock(3068): Wrong synchronization of RMA calls forrtl: error (69): process interrupted (SIGINT) In coarray image 4 Image PC Routine Line Source a.out 0000000000480D85 Unknown Unknown Unknown a.out 000000000047E9A7 Unknown Unknown Unknown a.out 0000000000455354 Unknown Unknown Unknown a.out 0000000000455166 Unknown Unknown Unknown a.out 0000000000435276 Unknown Unknown Unknown a.out 0000000000405A2E Unknown Unknown Unknown libpthread.so.0 00007FAD7567B100 Unknown Unknown Unknown libpthread.so.0 00007FAD756776D3 Unknown Unknown Unknown libmpi_mt.so.4 00007FAD74982585 Unknown Unknown Unknown libmpi_mt.so.4 00007FAD747DC7FB Unknown Unknown Unknown libmpi_mt.so.4 00007FAD74800751 Unknown Unknown Unknown libmpi_mt.so.4 00007FAD74AA2316 Unknown Unknown Unknown libicaf.so 00007FAD75B91F45 Unknown Unknown Unknown libicaf.so 00007FAD75B8F0FB Unknown Unknown Unknown a.out 000000000040429A Unknown Unknown Unknown a.out 000000000040399E Unknown Unknown Unknown libc.so.6 00007FAD752CCB15 Unknown Unknown Unknown a.out 00000000004038A9 Unknown Unknown Unknown application called MPI_Abort(comm=0x84000000, 3) - process 3 Fatal error in MPI_Win_lock: Wrong synchronization of RMA calls , error stack: MPI_Win_lock(167)...: MPI_Win_lock(lock_type=235, rank=5, assert=0, win=0xa0000000) failed MPIDI_Win_lock(3068): Wrong synchronization of RMA calls
Completely trivial coarray programs do compile and run under the linux, just not the one above. I suspect I have violated some coarray standard, but I can't see it yet, and I'm not sure why it runs fine under Windows 10 version of PSXE 2016.
thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Per the standard, you must declare an interface for any procedure that has a coarray as a dummy argument.
That did not happen here, and the compiler did not pass all the required "coarray-ness" from the caller to routine fncandgrad().
It is probably not the argument named "N" that is the problem, because you are not accessing it as a coarray. It is the one named GRAD, where you are actually accessing it as a coarray.
--Lorri
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Per the standard, you must declare an interface for any procedure that has a coarray as a dummy argument.
That did not happen here, and the compiler did not pass all the required "coarray-ness" from the caller to routine fncandgrad().
It is probably not the argument named "N" that is the problem, because you are not accessing it as a coarray. It is the one named GRAD, where you are actually accessing it as a coarray.
--Lorri
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Excellent, Thanks Lorri! I figured I was violating some standard. Problem solved.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page