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 forsim
-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 wherename
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 toln -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? Likesim config --update-binary
. Insim config
the binary will be specified. -
After running
sim config
the first time, configuration should be "locked" somehow to prevent untracked changes.