Skip to content

MTL OFI: send/isend split into blocking/non-blocking paths #5504

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 1 commit into from
Aug 13, 2018
Merged

MTL OFI: send/isend split into blocking/non-blocking paths #5504

merged 1 commit into from
Aug 13, 2018

Conversation

rhc54
Copy link
Contributor

@rhc54 rhc54 commented Aug 1, 2018

-Updated blocking send to directly call functionality and
set completion events expected to 0 initally. This allows for optimization for
providers that support fi_tinject up to larger sizes. This also reduces
latency on running the OFI mtl with smaller sizes without requiring
calls to progress given fi_tinject is required to complete the messaging
before returning and will not create any events in the Completion Queue.

-Updated non-blocking send to directly call fi_tsend and avoid calling
fi_tinject as the functionality should not wait on completions. This
resolves a bug where applications calling MPI_Isend can overrun the
TX buffer with small (inject) messages causing a deadlock. In addition
this improves performance in message rates by preventing
waiting on any size message to complete in non-blocking send messages.

-Created common ompi_mtl_ofi_ssend_recv function to post the ssend recv
which is common between isend and send code paths.

Signed-off-by: Spruit, Neil R [email protected]
(cherry picked from commit 7dc8c8b)

@rhc54 rhc54 added the bug label Aug 1, 2018
@rhc54 rhc54 added this to the v4.0.0 milestone Aug 1, 2018
@rhc54 rhc54 self-assigned this Aug 1, 2018
@rhc54 rhc54 requested a review from hppritcha August 1, 2018 13:39
-Updated blocking send to directly call functionality and
set completion events expected to 0 initally. This allows for optimization for
providers that support fi_tinject up to larger sizes. This also reduces
latency on running the OFI mtl with smaller sizes without requiring
calls to progress given fi_tinject is required to complete the messaging
before returning and will not create any events in the Completion Queue.

-Updated non-blocking send to directly call fi_tsend and avoid calling
fi_tinject as the functionality should not wait on completions. This
resolves a bug where applications calling MPI_Isend can overrun the
TX buffer with small (inject) messages causing a deadlock. In addition
this improves performance in message rates by preventing
waiting on any size message to complete in non-blocking send messages.

-Created common ompi_mtl_ofi_ssend_recv function to post the ssend recv
which is common between isend and send code paths.

Signed-off-by: Spruit, Neil R <[email protected]>
(cherry picked from commit 7dc8c8b)
@rhc54 rhc54 changed the title Update OFI MTL component MTL OFI: send/isend split into blocking/non-blocking paths Aug 1, 2018
@hppritcha hppritcha merged commit 7b6a2da into open-mpi:v4.0.x Aug 13, 2018
@rhc54 rhc54 deleted the cmr40/ofi branch September 21, 2018 13:10
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.

3 participants