General overview¶
Terminology¶
Here are some key terms to help users understand the Melissa configuration:
-
clientrefers 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 ofclientinstances corresponds to the size of the user-defined parameter space. -
grouprepresents multipleclients. This is applicable when Sobol indices are computed or when thegroup_sizeconfiguration option is set to a value greater than 1. Ifgroup_size=1, then aclientis equivalent to agroup. Whengroup_size > 1, then sobol-caching is used for storing data coming from multiple clients of agroupbefore computing Sobol results. -
serveris a single instance that collects and processes data generated by theclients. It also directs thelauncherto submit newclientinstances with updated parameter combinations. -
launcheris a single instance responsible for submitting theserverjob and, subsequently, following instructions from theserverto submitclientjobs. Thelauncherinteracts with the cluster scheduler and currently supportsOAR,slurm, andOpenMPI. -
studyrefers 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
AJSONfile 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_filenamefile. Typestring.output_dir: The output directory to write results and logs. If relative path, then it is assumed relative to theCWDof themelissa-launchercommand. Typestring.study_options: A custom dictionary which is accessible inside theserver_classfor users to parameterize their studies. Typeobject.server_config: Special configuration for the server only. Typeobject. Useful for specifying preprocessing commands before executing themelissa-servercommand inserver.shscript.client_config: Special configuration for the client only. Typeobject. Useful for specifyingexecutable_commandpath to thedata-generatoras well as specifying preprocessing commands before running it inclient.*.shscripts.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.