Skip to content

Latest commit

 

History

History
89 lines (73 loc) · 3.29 KB

composition.md

File metadata and controls

89 lines (73 loc) · 3.29 KB

Job Composition

EFFIS jobs are created used a YAML config file. These files are parsed by kittie-compose.py, which builds the job in the run directory (rundir) set in the file. kittie-submit submits the job (e.g. kittie-submit $rundir).

Here is an example I use for running Gray-Scott on my Mac.

jobname: gray-scott
rundir: /Users/eqs/Work/wdm/kittie-runs/gray-scott-2
installdir: /Users/eqs/Work/spack/spack/opt/spack/darwin-highsierra-x86_64/clang-10.0.0-apple/gray-scott-cpp-uirzllqphyp5b25ai2bc4hsf6t7lro7k

machine:
  name: local
  job_setup: "/Users/eqs/Work/wdm/kittie-wdm/machine-setups/setup.mac.sh"

run:

  gray-scott:
    path: ${installdir}/simulation/gray-scott
    args:
    - settings.json
    processes: 1
    processes-per-node: 1
    copy:
    - ${installdir}/settings/adios2.xml
    - ${installdir}/settings/settings.json

    groups:
      ConcentrationData:
        filename: ${rundir}/gray-scott/gs.bp
        engine: BPFile
        plot:
          U:
            image: U[28, :, :]
          V:
            image: V[28, :, :]

  pdf:
    path: ${installdir}/analysis/pdf_calc
    args:
    - ../gray-scott/gs.bp
    - pdf.bp
    - 100

    processes: 1
    processes-per-node: 1
    copy:
    - ${installdir}/settings/adios2.xml

    groups:
      ConcentrationData:
        engine: BPFile
      PDFData:
        engine:
          name: BPFile
          Substreams: 1
        filename: ${rundir}/pdf/pdf.bp
        plot:
          U-pdf:
            x: U/bins
            y: U/pdf[28, :]

The machine section is required. Possible names include local, summit, theta, and titan. job_setup is a script to source that runs before the actual codes start, like from a batch file if running through a scheduler.

The run section is where the codes to run are defined. path is where the executables live in the file system (make sure appropriate .kittie-setup.yaml / kittie-setup.nml is in same directory) and args specify any command line arguments for the them. The names gray-scott and pdf aren't special, they're just labels. Each code will run in its own directory under rundir, named by these labels. There are settings to indicate how many total processes to run, and how many are on each node. At the moment, node sharing between applications isn't turned on, but that's coming. Files are copied into the run directory with the copy lists.

groups is the section connected to the EFFIS names in the @effis pragmas. Each group is one that was tagged in the source code. Here one sets the ADIOS engine type -- which can be a simple string or a dictionary if the engine parameters need to be set. filename would take precedence over that set in the source code. plot triggers the automatic plotting. The labels U, V, U-pdf become the title of the plots. 1D (x vs. y) plotting and 2D (image) plotting is supported, where the quantities available to plot are those in the output EFFIS data. Slicing syntax is like numpy. Plots save to the kittie-plotter directory.

Users can define there own variables to use throughout the file, then dereferenced then with ${} syntax, for example as used with installdir. In fact, any key in the file can be dereferenced with ${}, and . then index into dictionaries. For example one could use something like ${machine}.name.