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)