[mpiwg-rma] ticket 456
Rolf Rabenseifner
rabenseifner at hlrs.de
Sat Aug 30 09:49:46 CDT 2014
Jeff,
great!
Several comments:
________
About your
https://github.com/jeffhammond/HPCInfo/blob/master/mpi/rma/shared-memory-windows/win_fence.c
line 48-50 (barrier + 2nd fence) are not needed.
fence on line 42 may be needed to guarantee that any initialization
is finished.
fence on line 52 seems to be also not needed:
- not according to #456
- not if substituting the store by a MPI_Put.
It would be only needed, if the load on line 51 would be a MPI_Get.
________
About your
https://github.com/jeffhammond/HPCInfo/blob/master/mpi/rma/shared-memory-windows/win_pscw.c
Line 17: I would recommend MPI_Abort
Lines 48, 50, 58, 59 are not needed.
Result:
46 if (rank==0) {
49 *shptr = 42;
52 MPI_Win_post(MPI_GROUP_ONE, 0, shwin);
53 MPI_Win_wait(shwin);
55 } else if (rank==1) {
56 int lint;
61 MPI_Win_start(MPI_GROUP_ZERO, 0, shwin);
62 lint = *rptr;
63 MPI_Win_complete(shwin);
This example would illustrate the write-read-rule of #456
(i.e. pattern with variable A)
A=val_1
Sync-to-P1 --> Sync-from-P0
load(A)
with
Sync-to-P1 --> Sync-from-P0
being
2. MPI_Win_post --> MPI_Win_start
This example would also work when substituting line 62
by MPI_Get.
All Patterns in #456 are based on corresponding
Patterns with MPI_Get and MPI_Put.
If this example does not work with an existing MPI libary,
then because it optimizes the synchronization away
because there are no RMA calls.
_________
About your
https://github.com/jeffhammond/HPCInfo/blob/master/mpi/rma/shared-memory-windows/win_sync.c
Perfect.
This example illustrates again the write-read-rule of #456
(i.e. pattern with variable A)
with
Sync-to-P1 --> Sync-from-P0
being
4. MPI_Win_sync
Any-process-sync-
-from-P0-to-P1 --> Any-process-sync-
-from-P0-to-P1 4)
MPI_Win_sync
_________
About your
https://github.com/jeffhammond/HPCInfo/blob/master/mpi/rma/shared-memory-windows/win_lock_exclusive.c
Perfect.
This example illustrates again the write-read-rule of #456
(i.e. pattern with variable A),
here the lock/unlock pattern with exclusive lock in P1.
_________
About your
https://github.com/jeffhammond/HPCInfo/blob/master/mpi/rma/shared-memory-windows/win_lock_shared.c
I would expect that it works,
but it is not based on a pattern that currently exists in #456.
This is a bug of #456.
The current wording
Patterns with lock/unlock synchronization:
Within passive target communication, two locks L1 and L2
may be scheduled L1 before L2 or L2 before L1. In the
following patterns, the arrow means that the lock in P0
was scheduled before the lock in P1.
is not good enough. It should read:
Within passive target communication, two locks L1 and L2
may be scheduled "L1 released before L2 granted" or
"L2 released before L1 granted" in the case
of two locks with at least one exclusive, or in the case of any lock with an
additional synchronization (e.g., with point-to-point or
collective communication) in between. In the
following patterns, the arrow means that the lock in P0
was released before the lock in P1 was granted, independent
of the method used to achieve this schedule.
In the patters itself, I'll remove the word "shared" and "exclusive".
A nice examlple would also be
Process P0 Process P1
A=0 B=0
MPI_Win_fence MPI_Win_fence
MPI_Win_lock MPI_Win_lock
exclusive exclusive
A=val_1 B=val_2
Bnew=load(B) Anew=load(A)
MPI_Win_unlock MPI_Win_unlock
The two rules write-read and read-write together
guarantee that either
- in P0 Bnew=0 and in P1 Anew=val_1
or
- in P0 Bnew=val_2 and in P1 Anew=0
But this is a combination of several basic rules in #456.
_________
In General:
#456 tries to define these 3*4 + 3 = 15 patterns,
which should be enough as far as I oversee,
plus two examples, 11.13 to show the translation of
the win_sync write-read-pattern and read-write-pattern
in real software, and 11.14 the pairing of memory barriers
without further synchronization between the processes.
Your test examples should be very helpful to test,
whether an MPI library fulfills these patterns
and to illustrate the compressed wording in #456.
Best regards
Rolf
----- Original Message -----
> From: "Jeff Hammond" <jeff.science at gmail.com>
> To: "MPI Forum" <mpiwg-rma at lists.mpi-forum.org>
> Sent: Friday, August 29, 2014 8:25:40 PM
> Subject: [mpiwg-rma] ticket 456
>
> Rolf,
>
> I find you pseudocode confusion, hence I am creating examples in C
> that I can compile and run. I will try to come up with a case for
> everyone of the examples in your ticket. See
> https://github.com/jeffhammond/HPCInfo/tree/master/mpi/rma/shared-memory-windows.
>
> Best,
>
> Jeff
>
>
> --
> Jeff Hammond
> jeff.science at gmail.com
> http://jeffhammond.github.io/
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpiwg-rma
>
--
Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner at hlrs.de
High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530
University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832
Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner
Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307)
More information about the mpiwg-rma
mailing list