SciPy 2025

Accelerated DataFrames for all: Bringing GPU acceleration to pandas and Polars
07-10, 16:30–17:00 (US/Pacific), Ballroom

In Python, data analytics users often prioritize convenience, flexibility, and familiarity over pure performance. The cuDF DataFrame library provides a pandas-like experience with from 10x up to 50x performance improvements, but subtle differences prevent it from being a true drop-in replacement for many users. This talk will showcase the evolution of this library to provide zero-code change experiences, first for pandas users and now for Polars. We will provide examples of this usage and a high level overview of how users can make use of these today. We will then delve into the details of how GPU acceleration is implemented differently in pandas and Polars, along with a deep dive into some of the different technical challenges encountered for each. This talk will have something for both data practitioners and library developers.


The job of a Python data scientist is challenging enough without worrying about finding fast enough tools for the task at hand. GPU acceleration provides an attractive solution, allowing users to continue using familiar APIs that implement transparent GPU execution rather than having to seek better performance from new, unfamiliar APIs. We built the cuDF GPU DataFrame package to satisfy this need, but ultimately we found that the gaps in cuDF’s coverage of the pandas API were enough of a barrier to prevent adoption for many users. In this talk, we discuss how we have removed that barrier by providing seamless GPU acceleration for both the pandas and Polars DataFrame libraries.

Our solution for pandas was the cudf.pandas plugin, which allows users to GPU-accelerate their code by simply loading a module or using a Jupyter magic command. It accomplishes this task using an intricate proxying scheme that uses Python’s import machinery to replace pandas functions and classes with their equivalents in cuDF. This complex approach is taken out of necessity: the pandas eager execution model necessitates a tight coupling between its front-end and the execution layer, which in turn means that there is no low-level centralized entry point at which to inject GPU execution. We will discuss how, despite the complexity, the cudf.pandas approach works remarkably well at transparently accelerating as much of pandas as cuDF supports while seamlessly running everything else on the CPU.

The Polars GPU engine offers many of the same core features, such as a high-level on-off switch and easy profiling of GPU utilization using the Polars lazy API. Under the hood, however, cudf-polars is quite different from cudf.pandas. Polars has a lazy API that allows for a clear separation between the front-end and the underlying execution engine, allowing a direct translation of the Polars expression IR into a set of concrete cuDF operations to run. As part of this talk we will do a deep dive comparing the implementation of cudf-polars to cudf.pandas. The actual execution in the Polars GPU engine is handled by pylibcudf, a new library of low-level data processing primitives that allows us to decouple core algorithms from the high-level semantics of different engines. pylibcudf now serves as the core engine for both cudf-polars and the classic cuDF package (and by extension, cudf.pandas), and in addition it can be used directly by power users seeking peak performance or library developers accelerating other tools.

In this talk, you will see plenty of examples of usage so that you can learn to speed up your own data analyses. You will get a peek under the hood of how cudf.pandas and cudf-polars work in ways that will help you understand how best to accelerate your workflows using each library and what tools are available to you to debug slow performance. Finally, library developers (particularly of other DataFrame libraries) will get a sense for how they can bring GPU acceleration to their own packages. If you are interested in the guts of how we accelerate existing data processing libraries using GPUs, or if you are simply interested in learning how to make your workflows faster today, this talk is for you.

Vyas Ramasubramani is an experienced scientist and open-source developer. He has presented scientific software numerous times, both at SciPy and other academic conferences. He has also presented scientific results at various national conferences. He has been a developer for the cuDF project for four years and currently leads its development along with its various subprojects including cudf.pandas and cudf-polars.