It's a wrap
The mail finally came in. GSoC 2026 with CERN-HSF is officially done and I passed. It ran for 22 weeks, from 25 May to 26 October, which is easily the longest I have worked on one thing.
The last time I wrote here I was in week 3 and had just told you how I got in. I also promised more blogs during the summer. That ofc did not happen :p
So this one is the catch up. It covers what I built, who I met and what I would tell someone starting next year. If you want every PR and every number, the final report has it. This post is the human version.
A quick recap of the project
SOFIE lives inside ROOT, the framework that pretty much all of high energy physics runs on. You give it a trained model from ONNX, Keras or PyTorch and it writes plain C++ code that runs the model. The only dependency is BLAS, so there is no heavy runtime to carry around.
My project was about making that generated code run on GPUs, and not just one vendor's GPUs. The same code should run on NVIDIA, on AMD and on a CPU. We use alpaka for the kernels and a small library called sofieBLAS for the matrix multiplications.
When I started, three things were missing. Many operators had no GPU version. Models only worked with one fixed input size. And everything had only ever been tested on NVIDIA.
What actually got done
All three gaps are closed now. SOFIE's alpaka backend went from fixed size models on NVIDIA to dynamic size models on both NVIDIA and AMD.
| Piece | What changed |
|---|---|
| Operators | GPU operator count went from 18 in my proposal to more than 32. This includes Pool, Pad, Elu, Selu, Gelu, Softmax, TopK and a pile of Conv fixes for groups, dilation and padding. |
| Dynamic input shapes | One session now serves different input sizes. ParticleNet, a 248 node model, runs with three different sizes in the same session. This was merged on 15 September. |
| sofieBLAS | Matrix layouts are created on first use and the algorithm search is cached per shape. The same logic drives both cuBLASLt and hipBLASLt. |
| Testing | The GPU tests now build for both CUDA and HIP. The first fully green AMD run came on 22 October with 243 out of 243 tests on an MI100, matching the H100. |
| Quantisation | int8 and fp16 matrix multiplications are now merged in sofieBLAS. |
In total that was 15 merged PRs on SOFIE, 3 on sofieBLAS and 6 on ROOT. Somewhere along the way I also became a member of the ML4EP org on GitHub, which felt pretty cool ngl.
I am keeping this post light on purpose. The design details, benchmarks and results all live in the final report if that is your thing.
Juggling it all
The most challenging part was not any one bug. It was managing GSoC alongside everything else. My new semester started midway, and between academics and other commitments some days were intense and some were a breeze. The best part has to be how considerate and understanding my mentors were about it. There were a few weeks with very little progress because of other commitments, and I never once felt bad for saying so.
The second challenge was the issues with no obvious answer. Trivial ones were fine. A few needed real brainstorming and a proper discussion with my mentor before I wrote any code.
And then there was all the learning, which meant new concepts, research papers and a lot of docs. It was hard but it was also my favourite part. I picked up CUDA and HIP as I went, wrote far more OOP heavy C++ than any course ever asked for, and even got to use an LRU cache in real code instead of just a coursework exercise.
The people
This is the part I will remember longer than any PR.
A huge thank you to my mentors Sanjiban Sengupta and Dr. Lorenzo Moneta. I worked most closely with Sanjiban, and he was amazing throughout. The project felt a little overwhelming at the start, and he helped me plan the goals and cleared blockers along the way. He also encouraged me to come up with my own solutions first and then discuss them, which taught me a lot. Most of the good software habits I have now come from his feedback on my code and PRs. He was considerate from start to finish.
From June to August I also reported at the Summer of BOA meetings, led by Prof. Caterina Doglioni at the University of Manchester. Sitting in a room (ok, a Zoom) with people who actually use this stuff for physics changed how I looked at my own work. It stopped being just kernels and started being something somebody needs.
I was not the only one working on SOFIE this summer either. The CERN interns Shaun Lee and Antreas Ioannou were contributing alongside me, and it was fun to watch the project move from several directions at once.
The work also made it into three conference abstracts that I am a co author on. Two were at EuCAIFCon 2026 in Heidelberg (first, second) and one was at ML4Jets 2026 in Vienna.
My two cents, part two
Last time the advice was about getting in. This time it is about surviving once you are in.
- Communicate consistently. Keep your mentor in the loop and bring blockers to them early, so they get cleared instead of sitting there for days.
- Sort out your time if you are a student. Classes will overlap with the coding period at some point. Plan around the heavy weeks, because some days will be intense.
- Write a weekly report even if nobody asks. It made the final report almost write itself.
- Engage with the community. Learn the ways of open source and give back where you can.
- Do not rush. If it starts to feel too heavy or like too many things at once, it is good to slow down and tell your mentor. A slow week that you communicate is fine.
- Use AI tools sensibly. They fast tracked trivial bug fixes and boilerplate for me, but they were much less use for architecture decisions. Just prompting is often counterproductive.
What's next?
GSoC is over but I will keep contributing, with weekly meetings with my mentor to plan further developments and new directions for SOFIE. The quantisation changes in sofieBLAS are merged, so first up is getting the SOFIE quantisation PR reviewed.
A big big thank you to Google, CERN, HSF and the ML4EP group for this opportunity. I did not expect to enjoy a summer this much. If you are thinking about applying next year and have questions, my DMs are open.
