Table of Contents
Fetching ...

Scheduling Languages: A Past, Present, and Future Taxonomy

Mary Hall, Cosmin Oancea, Anne C. Elster, Ari Rasch, Sameeran Joshi, Amir Mohammad Tavakkoli, Richard Schulze

TL;DR

This paper provides a taxonomy of scheduling languages, first discussing their origins in iterative compilation and autotuning, noting the common features and how they are used in existing frameworks, and then calling for changes to increase their utility and portability.

Abstract

Scheduling languages express to a compiler a sequence of optimizations to apply. Compilers that support a scheduling language interface allow exploration of compiler optimizations, i.e., exploratory compilers. While scheduling languages have become a common feature of tools for expert users, the proliferation of these languages without unifying common features may be confusing to users. Moreover, we recognize a need to organize the compiler developer community around common exploratory compiler infrastructure, and future advances to address, for example, data layout and data movement. To support a broader set of users may require raising the level of abstraction. This paper provides a taxonomy of scheduling languages, first discussing their origins in iterative compilation and autotuning, noting the common features and how they are used in existing frameworks, and then calling for changes to increase their utility and portability.

Scheduling Languages: A Past, Present, and Future Taxonomy

TL;DR

This paper provides a taxonomy of scheduling languages, first discussing their origins in iterative compilation and autotuning, noting the common features and how they are used in existing frameworks, and then calling for changes to increase their utility and portability.

Abstract

Scheduling languages express to a compiler a sequence of optimizations to apply. Compilers that support a scheduling language interface allow exploration of compiler optimizations, i.e., exploratory compilers. While scheduling languages have become a common feature of tools for expert users, the proliferation of these languages without unifying common features may be confusing to users. Moreover, we recognize a need to organize the compiler developer community around common exploratory compiler infrastructure, and future advances to address, for example, data layout and data movement. To support a broader set of users may require raising the level of abstraction. This paper provides a taxonomy of scheduling languages, first discussing their origins in iterative compilation and autotuning, noting the common features and how they are used in existing frameworks, and then calling for changes to increase their utility and portability.

Paper Structure

This paper contains 31 sections, 11 figures, 1 table.

Figures (11)

  • Figure 1: Examples of expressing locality optimizations for matrix multiply in XlangXlang and CHILLChen2007CHiLLA.
  • Figure 2: Examples of expressing matrix multiply in ORIO Hartono09 and POET Yi07.
  • Figure 3: Running Example taken from Sequoia paper sequoia: specification (left) and schedule (right).
  • Figure 4: Example of Haskell Re-Write Rule from plying-by-rewrites: Shortcut deforestation rule (left) and its application (right).
  • Figure 5: Evolution of a number of scheduling approaches (arrows indicate citation).
  • ...and 6 more figures