General overview¶
Terminology¶
Here are some key terms to help users understand the Melissa configuration:
-
client
refers to an instance of the user code (e.g., thedata-generator
, typically a physics-based application) that is instrumented to send data to theserver
. The number ofclient
instances corresponds to the size of the user-defined parameter space. -
group
represents a job that comprises multipleclients
. This is applicable when Sobol indices are computed or when thegroup_size
configuration option is set to a value greater than 1. Ifgroup_size=1
, then aclient
is equivalent to agroup
. Whengroup_size
is greater than 1, non-unit groups are submitted usingOpenMPI
MPMD launch mode or asslurm
heterogeneous jobs. -
server
is a single instance that collects and processes data generated by theclients
. It also directs thelauncher
to submit newclient
instances with updated parameter combinations. -
launcher
is a single instance responsible for submitting theserver
job and, subsequently, following instructions from theserver
to submitclient
jobs. Thelauncher
interacts with the cluster scheduler and currently supportsOAR
,slurm
, andOpenMPI
. -
study
refers to the entire process, which includes launching parameter combinations, generating data, collecting data, and processing it.
File Structure Overview¶
Melissa relies on a set of configuration files that define various aspects of the user simulation. These include:
-
<project-dir>/<config-file>.json
AJSON
file that configures the parametric sweep of thedata-generator
, the data processing logic, and thelauncher
. -
<project-dir>/<use-case>_server.py
A user-defined server class that typically includes all customizations for data treatment (e.g., deep learning training, environment configurations, etc.).
Here, <project-dir>
refers to a user-created folder, which should follow a structure similar to the examples/*
directories included with Melissa.
Configuration Structure¶
The <config-file>.json
provides a flexible way to define configurations for the current study. However, it requires specific key: value
pairs tailored to the specific parent server class being used. Each server class expects different configurations depending on the type of study being conducted.
Configuration options¶
These options are required regardless of the server type. To understand each option in detail, execute:
server_filename
: The name of the file containing the user defined server. Assumed to be in the same folder as the config. Typestring
.server_class
: The class name of the user defined server inside theserver_filename
file. Typestring
.output_dir
: The output directory to write results and logs. If relative path, then it is assumed relative to theCWD
of themelissa-launcher
command. Typestring
.study_options
: A custom dictionary which is accessible inside theserver_class
for users to parameterize their studies. Typeobject
.server_config
: Special configuration for the server only. Typeobject
. Useful for specifying preprocessing commands before executing themelissa-server
command inserver.sh
script.client_config
: Special configuration for the client only. Typeobject
. Useful for specifyingexecutable_command
path to thedata-generator
as well as specifying preprocessing commands before running it inclient.*.sh
scripts.launcher_config
: Special configuration for the launcher only. Typeobject
. Useful for specifying batch scheduler configuration supported by Melissa. This option requiresscheduler
,scheduler_arg_client
,scheduler_arg_server
,job_limit
, andserver_timeout
.
Note
For better understanding, check out configuration files stored in the examples/
directory.