Skip to content

Commit 0ec3d5f

Browse files
Add the introductory blogpost of Petro Zarytskyi
1 parent f10b27e commit 0ec3d5f

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ Yehor
100100
Yuka
101101
Yuquan
102102
Zarytskyi
103+
zarytskyi
103104
aaronj
104105
aaronjomyjoseph
105106
abdelrhman

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Caa
88
Cppyy
99
Debian
1010
EPC
11+
forw
1112
GPGPU
1213
GPT
1314
GSo
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
title: "Improve automatic differentiation of object-oriented paradigms using Clad"
3+
layout: post
4+
excerpt: "A GSoC 2025 contributor project aiming to enhance Clad's ability to differentiate through OOP and STL constructs by supporting functions with side-effects."
5+
sitemap: false
6+
author: Petro Zarytskyi
7+
permalink: blogs/2025_petro_zarytskyi_introduction_blog/
8+
banner_image: /images/blog/gsoc-banner.png
9+
date: 2025-07-31
10+
tags: gsoc c++ llvm clang root automatic-differentiation
11+
---
12+
13+
### Introduction
14+
Hi! I'm Petro Zarytskyi, and I’m a Ukrainian Mathematics student at the University of Würzburg, Germany. I’ve been programming in C++ for the past 4 years, and I’m especially interested in compiler research and static analysis. I'm very excited for the project!
15+
16+
### Project description
17+
The project addresses a limitation in Clad, a Clang plugin for C++ automatic differentiation, which currently cannot fully support non-trivially copyable types, restricting its use in Object-Oriented Programming. I'm going to enhance Clad's reverse mode differentiation by modifying its forward sweep functions to store intermediate values effectively and improving the To-Be-Recorded analysis to handle nested function calls and pointer operations.
18+
19+
### Project goals
20+
The main goals of this project are:
21+
22+
- Support functions with side-effects.
23+
24+
- Support non-copyable types like smart pointers.
25+
26+
- Enhance TBR analysis.
27+
28+
- Optimize memory usage.
29+
30+
### Implementation strategy
31+
- Work on a new system of memory management for `reverse_forw` functions to support functions with side-effects. Improve the `reverse_forw` infrastructure to make it more reliable.
32+
33+
- Improve TBR analysis and make it suitable for OOP. In particular, add support for pointers.
34+
35+
- Work on relevant OOP-related issues to further enhance OOP support.
36+
37+
- Show that the implemented changes enable more support for STL types.
38+
39+
## Conclusion
40+
41+
The support for functions with side-effects is currently a major blocker for modern Object-Oriented Programming as it limits the usage of many member functions and operators. Having this system successfully implemented will not only add support for storing non-copyable types but will also make storing copyable structures more efficient because only specific parts of them will need to be stored.
42+
43+
### Related Links
44+
45+
- [My GitHub profile]https://github.com/PetroZarytskyi

0 commit comments

Comments
 (0)