MUSIC (multi-simulation coordinator) is a standard for run-time exchange of data between parallel applications in a cluster environment. The standard is designed specifically for interconnecting large scale neuronal network simulators either with each-other or with other tools. MUSIC provides mechanisms to transfer massive amounts of event information and continuous values from one parallel application to another including data transfer between applications that use different time steps and different data allocation strategies. Special care has been taken to ensure that existing simulators can be adapted to MUSIC.
For maximal portability, the software is written in C++. MUSIC also provides a C-interface, making it possible for applications written in C or FORTRAN to participate in a MUSIC multi-simulation.
MUSIC is built on top of MPI (Message Passing Interface) which allows it to run the different simulators. MUSIC provides means to allow each simulator to use MPI internally without interfering with the others. The primary requirements on an application using MUSIC is that it declares what data should be exported and imported and that it repeatedly calls a function at regular intervals during the simulation to allow MUSIC to make the actual data transfer.
In addition to the port types which handle continuous and spike event data, MUSIC provides message ports. Message ports allow for transmission of arbitrary messages of, for example, control information between applications. A multi-simulation may, for example, be controlled by a script running in a Python process on one of the cluster nodes. The script may use a message port to alter a parameter or turn on a stimulus in an application at a certain point in time.