50 likes | 118 Views
Backward Compatibility WG. The Big Issue: Counts Larger Than 2 32. Counts are expressed as “ int ” / “INTEGER” Usually limited to 2 32 Propose a new type: MPI_Count Can be larger than an int / INTEGER “Mixed sentiments” within the Forum Is it useful? Or just lazy?.
E N D
The Big Issue:Counts Larger Than 232 • Counts are expressed as “int” / “INTEGER” • Usually limited to 232 • Propose a new type: MPI_Count • Can be larger than an int / INTEGER • “Mixed sentiments” within the Forum • Is it useful? Or just lazy? MPI_SEND(void *buf, int count, …) MPI_SEND(void *buf, MPI_Count count, …)
Do we need MPI_Count? YES NO Very few users “Syntactic sugar” for making a datatype Affects many, many MPI API functions Could just fix MPI_GET_COUNT Potential incompatibilities (32 and 64 bit MPI libraries) • Some users have asked for it • Trivially send large msgs. • No need to make a datatype • POSIX went to size_t • Why not MPI? • Think about the future: • Bigger RAM makes 232 relevant • Coalescing off-node msgs. • More cores, larger MPI jobs
Solutions proposed • Do nothing • Tell users “use datatypes” • New, duplicate functions • E.g., MPI_SEND_LARGE • Use MPI_Count only for new MPI-3 routines • Change C bindings • Rely on C auto-promotion • Only fix MPI IO functions • Where MPI_BYTE is used ✖ ✖ ✖ ✖ ✔ Ouch!! Confusing to users Not forward-looking Bad for Fortran Might be ok…?
Solutions proposed Forum has hated every proposal What about sizes, tags, etc.? • Only fix “query” functions • E.g., MPI_GET_COUNT_LONG • Create a system for API versioning • Update all functions to use MPI_Count • Update all functions to use MPI_Count, MPI_Tag, MPI_Size, … ✖ ✖ ✔ ✖ Might be ok…? Ouch!!