Skip to content

Commit

Permalink
Add another research proposal by Trixi.jl on asynchronous computing (#…
Browse files Browse the repository at this point in the history
…2206)

* Asynchronous project add

* Update proposal

* Add mentor names

* Fix typos

* Add Michael as mentor
  • Loading branch information
Arpit-Babbar authored Dec 28, 2024
1 parent 9ca6db1 commit c743963
Showing 1 changed file with 28 additions and 2 deletions.
30 changes: 28 additions & 2 deletions jsoc/gsoc/trixi.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Modern computational fluid dynamics with Trixi.jl

[Trixi.jl](https://github.com/trixi-framework/Trixi.jl/) is a Julia package for adaptive
[Trixi.jl](https://github.com/trixi-framework/Trixi.jl/) is a Julia package for adaptive
high-order numerical simulations of conservation laws. It is designed to be simple to use
for students and researchers, extensible for research and teaching, as well as efficient
for students and researchers, extensible for research and teaching, as well as efficient
and suitable for high-performance computing.


Expand Down Expand Up @@ -58,3 +58,29 @@ to learn) to write fast code.
for Trixi.jl.

**Mentors**: [Michael Schlottke-Lakemper](https://github.com/sloede), [Benedict Geihe](https://www.mi.uni-koeln.de/NumSim/dr-benedict-geihe/), [Johannes Markert](https://github.com/jmark)

## Asynchronous computing for communication blocking MPI and multi-GPU computing using Trixi.jl

**Difficulty**: Medium

**Project size**: 175 hours or 350 hours, depending on the chosen subtasks

The high performance of modern scientific software is built on parallel computing using MPI and GPUs. The communication speed has not kept up with the exponential increase in compute speed and algorithms are often communication bound, leading to underutilization of hardware capabilities. Asynchronous computing avoids communication bottlenecks by performing non-blocking sends and using algorithms that can give reliable results using the currently available data. This approach gives great scalability on parallel computing systems.

[Trixi.jl](https://github.com/trixi-framework/Trixi.jl/) currently performs distributed memory parallelization using [MPI.jl](https://github.com/JuliaParallel/MPI.jl), and has experimental GPU capabilities using [CUDA.jl](https://github.com/JuliaGPU/CUDA.jl) and [KernelAbstractions.jl](https://github.com/JuliaGPU/KernelAbstractions.jl). The goal of this project is to implement a subset of features of [Trixi.jl](https://github.com/trixi-framework/Trixi.jl/) that can perform parallel simulations asynchronously.

The possible subtasks in this project include

- Explore and implement a simple code for asynchronous algorithms for solving the 1D advection equation or 1D compressible Euler equations using the API of [Trixi.jl](https://github.com/trixi-framework/Trixi.jl/).
- Taking the simple code as a prototype, explore and implement an asynchronous algorithm starting with the basic [TreeMesh](https://trixi-framework.github.io/Trixi.jl/stable/meshes/tree_mesh/) type in [Trixi.jl](https://github.com/trixi-framework/Trixi.jl/) and potentially extending up to [P4estMesh](https://trixi-framework.github.io/Trixi.jl/stable/meshes/p4est_mesh/).
- Explore and implement asynchronous algorithms for a multi-GPU setup, in the 1D prototype and in [Trixi.jl](https://github.com/trixi-framework/Trixi.jl/).
- Explore and implement asynchronous algorithms using [Remote Memory Access Programming using MPI.jl](https://juliaparallel.org/MPI.jl/dev/reference/onesided/).
- Optimize and compare the performance of the above implementations across different hardwares.

This project is good for both software engineers interested in the fields of scientific computing, machine learning and numerical analysis as well as those students who are interested in pursuing graduate research in the field.

**Recommended skills:** Some knowledge of GPU or MPI programming. Knowledge of any numerical analysis (e.g., finite differences) will help, but is not strictly required.

**Expected results:** Draft of a working subset of the functionality of [Trixi.jl](https://github.com/trixi-framework/Trixi.jl/) efficiently using asynchronous computing.

**Mentors**: [Arpit Babbar](https://github.com/arpit-babbar), [Hendrik Ranocha](https://github.com/ranocha), [Michael Schlottke-Lakemper](https://github.com/sloede)

0 comments on commit c743963

Please sign in to comment.