Skip to content

Interacting with Simulations Architecture

Rob Nagler edited this page Oct 6, 2023 · 5 revisions

This document is a work in progress and will be updated as we re-work the architecture for interacting with simulations.

Interacting with simulations can take a few different forms. This document aims to help you understand each of the forms and when they should be used.

Many times a mode of interaction will overlap many forms. In that case use whichever form is the "lowest". The forms are ordered from highest (A) to lowest (D) below. For example, if you use forms (B) and (C) your interaction should use mode (C)

Ultimately, each mode will use a different API.

For case (C) the job may be run on NERSC/sbatch so it can have access to the runDirs there. For case (D) the job will run with the user selected mode (sequential, parallel, NERSC, etc). All other cases will be run as a single core "local" (docker or local process) agent.

(A) stateless compute

Purely functional/stateless (no interaction with the db) but requires access to the code.

(B) stateful compute

Read the lib directory but not connected to simulation

(C) analysis job

Read/write from existing runDir and/or runDir(s) of other simulations.

(D) compute job

Create a new runDir and write to it.

Clone this wiki locally