Automatic Handling of Global Variables for Multi-threaded MPI Programs
International Conference on Parallel and Distributed Systems (ICPADS) 2011
Publication Type: Paper
Repository URL: papers/201009_AMPIGlobals
Abstract
Conventional implementations of the MPI standard tend to associate one MPI
process per processor, which limits their support for modern multi-core
platforms. An increasingly popular approach is to combine MPI with threads in
a finer-grained decomposition model where MPI ``processes'' are light-weight
threads. Global variables in legacy MPI applications, however, present a
challenge because they may be accessed by multiple MPI threads simultaneously.
Thus, transforming legacy MPI applications to become thread-safe in order to
exploit multi-core architectures requires proper handling of global variables.
In this paper, we present three approaches to automatically eliminate global
variables to ensure thread-safety for an MPI program. These approaches include:
(a) a compiler-based refactoring technique, using a Photran-based tool as an
example, which automates the source-to-source transformation for programs
written in Fortran; (b) a technique based on a global offset table (GOT); and
(c) a technique based on thread local storage (TLS). The second and third
methods automatically detect global variables and privatize them for each
thread at runtime. We discuss the advantages and disadvantages of these
approaches and compare their performance using both synthetic benchmarks, such
as the NAS Benchmarks, and a real scientific application, the FLASH code.
TextRef
Gengbin Zheng, Stas Negara, Celso L. Mendes, Eduardo R. Rodrigues, Laxmikant V. Kale, Automatic Handling of Global Variables for Multi-threaded MPI Programs, Technical report, Parallel Programming Laboratory, Department of Computer Science,
University of Illinois at Urbana-Champaign, 2011
People
Research Areas