[Mpi3-ft] Piggybacking API
Greg Bronevetsky
bronevetsky1 at llnl.gov
Wed Apr 23 14:08:16 CDT 2008
>That helps a little except for the fact that the spec is the spec and
>the APIs will be documented
>and available for all to see. I also believe that most general purpose
>MPI libraries will be aiming
>to support the full specification. So subsetting will not be a complete
>hall pass to ignore the PB
>calls nor would I recommend ignoring them.
>
>Note, I was just wondering if there was a different way to support this
>feature than doubling the
>amount of send apis.
There are two types of complexity: API complexity and implementation
complexity. Increasing the number of MPI calls relates to both but
does not correlate exactly. The inclusion of collective communication
increases both types of complexity. However, the inclusion of the
PMPI functions doubles the number of function calls in the API but
has minimal impact on both types of complexity. The piggybacking API
is really aimed to increase implementation complexity a little by
addressing a real need out there that is not served by current MPI
implementations. Regardless of how we expose this new implementation
complexity to users, we do need this new capability. Given that, the
major goal becomes: how to expose this to users in a way that
minimizes API complexity.
To this end, I think that we need to break the API up into two
components: user API and tool API. The user API makes up the bulk of
the spec and represents the portions of the spec that are meant to be
used by regular application developers. The tool API in MPI 2 is
essentially the PMPI interface. However, I am hoping that it will
grow to include the piggybacking API as well as the idea that every
non-local blocking MPI function call should have a corresponding
non-blocking variant. Seen in this light, the new additions have a
minimal impact on the complexity of the API: they simply represent
new points where tools can intercept and adjust the activities of
user API functions. For example, PMPI+piggybacking can be used by
tools to attach control information to application communication and
PMPI+nonblocking can be used to allow any tool to perform its own
synchronization without worrying that it will cause deadlock with the
application's communication. In this sense it doesn't matter if we
duplicate every call in the spec because this duplication is only
visible to tools and can be implemented fairly easily because each of
these APIs have only a single key feature that needs to be replicated
across many MPI calls. In this sense the duplication associated with
the tool API is closely related to aspect-oriented programming.
In short, I believe that function call duplication associated with
additions to the tool API is a natural part of how any tool API would
operate. Because each new duplicated function represents a new tool
attachment point for the same capability, rather than a new
capability, this duplication represents minimal increases in API and
implementation complexities. The primary complexity is in
implementing the new required functionality and is thus, a tool
complexity and not an API complexity.
Greg Bronevetsky
Post-Doctoral Researcher
1028 Building 451
Lawrence Livermore National Lab
(925) 424-5756
bronevetsky1 at llnl.gov
More information about the mpiwg-ft
mailing list