MT-MPI: Multi-threaded MPI for Many-core Environments
Many-core architectures, such as the Intel Xeon Phi, provide dozens of cores and hundreds of hardware threads. To utilize such architectures, application programmers are increasingly looking at hybrid programming models (frequently referred to as “MPI+X” models), where multiple threads interact with the MPI library. A common mode of operation for hybrid MPI+threads applications is where multiple threads are used to parallelize the computation, while one of the threads also issues MPI operations (i.e., MPI FUNNELED or SERIALIZED thread-safety mode). In MPI+OpenMP applications, this is achieved, for example, by placing MPI calls in OpenMP critical sections or outside the OpenMP parallel regions. However, such a model often means that the OpenMP threads are only active during the parallel computation phase and idle during the MPI calls, resulting in wasted computational resources.
In this talk, we present MT-MPI, an internally multi-threaded MPI implementation that transparently coordinates with the threading runtime system to share idle threads with the application. It is designed in the context of OpenMP, which requires modifications to both the MPI implementation as well as the OpenMP runtime to share appropriate information between them. We demonstrate the benefit of such internal parallelism for various aspects of the MPI processing including packing for derived datatype communication, data movement for shared memory communication, and network I/O for small message communication.We present experiments with various benchmarks and computational kernels including stencil computations and the Graph500 benchmark.
Min Si is a first year PhD Student from The University of Tokyo (Japan), under the supervision of Yutaka Ishikawa. Her research interests focus on parallel programming models and runtime systems on many-core architectures. In this summer, she works with Dr. Antonio Pena and Dr. Pavan Balaji at Argonne National Laboratory on proposing Multi-threaded MPI for Many-core Environments.