Productivity, Portability, Performance: Data-Centric Python
Department of Computer Science, ETH Zurich, Switzerland
arXiv:2107.00555 [cs.PL], (1 Jul 2021)
@article{ziogas2021productivity,
title={Productivity, Portability, Performance: Data-Centric Python},
author={Ziogas, Alexandros Nikolaos and Schneider, Timo and Ben-Nun, Tal and Calotoiu, Alexandru and Matteis, Tiziano De and Licht, Johannes de Fine and Lavarini, Luca and Hoefler, Torsten},
year={2021}
}
Python has become the de facto language for scientific computing. Programming in Python is highly productive, mainly due to its rich science-oriented software ecosystem built around the NumPy module. As a result, the demand for Python support in High Performance Computing (HPC) has skyrocketed. However, the Python language itself does not necessarily offer high performance. In this work, we present a workflow that retains Python’s high productivity while achieving portable performance across different architectures. The workflow’s key features are HPC-oriented language extensions and a set of automatic optimizations powered by a data-centric intermediate representation. We show performance results and scaling across CPU, GPU, FPGA, and the Piz Daint supercomputer (up to 23,328 cores), with 2.47x and 3.75x speedups over previous-best solutions, first-ever Xilinx and Intel FPGA results of annotated Python, and up to 93.16% scaling efficiency on 512 nodes.
July 4, 2021 by hgpu