Keynote - Bridging Productivity, Portability, and Performance with Data-Centric Python
10-21, 09:30–10:30 (Europe/Stockholm), Main Track

Live Stream:

"Bridging Productivity, Portability, and Performance with Data-Centric Python" By Tal Ben-Nun, senior researcher with the Scalable Parallel Computing Laboratory, ETH Zurich"

Python is rapidly becoming the language of choice for scientific computing, due to its high productivity and vast software ecosystem. As an interpreted language, however, it is challenging to produce high-performance code from arbitrary programs.

In this talk we will present the Data-Centric (DaCe) parallel programming framework (, a representation and workflow that enables taking (restricted) Python code and generating high-performance programs that run on multi-core CPUs, accelerators such as GPUs and FPGAs, and clusters thereof. The core concept in DaCe is an intermediate representation and interface that separates the definition of "what" to compute from "how" to compute it efficiently and map it onto hardware. The representation can then be transformed automatically, programmatically, or interactively, without modifying the original Python code. To aid code optimization, DaCe provides programmers with visual transformation and editing tools, integrated in the Visual Studio Code IDE, which allow for manual fine-tuning optimizations. DaCe successfully accelerates several frameworks and applications, including NumPy, deep learning with PyTorch/ONNX, numerical weather prediction systems, and supercomputer-scale quantum transport simulations. The generated data-centric programs are on par and outperform the existing state-of-the-art.

The talk will highlight the restrictions and challenges when converting scientific code into a data-centric representation, how performance engineering is facilitated with DaCe, and showcase some of the applications that use the framework.

Tal is a senior researcher with the Scalable Parallel Computing Laboratory at ETH Zurich, Switzerland. His research interests include designing programming models for heterogeneous architectures, large-scale machine learning for scientific computing, and learnable representations of code.