[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mpi-21] ABI (was: Call for MPI 2.2 and 3.0...)



On Dec 4, 2007, at 12:00 PM, Erez Haba wrote:

The feedback I am getting back from ISV’s is that the two most important issues for the C ABI are
1. Calling convention

I'm not sure what you mean by this...? The MPI API is the same in all MPI implementations.


2. Size of input parameters (e.g., what’s the size of MPI_Comm)

Isn't that kinda useless without standardized values for the pre- defined constants? :-)


It would be idle to define this across processor architectures, like x86, x64 etc. but it would be okay to define the ABI across OS/ Processor architecture. These two issues simplify ISV’s testing matrix,

No they don't! This is the Big Lie of an ABI. ISV's *STILL* need to test against every MPI implementation. Fine; you don't have to compile the application against each MPI implementation, and ISV's can have one executable that supports multiple MPI's -- I see the "win" in this. But ISV's still have to *test* the application against each MPI implementation. And that's the much more time-consuming step (vs. recompiling against each MPI).


If an ABI is inevitable, I would strongly opt for:

1. it is optional for an MPI implementation to support it (e.g., for the already-cited cases where ABI conformance doesn't make sense, and also for MPI implementations who simply choose not to support it). I.e., an MPI implementation can be "MPI conformant" and choose not to support the ABI.

2. provide a mechanism for MPI applications to optionally identify (at run-time) which MPI they are using (e.g., so that they can choose not to run, or display a warning that this MPI implementation has not been QA tested with the application, etc.)

and support ISV’s that are trying to dynamically bind to multiple MPI implementations.

I didn’t hear any ISV ask for unified binary name, and think that this would be unwise to do so. Having binaries clash with each other is a deployment nightmare.

This is my own ignorance here, but can you dynamically change the name of a shared library dependency in an executable? E.g., if MPI implementation A provides libmpi.so and MPI implementation B provides libAmpi.so, can you have a single executable that can shift between the two at run-time?


Re certification program, I think that it would be wise to have some mechanism to validate MPI implementations. It is necessary for validating that an implementation is actually implementing the standard. Test suite compliance result information would benefit implementers and users.
However, I am not sure that an ABI certification program is required at this time.


--
Jeff Squyres
Cisco Systems