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

Ianna Osborne, Jim Pivarski, Ioana Ifrim, Angus Hollands, Henry Schreiner

Research output: Contribution to journalConference articlepeer-review

Abstract

Awkward Array 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. Various 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; standalone cppyy; passing Awkward Arrays to and from Python functions compiled by Numba; passing Awkward Arrays to Python functions compiled for GPUs by Numba; and header-only libraries for populating Awkward Arrays from C++ without any Python dependencies.

Original languageEnglish (US)
Article number06003
JournalEPJ Web of Conferences
Volume295
DOIs
StatePublished - May 6 2024
Event26th International Conference on Computing in High Energy and Nuclear Physics, CHEP 2023 - Norfolk, United States
Duration: May 8 2023May 12 2023

All Science Journal Classification (ASJC) codes

  • General Physics and Astronomy

Fingerprint

Dive into the research topics of 'Awkward Just-In-Time (JIT) Compilation: A Developer's Experience'. Together they form a unique fingerprint.

Cite this