Subject: operation modes

From: L J Clarke <[email-masked]>
Date: Mon, 19 Apr 93 14:45:01 BST

Dear mpi-pt2pt and mpi-collcomm colleagues,

I'm sending this to both subcommittees.  There is a section for pt2pt
and a section for collcomm, however these sections deal with an subject
which probably should be consistent across both subcommittees, hence I
send to both. 

                           o----------o
pt2pt
-----

Here is (yet another) suggestion which if adopted would help to reduce
the multiplicity of send calls.  In particular the multiplicity derived
from the three extant communication modes REGULAR (STANDARD?), READY and
SECURE (SYNCHRONOUS?). 

Observe that the send call in the case of each mode has the same syntax
class, unlike the multiplicity derived from data buffer nature.  The
suggestion is to have one send procedure which accepts a MODE argument
describing the communication mode, i.e.  is one of: REGULAR (STANDARD?);
READY; SECURE (SYNCHRONOUS?). 

This lets the MPI user make either local code decisions about which mode
is appropriate, by using the above names, or global code decisions by
use of #define in C and use of PARAMETER in Fortran (for example).

I also suggest that we say SYNCHRONOUS rather than SECURE, so as not to
give the impression that REGULAR (rather than STANDARD), is always not
secure, since it may be secure some of the time. 

I propose to the pt2pt subcommittee the suggestions made here.

                           o----------o

collcomm
--------

There is a class of collcomm procedures which we see may or may not
barrier synchronise the calling group.  The suggestion at the last
meeting was that users have to write code which allows such procedures
to barrier whereas they may not. 

The suggestion here is that those procedures which are not implicitly
barrier synchronising accept a MODE argument which determines whether
they certainly barrier synchronise, or whether they may or may not
barrier synchronize depending on the implementation.  This mode argument
is one of: REGULAR; SYNCHRONOUS.  Obviously I suggest that SYNCHRONOUS
is the mode which forces barrier synchronisation of the group. 

This is consistent with the pt2pt suggestion above, except that READY is
not a collcomm mode, and again lets the MPI user make either local code
decisions about which mode is appropriate, by using the above names, or
global code decisions by use of #define in C and use of PARAMETER in
Fortran (for example). 

I propose to the collcomm subcommittee the suggestions made here.

                           o----------o

Comments, questions, (flames :-) please.

Best Wishes
Lyndon

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: [email-masked]  | c||c 
         \--------------------------------------------------------/