Opened 5 years ago

Last modified 4 years ago

#1838 new bug

Fortran backward binary compatibility and 3rd party compilers

Reported by: blocksom Owned by: gropp
Priority: major Milestone: future
Component: mpich Keywords: ibm-integ
Cc: archerc@…

Description

These commits were not accepted into the mpich master branch.

The intent of this ticket is to document this difference between the internal ibm git repository and the top level mpich repository.

commit c51f89e7aec91065f3e6ce1e2f46871b11d9bf0c
Author: Charles Archer <archerc@us.ibm.com>
Date:   Sun Jan 27 22:07:24 2013 -0500

    Fortran module compatibility for 3rd party compilers
    
    (ibm) D197509
    (ibm) 2fe9feeeff88c1f5e89fbe0be314254ec4d104dd
    
    Signed-off-by: Charles Archer <archerc@us.ibm.com>

commit 7afcb7dd1bb39a6ea3a9c786b1cd78a1c709a810
Author: Charles Archer <archerc@us.ibm.com>
Date:   Sat Jan 5 11:10:54 2013 -0500

    Backward binary compatibility issues with Fortran
    
    If an executable is compiled against an older version of
    MPICH2 ( <= 1.2), the MPI constants are stored in
    common blocks priv1, priv2, and privc.
    MPICH2 > 1.2 stores each constant in it's own common block
    This implements backward binary compatibility by detecting
    the older common block layouts and arranging the pointers
    to the fortran constants:
    1)  dlopen "self" and check for the old common blocks
    2)  if found, doctor the pointers to point to the common
        blocks provided by the binary
        The old layout looks like this:
          COMMON /MPIPRIV1/ MPI_BOTTOM, MPI_IN_PLACE, MPI_STATUS_IGNORE
          COMMON /MPIPRIV2/ MPI_STATUSES_IGNORE, MPI_ERRCODES_IGNORE
          COMMON /MPIPRIVC/ MPI_ARGVS_NULL, MPI_ARGV_NULL
    This block of code can be removed when Intel and IBM
    are on the same release levels and Intel breaks backward
    binary compatibility
    
    (ibm) D188005
    (ibm) 2b81efbd33bb2c44d4dfe290f65d682e1d3195a6
    
    Signed-off-by: Bob Cernohous <bobc@us.ibm.com>

Attachments (2)

Change History (17)

comment:1 Changed 5 years ago by blocksom

See branch mpich-ibm/ticket-1838.

comment:2 Changed 5 years ago by balaji

  • Milestone set to mpich-3.1
  • Owner set to gropp

Fortran voodoo. Assigning to Bill.

comment:3 Changed 5 years ago by gropp

This might be ok, but the guarding ifdef name needs to be much more specific (e.g., include the version numbers to which this applies). That ifdef condition needs to be documented (where would the definition be set? What are the prereqs? Note that dlopen is required, so this cannot be used unless dlopen is available; this is not the case for Windows, for example.) There appears to be a change outside of the guarding ifdef; that's not ok (if I'm interpreting the two patches correctly - a single, combined patch would be more reliable and effective for review, so if there is a way to get that easily from git, I'd like to know).

comment:4 Changed 5 years ago by blocksom

  • Cc archerc@… added

I rebased the mpich-ibm/ticket-1838 branch to the latest mpich/master branch, squashed the two commits, and pushed the result to the mpich-ibm/ticket-1838-alt branch.

Charles Archer (CC'd) is the original author and can better answer your questions.

comment:5 Changed 5 years ago by blocksom

I rebased branch mpich-ibm/ticket-1838-alt to mpich/master.

comment:6 Changed 5 years ago by balaji

Charles: will you be providing an updated patch based on Bill's comments?

comment:7 Changed 5 years ago by blocksom

I deleted the old branch mpich-ibm/ticket-1838.

comment:8 Changed 5 years ago by balaji

  • Milestone changed from mpich-3.1 to future

Pushing this to "future". Needs an updated patch from IBM.

comment:9 Changed 5 years ago by blocksom

I rebased this to master, pushed as branch mpich-ibm/ticket-1838-alt2, and deleted branch mpich-ibm/ticket-1838-alt.

comment:10 Changed 4 years ago by blocksom

I rebased the code to the v3.1rc4 tag and deleted the old branch.

See mpich-ibm/ticket-1838-v3.1rc4.

comment:11 Changed 4 years ago by balaji

Is this still needed? The common blocks are all updated to be what we had in the past.

comment:12 Changed 4 years ago by blocksom

Sorry for the late reply, I missed your update somehow .. I'll go back and look at the original test case and see if it still fails on the mpich master branch. If not, then I agree that we can drop this commit.

comment:13 Changed 4 years ago by blocksom

Thanks, Pavan .. we have decided to drop this code contribution. Please close this ticket.

comment:14 Changed 4 years ago by blocksom

BTW .. I've deleted the mpich-ibm/ticket-1838-v3.1rc4 branch.

comment:15 Changed 4 years ago by balaji

I just talked to Charles and he seems to think that this is still needed to maintain backward compatibility with older IBM releases.

Note: See TracTickets for help on using tickets.