skip to main content


Title: Automatic translation of MPI source into a latency-tolerant, data-driven form

Hiding communication behind useful computation is an important performance programming technique but remains an inscrutable programming exercise even for the expert. We present Bamboo, a code transformation framework that can realize communication overlap in applications written in MPI without the need to intrusively modify the source code. We reformulate MPI source into a task dependency graph representation, which partially orders the tasks, enabling the program to execute in a data-driven fashion under the control of an external runtime system. Experimental results demonstrate that Bamboo significantly reduces communication delays while requiring only modest amounts of programmer annotation for a variety of applications and platforms, including those employing co-processors and accelerators. Moreover, Bamboo’s performance meets or exceeds that of labor-intensive hand coding. As a result, the translator is more than a means of hiding communication costs automatically; it demonstrates the utility of semantic level optimization against a well-known library.
 [1] ;  [1] ;  [2] ;  [3] ;  [1]
  1. Univ. of California, San Diego, La Jolla, CA (United States)
  2. Pacific Northwest National Lab. (PNNL), Richland, WA (United States)
  3. Lawrence Livermore National Lab. (LLNL), Livermore, CA (United States)
Publication Date:
Report Number(s):
Journal ID: ISSN 0743-7315; PII: S0743731517300771; TRN: US1700647
Grant/Contract Number:
AC057601830; ER08-191010356-46564-95715; FC02-12ER26118; AC05-76RL01830; OCI-1053575
Accepted Manuscript
Journal Name:
Journal of Parallel and Distributed Computing
Additional Journal Information:
Journal Volume: 106; Journal Issue: C; Journal ID: ISSN 0743-7315
Research Org:
Pacific Northwest National Lab. (PNNL), Richland, WA (United States)
Sponsoring Org:
Country of Publication:
United States
97 MATHEMATICS AND COMPUTING; automatic communication hiding; source-to-source translator; task dependency graph; data-driven execution
OSTI Identifier: