Interprocedural Compilation of Fortran D

Fortran D is a version of Fortran extended with data decomposition specifications. It is designed to provide a machine-independent programming model for data-parallel applications and has heavily influenced the design of High Performance Fortran (HPF). In previous work we described Fortran D compila...

Full description

Saved in:
Bibliographic Details
Published inJournal of parallel and distributed computing Vol. 38; no. 2; pp. 114 - 129
Main Authors Hall, Mary W., Hiranandani, Seema, Kennedy, Ken, Tseng, Chau-Wen
Format Journal Article
LanguageEnglish
Published Elsevier Inc 01.11.1996
Online AccessGet full text

Cover

Loading…
More Information
Summary:Fortran D is a version of Fortran extended with data decomposition specifications. It is designed to provide a machine-independent programming model for data-parallel applications and has heavily influenced the design of High Performance Fortran (HPF). In previous work we described Fortran D compilation algorithms for individual procedures. This paper presents an interprocedural approach to analyze data and computation partitions, optimize communication, support dynamic data decomposition, and perform other tasks required to compile Fortran D programs. Our algorithms are designed to make interprocedural compilation efficient. First, we collect summary information after edits to solve important data-flow problems in a separate interprocedural propagation phase. Second, for nonrecursive programs we compile procedures in reverse topological order to propagate additional interprocedural information during code generation. We thus limit compilation to a single pass over each procedure body. We also perform optimizations across procedure boundaries by delaying instantiation of the computation partition, communication, and dynamic data decomposition. Empirical results show that interprocedural optimization is crucial in achieving acceptable performance for a common application code.
ISSN:0743-7315
1096-0848
DOI:10.1006/jpdc.1996.0135