Filter async modes

Options for parallelism both in DART and in the model advances


Simplest case, async=0:
image1
This is a single MPI executable, with each call to the model being simply a subroutine call from each MPI task.
Parallel advance, async=2:
image2
The filter executable is one MPI program, and the model is a single, sequential executable. Each MPI task uses the unix “system()” call to invoke a shell script (advance_model.csh) which runs the models as independent programs.
Other views of how the async=2 option is structured; these may be more or less helpful.
Parallel advance, async=2:
image3
Parallel advance, async=2, second version:
image4
Parallel model advance, async=2, showing how data is communicated between filter and the model thru intermediate files. IC are ‘initial condition’ files, UD are ‘updated’ files.
image5
Parallel model advance, async=4:
image6
The filter executable is one MPI program, and the model is also an MPI program. The filter executable communicates with the runme_filter shell script, which sequentially invokes mpirun to advance each of the model runs, one per ensemble member, still using advance_model.csh.
Parallel model advance, async=4, showing how data is communicated between filter and the model thru intermediate files. IC are ‘initial condition’ files, UD are ‘updated’ files.
image7