PM2

Parallel Multithreaded Machine (PM2) is a software for parallel networking of computers.

PM2 is an open-source distributed multithreaded programming environment designed to support efficiently distributed programs with a highly irregular behavior (e.g. branch and bound search, computation on sparse matrices, etc.) on distributed architectures. It is distributed under the GPL.

PM2 adheres to the SPMD (Single Program Multiple Data) programming model, in a way very similar to the PVM and MPI communication libraries. The user writes a single program text, a copy of which is launched by a specific load command on each processing node of the current configuration. It is up to the programmer to include branching so as to differentiate between the processing nodes. This way it allows a network of heterogeneous machines to be used as a single distributed parallel processor.

It is primarily designed for medium-size clusters of commodity processing nodes interconnected by high-performance networks, but nothing prevents the use on massively parallel MIMD machines at one end of the spectrum, or as a support for metacomputing over the Internet on the other end. It supports heterogeneous networking configurations, such as sets of interconnected clusters.

Distinguishing features of PM2 include its priority driven scheduling policy, its thread migration mechanisms and its ability to ease the development of various load balancing policies. It can manage several hundreds of threads on each available physical processor. The PM2 interface provides functionalities for the management of this high degree of parallelism and for dynamic load balancing.

The thread management subsystem of PM2 is called Marcel (named after Marcel Proust) and its communication subsystem Madeleine, a French sweet that supposedly played a central role in the life of Marcel Proust. PM2 features an additional functionality to provide threads with a uniform access to data, whatever their physical location. It is called DSM-PM2.

PM2 runs on most Unix platforms.

Development history
PM2 is developed at LaBRI (Laboratoire Bordelais de Recherche en Informatique), a research laboratory located in Bordeaux, France, jointly supported by the INRIA, the CNRS, and the University of Bordeaux. Before that, PM2 was developed at LIP (Laboratoire de l'Informatique du Parallélisme), a research laboratory located at the ENS Lyon (Ecole Normale Supérieure de Lyon), France, jointly supported by the INRIA, the CNRS and the University Claude Bernard Lyon. PM2 was originally designed by Raymond Namyst and Jean-François Méhaut at LIFL, University of Lille, France.