Skip to content

Commit e2659c1

Browse files
committed
Add personal and project details for GSoC 2025
1 parent 664ee96 commit e2659c1

File tree

6 files changed

+97
-11
lines changed

6 files changed

+97
-11
lines changed

.github/actions/spelling/allow/names.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
Abdulrasool
21
Abdelrhman
2+
Abdulrasool
33
Abhigyan
44
Abhinav
55
Aditi
@@ -32,13 +32,15 @@ Ikarashi
3232
Ilieva
3333
Isemann
3434
JLange
35+
Jiayang
3536
Jomy
3637
Joshi
3738
Jurgaityt
3839
Kyiv
3940
LBNL
4041
Lattner
4142
Lavrijsen
43+
Li
4244
Liegeois
4345
Linev
4446
Mabille
@@ -146,6 +148,8 @@ isaacmoralessantana
146148
izvekov
147149
jacklqiu
148150
jeaye
151+
jiayang
152+
jiayangli
149153
joshi
150154
junaire
151155
kausik
@@ -159,6 +163,7 @@ ksunhokim
159163
kundu
160164
kundubaidya
161165
lange
166+
li
162167
lucas
163168
maksym
164169
manasi

.github/actions/spelling/allow/terms.txt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
AARCH
22
AIML
33
BGZF
4-
Caa
54
CINT
65
CMSSW
6+
Caa
77
Cppyy
88
Debian
99
EPC
@@ -15,12 +15,16 @@ HSF
1515
IIT
1616
JIT'd
1717
Jacobians
18+
Jurgaityt
1819
LLMs
1920
LLVM
2021
LULESH
2122
NVIDIA
2223
NVMe
24+
OMP
25+
OpenMP
2326
PTX
27+
Resugaring
2428
SBO
2529
Slib
2630
Softsusy
@@ -29,23 +33,26 @@ TBR
2933
TFormula
3034
TTree
3135
aarch
36+
biodynamo
3237
bioinformatics
3338
blogs
3439
consteval
3540
cppyy
3641
cytokine
3742
cytokines
3843
gitlab
44+
gpu
3945
gridlay
4046
gsoc
41-
gpu
4247
jit
4348
jthread
49+
linkedin
4450
llm
4551
llvm
46-
pushforward
47-
linkedin
4852
microenvironments
53+
omp
54+
openmp
55+
pushforward
4956
pythonized
5057
ramview
5158
reoptimize
@@ -67,9 +74,3 @@ xplugin
6774
youtu
6875
youtube
6976
zenodo
70-
biodynamo
71-
Caa
72-
Jurgaityt
73-
Resugaring
74-
superbuilds
75-
TBR

_data/contributors.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,29 @@
299299
and only the location of where they were called should be preserved.
300300
proposal: /assets/docs/petro_mozil_promosal_GSoC_2025.pdf
301301
mentors: Martin Vassilev, David Lange
302+
303+
- name: Jiayang Li
304+
photo:
305+
info: "Google Summer of Code 2025 Contributor"
306+
307+
education: "Bachelor of Computer Science, Shanghai University, China"
308+
github: "https://github.com/Errant404"
309+
active: 1
310+
linkedin: "https://www.linkedin.com/in/errant404/"
311+
projects:
312+
- title: "Enable automatic differentiation of OpenMP programs with Clad"
313+
status: Ongoing
314+
description: |
315+
This project aims to extend Clad, a Clang-based automatic differentiation
316+
tool for C++, to support OpenMP programs. By enabling Clad to parse and
317+
differentiate OpenMP directives such as parallel for, reduction, and atomic,
318+
we will allow gradient computation in multi-threaded environments.
319+
The implementation will include enhancements to Clad’s AST parsing,
320+
variable scope analysis, and differentiation logic for both forward and
321+
reverse modes. Deliverables include robust OpenMP AD support, comprehensive
322+
tests, and user documentation.
323+
proposal: /assets/docs/Jiayang_Li_Proposal_2025.pdf
324+
mentors: Vassil Vassilev, Martin Vassilev
302325

303326
- name: Salvador de la Torre Gonzalez
304327
photo: salva_de_la_torre_gonzalez.jpg

_pages/team/jiayang-li.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
title: "Compiler Research - Team - Jiayang Li"
3+
layout: gridlay
4+
excerpt: "Compiler Research: Team members"
5+
sitemap: false
6+
permalink: /team/JiayangLi
7+
8+
---
9+
10+
{% include team-profile.html %}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
title: "Enable Automatic Differentiation of OpenMP Programs with Clad"
3+
layout: post
4+
excerpt: "This project introduces OpenMP support to Clad, enabling automatic differentiation of multi-threaded C++ programs."
5+
sitemap: false
6+
author: Jiayang Li
7+
permalink: blogs/gsoc25_jiayangli_intro_blog/
8+
banner_image: /images/blog/gsoc-banner.png
9+
date: 2025-05-26
10+
tags: gsoc llvm clad openmp automatic-differentiation
11+
---
12+
13+
## About me
14+
15+
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.
16+
17+
## Project Overview
18+
19+
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.
20+
21+
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.
22+
23+
## Objectives
24+
25+
The main goals of this project include:
26+
27+
* **Parsing OpenMP Directives:** Enhance Clad’s AST visitors to recognize and handle directives like `#pragma omp parallel for`, `reduction`, `critical`, and `atomic`.
28+
* **Scope Analysis:** Properly handle `shared`, `private`, and `reduction` variables and handle their gradients appropriately.
29+
* **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.
30+
31+
## Implementation Strategy
32+
33+
* **AST Extension:** Extend Clad's AST visitor to recognize and capture OpenMP constructs such as OMPParallelForDirective.
34+
35+
* **Variable Scope Analysis:** Track and manage shared, private, and reduction variables. This ensures correctness in derivative computations across parallel threads.
36+
37+
* **Differentiation Strategy:** Support both Forward Mode and Reverse Mode AD, inspired by how tools like Enzyme handle fork/sync transformations at the LLVM level.
38+
39+
## Conclusion
40+
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.
41+
42+
## Related links
43+
44+
* [LLVM Project](https://github.com/llvm/llvm-project)
45+
* [Clad Repository](https://github.com/vgvassilev/clad)
46+
* [My GitHub](https://github.com/Errant404)
47+
* [Enzyme](http://enzyme.mit.edu/)
101 KB
Binary file not shown.

0 commit comments

Comments
 (0)