Control structure overloading in X10

The X10 programming language offers a simple but expressive model of concurrency and distribution. Domain Specific Languages embedded in X10 (eDSL) can build upon this model to offer scheduling and placement facilities tailored to particular patterns of applications, e.g. stencils or graph traversals. They exploit X10's rich type system and closures to offer flexible and precise functional interfaces, however, they are restricted by X10's rigid syntax. In this work, we propose an overloading mechanism enabling eDSLs to redefine or extend the behavior of X10 control structures. Loops can be parallelized or distributed. Exception handlers can triage and process exceptions arising from concurrent tasks. While our overloading mechanism requires augmenting the X10 syntax with new forms, the change to the syntax is small and intuitive. Overall, the combination of syntax and semantics we propose improves code readability over traditional X10 at no cost in run time performance.

[1]  Bradford L. Chamberlain,et al.  Parallel Programmability and the Chapel Language , 2007, Int. J. High Perform. Comput. Appl..

[2]  Martin Odersky,et al.  Higher-order and Symbolic Computation Manuscript No. Scala-virtualized: Linguistic Reuse for Deep Embeddings , 2022 .

[3]  Bradford L. Chamberlain,et al.  Parameterized Diamond Tiling for Stencil Computations with Chapel parallel iterators , 2015, ICS.

[4]  Christine Paulin-Mohring,et al.  The coq proof assistant reference manual , 2000 .

[5]  David Grove,et al.  Exploring the APGAS Programming Model using the LULESH Proxy Application , 2015 .

[6]  James Goodwill,et al.  The Swift Programming Language , 2015 .

[7]  Vivek Sarkar,et al.  X10: an object-oriented approach to non-uniform cluster computing , 2005, OOPSLA '05.

[8]  Ian Karlin,et al.  LULESH 2.0 Updates and Changes , 2013 .

[9]  Sriram Krishnamoorthy,et al.  Lifeline-based global load balancing , 2011, PPoPP '11.

[10]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[11]  Uday Bondhugula,et al.  Tiling stencil computations to maximize parallelism , 2012, 2012 International Conference for High Performance Computing, Networking, Storage and Analysis.

[12]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

[13]  Bhim P. Upadhyaya,et al.  Programming with Scala , 2017, Undergraduate Topics in Computer Science.

[14]  Josh Milthorpe,et al.  Local parallel iteration in x10 , 2015, X10@PLDI.