Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Correction of how dependency ordering happens during study constructi…
…on. (#97) Introduces the ability to specify new types of dependencies and corrects study construction. This PR introduces a bug fix for a problem that's persisted for a while -- previously study construction would use a BFS spanning tree to attempt to construct the ExecutionGraph but that implementation fell short because BFS does not guarantee all parents are visited before their children. That meant that multi-step dependent study steps would fail. This bug fix now makes it so that Maestro uses a topological sort in order to construct the study which guarantee all ancestors of a step will be visited before attempting to construct the step. Additionally, this PR also introduces different types of dependencies to nodes. The major addition is the creation and specification of the "_*" or "*" dependencies which we call "parameter independent" dependencies. The notation represents dependencies where a step requires that all combinations of another step have completed (or it waits to funnel all combinations into the step). Because these steps don't make use of the parameters for a dependency, they are not parameterized based on them (because they only want the resulting combinations). * Addition of topological sorting to the DAG. * Correction to the construction of a linear study. * Tweak to check for node/proc values instead of existence. * A correction to additional kwargs for SLURM. * Checkpoint #1 -- reimplementation of parameterization. * Addition of hub case code. * Complete rework of parameterized expansion * Moved make_safe_path to general utils. * Tweaks and some bug fixes. * Correction to logging bug. * Addition of topological sorting to the DAG. * Correction to the construction of a linear study. * Tweak to check for node/proc values instead of existence. * A correction to additional kwargs for SLURM. * Checkpoint #1 -- reimplementation of parameterization. * Addition of hub case code. * Complete rework of parameterized expansion * Moved make_safe_path to general utils. * Tweaks and some bug fixes. * Correction to logging bug. * Addition of topological sorting to the DAG. * Correction to the construction of a linear study. * Tweak to check for node/proc values instead of existence. * A correction to additional kwargs for SLURM. * Checkpoint #1 -- reimplementation of parameterization. * Addition of hub case code. * Complete rework of parameterized expansion * Moved make_safe_path to general utils. * Tweaks and some bug fixes. * Correction to logging bug. * Checkpoint #1 -- reimplementation of parameterization. * Tweaks and some bug fixes. * Rework of where OUTPUT_PATH is defined. * Tweaks and refactors to fix bugs and other small items. * Updates to samples to conform to new mechanics. * Added tweaks to handle workspaces for funnels. * Removal of a missed print statement. * Updates to how dependencies are checked to account for _* * Tweak to make use of new dependency map to avoid iteration. * Updates to add a funnel step to samples. * Tweaks that put linear steps into their own workspaces. * Added different flavors of funnel steps to samples. * Echo messages to document some nomenclature.
- Loading branch information