-
Notifications
You must be signed in to change notification settings - Fork 0
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
Define MPI_ABI and remove MPI_ABI_VERSION #29
Conversation
Comment from @hzhou in favor of |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like it :)
okay i guess i'll update the latex tomorrow then |
@jeffhammond I did not say it explicitly, but then However, I still think we need the |
You need a runtime method to query the ABI (implementation)? I think that's fine. But maybe we can make it more general by returning a (registered) ABI enum (MPICH_ABI, OMPI_ABI, MPI_ABI)? |
Actually, just a boolean whether the ABI is supported or not. From there, with
I would love to have something that. I feel a bit uncomfortable hardwiring in the MPI standard the name of concrete implementations, but practicality beats purity. Not to mention that this may not age well if a brand-new implementation ever appears. Well, a brand new implementation would probably follow just MPI_ABI rather than supporting the standard MPI_ABI and a new brew of their own. Then the standard could advice that MPICH_ABI and OMPI_ABI are the legacy ABIs in widespread use at the time the ABI was proposed. We would just need need to iron-out the exact names and the wording to propose this. BTW, we cannot reuse the name |
Okay, so why |
Because a) that's not the primary purpose of that routines, and b) the way to encode ABI support would depend on how each implementation whats to dump that information in the library version string using a non-standard format.
Indeed, the name is confusing. It means that that particular library uses the MPI standard ABI. To put a concrete example centered around MPICH: if you Maybe a nicer approach is to consider
I think I'm really liking this one, it is a concrete refinement of Hui's previous proposal. |
#include <mpi.h>
#if defined(MPI_ABI_VERSION) && (MPI_ABI_VERSION >= 1)
#define MPI_ABI 1
#endif |
I'm opening this PR to discuss two somewhat separate but related concepts.
Define
MPI_ABI
macro#define MPI_ABI 1
if the implementation supports the ABI. This is what MPICH has implemented so far. This is also mpi4py is already taking advantage of. This PR the definition ofMPI_ABI
to the stubsmpi.h
.Remove
MPI_ABI_VERSION
andMPI_ABI_VERSION
MPI_ABI_(SUB)VERSION
tompi.h
as an unnecessary leakage of ABI details to the user.MPI_ABI_(SUB)VERSION
is ultimately useful, as the each MPI standard implicitly defines the backward compatibility guarantees from the set of added and removed symbols from each MPI standard release.