Litcius/Paper detail

A performance portability framework for Python

Nader Al Awar, Steven Zhu, George Biros, Milos Gligoric

202120 citationsDOI

Abstract

Kokkos is a programming model for writing performance portable applications for all major high performance computing platforms. It provides abstractions for data management and common parallel operations, allowing developers to write portable high performance code with minimal knowledge of architecture-specific details. Kokkos is implemented as a heavily-templated C++ library. However, C++ is not ideal for rapid prototyping and quick algorithmic exploration. An increasing number of developers use Python for scientific computing, machine learning, and data analytics. In this paper, we present a new Python framework, dubbed PyKokkos, for writing performance portable applications entirely in Python. PyKokkos provides Kokkos-like abstractions that are easier to use and more concise than the C++ interface. We implemented PyKokkos by building a translator from a subset of Python to C++ Kokkos and bridging necessary function calls via automatically generated Python bindings. PyKokkos is also compatible with NumPy, a widely-used high performance Python library. By porting several existing Kokkos applications to PyKokkos, including ExaMiniMD (∼3k lines of code in C++), we show that the latter can achieve efficient execution with low performance overhead.

Topics & Concepts

Python (programming language)Computer scienceSoftware portabilityPortingProgramming languageOperating systemSource lines of codeSoftware engineeringComputer architectureSoftwareParallel Computing and Optimization TechniquesComputational Physics and Python ApplicationsAlgorithms and Data Compression
A performance portability framework for Python | Litcius