Skip to content

Commit 62e4b33

Browse files
aaronj0vvolkl
andauthored
[gsoc26] Add Clad/BioDynamo/GeneROOT proposals for Compiler-Research (#1855)
* [gsoc26] Add Clad/BioDynamo/GeneROOT proposals for Compiler-Research * proper ordering in list --------- Co-authored-by: Valentin Volkl <valentin.volkl@cern.ch>
1 parent ef0bbf1 commit 62e4b33

8 files changed

Lines changed: 335 additions & 3 deletions
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
title: Enhancing a Next-Generation Platform for Computational Cancer Biology
3+
layout: gsoc_proposal
4+
project: BioDynamo
5+
year: 2026
6+
difficulty: medium
7+
duration: 350
8+
mentor_avail: June-October
9+
organization:
10+
- CompRes
11+
project_mentors:
12+
- email: vvasilev@cern.ch
13+
first_name: Vassil
14+
last_name: Vassilev
15+
is_preferred_contact: yes
16+
organization: Princeton University
17+
- email: lukas.johannes.breitwieser@cern.ch
18+
first_name: Lukas
19+
last_name: Breitwieser
20+
organization: CERN
21+
---
22+
23+
## Description
24+
25+
CartopiaX is an emerging simulation and modeling platform designed to support computational cancer research through large-scale, agent-based biological simulations. The project builds on modern high-performance scientific computing practices and leverages technologies inspired by platforms such as BioDynaMo to model tumor growth, tissue microenvironments, cell-cell interactions, and diffusion of signaling molecules.
26+
27+
CartopiaX aims to provide a flexible research environment that enables computational scientists and domain biologists to collaboratively design, execute, and analyze large-scale biological simulations. The platform combines high-performance C++ simulation kernels with user-friendly interfaces and scripting capabilities to enable rapid experimentation and reproducible research workflows. Currently, CartopiaX provides a performant core simulation engine but still requires improvements in usability, extensibility, and performance portability to support wider adoption in computational oncology and systems biology communities.
28+
29+
This project invites contributors to explore improvements that help integrate, extend, and deploy CartopiaX for real-world research applications. Students are encouraged to propose approaches that enhance developer productivity, accessibility for domain scientists, and computational performance.
30+
31+
## Possible Directions
32+
33+
* Easy integration - a possible direction focuses on improving the usability of CartopiaX by developing more intuitive ways for researchers to configure and run simulations. Currently, simulations rely heavily on static configuration files and parameter definitions. Students may explore designing graphical or web-based interfaces that allow researchers to interactively define experiments, create structured configuration systems using formats such as YAML or JSON, and develop reusable experiment templates. This direction aims to make CartopiaX more accessible to domain scientists who may not have extensive programming experience while improving reproducibility and workflow management.
34+
35+
* Flexibility: A potential direction involves extending CartopiaX through Python integration to support flexible and rapid scientific experimentation. Many researchers in computational biology prefer Python due to its strong ecosystem for data analysis and prototyping. Students may investigate technologies such as cppyy to enable seamless interaction between the high-performance C++ simulation core and Python. This could allow scientists to define cell behaviors, simulation rules, or analysis pipelines directly in Python while preserving the performance advantages of the C++ backend. This area provides opportunities to work on language interoperability and mixed-language scientific workflows.
36+
37+
* HPC: a third direction explores improving the performance and scalability of CartopiaX by identifying and optimizing computational bottlenecks within the simulation engine. Agent-based biological simulations frequently involve expensive processes such as diffusion modeling and large-scale cell interaction calculations. Students may explore profiling the simulation engine, investigating GPU acceleration strategies for diffusion solvers or other parallelizable components, and developing benchmarking tools to evaluate performance improvements. This direction is particularly suited for students interested in high-performance computing and parallel programming techniques.
38+
39+
## Requirements
40+
41+
* Requirements may vary based on the direction of the project, and can range from graphical or web-based interface design, Python/C++ programming, and/or familiarity with parallel programming and simulation/modelling
42+
43+
## Links
44+
* [Repo](https://github.com/compiler-research/CARTopiaX)
45+
46+
## AI Policy
47+
48+
AI assistance is allowed for this contribution. The applicant takes full responsibility for all code and results, disclosing AI use for non-routine tasks (algorithm design, architecture, complex problem-solving). Routine tasks (grammar, formatting, style) do not require disclosure.
49+
50+
## How to Apply
51+
52+
In addition to reaching out to the mentors by email, prospective candidates are required to complete [this form](https://forms.gle/AYgrJthYCRmBwwFL8)
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
---
2+
title: BioDynaMo Large-Scale Antimatter Simulation
3+
layout: gsoc_proposal
4+
project: BioDynamo
5+
year: 2026
6+
difficulty: medium
7+
duration: 350
8+
mentor_avail: June-October
9+
organization:
10+
- CompRes
11+
project_mentors:
12+
- email: vvasilev@cern.ch
13+
first_name: Vassil
14+
last_name: Vassilev
15+
is_preferred_contact: yes
16+
organization: Princeton University
17+
- email: lukas.johannes.breitwieser@cern.ch
18+
first_name: Lukas
19+
last_name: Breitwieser
20+
organization: CERN
21+
---
22+
23+
## Description
24+
25+
Deliver a self-contained BioDynaMo module and research prototype that enables validated, reproducible simulations of charged antiparticle ensembles in Penning-trap-like geometries at scales beyond existing demonstrations. The project generalizes prior BioDynaMo Penning-trap work into a reusable, documented, and scalable module suitable for antimatter-motivated studies and other charged-particle systems.
26+
27+
The student will extend BioDynaMo with a focused set of features (pluginized force models, neighbor search tuned for charged particles, elastic runtime hooks, and analysis/visualization pipelines), validate the models on canonical testcases (single-particle motion, small plasma modes), and demonstrate scaling and scientific workflows up to the largest feasible size within available resources. BioDynaMo already provides an agent/plugin API, parallel execution (OpenMP), and visualization hooks (ParaView/VTK). A prior intern report demonstrates a Penning-trap proof-of-concept and identifies directions for extension (custom forces, multi-scale runs, hierarchical models, CI, containerization)[[1]](https://repository.cern/records/7capf-rqp49).
28+
29+
## Engineering Goals
30+
* Implement a BioDynaMo plugin module (“AntimatterKernel”) optimized for charged-particle workloads, including SoA-compatible data layouts, spatial decomposition, and an efficient neighbor search.
31+
* Enable elastic and reproducible execution via containerized workflows and runtime configuration for local, HPC, or cloud environments.
32+
* Provide performance instrumentation and a small, well-documented benchmark suite integrated with BioDynaMo’s tooling.
33+
34+
## Physics/Scientific Goals
35+
* Implement physics components as BioDynaMo plugins: Penning-trap external fields, Coulomb interactions (pairwise with documented extension points for approximations), stochastic annihilation handling, and basic species support.
36+
* Validate against analytic and reference scenarios (single-particle trapping, basic plasma oscillation modes), with clearly stated assumptions and limits.
37+
* Perform a limited parameter sweep (e.g. density, magnetic field, trap voltage) at increasing scale to explore collective behavior observable within accessible regimes.
38+
39+
## Expected Results
40+
* A BioDynaMo plugin/module implementing charged-particle dynamics suitable for antimatter-motivated simulations.
41+
* A set of validated physics testcases reproducing canonical scenarios, with documented assumptions and limitations.
42+
* A scalable and reproducible simulation workflow, including performance instrumentation and example benchmark configurations.
43+
* Elastic execution artifacts (containers and run scripts) enabling consistent execution across local, HPC, and cloud systems.
44+
* Analysis and visualization pipelines producing scientifically meaningful observables (e.g. density profiles, energy spectra, annihilation maps).
45+
* A public open-source release with documentation and a short technical report or draft publication suitable for a workshop or conference.
46+
47+
48+
## Requirements
49+
50+
* Automatic differentiation
51+
* Parallel programming
52+
* Reasonable expertise in C++ programming
53+
54+
## Links
55+
* [Repo](https://github.com/BioDynaMo/biodynamo)
56+
57+
## AI Policy
58+
59+
AI assistance is allowed for this contribution. The applicant takes full responsibility for all code and results, disclosing AI use for non-routine tasks (algorithm design, architecture, complex problem-solving). Routine tasks (grammar, formatting, style) do not require disclosure.
60+
61+
## How to Apply
62+
63+
In addition to reaching out to the mentors by email, prospective candidates are required to complete [this form](https://forms.gle/AYgrJthYCRmBwwFL8)
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
title: Consolidate and advance the GPU infrastructure in Clad
3+
layout: gsoc_proposal
4+
project: Clad
5+
year: 2026
6+
difficulty: medium
7+
duration: 350
8+
mentor_avail: June-October
9+
organization:
10+
- CompRes
11+
project_mentors:
12+
- email: vvasilev@cern.ch
13+
first_name: Vassil
14+
last_name: Vassilev
15+
is_preferred_contact: yes
16+
organization: Princeton University
17+
- email: david.lange@cern.ch
18+
first_name: David
19+
last_name: Lange
20+
organization: Princeton University
21+
---
22+
23+
## Description
24+
25+
Clad is a Clang-based automatic differentiation (AD) plugin for C++. Over the past years, several efforts have explored GPU support in Clad, including differentiation of CUDA code, partial support for the Thrust API, and prototype integrations with larger applications such as XSBench, LULESH, a tiny raytracer in the Clad repository, and LLM training examples (including work carried out last year). While these efforts demonstrate feasibility, they are fragmented across forks and student branches, are inconsistently tested, and lack reproducible benchmarking.
26+
27+
This project aims to consolidate and strengthen Clad’s GPU infrastructure. The focus is on upstreaming existing work, improving correctness and consistency of CUDA and Thrust support, and integrating Clad with realistic GPU-intensive codebases. A key goal is to establish reliable benchmarks and CI coverage: if current results are already good, they should be documented and validated; if not, the implementation should be optimized further so that Clad is a practical AD solution for real-world GPU applications.
28+
29+
## Expected Results
30+
31+
* Recover, reproduce, and upstream past Clad+GPU work, including prior student projects and LLM training prototypes.
32+
* Integrate Clad with representative GPU applications such as XSBench, LULESH, and the in-tree tiny raytracer, ensuring * correct end-to-end differentiation.
33+
* Establish reproducible benchmarks for these codebases and compare results with other AD tools (e.g. Enzyme) where feasible.
34+
* Reduce reliance on atomic operations, improve accumulation strategies, and add support for additional GPU primitives and CUDA/Thrust features.
35+
* Add unit and integration tests and enable GPU-aware CI to catch correctness and performance regressions.
36+
* Improve user-facing documentation and examples for CUDA and Thrust usage.
37+
* Present intermediate and final results at relevant project meetings and conferences.
38+
39+
## Requirements
40+
41+
* Automatic differentiation
42+
* Parallel/GPU programming
43+
* Reasonable expertise in C++ programming
44+
45+
## Links
46+
* [Repo](https://github.com/vgvassilev/clad)
47+
48+
## AI Policy
49+
50+
AI assistance is allowed for this contribution. The applicant takes full responsibility for all code and results, disclosing AI use for non-routine tasks (algorithm design, architecture, complex problem-solving). Routine tasks (grammar, formatting, style) do not require disclosure.
51+
52+
## How to Apply
53+
54+
In addition to reaching out to the mentors by email, prospective candidates are required to complete [this form](https://forms.gle/AYgrJthYCRmBwwFL8)
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
title: Clad as a first-class gradient engine in LibTorch
3+
layout: gsoc_proposal
4+
project: Clad
5+
year: 2026
6+
difficulty: medium
7+
duration: 350
8+
mentor_avail: June-October
9+
organization:
10+
- CompRes
11+
project_mentors:
12+
- email: vvasilev@cern.ch
13+
first_name: Vassil
14+
last_name: Vassilev
15+
is_preferred_contact: yes
16+
organization: Princeton University
17+
- email: david.lange@cern.ch
18+
first_name: David
19+
last_name: Lange
20+
organization: Princeton University
21+
---
22+
23+
## Description
24+
25+
This project will design, implement, benchmark, and integrate a proof-of-concept that uses Clad (compiler-based automatic differentiation) as a first-class gradient engine in LibTorch (the C++ API of PyTorch). The goal is to demonstrate how ROOT users can run high-performance, pure-C++ machine-learning training and inference pipelines, without relying on Python. The project will result in a working prototype that integrates Clad-generated backward routines into LibTorch via `torch::autograd::Function` or custom ATen operators.
26+
27+
Recent efforts have extended the ROOT framework with modern machine-learning capabilities. In particular, a ROOT Users Workshop 2025 contribution by Meyer-Conde et al. demonstrates the use of LibTorch directly inside ROOT for gravitational-wave data analysis [[1]](https://indico.cern.ch/event/1505384/contributions/6706597). Their “ROOT+” prototype library augments ROOT with advanced features such as complex tensor arithmetic on CPU/GPU and modern I/O mechanisms (HTTP, Kafka), while relying on LibTorch for ML training and inference. In practice, this enables ROOT to load and execute neural networks (via ONNX or LibTorch) entirely in C++, and to combine them seamlessly with ROOT’s data-processing tools such as RDataFrame and TMVA, all within a single environment.
28+
In parallel, recent work in the Compiler Research community has demonstrated that Clad-generated gradients can match and even outperform PyTorch autograd on CPU when carefully optimized [[2]](https://compiler-research.org/blogs/gsoc25_rohan_final_blog). These results motivate a deeper exploration of compiler-driven automatic differentiation as a backend for machine learning frameworks. Building on both efforts, this project will culminate in a ROOT integration demo (for example, a simplified gravitational-wave analysis workflow) and a reproducible benchmarking suite comparing Clad-based gradients with PyTorch autograd for realistic HEP and GW workloads.
29+
30+
This project is expected to deliver tangible performance and usability benefits for machine-learning workflows in ROOT. By offloading gradient computation to Clad’s compiler-generated routines, meaningful speedups are expected for CPU-bound training workloads; prior results report speedups over PyTorch autograd on CPU [[2]](https://compiler-research.org/blogs/gsoc25_rohan_final_blog). This makes the approach particularly attractive for offline HEP and gravitational-wave analyses, where CPU efficiency is often a limiting factor. In addition, the project will enable fully native C++ machine-learning workflows in ROOT, allowing users to define, train, and evaluate models without Python dependencies and to integrate ML tightly with existing C++ analysis code, ROOT I/O, and data pipelines. The Clad-enhanced LibTorch backend will naturally complement ROOT’s existing ML ecosystem including TMVA, SOFIE, ONNX-based inference, and RDataFrame providing a flexible “best-of-both-worlds” solution that combines modern deep-learning frameworks with ROOT’s mature analysis infrastructure. Beyond the immediate prototype, this work will establish a solid foundation for future research on compiler-driven optimizations such as kernel fusion, reduced memory traffic, and eventual GPU acceleration.
31+
32+
## Expected Results
33+
34+
* Create a small C++ demo where a simple neural network is defined (e.g. MLP) and use Clad to generate its derivative functions. Integrate this with LibTorch by wrapping the Clad-generated gradient code as a custom `torch::autograd::Function` or operator. This follows the strategy outlined in the Clad-PyTorch project. The result is a model that uses LibTorch tensors for forward, but Clad’s code for backward.
35+
* Measure training (forward + backward) performance on CPU for representative tasks (e.g. MNIST or a simple GW signal classification). Compare Clad-derived gradients vs PyTorch autograd. Focus on performance: optimize memory layout and avoid dynamic allocations to maximize throughput.
36+
* Adapt the working prototype into the ROOT framework. For example, incorporate it into a ROOT macro or plugin so that one can run C++ ML code under root.exe or in PyROOT. Provide examples using ROOT’s data structures (TTrees, RDataFrame) feeding into the Clad-empowered model. Investigate loading pretrained models (via ONNX or TorchScript) and whether Clad can backpropagate through them.
37+
38+
## Requirements
39+
40+
* Automatic differentiation
41+
* Parallel programming
42+
* C++ programming
43+
* Experience with LibTorch is a plus
44+
45+
## Links
46+
* [Repo](https://github.com/vgvassilev/clad)
47+
48+
## AI Policy
49+
50+
AI assistance is allowed for this contribution. The applicant takes full responsibility for all code and results, disclosing AI use for non-routine tasks (algorithm design, architecture, complex problem-solving). Routine tasks (grammar, formatting, style) do not require disclosure.
51+
52+
## How to Apply
53+
54+
In addition to reaching out to the mentors by email, prospective candidates are required to complete [this form](https://forms.gle/AYgrJthYCRmBwwFL8)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
title: Enable automatic differentiation of OpenMP programs with Clad
3+
layout: gsoc_proposal
4+
project: Clad
5+
year: 2026
6+
difficulty: medium
7+
duration: 350
8+
mentor_avail: June-October
9+
organization:
10+
- CompRes
11+
project_mentors:
12+
- email: vvasilev@cern.ch
13+
first_name: Vassil
14+
last_name: Vassilev
15+
is_preferred_contact: yes
16+
organization: Princeton University
17+
- email: david.lange@cern.ch
18+
first_name: David
19+
last_name: Lange
20+
organization: Princeton University
21+
---
22+
23+
## Description
24+
25+
Clad is an automatic differentiation (AD) clang plugin for C++. Given a C++ source code of a mathematical function, it can automatically generate C++ code for computing derivatives of the function. Clad is useful in powering statistical analysis and uncertainty assessment applications. OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared-memory multiprocessing programming in C, C++, and other computing platforms.
26+
27+
This project aims to develop infrastructure in Clad to support the differentiation of programs that contain OpenMP primitives.
28+
29+
## Expected Results
30+
31+
* Extend the pragma handling support
32+
* List the most commonly used OpenMP concurrency primitives and prepare a plan for how they should be handled in both forward and reverse accumulation in Clad
33+
* Add support for concurrency primitives in Clad’s forward and reverse mode automatic differentiation.
34+
* Add proper tests and documentation.
35+
* Present the work at the relevant meetings and conferences.
36+
37+
## Requirements
38+
39+
* Automatic differentiation
40+
* Parallel programming
41+
* Reasonable expertise in C++ programming
42+
43+
## Links
44+
* [Repo](https://github.com/vgvassilev/clad)
45+
46+
## AI Policy
47+
48+
AI assistance is allowed for this contribution. The applicant takes full responsibility for all code and results, disclosing AI use for non-routine tasks (algorithm design, architecture, complex problem-solving). Routine tasks (grammar, formatting, style) do not require disclosure.
49+
50+
## How to Apply
51+
52+
In addition to reaching out to the mentors by email, prospective candidates are required to complete [this form](https://forms.gle/AYgrJthYCRmBwwFL8)

_gsocproposals/2026/proposal_Clad-STLConcurrency.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ project_mentors:
1313
first_name: Vassil
1414
last_name: Vassilev
1515
is_preferred_contact: yes
16+
organization: Princeton University
1617
- email: david.lange@cern.ch
1718
first_name: David
1819
last_name: Lange
20+
organization: Princeton University
1921
---
2022

2123
## Description

0 commit comments

Comments
 (0)