INSPIRE The Insieme Parallel Intermediate Representation Herbert Jordan, Peter Thoman, Simone Pellegrini, Klaus Kofler, and Thomas Fahringer University of Innsbruck This research has been partially funded by the Austrian Research Promotion Agency under contract (AutoCore) and by the FWF Austrian Science Fund under contract I01079 (GEMSCLAIM).
Parallel Programming OpenMP Pragmas (+ API) Cilk Keywords MPI library OpenCL library + JIT ‘hidden’ in compiler IRs treated like ordinary APIs coordinated by user
The Insieme Vision OpenCL / MPI / Insieme Runtime / others OpenMP / Cilk / OpenCL / MPI / others IR to establish a research platform for coarse grained, real world, hybrid parallelism
The Insieme Infrastructure University of Innsbruck
INSPIRE Requirements OpenMP / Cilk / OpenCL / MPI / others INSPIRE complete unified explicit analyzable transformable compact high level whole program open system extensible OpenCL / MPI / Insieme Runtime / others
INSPIRE: Organization Core Language type system supporting generic types full sequential & parallel control flow extension infrastructure Extensions parameterized abstract data types ( ADT s) to support extensions and external interfaces
INSPIRE: Organization Core Language type system supporting generic types full sequential & parallel control flow extension infrastructure Extensions parameterized abstract data types ( ADT s) e.g. mutable state, arrays, C++ containers, …
Types 7 type constructors:
Expressions 8 kind of expressions:
Statements 9 types of statements:
Extensions
Parallel Model
Parallel Model (2)
Overall Structure Structural – opposed to nominal systems full program is a single expression
Overall Structure Consequences: every entity is self-contained no global lookup-tables or variables all functions are self-confined local modifications are isolated Also: IR models execution – not code structure path in tree = call context (!)
Performance Impact
Conclusion INSPIRE is designed to represent and unify parallel applications self-contained, execution oriented structure simplify whole-program manipulations comprehensive parallel model sufficient to model leading standards for parallel programming
Thank You! Visit: Contact:
The Insieme Vision OpenCL / MPI / Insieme Runtime / others OpenMP / Cilk / OpenCL / MPI / others to establish a research platform for coarse grained, real world, hybrid parallelism INSPIRE
The Insieme Infrastructure University of Innsbruck
Language Core
Type System Based on 7 type constructors:
Expressions
Type System abstrat, parameterized types to model ADTs, e.g. int32, array, … structs / unions function types closure types member function, constructor and destructor types type variables (generic types) recursive types
IR Toolbox Semantic Checks type checker Imperative consistency checks Utilities front-ends / back-ends pattern matcher / term rewriting system polyhedral analysis & transformations IR dumper, printer and parser …
Derived Work [TODO: cite] Auto tuning of parallel codes Automatic OpenCL kernel splitting => distribution among multiple devices Compiler aided loop scheduling Automated task granularity control for nested recursive codes
Ongoing Activities Comprehensive analysis framework Supporting industrial C++ applications Distributed Runtime system language ext. for distributed memory Heterogeneous embedded environments
Expressions
Language Core