On 2021-01-09 15:16, Brian Inglis wrote:
On 2021-01-09 12:58, Brian Inglis wrote:
On 2021-01-09 11:23, Thomas Koenig via Cygwin wrote:
there is a branch of gfortran for implementing coarrays based on a
shared memory implementation instead of MPI, the devel_coarray/native
branch.
I tried it out on Cygwin, but it doesn't work there (hangs on the
first sync).
The branch uses pthread mutexes and condition variables
with PTHREAD_PROCESS_SHARED for synchronization between processes.
I also ran the attached test program, which gave the output
pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED)failed: No error
Is it correct that PTHREAD_PROCESS_SHARED is not supported on
Cygwin? Is it supported for condition variables, or is the fact
that it is reported as working an oversight?
The function is supported but that parameter is not implemented or tested and
returns EINVAL:
https://sourceware.org/git?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/thread.cc;hb=HEAD#l16
https://sourceware.org/git?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/thread.cc;hb=HEAD#l1889
If PTHREAD_PROCESS_SHARED does not work, are there known workarounds?
If you have the ability and time to work on this, one of the Cygwin
developers/maintainers may be able to assist.
It looks like there was nothing on this between implementation circa 2002 and:
https://sourceware.org/pipermail/cygwin/2019-February/240178.html
Presumably your goal is to support or disqualify gfortran coarrays:
https://gcc.gnu.org/pipermail/fortran/2021-January/055542.html
For more about Windows limitations and alternatives see:
https://www.boost.org/doc/libs/1_75_0/doc/html/interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.sharedmemory.emulation
and the internal page link target:
https://www.boost.org/doc/libs/1_75_0/doc/html/interprocess/sharedmemorybetweenprocesses.html#interprocess.sharedmemorybetweenprocesses.sharedmemory.windows_shared_memory
Bit more discussion where Dave Korn suggests using Sys V IPC semaphores instead:
https://cygwin.com/pipermail/cygwin/2006-September/150304.html
which I believe requires running the cygserver daemon as a Windows service,
using cygrunsrv as a Windows elevated admin process, possibly in a scheduled
task at startup or logon.
--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple