Skip to content

Add personal and project details for GSoC 2025 #307

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .github/actions/spelling/allow/names.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Abdulrasool
Abdelrhman
Abdulrasool
Abhigyan
Abhinav
Aditi
Expand Down Expand Up @@ -32,13 +32,15 @@ Ikarashi
Ilieva
Isemann
JLange
Jiayang
Jomy
Joshi
Jurgaityt
Kyiv
LBNL
Lattner
Lavrijsen
Li
Liegeois
Linev
Mabille
Expand Down Expand Up @@ -146,6 +148,8 @@ isaacmoralessantana
izvekov
jacklqiu
jeaye
jiayang
jiayangli
joshi
junaire
kausik
Expand All @@ -159,6 +163,7 @@ ksunhokim
kundu
kundubaidya
lange
li
lucas
maksym
manasi
Expand Down
21 changes: 11 additions & 10 deletions .github/actions/spelling/allow/terms.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
AARCH
AIML
BGZF
Caa
CINT
CMSSW
Caa
Cppyy
Debian
EPC
Expand All @@ -15,12 +15,16 @@ HSF
IIT
JIT'd
Jacobians
Jurgaityt
LLMs
LLVM
LULESH
NVIDIA
NVMe
OMP
OpenMP
PTX
Resugaring
SBO
Slib
Softsusy
Expand All @@ -29,23 +33,26 @@ TBR
TFormula
TTree
aarch
biodynamo
bioinformatics
blogs
consteval
cppyy
cytokine
cytokines
gitlab
gpu
gridlay
gsoc
gpu
jit
jthread
linkedin
llm
llvm
pushforward
linkedin
microenvironments
omp
openmp
pushforward
pythonized
ramview
reoptimize
Expand All @@ -67,9 +74,3 @@ xplugin
youtu
youtube
zenodo
biodynamo
Caa
Jurgaityt
Resugaring
superbuilds
TBR
23 changes: 23 additions & 0 deletions _data/contributors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: [email protected]
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
Expand Down
10 changes: 10 additions & 0 deletions _pages/team/jiayang-li.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: "Compiler Research - Team - Jiayang Li"
layout: gridlay
excerpt: "Compiler Research: Team members"
sitemap: false
permalink: /team/JiayangLi
email: [email protected]
---

{% include team-profile.html %}
Original file line number Diff line number Diff line change
@@ -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/)
Binary file added assets/docs/Jiayang_Li_Proposal_2025.pdf
Binary file not shown.
Binary file added images/team/Jiayang_Li.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading