An Optimizing Communication Library for High-Performance Networks

« back to PM2 home.



» Madeleine files are now hosted as part of the PM2 project on Inria Gitlab.

» Latest release: pm2-2024-07-12.tar.gz

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

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 MadMPI 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, x86-64, and ARM aarch64 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 Gitlab.


MadMPI is the MPI interface for NewMadeleine. It is a simple implementation of the MPI standard that allows MPI applications to benefit from the NewMadeleine communication engine. MadMPI 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.

MadMPI also implements 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, MadMPI 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.

MadMPI and NewMadeleine feature mechanisms designed to sustain heavy loads, burst of requests, lots of tags, thanks to its constant-time matching algorithm, while keeping the ability to manage MPI_ANY_SOURCE and MPI_ANY_TAG requests. It has been tested successfully up to millions of simultaneous requests.

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

Documentation and Related Publications

»  Papers related to NewMadeleine

»  NewMadeleine documentation

»  Nightly benchmarks


InfiniBand FDR10

InfiniBand QDR

InfiniBand DDR

MadMPI benchmarks


For any questions regarding NewMadeleine, please contact Alexandre Denis.