Please visit Jefferson Lab Event Policies and Guidance before planning your next event:

May 8 – 12, 2023
Norfolk Waterside Marriott
US/Eastern timezone

Awkward Just-In-Time (JIT) Compilation: A Developer’s Experience

May 11, 2023, 11:45 AM
Hampton Roads Ballroom VIII (Norfolk Waterside Marriott)

Hampton Roads Ballroom VIII

Norfolk Waterside Marriott

235 East Main Street Norfolk, VA 23510
Oral Track 6 - Physics Analysis Tools Track 6 - Physics Analysis Tools


Schreiner, Henry (Princeton University)


Awkward Arrays is a library for performing NumPy-like computations on nested, variable-sized data, enabling array-oriented programming on arbitrary data structures in Python. However, imperative (procedural) solutions can sometimes be easier to write or faster to run. Performant imperative programming requires compilation; JIT-compilation makes it convenient to compile in an interactive Python environment.

Several functions in Awkward Arrays JIT-compile a user’s code into executable machine code. They use several different techniques, but reuse parts of each others’ implementations.

We discuss the techniques used to achieve the Awkward Arrays acceleration with JIT-compilation, focusing on RDataFrame, cppyy, and Numba, particularly Numba on GPUs:

  • Conversions of Awkward Arrays to and from RDataFrame (stable).
  • Standalone cppyy (in development).
  • Passing Awkward Arrays to and from Python functions compiled by Numba (stable).
  • Passing Awkward Arrays to Python functions compiled for GPUs by Numba (in development).
  • Header-only libraries for populating Awkward Arrays from C++ without
    any Python dependencies (stable).
Consider for long presentation Yes

Primary authors

Hollands, Angus (Princeton University, USA) Ifrim, Ioana (Princeton University, USA) Osborne, Ianna (Princeton University, USA) Pivarski, Jim (Princeton University, USA)

Presentation materials

Peer reviewing