Scheduling Languages: A Past, Present, and Future Taxonomy

Mary Hall,Cosmin Oancea,Anne C. Elster,Ari Rasch,Sameeran Joshi,Amir Mohammad Tavakkoli,Richard Schulze
2024-10-26
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.
Programming Languages,Distributed, Parallel, and Cluster Computing,Performance
What problem does this paper attempt to address?
The main problems that this paper attempts to solve are the application and future development of scheduling languages in compiler optimization. Specifically, the paper aims to: 1. **Provide a classification system for scheduling languages**: By reviewing the historical development of scheduling languages, analyzing the current application status, and looking forward to the future development direction, construct a comprehensive scheduling language classification system. 2. **Improve the practicality and portability of scheduling languages**: The current diversity of scheduling languages and the lack of unified features may confuse users. Therefore, it is necessary to organize the compiler developer community to make improvements around the common exploratory compiler infrastructure to support a wider range of application scenarios. 3. **Enhance the level of user interaction**: In order to support a wider user group, it is necessary to raise the level of abstraction so that non - expert users can also use scheduling languages more easily. 4. **Integrate data layout and data movement optimization**: Future scheduling languages should be able to better handle data layout and data movement problems, thereby further enhancing the effect of performance optimization. ### Specific contributions of the paper - **Historical review**: The paper first discusses the origin of scheduling languages, especially their role in iterative compilation and auto - tuning. These early works laid the foundation for the current prosperity of scheduling languages. - **Current situation analysis**: Next, the paper analyzes the characteristics and application scenarios of current scheduling languages, especially in specific fields (such as linear algebra, sparse linear algebra, etc.). These systems are mainly driven by domain - specific languages and compilers, aiming to improve performance through language and compiler specialization. - **Future prospects**: Finally, the paper looks forward to the future development of scheduling languages, emphasizing the following aspects: - Improve user accessibility so that more users can benefit from scheduling languages. - Raise the level of abstraction so that scheduling languages can be applied to a wider range of general - purpose computing. - Unify scheduling languages and incorporate them into the general - purpose infrastructure in order to better support the optimization of data layout and data movement. - Expand the search space while maintaining practicality to achieve a higher degree of automation. ### Formula examples When discussing the specific technical details of scheduling languages, some formulas may be involved. For example, when describing matrix multiplication optimization, the following formula may be used: \[ C[i][j]=\sum_{k = 0}^{N-1}A[i][k]\times B[k][j] \] where \( C \) is the result matrix, \( A \) and \( B \) are the input matrices, and \( N \) is the dimension of the matrix. In this way, the paper not only reviews the historical development of scheduling languages but also points out the direction for future research and development.