-
Notifications
You must be signed in to change notification settings - Fork 13
FabSim3 Design Document
Derek Groen edited this page Nov 14, 2018
·
6 revisions
FabSim3 is a software environment for automating complex computational research activities. In particular, it is focused on automating simulation-based workflows that rely on remote computational resources.
- Enable remote execution of jobs on supercomputers.
- Establish coupling between models using the workflow automation functionalities.
- Organize input, output and environment information, creating a consistent log and making it possible to repeat/reproduce runs.
- Providing support for ensemble calculations using a simple mechanism.
- Python 3.5 or later
- PyYaml
- Fabric version 1 (Python 3 version)
- Installation: any Linux or Mac-based desktop or laptop.
- Execution host: any Linux or Mac-based machine, including clusters and supercomputers. Aim to support cloud infrastructures in the near future.
FabSim3 is structured around four building blocks, the base toolkit ('base/' directory), the backends providing additional infrastructure capabilities ('backends/' directory), the primitives providing VVUQ functionalities ('primitives/' directory) and the plugins that allow custom-made and complex functionalities that rely on the first three building blocks ('plugins/' directory).
- Core FabSim3 functionality.
- May depend on primitives or backends, but should be able to be installable/runnable without.
- Customization: Not intended to be customized.
- Link to specific use cases.
- May not depend on other plugins, may depend on backends, base and primitives.
- Customization: Free to introduce new plugins, and mix and match existing ones (but plugins cannot be interdependent).
- Infrastructural
- May depend on other backends or base, but not on primitives, plugins.
- Hierarchical dependencies allowed, but should be avoided.
- Customization: Free to introduce new backends, and mix and match existing ones.
- Conceptual
- Hierarchical dependencies allowed.
- May depend on other primitives, but not on backends, plugins or base.
- Customization: Free to introduce new primitives, and mix and match existing ones. Strong requirement to avoid external dependencies and retain a strongly application-independent implementation for each primitive.
env.* variables in FabSim should prioritized as follows (bottom priority bottom, top priority top):
- Variables explicitly specified directly on the command-line (e.g.
cores
infab localhost dummy:dummy_test,cores=5
). - Defaults set in the FabSim command directly called on the command-line (e.g. a plugin-specific command).
- Defaults set in any FabSim command that is called underneath.
- Defaults that are loaded in by
deploy/machines.py
- Defaults loaded in through
machines_user.yml
- Defaults loaded in through
machines.yml
- Defaults loaded in through