Workshop: Pygion: Flexible, Scalable Task-Based Parallelism with Python
Abstract: Dynamic languages provide the flexibility needed to implement expressive support for task-based parallel programming constructs. We present Pygion, a Python interface for the Legion task-based programming system, and show that it can provide features comparable to Regent, a statically typed programming language with dedicated support for the Legion programming model. Furthermore, we show that the dynamic nature of Python permits the implementation of several key optimizations (index launches, futures, mapping) currently implemented in the Regent compiler. Together these features enable Pygion code that is comparable in expressiveness to Regent, but more flexible, and substantially more concise, less error prone, and easier to use than C++ Legion code. We show that, in combination with high-performance kernels written in the Regent programming language, Pygion is able to achieve efficient, scalable execution on up to 1024 nodes of the heterogeneous supercomputer Piz Daint.