Skip to content
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

Add project for Clad and Kokkos #92

Merged
merged 2 commits into from
Apr 12, 2024
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
1 change: 1 addition & 0 deletions project_metadata.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
categories:
- Analysis tools
- Generators
- HPC
- Simulation
- Open science
- ML/AI
Expand Down
64 changes: 64 additions & 0 deletions projects/clad_kokkos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
name: Implement Differentiating of the Kokkos Framework With Clad
postdate: 2024-04-11
categories:
- ML/AI
- HPC
durations:
- 3 months
skillset:
- C++
experiments:
- Any
project:
- compiler research
location:
- Remote
program:
- Any
commitment:
- Any
status:
- Available
shortdescription: Implement Differentiating of the Kokkos Framework With Clad
description: |
In mathematics and computer algebra, automatic differentiation (AD) is a set
of techniques to numerically evaluate the derivative of a function specified
by a computer program. Automatic differentiation is an alternative technique
to Symbolic differentiation and Numerical differentiation (the method of
finite differences). Clad is based on Clang which provides the necessary
facilities for code transformation. The AD library can differentiate
non-trivial functions, to find a partial derivative for trivial cases and has
good unit test coverage.

The Kokkos C++ Performance Portability Ecosystem is a production level solution
for writing modern C++ applications in a hardware agnostic way. It is part of
the US Department of Energies Exascale Project – the leading effort in the US
to prepare the HPC community for the next generation of super computing
platforms. The Ecosystem consists of multiple libraries addressing the primary
concerns for developing and maintaining applications in a portable way. The
three main components are the Kokkos Core Programming Model, the Kokkos Kernels
Math Libraries and the Kokkos Profiling and Debugging Tools.

The Kokkos framework is used in several domains including climate modeling where
gradients are important part of the simulation process. This project aims at
teaching Clad to differentiate Kokkos entities in a performance portable way.

Task ideas and expected results:
* Implement common test cases for Kokkos in Clad
* Add support for Kokkos functors
* Add support for Kokkos lambdas
* Incorporate the changes from the [initial Kokkos PR](https://github.com/vgvassilev/clad/pull/783)
* Enhance existing benchmarks demonstrating effectiveness of Clad for Kokkos
* [Stretch goal] Performance benchmarks

Candidate requirements:
* Experience with C++, experience with ML and backpropagation
* Knowledge of Clang.
contacts:
- name: Vaibhav Thakkar
email: [email protected]
- name: Petro Zarytskyi
email: [email protected]
- name: Vassil Vasilev
email: [email protected]
Loading