An Optimizing Communication Library for High-Performance Networks

« back to PM2 home.


Powered By GForge Collaborative Development Environment

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

» Latest release (2016-06-30)

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:

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 the MPI interface for NewMadeleine. It is a simple, straightforward proof-of-concept implementation of the MPI standard, 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 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 through PIOman, Mad-MPI comes with MPI_THREAD_MULTIPLE threads support level, is able to make communication progress efficiently so as to overlap communication and computation, and exhibits good communication reactivity even under heavy computation load. See PIOMan benchmarks for more information.

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

Documentation and Related Publications

»  Papers related to NewMadeleine

»  NewMadeleine documentation

»  Nightly benchmarks


InfiniBand FDR10

InfiniBand QDR

InfiniBand DDR

Mad-MPI benchmarks


For any questions regarding NewMadeleine, please contact Alexandre Denis.