Aaron Jomy

Research Intern at CERN

email: aaronjomyjoseph@gmail.com

Education: B. Tech in Computer Science, Manipal Institute of Technology, Manipal, India

Ongoing project: Improve robustness and performance of Cppyy by bringing it closer to LLVM
Developing CppInterOp, an interoperability mechanism between Python and C++ based on the interactive C++ technologies available in Clang and LLVM. This involves modernizing Cppyy, to use upstream LLVM’s Clang-REPL component as a runtime compiler. We also explore the added performance gain due to fewer dependencies, faster lookups as well as the expanded feature set that can be made available to Cppyy users on schedule with upstream Clang-REPL releases. The project aims to stabilize CppInterop with Clang-REPL and Cling, as well as develop its capabilities with template instantiation and lookups. Another aspect is exploring the optimizations of the current Python-C++ interoperability framework utilizing Numba. Numba allows Python users to Just-In-Time compile subsets of mixed Python-C++ code into machine code which can accelerate codebases that use cppyy by 20 times. Current research aims to expand capabilities to enable users to leverage CUDA C++ code in Python and subsequently utilize Numba for its JIT compilation.

Project Proposal: URL

Mentors: Vassil Vassilev, Wim Lavrijsen(LBNL)

Completed project: Extend the Cppyy support in Numba
Numba is a JIT compiler that translates a subset of Python and NumPy code into fast machine code. Cppyy is an automatic, run-time, Python-C++ bindings generator, for calling C++ from Python and Python from C++. Cppyy has to pay a time penalty each time it needs to switch between languages which can multiply into large slowdowns when using loops with cppyy objects. This is where Numba can help. Since Numba compiles the code in loops into machine code it only has to cross the language barrier once and the loops thus run faster. Initial support for Cppyy objects in Numba enabled the use of builtin types and classes, but some essential C++ features, such as references and STL classes, are not yet supported. The project aims to add support for C++ reference types in Numba through Cppyy and improve the existing numba extension implementation to provide general support for C++ templates. This added support will allow cppyy users to define a wider array of standard and templated functions that can leverage reference types to the C++ code defined in python.

Project Proposal: URL

Project Reports: Final Report

Mentors: Baidyanath Kundu, Vassil Vassilev, Wim Lavrijsen(LBNL)

Presentations



Extending the Cppyy support in Numba - Progress Update, Slides, Team Meeting, 16 August 2023
Extending the Cppyy support in Numba, Slides, Team Meeting, 17 May 2023