diff --git a/.github/actions/spelling/allow/names.txt b/.github/actions/spelling/allow/names.txt index 2913c62..690156c 100644 --- a/.github/actions/spelling/allow/names.txt +++ b/.github/actions/spelling/allow/names.txt @@ -1,5 +1,5 @@ -Abdulrasool Abdelrhman +Abdulrasool Abhigyan Abhinav Aditi @@ -32,6 +32,7 @@ Ikarashi Ilieva Isemann JLange +Jiayang Jomy Joshi Jurgaityt @@ -39,6 +40,7 @@ Kyiv LBNL Lattner Lavrijsen +Li Liegeois Linev Mabille @@ -146,6 +148,8 @@ isaacmoralessantana izvekov jacklqiu jeaye +jiayang +jiayangli joshi junaire kausik @@ -159,6 +163,7 @@ ksunhokim kundu kundubaidya lange +li lucas maksym manasi diff --git a/.github/actions/spelling/allow/terms.txt b/.github/actions/spelling/allow/terms.txt index 7271152..5ace8f0 100644 --- a/.github/actions/spelling/allow/terms.txt +++ b/.github/actions/spelling/allow/terms.txt @@ -1,9 +1,9 @@ AARCH AIML BGZF -Caa CINT CMSSW +Caa Cppyy Debian EPC @@ -15,12 +15,16 @@ HSF IIT JIT'd Jacobians +Jurgaityt LLMs LLVM LULESH NVIDIA NVMe +OMP +OpenMP PTX +Resugaring SBO Slib Softsusy @@ -29,6 +33,7 @@ TBR TFormula TTree aarch +biodynamo bioinformatics blogs consteval @@ -36,16 +41,18 @@ cppyy cytokine cytokines gitlab +gpu gridlay gsoc -gpu jit jthread +linkedin llm llvm -pushforward -linkedin microenvironments +omp +openmp +pushforward pythonized ramview reoptimize @@ -67,9 +74,3 @@ xplugin youtu youtube zenodo -biodynamo -Caa -Jurgaityt -Resugaring -superbuilds -TBR diff --git a/_data/contributors.yml b/_data/contributors.yml index 1163f4b..57ed2b4 100644 --- a/_data/contributors.yml +++ b/_data/contributors.yml @@ -299,6 +299,29 @@ and only the location of where they were called should be preserved. proposal: /assets/docs/petro_mozil_promosal_GSoC_2025.pdf mentors: Martin Vassilev, David Lange + +- name: Jiayang Li + photo: Jiayang_Li.jpg + info: "Google Summer of Code 2025 Contributor" + email: lijiayang404@gmail.com + education: "Bachelor of Computer Science, Shanghai University, China" + github: "https://github.com/Errant404" + active: 1 + linkedin: "https://www.linkedin.com/in/errant404/" + projects: + - title: "Enable automatic differentiation of OpenMP programs with Clad" + status: Ongoing + description: | + This project aims to extend Clad, a Clang-based automatic differentiation + tool for C++, to support OpenMP programs. By enabling Clad to parse and + differentiate OpenMP directives such as parallel for, reduction, and atomic, + we will allow gradient computation in multi-threaded environments. + The implementation will include enhancements to Clad’s AST parsing, + variable scope analysis, and differentiation logic for both forward and + reverse modes. Deliverables include robust OpenMP AD support, comprehensive + tests, and user documentation. + proposal: /assets/docs/Jiayang_Li_Proposal_2025.pdf + mentors: Vassil Vassilev, Martin Vassilev - name: Salvador de la Torre Gonzalez photo: salva_de_la_torre_gonzalez.jpg diff --git a/_pages/team/jiayang-li.md b/_pages/team/jiayang-li.md new file mode 100644 index 0000000..5ba183d --- /dev/null +++ b/_pages/team/jiayang-li.md @@ -0,0 +1,10 @@ +--- +title: "Compiler Research - Team - Jiayang Li" +layout: gridlay +excerpt: "Compiler Research: Team members" +sitemap: false +permalink: /team/JiayangLi +email: lijiayang404@gmail.com +--- + +{% include team-profile.html %} \ No newline at end of file diff --git a/_posts/2025-05-26-enable-automatic-differentiation-of-openmp-programs-with-clad.md b/_posts/2025-05-26-enable-automatic-differentiation-of-openmp-programs-with-clad.md new file mode 100644 index 0000000..ecf16d7 --- /dev/null +++ b/_posts/2025-05-26-enable-automatic-differentiation-of-openmp-programs-with-clad.md @@ -0,0 +1,47 @@ +--- +title: "Enable Automatic Differentiation of OpenMP Programs with Clad" +layout: post +excerpt: "This project introduces OpenMP support to Clad, enabling automatic differentiation of multi-threaded C++ programs." +sitemap: false +author: Jiayang Li +permalink: blogs/gsoc25_jiayangli_intro_blog/ +banner_image: /images/blog/gsoc-banner.png +date: 2025-05-26 +tags: gsoc llvm clad openmp automatic-differentiation +--- + +## About me + +Hi! I’m Jiayang Li, a third-year undergraduate student majoring in Computer Science at Shanghai University. I'm participating in Google Summer of Code 2025, working on enabling automatic differentiation of OpenMP programs in Clad. I have a strong background in high-performance computing and previous experience contributing to open-source projects. + +## Project Overview + +Clad is a Clang-based plugin for automatic differentiation (AD) of C++ code. It transforms mathematical functions into derivative forms, which is critical in applications like scientific computing, machine learning, and optimization. + +However, current Clad capabilities do not fully support multi-threaded programs using OpenMP. This project aims to bridge that gap by adding OpenMP support to Clad's differentiation capabilities. By enabling AD of OpenMP programs, developers can write performant, parallel code without sacrificing derivative information—unlocking new possibilities in physics simulations and large-scale computations. + +## Objectives + +The main goals of this project include: + +* **Parsing OpenMP Directives:** Enhance Clad’s AST visitors to recognize and handle directives like `#pragma omp parallel for`, `reduction`, `critical`, and `atomic`. +* **Scope Analysis:** Properly handle `shared`, `private`, and `reduction` variables and handle their gradients appropriately. +* **Forward and Reverse Mode Support:** Design strategies for AD under both modes. For example, reverse mode must synchronize gradients across threads—similar to [Enzyme](http://enzyme.mit.edu/)'s fork/sync model. + +## Implementation Strategy + +* **AST Extension:** Extend Clad's AST visitor to recognize and capture OpenMP constructs such as OMPParallelForDirective. + +* **Variable Scope Analysis:** Track and manage shared, private, and reduction variables. This ensures correctness in derivative computations across parallel threads. + +* **Differentiation Strategy:** Support both Forward Mode and Reverse Mode AD, inspired by how tools like Enzyme handle fork/sync transformations at the LLVM level. + +## Conclusion +A a result of this project, Clad will support differentiation of OpenMP programs, significantly increasing its utility in high-performance computing domains. This work not only expands Clad’s technical capabilities but also makes AD more accessible and practical for real-world scientific applications. + +## Related links + +* [LLVM Project](https://github.com/llvm/llvm-project) +* [Clad Repository](https://github.com/vgvassilev/clad) +* [My GitHub](https://github.com/Errant404) +* [Enzyme](http://enzyme.mit.edu/) \ No newline at end of file diff --git a/assets/docs/Jiayang_Li_Proposal_2025.pdf b/assets/docs/Jiayang_Li_Proposal_2025.pdf new file mode 100644 index 0000000..5eabdf0 Binary files /dev/null and b/assets/docs/Jiayang_Li_Proposal_2025.pdf differ diff --git a/images/team/Jiayang_Li.jpg b/images/team/Jiayang_Li.jpg new file mode 100644 index 0000000..fd41ada Binary files /dev/null and b/images/team/Jiayang_Li.jpg differ