-
Notifications
You must be signed in to change notification settings - Fork 9
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
#2195: termination: make actions run consistently in a runnable #2196
Conversation
Pipelines resultsPR tests (clang-9, ubuntu, mpich) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (gcc-10, ubuntu, openmpi, no LB) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (gcc-12, ubuntu, mpich) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (gcc-9, ubuntu, mpich, zoltan, json schema test) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (clang-12, ubuntu, mpich) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (clang-13, ubuntu, mpich) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (clang-11, ubuntu, mpich) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (clang-14, ubuntu, mpich) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (gcc-8, ubuntu, mpich, address sanitizer) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (clang-10, ubuntu, mpich) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (gcc-11, ubuntu, mpich, trace runtime, coverage) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (intel icpc, ubuntu, mpich) Build for 4345027 (2023-10-03 14:40:25 UTC)
PR tests (nvidia cuda 11.2, gcc-9, ubuntu, mpich) Build for 4345027 (2023-10-03 14:40:25 UTC)
|
A test still needs to be written for this. |
} | ||
|
||
void TermAction::triggerAllEpochActions(EpochType const& epoch) { | ||
void TermAction::produceOn(EpochType epoch) const { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This isn't used anywhere
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is called from the function in term_action.impl.h
which can't call produce directly due to a header dependency.
} else { | ||
return triggerAllEpochActions(epoch); | ||
auto encapsulated_epoch = getCurrentEpoch(); | ||
theTerm()->produce(encapsulated_epoch); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we add a dependency between epoch and encapsulated_epoch? The runtime could detect circular dependencies that way and I think(?) it lowers the number of termination detection messages.
If we changed the order of handling an epoch finishing so that when epoch x finishes we inform dependent epochs only after enqueuing x's actions, we could also remove the explicit produce/consumes and just use epoch dependencies and runnables.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've created an issue to address this. Right now, this isn't quite possible due to how addDepenency is implemented. #2197
Fixes #2195