FG-MPI: Fine-grain MPI for multicore and clusters

Humaira Kamal, Alan Wagner · 2010

MPI (Message Passing Interface) has been successfully used in the high performance computing community for years and is the dominant programming model. Current implementations of MPI are coarse-grained, with a single MPI process per processor, however, there is nothing in the MPI specification precluding a finer-grain interpretation of the standard. We have implemented Fine-grain MPI (FG-MPI), a system that allows execution of hundreds and thousands of MPI processes on-chip or communicating between chips inside a cluster. FG-MPI uses fibers (coroutines) to support multiple MPI processes inside an operating system process. These are fullfledged MPI processes each with their own MPI rank. We have implemented a fine-grain version of MPICH2 middleware that uses the Nemesis communication subsystem for intranode and internode communication. We present experimental results for a real-world application that uses thousands of MPI processes and compare its performance with the following fine-grain multicore languages: Erlang, Haskell, Occam-pi and POSIX threads. Our results show that FG-MPI scales well and outperforms many of these other programming languages used for parallel programming on multicore systems while retaining MPI's intranode and internode communication abilities.

Read the paper · More papers on PaperTik