Skip to content

Commit 23310ed

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

File tree

6 files changed

+93
-11
lines changed

6 files changed

+93
-11
lines changed

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

Lines changed: 5 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,7 @@ isaacmoralessantana
146148
izvekov
147149
jacklqiu
148150
jeaye
151+
jiayang
149152
joshi
150153
junaire
151154
kausik
@@ -159,6 +162,7 @@ ksunhokim
159162
kundu
160163
kundubaidya
161164
lange
165+
li
162166
lucas
163167
maksym
164168
manasi

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

Lines changed: 8 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,15 @@ HSF
1515
IIT
1616
JIT'd
1717
Jacobians
18+
Jurgaityt
1819
LLMs
1920
LLVM
2021
LULESH
2122
NVIDIA
2223
NVMe
24+
OpenMP
2325
PTX
26+
Resugaring
2427
SBO
2528
Slib
2629
Softsusy
@@ -29,23 +32,24 @@ TBR
2932
TFormula
3033
TTree
3134
aarch
35+
biodynamo
3236
bioinformatics
3337
blogs
3438
consteval
3539
cppyy
3640
cytokine
3741
cytokines
3842
gitlab
43+
gpu
3944
gridlay
4045
gsoc
41-
gpu
4246
jit
4347
jthread
48+
linkedin
4449
llm
4550
llvm
46-
pushforward
47-
linkedin
4851
microenvironments
52+
pushforward
4953
pythonized
5054
ramview
5155
reoptimize
@@ -67,9 +71,3 @@ xplugin
6771
youtu
6872
youtube
6973
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)