Not Just I/O: Using Async/Await for Computational Scheduling

Abstract

In the past two years I have developed a new query execution engine for Polars, which not only tries to execute as much of your query in parallel as possible, but in a streaming fashion as well, such that you can process data sets which do not fit in memory. This new query execution engine is heavily based on the async/await paradigm provided by Rust, and uses it to great effect.

In this talk I’d like to show that async/await is not just a tool to perform I/O requests asynchronously, but can in fact be used to build powerful cooperatively scheduled systems. Featuring custom async channels, primitives and multiple async runtimes, I show how it's used in Polars to achieve fine-grained, cache-friendly and NUMA-aware parallelism. My hope is to inspire you to look at async/await in a different way.


Speaker

Orson Peters

Senior Engineer of Query Execution @Polars, (Co-)Author of Stdlib Sort in Rust & Go

Orson works at Polars, where he focuses on query execution. He is passionate about optimizing code and squeezing the most performance possible out of a CPU, which is a perfect fit. He is the (co-)author of various sorting algorithms (e.g. pdqsort, driftsort, ipnsort), some of which are used in the Rust and Go standard libraries. He has also published fast hashing algorithms (foldhash, polymur-hash), and several other open-source Rust crates (e.g. slotmap).

Read more
Find Orson Peters at:

Date

Wednesday Mar 18 / 01:35PM GMT ( 50 minutes )

Location

Mountbatten (6th Fl.)

Topics

architecture performance parallelism async

Share

From the same track

Session AI/ML

Navigating the Edge of Scale and Speed for Physics Discovery

Wednesday Mar 18 / 10:35AM GMT

Details coming soon.

Speaker image - Thea  Klaeboe Aarrestad

Thea Klaeboe Aarrestad

Particle Physics and Real-Time ML @CERN @ETH Zürich

Session compilers

Automatically Retrofitting JIT Compilers

Wednesday Mar 18 / 03:55PM GMT

We as a community have attempted, multiple times, to speed up languages such as Lua, Python, and Ruby by hand-writing JIT compilers. Sometimes we've had short-term success, but the size, and pace of change, of their standard implementations has proven difficult to keep up with over time.

Speaker image - Laurence Tratt

Laurence Tratt

Shopify / Royal Academy of Engineering Research Chair in Language Engineering @King's College London

Session

Looking Under the Hood: Data Processing Systems Performance Tricks (and How to Apply Them to Your Code)

Wednesday Mar 18 / 02:45PM GMT

Modern data processing systems—databases, analytics engines, vector stores, and stream processors—hide an extraordinary amount of performance engineering beneath their abstractions.

Speaker image - Holger Pirk

Holger Pirk

Associate Professor for Data Management Systems at Imperial College London and Avid Runner — Minimizing Cache Misses, Thread Divergence and Aerobic Decoupling

Session

Vector Search on Columnar Storage

Wednesday Mar 18 / 11:45AM GMT

Managing vector data entails storing, updating, and searching collections of large and multi-dimensional pieces of data. Some believe that this justifies the creation of a new class of data systems specialized for this.

Speaker image - Peter Boncz

Peter Boncz

Professor @CWI, Co-Creator of MonetDB, VectorWise and MotherDuck, Database Systems Researcher, and Entrepreneur