-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Parallelism within / between groups #270
Comments
I would like to update my proposal:
|
hi, I would like to work on this issue? |
I have talked with @ac-optimus on Slack about this issue and there are some good first steps that could be taken. Some suggestions for implementation:
|
@glotzerlab/signac-committers Other suggestions for implementation are welcome. @ac-optimus Since this is fairly complicated, I would like to see a small proposal for the work to be done (which parts of the code would be edited) before beginning a pull request. |
Calculating resources for this is non-trivial. How does this relate to #265 ? |
okay sure, will update you on this very soon! |
I think that this logic for directives aggregation should take two steps. We need to aggregate directives within a group according to serial or parallel, and after that we need to aggregate again with respect to the With respect to #265 @csadorf, maybe this issue is another reason to centralize this directives logic to reduce code surface area and the fact that the two aggregations are identical though different in scope. I could see the implementation of this more complete aggregation logic being the first step in addressing #265 by separating the logic from the |
Agreed, refactoring the directives logic must be the first step. |
And honestly, it should not be that hard. We just need to allow for customization by environments. |
So would the ability to aggregate directives be found in the |
Or at least it should be associated with a default entity. |
Yes, refactoring directives seems like a good place to start. (To clarify, the use of the word "aggregation" here in the context of determining resource requests over a set of flow groups is not related to the "aggregation" feature discussed in #52.) |
Feature description
tl;dr: We need a way to control parallelism within and between groups. Parallel operation within a group would be "intra-group" and parallel operation between groups would be "inter-group." This behavior would be controlled by the
--parallel
flag.Copied from Slack, adapted for brevity:
@bdice: I have two operations,
equilibrate
andsample
, in a group calledsimulate
. Currently only theequilibrate
jobs are eligible to run. I want to runequilibrate
and thensample
, parallelized across jobs (not parallel over both operations at the same time). That is, all jobs runequilibrate
and then runsimulate
when that's done. On submission, it is requesting enough resources to runequilibrate
andsample
simultaneously, instead of sequentially (while still being parallel over jobs). How do I parallelize across groups but operate sequentially within groups?@b-butler: The current implementation by design parallelizes across both jobs and operations since given only one flag there was not a way to specify only parallelizing part of the submission. We could implement more mutually exclusive flags or make
--parallel
have a default value.Proposed solution
Proposal for API from @csadorf:
--parallel=none
: No parallel execution, default when no option is provided.--parallel=inter
: Parallel execution across, but not within groups; default when only --parallel is provided.--parallel=intra
: Parallel execution within groups, but not across.--parallel=all
: Parallel execution within and across groups.The text was updated successfully, but these errors were encountered: