Enable GPU support and Python Interoperability via a Plugin System
Description
Xeus-Cpp integrates Clang-Repl with the xeus protocol via CppInterOp, providing a powerful platform for C++ development within Jupyter Notebooks.
This project aims to introduce a plugin system for magic commands (cell, line, etc.), enabling a more modular and maintainable approach to extend Xeus-Cpp. Traditionally, magic commands introduce additional code and dependencies directly into the Xeus-Cpp kernel, increasing its complexity and maintenance burden. By offloading this functionality to a dedicated plugin library, we can keep the core kernel minimal while ensuring extensibility. This approach allows new magic commands to be developed, packaged, and deployed independently—eliminating the need to rebuild and release Xeus-Cpp for each new addition. Initial groundwork has already been laid with the Xplugin library, and this project will build upon that foundation. The goal is to clearly define magic command compatibility across different platforms while ensuring seamless integration. A key objective is to reimplement existing features, such as the LLM cell magic and the in-development Python magic, as plugins. This will not only improve modularity within Xeus-Cpp but also enable these features to be used in other Jupyter kernels.
As an extended goal, we aim to develop a new plugin for GPU execution, leveraging CUDA or OpenMP to support high-performance computing workflows within Jupyter.
Project Milestones
- Move the currently implemented magics and reframe using xplugin
- Complete the on-going work on the Python interoperability magic
- Implement a test suite for the plugins
- Extended: To be able to execute on GPU using CUDA or OpenMP
- Optional: Extend the magics for the wasm use case (xeus-cpp-lite)
- Present the work at the relevant meetings and conferences
Requirements
- Python
- C/C++
- GPU programming; CUDA/OpenMP
Links
- Repo
- Related Issues:
- https://github.com/compiler-research/xeus-cpp/issues/4
- https://github.com/compiler-research/xeus-cpp/issues/140
Mentors
- Anutosh Bhat - QuantStack
- Johan Mabille - QuantStack
- Vipul Cariappa - CompRes
- Aaron Jomy - CERN
Additional Information
- Difficulty level (low / medium / high): medium
- Duration: 350 hours
- Mentor availability: June-October