From faf85c4ad28f4b9ce889a0151c3f78dd6297ca25 Mon Sep 17 00:00:00 2001 From: Vassil Vassilev Date: Thu, 11 Apr 2024 10:42:23 +0200 Subject: [PATCH 1/2] Add project for Clad and Kokkos --- project_metadata.yml | 1 + projects/clad_kokkos.yml | 64 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 projects/clad_kokkos.yml diff --git a/project_metadata.yml b/project_metadata.yml index 0462fc6..9de26ed 100644 --- a/project_metadata.yml +++ b/project_metadata.yml @@ -1,6 +1,7 @@ categories: - Analysis tools - Generators + - HPC - Simulation - Open science - ML/AI diff --git a/projects/clad_kokkos.yml b/projects/clad_kokkos.yml new file mode 100644 index 0000000..a5c7b84 --- /dev/null +++ b/projects/clad_kokkos.yml @@ -0,0 +1,64 @@ +--- +name: Implement Differentiating of the Kokkos Framework With Clad +postdate: 2024-04-11 +categories: + - ML/AI +durations: + - 3 months +skillset: + - C++ + - HPC +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: vaibhav.thakkar@cern.ch + - name: Petro Zarytskyi + email: petro.zarytskyi@gmail.com + - name: Vassil Vasilev + email: vvasilev@cern.ch From 8f7617d95c563c9321601e800120488daaddea0d Mon Sep 17 00:00:00 2001 From: Vassil Vassilev Date: Thu, 11 Apr 2024 17:02:25 +0200 Subject: [PATCH 2/2] Update clad_kokkos.yml --- projects/clad_kokkos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/clad_kokkos.yml b/projects/clad_kokkos.yml index a5c7b84..1ff2ade 100644 --- a/projects/clad_kokkos.yml +++ b/projects/clad_kokkos.yml @@ -3,11 +3,11 @@ name: Implement Differentiating of the Kokkos Framework With Clad postdate: 2024-04-11 categories: - ML/AI + - HPC durations: - 3 months skillset: - C++ - - HPC experiments: - Any project: