Skip to content

Commit 2ca3de5

Browse files
committed
Add personal and project details for GSoC 2025
1 parent 82dc5fd commit 2ca3de5

File tree

5 files changed

+84
-0
lines changed

5 files changed

+84
-0
lines changed

_data/contributors.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,28 @@
296296
proposal: /assets/docs/de_la_torre_gonzalez_salvador_proposal_gsoc_2025.pdf
297297
mentors: Vassil Vassilev, Lukas Breitwieser
298298

299+
- name: Abdelrhman Elrawy
300+
photo: Abdelrhman.jpg
301+
info: "Google Summer of Code 2025 Contributor"
302+
303+
education: "Master of Applied Computing, Wilfrid Laurier University, Canada"
304+
github: "https://github.com/a-elrawy"
305+
active: 1
306+
linkedin: "https://www.linkedin.com/in/elrawy/"
307+
projects:
308+
- title: "Support usage of Thrust API in Clad"
309+
status: Ongoing
310+
description: |
311+
This project enhances Clad, a Clang-based automatic differentiation tool,
312+
by enabling it to support NVIDIA's Thrust library for GPU-parallel programming.
313+
The goal is to implement custom derivative rules for Thrust primitives like
314+
`thrust::transform` and `thrust::reduce`, making it possible to differentiate
315+
high-performance CUDA code automatically. This work bridges the gap between
316+
automatic differentiation and GPU acceleration, enabling efficient gradient
317+
computations in scientific computing and machine learning workloads.
318+
proposal: /assets/docs/Abdelrhman_Elrawy_Proposal_GSoC_2025.pdf
319+
mentors: Vassil Vassilev, Alexander Penev
320+
299321
- name: "This could be you!"
300322
photo: rock.jpg
301323
info: See <a href="/careers">openings</a> for more info

_pages/team/abdelrhman-elrawy.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 - Abdelrhman Elrawy"
3+
layout: gridlay
4+
excerpt: "Compiler Research: Team members"
5+
sitemap: false
6+
permalink: /team/AbdelrhmanElrawy
7+
8+
---
9+
10+
{% include team-profile.html %}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
title: "Supporting Thrust API in Clad"
3+
layout: post
4+
excerpt: "This summer, I am working on adding support for Thrust API in Clad, enabling automatic differentiation of GPU-accelerated code. This work bridges the gap between high-performance CUDA parallelism and source-to-source AD transformation."
5+
sitemap: false
6+
author: Abdelrhman Elrawy
7+
permalink: blogs/gsoc25_/
8+
banner_image: /images/blog/gsoc-banner.png
9+
date: 2025-05-18
10+
tags: gsoc llvm clang automatic-differentiation gpu cuda thrust
11+
---
12+
13+
## About Me
14+
15+
Hi! I’m Abdelrhman Elrawy, a graduate student in Applied Computing specializing in Machine Learning and Parallel Programming. I’ll be working on enabling **Thrust API support in Clad**, bringing GPU-accelerated parallel computing to the world of automatic differentiation.
16+
17+
## Project Description
18+
19+
[Clad](https://github.com/vgvassilev/clad) is a Clang-based tool for source-to-source automatic differentiation (AD). It enables gradient computations by transforming C++ code at compile time.
20+
21+
However, many scientific and machine learning applications leverage **NVIDIA’s Thrust**, a C++ parallel algorithms library for GPUs, and currently, Clad doesn’t support differentiating through Thrust constructs. This limits the usability of Clad in high-performance CUDA code.
22+
23+
My project addresses this gap by enabling Clad to:
24+
25+
- Recognize and handle Thrust primitives like `thrust::transform` and `thrust::reduce`
26+
- Implement **custom pullback/pushforward rules** for GPU kernels
27+
- Ensure gradients maintain **parallel performance and correctness**
28+
- Benchmark and validate derivatives in real-world ML and HPC use cases
29+
30+
## Technical Approach
31+
32+
The project begins with a **proof-of-concept**: manually writing derivatives for common Thrust operations like `transform` and `reduce`. These are compared against finite differences to validate correctness.
33+
34+
Following that, I’ll integrate custom differentiation logic inside Clad, building:
35+
- A `ThrustBuiltins.h` header for recognizing Thrust calls
36+
- Visitor pattern extensions in Clad’s AST traversal (e.g., `VisitCallExpr`)
37+
- GPU-compatible derivative utilities (e.g., CUDA-aware `thrust::fill`, `transform`)
38+
39+
I'll also implement **unit tests**, real-world **mini-apps** (e.g., neural networks), and **benchmarks** to validate and demonstrate this feature.
40+
41+
## Expected Outcomes
42+
43+
By the end of GSoC 2025, Clad will be able to:
44+
- Differentiate through key Thrust primitives with GPU execution preserved
45+
- Provide documentation and tutorials for GPU-based automatic differentiation
46+
- Contribute a robust test suite and benchmarks to the Clad ecosystem
47+
48+
## Related Links
49+
50+
- [Clad GitHub](https://github.com/vgvassilev/clad)
51+
- [Project description](https://hepsoftwarefoundation.org/gsoc/2025/proposal_Clad-ThrustAPI.html)
52+
- [My GitHub](https://github.com/a-elrawy)
Binary file not shown.

images/team/Abdelrhman.jpg

197 KB
Loading

0 commit comments

Comments
 (0)