Project

General

Profile

Discussion of supported external interactions

At the startup of the MPI program (M boardreader executables, N eventbuilder executables, and P aggregator executables), all of the individual DAQ processes are in a state which corresponds to "uninitialized".

This page is intended to be a starting point for a discussion of how experimenters control data taking by sending commands to these processes.

Initialize

Is it true that the first external command that must be sent to the processes is "initialize"?

Do we agree that the configuration data can be broken down into at least three types:
  1. parameters that are used to make the interconnections between the processes (for example, the boardreader processes will need to know the MPI ranks of the eventbuilder processes in order to make the MPI connections) [Connection Configuration]
  2. parameters which are used to program and configure front-end hardware [Hardware Configuration]
  3. parameters which are used to configure behavior of the applications (for example, timeouts for long-running operations) [Application Configuration]

(All of these names are open for discussion, of course.)

Do we agree that these different types of configuration data have the following characteristics?
  • they are independent
  • they can be sent to the DAQ processes in one complete set at a well-defined point in the lifetime of a DAQ session, or they could be sent independently at different times
  • the Connection Configure operation must have taken place at least once before a run is started
  • the Hardware Configure operation must have taken place at least once before a run is started
  • the Application Configure operation must have taken place at least once before a run is started, and it may need to be done very early in the lifetime of a DAQ session
  • parts of the Application Configuration could be re-sent at any time (say when a run is paused)
  • the Connection Configuration should not be resent at any time since that would correspond to a reconfiguration of the MPI program and that should include a restart of the MPI program
  • the Hardware Configuration can be re-sent, but this should be done outside of a run

Sample Sequence

  1. Start up the MPI program (M+N+P processes)
  2. Send the Initialize command with the appropriate full set of configuration data to all M+N+P processes
  3. [optional] Re-send the Initialize command with a different Hardware Configuration to some number of processes
  4. [optional] Re-send the Initialize command with a different Application Configuration to some number of processes
  5. Send a Start command with the run number (to begin a run) to all M+N+P processes
  6. [optional] Send a Pause command to pause data taking to all M+N+P processes
  7. [optional] Send an Initialize command with Application Configuration data to some number of processes
  8. [optional] Send a Resume command to resume data taking to all M+N+P processes
  9. Send a Stop command to end the run to all M+N+P processes
  10. [optional] Re-send the Initialize command with a different Hardware Configuration to some number of processes
  11. [optional] Re-send the Initialize command with a different Application Configuration to some number of processes
  12. Send a Start command with the run number to begin a run to all M+N+P processes
  13. [optional] Send a Pause command to pause data taking to all M+N+P processes
  14. [optional] Send a Resume command to resume data taking to all M+N+P processes
  15. Send a Stop command to end the run to all M+N+P processes
  16. Send the ??? command to prepare the application for shutdown to all M+N+P processes