TY - JOUR
T1 - Awkward Just-In-Time (JIT) Compilation
T2 - 26th International Conference on Computing in High Energy and Nuclear Physics, CHEP 2023
AU - Osborne, Ianna
AU - Pivarski, Jim
AU - Ifrim, Ioana
AU - Hollands, Angus
AU - Schreiner, Henry
N1 - Publisher Copyright:
© The Authors, published by EDP Sciences, 2024.
PY - 2024/5/6
Y1 - 2024/5/6
N2 - 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.
AB - 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.
UR - http://www.scopus.com/inward/record.url?scp=85212224963&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85212224963&partnerID=8YFLogxK
U2 - 10.1051/epjconf/202429506003
DO - 10.1051/epjconf/202429506003
M3 - Conference article
AN - SCOPUS:85212224963
SN - 2101-6275
VL - 295
JO - EPJ Web of Conferences
JF - EPJ Web of Conferences
M1 - 06003
Y2 - 8 May 2023 through 12 May 2023
ER -