[Mpi3-bwcompat] Notes from ATL Forum meeting

Jeff Squyres jsquyres at [hidden]
Fri Jan 22 12:50:30 CST 2010



We had a lively meeting in ATL for the backwards compatibility issues.  I took a set of slides from Dave, beefed them up a bit with my own and a bunch of Quincey's thoughts, presented them, and took some of the feedback from the session and put it back in the slides before posting them here (I was rushed a bit when making the slides; they were a little unclear on some points):

    http://meetings.mpi-forum.org/secretary/2010/01/slides.php

We had a good 1.5-2 hour discussion on the whole set of issues.  The exact discussion isn't important; here's the key takeaways (also on the wiki: https://svn.mpi-forum.org/trac/mpi-forum-web/wiki/BackCompatMeetings):

 * A strong technical case has been made to allow >2B counts for all
   the MPI I/O functions (e.g., MPI_File_write).  Rationale:
   1. it is common to use MPI_BYTE when accessing files because you
      need to know when bytes (not elements) hit disk (Quincey can
      explain more)
   1. files larger than 2B bytes are quite common these days

 * A strong case has ''not'' been made for any other set of MPI
   functions (MPI_Send, etc.).  There were people in the room who felt
   ''very strongly'' that:
   1. only a very small number of people are asking for this
   1. some argue that you shouldn't be sending more than 2B items over
      (today's) networks anyway
   1. if you really want to send more than 2B items, you can make a
      trivial datatype for it

   '''NOTE:''' the door is not shut to allow large counts for the rest
   of MPI, but no one has made a compelling technical case that we
   ''need'' to do it.

 * We will allow large counts in C bindings for MPI_File functions by:
   * Create a type named MPI_Count.  The MPI spec will not define the
     size of the type; it's just an integer of some size.
   * Preserve existing functions with int count parameters (e.g.,
     MPI_File_write).
   * Make new functions with a suffix (e.g., MPI_File_write_L -- exact
     suffix TBD) that take MPI_Count count parameters.
   * Note that some non-IO-related functions will also need to be
     extended (e.g., MPI_Get_elements --> MPI_Get_elementsL).  There
     may need to be a new error class defined (e.g., MPI_ERR_OVERFLOW)
     for the case when MPI_Get_elements is called and the answer is
     more than 2B.

   With this approach, existing MPI codes continue to work fine.  They
   will need to be modified to use large counts.  

   '''NOTE:''' This sets a precedent to "extend" with new functions
   if we do this to other parts of MPI someday (e.g., MPI_SendL).
   But it is not necessarily a binding principle for future Forum
   decisions.

 * What to do about the C++ bindings?  Nothing -- C++ has been
   deprecated.  Specifically: nothing new will happen to C++ bindings
   in MPI-3.

 * What to do about the proposed MPI-3 explicit Fortran bindings (the
   so-called "F03 bindings")?  We could use function overloading and
   forego the suffix approach that is necessary in C.  But this was
   deemed to be a bad idea -- it seemed better to keep function name
   parity with C.  So have both an MPI_File_write with int count and
   MPI_File_writeL with MPI_Count count in the "F03" bindings.

 * What about the F90 bindings?  This is a harder question.  

   '''NOTE:''' There was no resolution on this from the ATL meeting.  I'm slowly
   coming to the opinion that we should deprecate the F90 bindings
   because they're so broken.

 * What about the existing implicit Fortran interface (i.e., mpif.h)?
   Do we add large count capabilities to it?  Do we add any other
   MPI-3 capabilities to it?  Or should we push users to the new
   explicit Fortran interface ("use mpi3")?  There was no consensus in
   the room about what to do here -- it seems like we need to pose
   these questions to a larger set of audiences.  There is a spectrum
   of 4 choices:
   1. Deprecate mpif.h -- ''not'' remove it, of course.  This strongly
      encourages Fortran MPI developers to move to "use mpi3".
   1. Don't deprecate, but don't add any MPI-3 things to mpif.h.  This
      is only slightly less-strong than a); it's really a PR move so
      that some people don't freak out at the word "deprecate".
   1. Add all of MPI-3 ''except'' large counts to mpif.h.
   1. Add all of MPI-3 ''including'' large counts to mpif.h.

   There were strong feelings for each of these options in ATL (even
   a) -- the rationale being that there ''are'' no Fortran 77 compilers
   any more, and there haven't been for many years.  Even the
   J3/Fortran language committee thinks we're crazy for continuing to
   maintain the mpif.h implicit interfaces).  So these questions need
   to go out to a larger group to think about what we should do here.

   '''NOTE:''' I sent these questions to the MPI3 Fortran WG mailing
   list last night.  We'll see where the discussion goes.

 * Finally, there is the question of what we should do for new MPI-3
   functions that have a count argument (e.g., MPI_Ibcast).  There are
   two options:
   1. Have MPI_Ibcast with an int count and an MPI_IbcastL with an
      MPI_Count count argument.
   1. Have only MPI_Ibcast with an MPI_Count count argument.

   '''NOTE:''' This came up right at the end and there was virtually
   no discussion about it.  I'm personally leaning towards b) here --
   new API functions should use our latest/greatest conventions.


-- 
Jeff Squyres
jsquyres_at_[hidden]




More information about the Mpi3-bwcompat mailing list