MUSIC, the MUltiSimulation Coordinator
C++ Python Shell Makefile M4 C Other
Latest commit 8e0a609 Nov 19, 2016 @nash169 nash169 committed with mdjurfeldt Change OpenGL header path
Add conditional to account for different OpenGL header path on macOS.
Permalink
Failed to load latest commit information.
debian Initial commit from svn multiconn branch Jun 3, 2015
doc Initial commit from svn multiconn branch Jun 3, 2015
examples Initial commit from svn multiconn branch Jun 3, 2015
extras Change lucnher target name to musicrun Sep 14, 2016
mpidep Initial commit from svn multiconn branch Jun 3, 2015
music-config Added config.py which was omitted due to promiscuous .gitignore. Jul 15, 2015
pymusic-old Initial commit from svn multiconn branch Jun 3, 2015
pymusic Fixed wrong conversion from pickled bytearray to str in MessageCallba… Feb 24, 2016
ros Added copyright notices and fixed indentation. Oct 18, 2016
rudeconfig Initial commit from svn multiconn branch Jun 3, 2015
src Merge pull request #30 from mdjurfeldt/patch-1 Sep 14, 2016
testsuite Don't break build if configured with --disable-mpi Oct 18, 2016
utils Change OpenGL header path Nov 29, 2016
.gitignore Missing virtual destructors. Feb 17, 2016
.travis.yml installing python-all-dev Feb 1, 2016
AUTHORS Initial commit from svn multiconn branch Jun 3, 2015
BUGS Initial commit from svn multiconn branch Jun 3, 2015
COPYING Initial commit from svn multiconn branch Jun 3, 2015
ChangeLog Initial commit from svn multiconn branch Jun 3, 2015
INSTALL Initial commit from svn multiconn branch Jun 3, 2015
LICENSE Initial commit Jun 3, 2015
Makefile.am Added copyright notices and fixed indentation. Oct 18, 2016
NEWS Initial commit from svn multiconn branch Jun 3, 2015
PORTING Initial commit from svn multiconn branch Jun 3, 2015
README Initial commit from svn multiconn branch Jun 3, 2015
RELEASE Initial commit from svn multiconn branch Jun 3, 2015
TODO TODO Oct 24, 2016
acinclude.m4 Initial commit from svn multiconn branch Jun 3, 2015
aclocal.sh Initial commit from svn multiconn branch Jun 3, 2015
autogen.sh use glibtoolize on OSX May 24, 2016
build.sh Update build.sh Aug 7, 2015
configure.ac Add conditional to check the OS Nov 29, 2016

README

* What is MUSIC?

MUSIC is an API allowing large scale neuron simulators using MPI
internally to exchange data during runtime.  MUSIC provides mechanisms
to transfer massive amounts of event information and continuous values
from one parallel application to another.  Special care has been taken
to ensure that existing simulators can be adapted to MUSIC.  In
particular, MUSIC handles data transfer between applications that use
different time steps and different data allocation strategies.

This is the MUSIC pilot implementation.

The two most important components built from this software
distribution is the music library `libmusic.a' and the music utility
`music'.  A MUSIC-aware simulator links against the C++ library and
can be launched using mpirun together with the music utility as
described below.  MUSIC can also be used from a C program using the
API in music-c.h.

MUSIC is distributed under the GNU General Public License v3.


* Required external packages

MUSIC is written in C++ and makes use of the MPI message passing
library.  MUSIC has been tested with versions 1.2 and 1.3 of OpenMPI,
mpich and on BG/L.  A visualization tool `viewevents' can be built if
the GLUT toolkit is installed.

MUSIC version 1.0 makes use of the "long long" data type supported by,
for example, the GNU C++ compiler g++.


* Getting started

MUSIC can be built and installed using the generic installation
instructions found in the file INSTALL.  At the top of the source
distribution directory, do:

./configure
make
make install

(On some UNIX distributions you might need to run `ldconfig' or define
LD_LIBRARY_PATH:

  export LD_LIBRARY_PATH=/usr/local/lib

for the music utility to find its library.)

A MUSIC multisimulation is specified in a configuration file given as
the first argument to the music utility.  The test subdirectory
contains a collection of examples, for example:

cd test
mpirun -np 4 /usr/local/bin/music demo.music


* Compilation and linking flags

configure.ac contains mechanisms which try to identify which MPI
implementation/environment is in use and, based on this, decide
automagically which compiler, compilation flags and linking flags to
use. To circumvent, pass variable definitions ro configure, e.g.:

  ./configure MPI_CXXFLAGS="-g -O3"

The variables are:

MPI_CXX       The compiler to use for MPI code
MPI_CXXFLAGS  C++ compilation flags
MPI_CFLAGS    C compilation flags
MPI_LDFLAGS   Linking flags


* Porting

When launching a set of applications in a multisimulation, MUSIC needs
to go outside the MPI standard in two respects:

1. It needs to know the MPI process rank of the running process before
calling MPI::Init.

2. It needs to extract the first argument given to the music utility
before calling MPI::Init.

The configuration script tries to figure out which MPI distribution is
installed and how to compiler MUSIC for that distribution.  The
subdirectory mpidep contains all non-standard code.  If you are trying
to port the MUSIC library to a new version of MPI, please supply new
definitions for the functions getRank and getConfig in
mpidep/mpidep.c.  For more details, see the file PORTING in this
directory.


* Where to find more information

The MUSIC manual and other information can be found on the MUSIC home
page at the INCF Software Center:

  http://software.incf.org/software/music/home

Questions and requests can be sent to music-project@incf.org


* Submitting bug reports

Bug reports can be sent to music-bugs@incf.org

Please refer to the MUSIC home page at the INCF software center with
the URL given in the previous section.