MPI (Message Passing Interface) is the most popular communication mechanism for parallel programming on clusters. However, MPI is not the best mechanism for data communication within a single multi-core node where hardware shared memory is available. In order to fully leverage this shared memory, the programmers must write special communication code that bypasses MPI. Unfortunately, this is not desirable from the perspective of programmers' productivity. This project aims to alleviate that problem by automatically converting MPI programs to use hardware shared memory on multi-core machines. The software could be used to convert any C or C++ code using MPI to use shared memory for communication, instead.
The software is based on the ROSE compiler infrastructure from the Lawrence Livermore National Lab. It has been under development for about one year, primarily by a PhD student and a Masters student. It started with a simple run-time system developed by the Masters student as a course project in my B649 (Parallel Architectures and Programming). The software is currently more than 31,000 lines of C++ code, including benchmarks, but excluding ROSE. Thanks to its use of ROSE, the software is highly portable, robust, and capable of handling the full C++ language.