|
| 1 | +--- |
| 2 | +title: "2024 Year-End Reflections: CompilerResearch Group (Personal Perspective)" |
| 3 | +layout: post |
| 4 | +excerpt: | |
| 5 | + A personal reflection on the Compiler Research Group's 2024 journey, |
| 6 | + highlighting advances in Clad and CppInterOp, deep integration with ROOT and |
| 7 | + CUDA, and the growth of a vibrant, global open-source community. |
| 8 | +sitemap: true |
| 9 | +author: Vassil Vassilev |
| 10 | +permalink: blogs/cr24_recap/ |
| 11 | +banner_image: /images/blog/vv-2024-recap.webp |
| 12 | +date: 2025-01-05 |
| 13 | +tags: [2024, recap, year-in-review, compiler-research, open-source, community] |
| 14 | +--- |
| 15 | + |
| 16 | +As we close 2024, I'm filled with excitement about how far our Compiler Research |
| 17 | +Group has come. Our core mission to build tools at the intersection of |
| 18 | +compilers and data science drove a year of innovation. We saw our flagship |
| 19 | +projects Clad and CppInterOp gain new power, and our work reach into major |
| 20 | +systems like ROOT (for HEP data analysis) and CUDA (for GPU computing). For |
| 21 | +example, Clad (a Clang plugin for C++ automatic differentiation[\[1\]][one]) now |
| 22 | +handles more C++ features and even GPU kernels: as one Summer of Code |
| 23 | +contributor put it, we worked to "allow Clad to ride the GPU tide by enabling |
| 24 | +reverse-mode AD of CUDA kernels"[\[2\]][two]. Seeing that capability evolve was |
| 25 | +amazing! |
| 26 | + |
| 27 | +This year **Clad** grew in leaps: by December we had released Clad 1.8, which |
| 28 | +added support for standard containers(`std::vector` and `std::array`), C++20 |
| 29 | +`constexpr`/`consteval`, and even differentiation of CUDA device kernels and |
| 30 | +Kokkos library calls[\[3\]][three]. We were thrilled to watch Clad tackle GPU |
| 31 | +code. Concretely, our team member Christina Koutsou described how Clad now |
| 32 | +"supports differentiation of both host(CPU) and device (GPU) functions" and can |
| 33 | +generate gradient kernels for CUDA code[\[2\]][two]. These advances mean |
| 34 | +scientists can now compute gradients of GPU-accelerated code with Clad's AD, a |
| 35 | +big stride toward high-performance automatic differentiation. |
| 36 | + |
| 37 | +Likewise, our **CppInterOp** library which "provides a minimalist approach for |
| 38 | +other languages to bridge C++ entities"[\[4\]][four] matured |
| 39 | +significantly. CppInterOp is designed to let dynamic languages (likePython via |
| 40 | +cppyy) talk to C++ efficiently. In 2024 we added a new C API and better |
| 41 | +WebAssembly/Jupyter integration. Our v1.5.0 release (Dec 2024)introduced |
| 42 | +JupyterLite demos and a new `CXScope` API for language |
| 43 | +bindings[\[5\]][five]. Perhaps most importantly, we made progress on integrating |
| 44 | +CppInterOp with CERN's ROOT framework. ROOT's C++ reflection system is |
| 45 | +notoriously complex, and we've been developing an "Adoption of CppInterOp in |
| 46 | +ROOT" to simplify it[\[6\]][six]. In short, we're paving the way for future |
| 47 | +ROOT versions to use CppInterOp to speed up Python/C++ interop. This work has |
| 48 | +already captured the attention of ROOT developers, showing our community impact |
| 49 | +beyond compilers. |
| 50 | + |
| 51 | +**Major systems integration** was a theme. Beyond CUDA and ROOT, our team |
| 52 | +tackled ROOT's build system and other CMS/HEP tools. For example, Pavlo Svirin |
| 53 | +spent the summer adding a _"superbuild"_ option to ROOT[\[7\]][seven], so users |
| 54 | +can compile just the ROOT components they need – dramatically speeding up |
| 55 | +builds. That work is still in the pipeline of the ROOT team to incorporate into |
| 56 | +the project mainline. In another project, Isaac Morales improved _BioDynaMo_(a |
| 57 | +simulation platform) by integrating Clang's new C++ modules, speeding up its |
| 58 | +ROOT-based headers parsing. We also contributed to NumPy/CPPYY: Riya Bisht's |
| 59 | +work showed that Python code using cppyy and Numba can compile CUDA code on the |
| 60 | +fly, opening new doorways for GPU computing in Python. |
| 61 | + |
| 62 | +Through all these technical wins, the human side of our work stood out. I was |
| 63 | +happy to see that many contributors grew immensely this year. Garima Singh, who |
| 64 | +joined us as an undergrad, published two papers on floating-point error and |
| 65 | +RooFit gradients while helping enable Clad in ROOT[\[8\]][eight]. Today she's an |
| 66 | +MSc student at ETH Zürich – a testament to the research experience. Jun Zhang, a |
| 67 | +third-year student, pushed nearly 70 patches into the Clang/LLVM codebase, |
| 68 | +bringing Cling (our interactive C++ REPL) features to upstream Clang. His work |
| 69 | +makes C++ REPL programming more powerful even beyond HEP prototyping. And |
| 70 | +Baidyanath Kundu, after building complex C++/Python interoperability |
| 71 | +(interfacing cppyy, CPyCppyy, Numba), is now an ETH Zürich grad student. Their |
| 72 | +stories demonstrated how open source mentorship can launch STEM careers. |
| 73 | + |
| 74 | +Throughout 2024 we remained a close-knit community. We held weekly team calls, |
| 75 | +GitHub discussions, and even Discord chats. In these discussions (and on our |
| 76 | +blog!), we celebrated every merged pull request and debugging victory sometimes |
| 77 | +after a good amount of sweat and tears. One highlight was seeing first-time |
| 78 | +contributors present at conferences. Many collaborators across Princeton, CERN, |
| 79 | +and beyond jumped in -- our NSF-supported team culture thrives on that |
| 80 | +energy[\[9\]][nine]. I'm grateful for each person who joined: from seasoned |
| 81 | +engineers to coding newcomers. Watching people learn, teach each other (often |
| 82 | +across time zones),and make our code better was mesmerizing. |
| 83 | + |
| 84 | +We kept meticulous records of our work on our website and blog. Our project |
| 85 | +proposals for 2024 clearly laid out efforts like GPU kernel support in Clad and |
| 86 | +CppInterOp adoption in ROOT. Our progress is documented in releases and blogs |
| 87 | +(e.g. Clad 1.8 and CppInterOp 1.5 features,summaries of student projects, and |
| 88 | +the success stories of our team members). These sources inform the highlights |
| 89 | +above. Our great year was built one commit, one idea, and one person at a time. |
| 90 | + |
| 91 | +Looking ahead, I'm optimistic for 2025.We've laid solid groundwork: Clad's new |
| 92 | +features and CppInterOp's momentum put us in a great position. We'll continue |
| 93 | +partnering with ROOT and CUDA communities, and we're already exploring how Clad |
| 94 | +can speed up machine learning training (e.g. compiler-driven gradients for tensor |
| 95 | +libraries). Personally, I'm excited to mentor a new cohort in Google Summer of |
| 96 | +Code, where I know we'll empower even more students like Garima, Jun, and |
| 97 | +Baidyanath. Our story in 2024 is one of growth both in code and community. We |
| 98 | +built bridges between languages, between CPU and GPU, and between learners and |
| 99 | +experts. That journey reflects our aspiration _to make science computing faster, |
| 100 | +smarter, and more collaborative_. |
| 101 | + |
| 102 | +[one]: "https://compiler-research.org/clad/#:~:text=Clad enables automatic differentiation ,mode AD" |
| 103 | +[two]: "https://compiler-research.org/blogs/gsoc24_christina_koutsou_project_final_blog/" |
| 104 | +[three]: "https://github.com/vgvassilev/clad/releases/tag/v1.8" |
| 105 | +[four]: "https://github.com/compiler-research/CppInterOp" |
| 106 | +[five]: "https://github.com/compiler-research/CppInterOp/releases/tag/v1.5.0" |
| 107 | +[six]: "https://hepsoftwarefoundation.org/gsoc/2024/proposal_CppInterOp-AdoptionInROOT.html" |
| 108 | +[seven]: "https://compiler-research.org/blogs/gsoc24_pavlo_svirin_final_blog/" |
| 109 | +[eight]: "https://compiler-research.org/stories/" |
| 110 | +[nine]: "https://compiler-research.org/stories/#:~:text=Garima attributes her success in,National Institute for Subatomic Physics" |
0 commit comments