Compiler Generation for Data-Parallel Programming Languages from Two-Level Semantics Specifications

Abstract: This thesis is an empirical study of compiler generation for data-parallel languages from denotational-semantics-based formal specifications. We investigate whether compiler generation from such specifications is practical, not only with respect to generation of practical compilers, but also with respect to compilation of programs into efficient code and execution of the compiled programs on massively parallel SIMD (Single Instruction Multiple Data) architectures. Efficient compilers has been generated for Predula Nouveau, a small Pascal-like data-parallel language with embedded data-parallel primitives. To demonstrate the practicality and generality of the approach, experimental studies have been made for two SIMD target architectures. Compilers can currently be generated which emit code for the MasPar MP-1, which is an architecture for large multi-user systems, and the RVIP, which is an architecture for embedded systems. Performance studies have been made on the compiler generator system, the compilers it generates, and in particular the code generated from these compilers.Compiler generation systems are becoming increasingly common. Most such systems use attribute grammars as specification formalism, but systems exist which use other types of formalisms. However, few systems use denotational semantics based formalisms. Furthermore, these systems generate compilers for sequential programming languages. Compiler generator systems for parallel, and in particular data-parallel languages, are very rare. Thus, this work is one of the first case studies of generation of efficient compilers for such languages.The formal semantics specification approach uses two abstraction levels. The higher level uses denotalional semantics, including a set of auxiliary data-parallel functions. These functions serve as an intermediate form which defines the interface to and is exported from the low-level specification. Internally, this lower level uses several specification methods, where a target-architecture-specific part uses methods which may vary between different architectures. The architecture-independent part of the lower level uses a fixed operational semantics based specification in the form ofa general internal representation which includes data-parallel operations.

  This dissertation MIGHT be available in PDF-format. Check this page to see if it is available for download.