I think Serge is talking about compiling the application against one version of Open MPI, linking dynamically, then running against another version of Open MPI. Since it's dynamically linked, the ORTE/OMPI interactions are covered (the version of mpirun, libopen-rte, and libmpi all match). The question of application binary compatibility can generally be traced to a couple of issues:

  - function signatures of all MPI functions
  - constants in mpi.h changing
  - size of structures due to the bss optimization for globals

I can't remember when we changed function signatures last, but it probably has happened. They may be minor enough to not matter, and definitely wouldn't be in the usual set of functions people use (send,recv,wait, etc.)

The constants in mpi.h have been pretty steady since day 1, although I haven't checked when they last changed.

The final one actually should be ok for going from later versions of Open MPI to newer versions, as the structures in question usually grow and rarely shrink in size.

In other words, it'll probably work, but no one in the group is going to say anything stronger than that.

Brian

On Mon, 27 Apr 2009, Ralph Castain wrote:

It's hard for me to believe that would work as there are fundamental
differences in the MPI-to-RTE interactions between those releases. If it
does, it could be a fluke - I personally would not trust it.

Ralph

On Mon, Apr 27, 2009 at 12:04 PM, Serge <sk...@ap.smu.ca> wrote:
      Hi Jeff,

      > That being said, we have fixed this issue and expect to
      support binary
      > compatibility between Open MPI releases starting with
      v1.3.2 (v1.3.1

      As far as I can tell from reading the release notes for
      v1.3.2, the binary compatibility has not been announced yet.
      It was rather a bug fix release. Is it correct? Does it mean
      that the compatibility feature is pushed to later releases,
      v1.3.3, 1.3.4?

      In my original message (see below) I was looking for advice
      as for a seamless transition from v1.2.x to v1.3.x in a
      shared multi-user environment.

      Interestingly enough, recently I noticed that although it's
      impossible to run an application compiled with v1.2.x under
      v1.3.x, the opposite does actually work. An application
      compiled with v1.3.x runs using Open MPI v1.2.x.
      Specifically, I tested an application compiled with v1.3.0
      and v1.3.2, running under Open MPI v1.2.7.

      This gives me a perfect opportunity to recompile all the
      parallel applications with v1.3.x, transparently to users;
      and then switch the default Open MPI library from v1.2.7 to
      v1.3.x, when all the apps have been rebuilt.

      The problem is that I am not 100% sure in this approach, even
      having some successful tests done.

      Is it safe to run an application built with 1.3.x under
      1.2.x? Does it make sense to you?

      = Serge


      Jeff Squyres wrote:
            Unfortunately, binary compatibility between Open
            MPI release versions has never been guaranteed
            (even between subreleases).

            That being said, we have fixed this issue and
            expect to support binary compatibility between
            Open MPI releases starting with v1.3.2 (v1.3.1
            should be released soon; we're aiming for v1.3.2
            towards the beginning of next month).



            On Mar 10, 2009, at 11:59 AM, Serge wrote:

                  Hello,

                  We have a number of applications
                  built with Open MPI 1.2 in a shared
                  multi-user environment. The Open MPI
                  library upgrade has been always
                  transparent and painless within the
                  v1.2 branch. Now we would like to
                  switch to Open MPI 1.3 as seamlessly.
                  However, an application built with
                  ompi v1.2 will not run with the 1.3
                  library; the typical error messages
                  are given below. Apparently, the type
                  ompi_communicator_t has changed.

                  Symbol `ompi_mpi_comm_null' has
                  different size in shared object,
                  consider re-linking
                  Symbol `ompi_mpi_comm_world' has
                  different size in shared object,
                  consider re-linking

                  Do I have to rebuild all the
                  applications with Open MPI 1.3?

                  Is there a better way to do a smooth
                  upgrade?

                  Thank you.

                  = Serge

      _______________________________________________
      users mailing list
      us...@open-mpi.org
      http://www.open-mpi.org/mailman/listinfo.cgi/users




Reply via email to