Add a mechanism to reset the default task spawn order #136
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add
qthread_reset_target_shep()
, which resets the shepherd that tasks created withNO_SHEPHERD
get spawned to. This is useful in Chapel for cases where we want to use the default spawn location, but get good NUMA affinity between data parallel loops sepreated by some other task spawn.Just using the
qthread_fork_to
API would disable future stealing, so this is a mechanism to get tasks in consecutive data parallel loops to spawn to the same shepherds without preventing stealing.This was originally done in chapel-lang/chapel#12868, which includes some perf results. At the time I expected we'd update our shim to use
qthread_fork_to
, but had not considered the work-stealing implications at the time.