sim config - smcouch/SIMpliPy GitHub Wiki

creates a file: $PROJDIR/.sim/config with configuration info

Run job params

  • nodes/ranks/cores/threads/etc. These things will be machine-specfic and config should be aware
  • Run time
  • Any other options (email, etc.)
  • Basically, all job submission options.
  • Job naming scheme

Prototype directory

  • A manually configured "prototype" simulation will be placed in $PROJDIR/proto. This will be the basis for sim-configured simulations.
  • Data files in this directory will be flagged and only symlinked into actually simulation directories.

.sim/config file

  • starts the $SIMEDITOR to edit the config file
  • general format of the config file is pythonic? Why not?
  • simulation "families" specified by a #FAMILY name macro where name is the base name of the family. One (and only one) of the parameters should be an array of values with will be iterated over, like:
#FAMILY model
nblockx = 3
model_file = ['s15', 's20', 's40']

This would create a 3-simulation family with the names model/s15, model/s20, model/s40. Any parameters specified in the #FAMILY block will override the values in the proto directory.

  • For complete parameter sweeps use a #SWEEP name macro to denote a following block of text for parameters that will all be iterated over. For instance:
#SWEEP nblock$1_model$2
nblockx = [1,2,3,4]
model_file = ['s15', 's20', 's40']

would create a 12-simulation grid with names nblockx_1/s15, nblockx_1/s20,... Essentially 4 "families" of simulations.

  • How to handle data files such as tables and model files? Perhaps a centralized "repo" directory? Could be organized then use find to get the requested file's absolute path to feed to ln -s. Maybe. A special #DATAFILE macro could be used, i.e.,
#DATAFILE LS220_Flash.h5
#DATAFILE s20_1d.flash

Data files can also be family- or simulation-specfic if they are listed following a #FAMILY macro. Every #DATAFILE before the first #FAMILY or #SWEEP would be universal.

  • The binary file should be hashed and that hash should be logged for reproducibility! Need to think about how to update the binary when that is necessary... Maybe a special sim config command? Like sim config --update-binary. In sim config the binary will be specified.

  • After running sim config the first time, configuration should be "locked" somehow to prevent untracked changes.