Description
Problem
The only external data representation define in MPI-3.1 is "external32". This is fine for ILP32 machines, but can have issues on LP64 platforms, as MPI_LONG and MPI_UNSIGNED_LONG are defined as 4 bytes, leading to loss of data.
(Note that technically the "external32" is an LLP64 definition, as pointers and counts are 8 bytes in length. Microsoft Windows uses LLP64 on 64-bit platforms, but most Unices and Unix-like systems use LP64. I'm fairly certain that the vast, vast majority of MPI users are on the latter rather than the former.)
Proposal
Add "external64" data representation, identical to "external32" except that the length of MPI_LONG and MPI_UNSIGNED_LONG is 8 bytes. Additionally, add "external64" as a supported data representation for canonical MPI_PACK and MPI_UNPACK.
Changes to the Text
Section 13.5 will need a new subsubsection defining "external64". Section 4.3 will need to be clarified that "external64" is also a valid external data representation.
Impact on Implementations
Implementations will need to implement "external64" as a data representation.
Impact on Users
Users can safely store long
and unsigned long
in files or buffers using a standard data representation. Existing users are unaffected; this is a purely additive change.
Metadata
Metadata
Assignees
Type
Projects
Status