Add Buffer type, improve Datatype handling #329
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This contains two related changes:
Defines a specific
Buffer
type, which contains the reference to the storage buffer, its count and datatype. This allows us to simplify the type signatures of various functions, ascount
anddatatype
no longer need to be arguments to the functions. This also adds default conversion methods forArray
s andSubarray
s (creating the derived datatypes where necessary, and determining the appropriatecount
s), and moves the point-to-point operations to use these conversions.Improves the handling of
Datatype
handles, by making them garbage-collected objects (like other MPI handles), moves lower-level functions to a submodule, defines consistent interfaces. Also fixes MPI crashing when buffer contains a reference tonothing
#327.I still need to move the collective calls over as well, however that will require more thought on how to handle the "chunked" operations like scatter/gather.
I also removed the inverse dictionary mappings from MPI Datatype -> Julia Type, as that is no longer so easy to determine.