MPI application development with MARMOT

Bettina Krammer*, Matthias Müller
HLRS Stuttgart

The Message Passing Interface (MPI) is widely used to write parallel programs using message passing. However, in addition to all the problems known from serial programming, parallel programming comes along with a bunch of completely new problems. Examples are the introduction of irreproducibility, deadlocks and incorrect management of MPI resources such as communicators, groups, datatypes etc. The MPI standard also grants some implementation-defined behaviour and does therefore not guarantee portability of MPI code. Tracking down bugs in a complex distributed program can thus become quite painful.

The MARMOT tool helps the MPI code developers uncover some of these errors and portability problems. MARMOT makes use of the so-called profiling interface to intercept MPI calls and analyse them automatically during run-time. The tool's functionality includes e.g. the verification of the arguments taken by MPI calls, detection of deadlocks or non-portable constructs. It has been used successfully with different applications on different platforms.