General overview

Terminology

Some important terminology to help users understand the Melissa configuration:

  • client - an instance of the user code (i.e. the data-generator, typically a physics based code) instrumented to send data to the server. The number of client instances depends on the size of the user defined parameter space.
  • group - a job comprising multiple clients. This feature comes into play when Sobol indices are computed or when the group_size configuration option is set to a number greater than 1. Otherwise, group_size=1 and a client is equivalent to a group. Non-unit groups are submitted with OpenMPI MPMD launch mode or slurm heterogeneous jobs.
  • server - a single instance which collects and processes the data generated by the client. It instructs the launcher to submit new client instances with new parameter combinations.
  • launcher - a single instance which first submits a server job and then waits for instructions from it to submit client jobs. Jobs are submitted to the cluster scheduler and the launcher currently supports OAR, slurm, and OpenMPI.
  • study - the full process of launching parameter combinations -> data generation -> data collection -> data processing.

File structure overview

Melissa requires a set of configuration files which define various aspects of the user simulation:

  • <project-dir>/<config-file>.json
    • A JSON file which configures the parametric sweep of the data-generator, the data process and the launcher.
  • <project-dir>/<use-case>_server.py
    • A user inherited server class which typically sets all data treatment customization (e.g. DL training, environment configurations, etc.).

where <project-dir> is the user made folder structured similar to the existing examples/* folders.

File structure details

<config-file>.json

The configuration file defining the parametric sweep on the data-generator, the server-specific settings (e.g. training parameters) as well as the launcher settings.

For more information please refer to Configuring the study or to any example of <config-file>.json available in each example folder.

<use-case>_server.py

Users must include a custom-named file <use-case>_server.py in their <project-dir> folder. This file contains an inherited class which is used to customize as many or as few server functions as wished.

More information on how to configure this file are available in Inheriting the server object and examples are shown in the example folders.

Note

By default, the server implementation is expected to be provided by the class MyServer of the file <use-case>_server.py. The user can specify other location by setting, in the <config-file>.json, the variables server_filename and server_class.