NewMadeleine: An optimizing communication library for high performance networks


LaBRI, INRIA Bordeaux - Sud-Ouest

High Performance Runtime Systems for Parallel Architectures


Powered By GForge Collaborative Development Environment

» Madeleine files are now hosted as part of the PM2 project at gforge.

» Latest release (2014-05-13)

NewMadeleine Overview

NewMadeleine is the fourth incarnation of the Madeleine communication library. The new architecture aims at enabling the use of a much wider range of communication flow optimization techniques. Its design is entirely modular: drivers and optimization strategies are dynamically loadable software components, allowing experimentations with multiple approaches or on multiple issues with regard to processing communication flows. The optimizing scheduler SchedOpt targets applications with irregular, multi-flow communication schemes such as found in the increasingly common application conglomerates made of multiple programming environments and coupled pieces of code, for instance. SchedOpt itself is easily extensible through the concepts of optimization strategies (what to optimize for, what the optimization goal is) expressed in terms of tactics (how to optimize to reach the optimization goal). Tactics themselves are made of basic communication flows operations such as packet merging or reordering.

The communication library is fully multi-threaded through its close integration with PIOMan. It manages concurrent communication operations from multiple libraries and from multiple threads. Its MPI implementation Mad-MPI fully supports the MPI_THREAD_MULTIPLE multi-threading level.

NewMadeleine is available on various networking technologies:

  • Infiniband (ibverbs)
  • Myrinet (MX and GM)
  • TCP (sockets)
  • legacy: SCI, Quadrics QsNet-2

It has been tested with Linux on IA32, IA64 and x86-64 architectures, and with MacOs/X on PowerPC architectures.

This library is developed and maintained by Alexandre Denis, Nathalie Furmento and Raymond Namyst. The software is freely available under the terms of the GNU General Public License version 2 as part of the PM2 project on INRIA Gforge.


Mad-MPI is a new light implementation of the MPI standard. This simple, straightforward proof-of-concept implementation is a subset of the MPI API, that allows MPI applications to benefit from the NewMadeleine communication engine. Mad-MPI is based on the point-to-point nonblocking posting (isend, irecv) and completion (wait, test) operations of MPI, these four operations being directly mapped to the equivalent operations of NewMadeleine.

Mad-MPI also implements some optimizations mechanisms for derived datatypes (see here). MPI derived datatypes deal with noncontiguous memory locations. The advanced optimizations of NewMadeleine allowing to reorder packets lead to a significant gain when sending and receiving data based on derived datatypes.

Thanks to NewMadeleine multi-threading supports, Mad-MPI comes with MPI_THREAD_MULTIPLE threads support level.

» Documentation on how to install and use Mad-MPI is available alongside NewMadeleine documentation.


For any questions regarding NewMadeleine, please contact Alexandre Denis.