Exo 2: Growing a Scheduling Language

Fuente: arXiv
Enregistré dans:
Détails bibliographiques
Auteurs principaux: Ikarashi, Yuka, Qian, Kevin, Droubi, Samir, Reinking, Alex, Bernstein, Gilbert, Ragan-Kelley, Jonathan
Format: Preprint
Publié: 2024
Sujets:
Accès en ligne:
Tags: Ajouter un tag
Pas de tags, Soyez le premier à ajouter un tag!
_version_ 1866917906387828736
author Ikarashi, Yuka
Qian, Kevin
Droubi, Samir
Reinking, Alex
Bernstein, Gilbert
Ragan-Kelley, Jonathan
author_facet Ikarashi, Yuka
Qian, Kevin
Droubi, Samir
Reinking, Alex
Bernstein, Gilbert
Ragan-Kelley, Jonathan
contents User-schedulable languages (USLs) help programmers productively optimize programs by providing safe means of transforming them. Current USLs are designed to give programmers exactly the control they want, while automating all other concerns. However, there is no universal answer for what performance-conscious programmers want to control, how they want to control it, and what they want to automate, even in relatively narrow domains. We claim that USLs should, instead, be designed to grow. We present Exo 2, a scheduling language that enables users to define new scheduling operations externally to the compiler. By composing a set of trusted, fine-grained primitives, users can safely write their own scheduling library to build up desired automation. We identify actions (ways of modifying code), inspection (ways of interrogating code), and references (ways of pointing to code) as essential for any user-extensible USL. We fuse these ideas into a new mechanism called Cursors that enables the creation of scheduling libraries in user code. We demonstrate libraries that amortize scheduling effort across more than 80 high-performance kernels, reducing total scheduling code by an order of magnitude and delivering performance competitive with state-of-the-art implementations on three different platforms.
format Preprint
id arxiv_https___arxiv_org_abs_2411_07211
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Exo 2: Growing a Scheduling Language
Ikarashi, Yuka
Qian, Kevin
Droubi, Samir
Reinking, Alex
Bernstein, Gilbert
Ragan-Kelley, Jonathan
Programming Languages
User-schedulable languages (USLs) help programmers productively optimize programs by providing safe means of transforming them. Current USLs are designed to give programmers exactly the control they want, while automating all other concerns. However, there is no universal answer for what performance-conscious programmers want to control, how they want to control it, and what they want to automate, even in relatively narrow domains. We claim that USLs should, instead, be designed to grow. We present Exo 2, a scheduling language that enables users to define new scheduling operations externally to the compiler. By composing a set of trusted, fine-grained primitives, users can safely write their own scheduling library to build up desired automation. We identify actions (ways of modifying code), inspection (ways of interrogating code), and references (ways of pointing to code) as essential for any user-extensible USL. We fuse these ideas into a new mechanism called Cursors that enables the creation of scheduling libraries in user code. We demonstrate libraries that amortize scheduling effort across more than 80 high-performance kernels, reducing total scheduling code by an order of magnitude and delivering performance competitive with state-of-the-art implementations on three different platforms.
title Exo 2: Growing a Scheduling Language
topic Programming Languages
url https://arxiv.org/abs/2411.07211