Abstract

Score: A Compiler Representation for Heterogeneous Systems

Heterogeneous parallel systems incorporate different models of parallelism within a single machine or across machines and are well suited for many diverse applications [1, 2, 3]. These systems offer a wealth of underutilized resources for achieving high performance, but are more difficult to program than homogeneous systems. Compilers can and should assist in handling this complexity. Previous research has not considered the impact of architectural heterogeneity on the compiler structure [4]. A compiler for heterogeneous systems needs to order transformations based on component architectures, represent diverse architectural features, allow extension to cover new machines, and reuse its transformations and intermediate representation (IR) to target different architectures. A compiler's IR plays a central role in supporting these capabilities. This paper discusses each of these implications in detail and presents an intermediate representation, Score, that meets the needs of heterogeneity. In addition to incorporating nodes to represent a variety of architectural features, Score supports a new bi-level representation of important language constructs and employs a novel approach to defining the interface between transformations and IR nodes.