llnl / llnl/RAJA

Wait/Test(some/any/all) for events ?

Open
#968 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

API/usability
Dominant language
C++
Stars
598
Forks
118
Avg merge
21h 29m
Merged PRs (30d)
1

Description

Individual events provided by async kernel launches have mechanisms to test/wait already, but if someone dispatches multiple kernels via forall and has multiple events related to those kernels, it doesn't seem like there is a mechanism provided (that I've located at least) to (a)synchronously poll a set of events for completion ( think MPI_Wait/Test(some/any/all) ).

For instance, launching multiple kernels to pack (workgroups might be preferable but there is an intermediate fix that needs to be made in our code to use those) information for halo exchange requires multiple events complete prior to initiating MPI sends.

I have implementations of the above that are analogous to the MPI async polling in our codebase for the above issue, porting these back into either RAJA (or CAMP, since the events returned from RAJA async foralls are camp objects) shouldn't be too difficult if people think they would be useful constructs to add.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing RAJA's async forall event APIs and the CAMP event objects returned by them, then compare the requested poll/wait-some/any/all behavior with the MPI analogy. The payload names no files or tests; the work is done when a scoped API location is agreed and the event-set completion behavior is implemented and verified.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
hpc
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.