Skip to content

v5.0.x: OSC rdma patches #9961

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Feb 3, 2022
Merged

Conversation

awlauria
Copy link
Contributor

@awlauria awlauria commented Feb 3, 2022

Port of #9835, #9904 and #9932

bwbarrett and others added 6 commits February 3, 2022 09:52
Add ofi to the list of btls that do not need to verify connectivity,
since the most common use case of OFI does provide this property.

Rename the list of btls with full connectivity from
ompi_osc_rdma_btls to ompi_osc_rdma_full_connectivity_btls to make
it a little more clear what the list represents.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit 2e4d3a0)
When the rdma and pt2pt onesided components both existed, there was
a use case for lowering the priority of the RDMA component when
certain MTLs are in use.  With the pt2pt component removed, this
is dead code.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit 9c74047)
With the removal of the pt2pt component, there's really not an
advantage to having 2 levels of priority (depending on whether
we have a true rdma btl or emulated), so go with a single priority.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit cc2f5ef)
The RDMA OSC component requires remote completion for its
synchronization algorithms to work properly.  This is phase one of two
to handle BTLs which do not provide remote completion.

This patch requires "accelerated" BTLs to support remote completion.
Accelerated BTLs are those which can communicate with all peers in the
Window (so multiple BTLs per Window are not used), natively provide
the required put/get/atomic operations, and which can register suitable
memory for the window's communication.

Signed-off-by: Wei Zhang <[email protected]>
Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit fcd215d)
No functional changes (an initialization was reordered to make
documentation easier), but add documentation about BTL selection
behavior.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit e509302)
Skipping the over-optimization of supporting a BTL that can talk
native RDMA to everyone but self (we don't have one of those today)
allows a large simplification of the accelerated BTL selection on the
OSC RDMA component.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit e0a5b8d)
@awlauria awlauria added this to the v5.0.0 milestone Feb 3, 2022
bwbarrett and others added 7 commits February 3, 2022 10:02
Remove the type-specific implementation of min in the btl
active message code and use opal_min instead.  While this loses
type safety in the general case, most compilers used in development
support C generics, so we'll still get type safety checks.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit fe3b925)
Rename internal functions in the btl am-rdma code to be consistently
prefixed by am_rdma_.  Previously, there was a mixture of prefixes,
all of which were unnecessarily long for private functions.  There
is no external-visible change in this commit.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit 3f8d80f)
Disable the underlying flush() call when using the am-rdma interfce.
The current code does not properly handle flushing between the
am-rdma and underlying code properly, so it is quite easy to end
up with flush not behaving the way users expect.  Since there
are currently no callers that rely on a btl having both flush and
am-rdma interfaces, explicitly disable the case for now.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit 6b8887c)
Add per-btl storage for the am-rdma interface, allowing the interface
to make one-time decisions about whether or not to use the underlying
put/get interfaces.  This is a necessary step in allowing users of the
am-rdma interface to require different semantics (completion,
registration, etc.) than what is natively provided by the BTL.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit adcb2a1)
Add a mode for the am-rdma interface where the existing BTL is
not updated, but the wrapper functions are exported directly
to the caller.  This interface allows for specifying required
flags (although REMOTE_COMPLETION is the only one supported today)
and disabling memory registration requirements for the returned
interface.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit 0475fe9)
The front end functions for am-rdma atomic operations only allow
a 4 or 8 byte atomic.  Add an assert on the progress function
that the received size is less than a uint8_t can hold before
assignment from a size_t.

Signed-off-by: Brian Barrett <[email protected]>
(cherry picked from commit 341f164)
Signed-off-by: Austen Lauria <[email protected]>
(cherry picked from commit 45cd218)
@awlauria awlauria force-pushed the osc_rdma_cleanups_v5.0.x branch from a5c0fcf to a63fdb7 Compare February 3, 2022 15:02
@awlauria awlauria changed the title v5.0.x: OSC rdma/btl sm patches v5.0.x: OSC rdma patches Feb 3, 2022
@gpaulsen gpaulsen merged commit 012fa99 into open-mpi:v5.0.x Feb 3, 2022
@awlauria awlauria deleted the osc_rdma_cleanups_v5.0.x branch February 3, 2022 16:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants