-
Notifications
You must be signed in to change notification settings - Fork 2
Notes 2019 06 27
Marc-Andre Hermanns edited this page Jun 28, 2019
·
1 revision
- Andrew D'Angelo
- Chris Chambreau
- Josh Cottingham
- Marc-André Hermanns
- Dan Holmes
- Kathryn Mohror
- Jeff Squyres
-
Users may want to send more than 2 Billion elements of a given type
- Currently
count
is anint
- Not 'technically' a problem -> use derived datatypes
- Some collectives too difficult/impossible with derived dtypes
- Some users don't want to dive into dtypes
- Currently
-
133 functions affected
- MPI 3.0 already introduced some
_X
functions usingMPI_Count
- MPI 3.0 already introduced some
-
Don't want to mix types for different counts in same call
- Either all are
int
or all areMPI_Count
- Either all are
-
What happens if mixing small and big counts on sender/receiver types?
- Not a problem if type map is matching
-
This only needs to be fixed for C and Fortran
- What's with C++?
- It's rapidly diverging from C
- May not be practical in the future to
#include mpi.h
- What's with C++?
-
What are the options?
- no change
- Users will be upset
- change all counts to
MPI_Count
- Will brake codes
-
_X
approach- What about other changes?
- Combinatorial complexity?
- Function pointer approach?
- Interesting options
- Backwards compatibility unclear
- "Polymorphism" approach
- Use C11
_Generic
- User just calls
MPI_Send(...)
- Implementation provides two functions with distinct names
- If compiler is not C11, MPI_Count calls are disabled
- Use C11
- no change
-
C diverging from C++
- See Venn Diagramm on slide 18 of Jeff's presentation
-
Polymorphism approach would be a good first step of something larger
- C only bindings in standard
- All other (and more) bindings in other documents
- Represent MPI native to a specific language
-
Only update
f08
, but notf90
ormpi.h
-
Why is this relevant for tools
-
Function explosion: 400-ish more functions to intercepts
- 1x 133 for C interface
-
New C++ functions to intercept
- 2x 133 (int + MPI_Count)
-
New Fortran f08 functions
- 1x 133
-
Could be generated?
- C symbols are easy
- Fortran can to the same ISO binding trick
-
C++ Name Mangling may be a problem
- This is going to suck(tm)
- Have to use the same compiler the app is compiled with
- Only needed for 133
MPI_Count
functions - Can C++ wrapper code be reused for C wrapper?
- What happens if incompatible types slip into the API?
- Check out Froozle MPI
-
-
Maybe QMPI is solution to some of the Tool Problems here
- Not using symbol interceptions
- More callback-driven on functionality rather than functions