High-Performance Runtime System

PM2: Parallel Multithread Machine

PM2 is an umbrella software suite for high-performance runtime systems. Modules may be installed and used together or separately. It is comprised of the following modules:


NewMadeleine is the latest incarnation of the Madeleine high performance communication library for clusters. It applies optimization strategy on data flows through dynamic packet scheduling, and is usable on various high performance networks. It comes with a complete MPI interface called Mad-MPI.

 »  More details are available on the NewMadeleine homepage.


PIOMan is a generic I/O manager, designed to deal with interactions between communication and multi-threading. It guarantees a good level of reactivity, is able to automatically choose between active polling and blocking calls depending on the context, and may offload I/O requests to idle cores when availble to handle multiple requests in parallel and overlap communication and computation. It works with standard pthread or with the Marcel thread scheduler.

 »  More details are available on the PIOMan homepage.


PadicoTM is a component-based high performance communication framework for grid computing. It enables a wide range of middleware systems (MPI, CORBA, Java RMI, ICE, SOAP,...) to use the variety of networks found in grids. It is used as a launcher and component assembly tool in NewMadeleine.

 »  More details are available on the PadicoTM homepage.

MadMPI benchmark

MadMPI benchmark is an MPI benchmark to measure overlap with non-blocking communications, and multi-threaded behavior with MPI_THREAD_MULTIPLE. It is distributed as a standalone package that do not require other PM2 parts, and may be run to benchmark your favorite MPI implementation.

 »  More details are available on the MadMPI benchmark homepage.

Legacy modules

The following modules are currently unmaintained:

Marcel is a thread library that was originaly developped to meet the needs of the PM2 multithreaded environment. Marcel provides a POSIX-compliant interface and a set of original extensions. It can also be compiled to provide ABI-compabiblity with NTPL threads under Linux, so that multithreaded applications can use Marcel without being recompiled. Marcel features a two-level thread scheduler (also called N:M scheduler) that achieves the performance of a user-level thread package while being able to exploit multiprocessor machines. The architecture of Marcel was carefully designed to support a high number of threads and to efficiently exploit hierarchical architectures (e.g. multi-core chips, NUMA machines).

ForestGOMP is an OpenMP runtime compatible with GCC 4.2, offering a structured way to efficiently execute OpenMP applications onto hierarchical (NUMA) architectures.

MaMI is a memory interface implemented within our user-level thread library, Marcel. It allows developers to manage memory with regard to NUMA nodes thanks to an automatically gathered knowledge of the underlying architecture.


For any questions regarding PM2, please contact Alexandre Denis