Skip to content

Updated ABI generation code and new libraries #13280

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

hppritcha
Copy link
Member

@hppritcha hppritcha commented May 27, 2025

Two external MPI libraries are now created: libmpi.so and libmpi_abi.so.
Backend code that was originally in libmpi.la has been extracted into
libopen-mpi.la to be linked into both libraries.

Parts of the Open MPI C interface are now being generated by a python
script (abi.py) from modified source files (named with *.in). This
script generates files for both the ompi ABI and the standard ABI from
the same source file, also including new bigcount interfaces.

To compile standard ABI code, there's a new mpicc_abi compiler wrapper.
The standard ABI does not yet include all functions or symbols, so more
complicated source files will not compile. ROMIO must be disabled for
the code to link, since it's relying on the external MPI interface.

Many todos left:

  • switch over to using the canonical mpi.h header file
  • fix some remaining issues with types in the bindings framework
  • implement method for wrapping user callbacks so that they are passed abi versions of MPI handles
  • other

This PR supercedes #12033

jtronge and others added 2 commits May 27, 2025 09:43
Two external MPI libraries are now created: libmpi.la and libmpi_abi.la.
Backend code that was originally in libmpi.la has been extracted into
libopen-mpi.la to be linked into both libraries.

Parts of the Open MPI C interface are now being generated by a python
script (abi.py) from modified source files (named with *.in). This
script generates files for both the ompi ABI and the standard ABI from
the same source file, also including new bigcount interfaces.

To compile standard ABI code, there's a new mpicc_abi compiler wrapper.
The standard ABI does not yet include all functions or symbols, so more
complicated source files will not compile. ROMIO must be disabled for
the code to link, since it's relying on the external MPI interface.

Signed-off-by: Jake Tronge <jtronge@lanl.gov>
Implement lots of missing functionality in the original
api.py script.  The functionality is now part of the
bindings generation framework used for Big Count.

Number of todos still to do, in particular provide
support for wrapping user supplied callback functions.
Also, the sendrecv_replace, etc. code needs to be
refactored to work with the bindings framework.

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
to heed the --enable-abi-standard config option

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
@hppritcha hppritcha force-pushed the abi-generate-ver2 branch from d127224 to 8fbf968 Compare May 29, 2025 18:36
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
@hppritcha hppritcha force-pushed the abi-generate-ver2 branch from 8fbf968 to 29b1a2f Compare May 29, 2025 21:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants