Skip to content
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

Support for tag metadata in one-sided communication #2

Open
omor1 opened this issue Apr 11, 2019 · 4 comments
Open

Support for tag metadata in one-sided communication #2

omor1 opened this issue Apr 11, 2019 · 4 comments

Comments

@omor1
Copy link
Member

omor1 commented Apr 11, 2019

After my meeting with @snirmarc earlier today, we came to the conclusion that it may be useful to add tags to the LCI one-sided communication calls. These are obviously not used for tag matching, but they are used to disambiguate between different puts or gets when using a handler or queue for completion.

This is helpful for implementing PaRSEC with LCI; their 'put' and 'get' calls use callbacks for completion on both the local and remote endpoints and need some mechanism to connect the callback to the particular communication that's being completed.

@omor1
Copy link
Member Author

omor1 commented Apr 11, 2019

As a side note, what would be the difference in terms of functionality of having a handler function versus having a completion queue and calling some function for each request? Other than the handler is invoked from within LCI and the function would be called by the user.

@danghvu
Copy link
Member

danghvu commented Apr 11, 2019

add tags to the LCI one-sided communication calls.

No problem, I already have this feature at some point.

As a side note, what would be the difference in terms of functionality of having a handler function versus having a completion queue and calling some function for each request? Other than the handler is invoked from within LCI and the function would be called by the user.

This is the only difference, and usually comes down to the drawback of active messages.

For example, since the handler is executed in the context of a LCI_progress invocation, the handler code cannot be so complex (possibly cannot call another LCI_progress, cannot be very long, cannot block, etc..).

A handler also means a function call, enqueue can be done in hardware, or a few instructions. Runtime with only AMs end up having people called functions just to enqueue data to the consumer tasks.

@omor1
Copy link
Member Author

omor1 commented Apr 14, 2019

Runtime with only AMs end up having people called functions just to enqueue data to the consumer tasks.

That's effectively what's being done with the way they've set up the PaRSEC communication engine layer. We should talk to them to figure out if we can get around that.

@omor1
Copy link
Member Author

omor1 commented Nov 19, 2019

I think we have this now?

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

No branches or pull requests

2 participants