Skip to content

external64 Data Representation #157

Open
@omor1

Description

@omor1

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

No one assigned

    Labels

    chap-datatypesDatatypes Chapter Committeempi-6For inclusion in the MPI 5.1 or 6.0 standard

    Type

    No type

    Projects

    Status

    To Do

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions