Skip to content

Conversation

simonbyrne
Copy link
Member

This defines an AbstractRequest interface, and allows passing Request objects as arguments to Isend/Irecv in order to minimize allocations (as a potential solution to #645).

  • MultiRequest which is essentially a vector-form Request object, but stored in the correct format.
  • MultiRequestItem which is a view into a single element of a MultiRequest.
  • UntrackedRequest/UntrackedMultiRequest which are variants that don't maintain a reference to the buffer.

@simonbyrne simonbyrne requested a review from vchuravy November 5, 2022 23:05
@simonbyrne simonbyrne force-pushed the sb/multirequest branch 2 times, most recently from 8516eda to 9b0b793 Compare November 22, 2022 00:27
@simonbyrne simonbyrne force-pushed the sb/multirequest branch 2 times, most recently from f543c96 to e7e6a20 Compare December 20, 2022 21:37

# abstract element type to work around lack of cyclic type definitions
# https://github.com/JuliaLang/julia/issues/269
abstract type AbstractMultiRequest <: AbstractVector{AbstractRequest}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What did you want to define orginally? I don't see the mutually recursive behavior.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the element type will really be MultiRequestItem{MR} where MR is the subtype of AbstractMultiRequest

@simonbyrne simonbyrne merged commit 8063a5e into master Dec 24, 2022
@simonbyrne simonbyrne deleted the sb/multirequest branch December 24, 2022 22:35
@giordano giordano linked an issue Dec 25, 2022 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Request objects and Waitall! allocations
2 participants