Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
huiyuxie committed Aug 1, 2024
1 parent 7fc1929 commit 2c88958
Showing 1 changed file with 3 additions and 10 deletions.
13 changes: 3 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![GitHub stars](https://img.shields.io/github/stars/huiyuxie/TrixiCUDA.jl.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/huiyuxie/TrixiCUDA.jl/stargazers)

Provide GPU support for [Trixi.jl](https://github.com/trixi-framework/Trixi.jl), a high-order numerical simulation framework for hyperbolic PDEs.
Provide CUDA support for [Trixi.jl](https://github.com/trixi-framework/Trixi.jl), a high-order numerical simulation framework for hyperbolic PDEs.

This project is undertaken as part of the [Google Summer of Code 2023](https://summerofcode.withgoogle.com/) program and is in the developing and testing phase. Please check the [Project Summary](https://gist.github.com/huiyuxie/44b561f9f854aada98fdb37036081454) for future steps.
This project is undertaken as part of the [Google Summer of Code 2023](https://summerofcode.withgoogle.com/) program and is in the developing and testing phase.

## GPU Strategy Overview
At present, two primary strategies are being explored for leveraging GPU capabilities:
Expand All @@ -15,17 +15,10 @@ At present, two primary strategies are being explored for leveraging GPU capabil

**Direct CUDA through C++:** This strategy involves writing GPU code using the native CUDA toolkit in C++. The advantage of this method is the potential for finer control over GPU operations, possibly leading to optimizations that might be more challenging to achieve with a higher-level API. To bridge the gap between Julia and C++, Julia's C and C++ FFI (Foreign Function Interface) is employed. This interface allows data and structures to be transferred seamlessly between Julia and C++. Hence, with this approach, GPU operations are coded and executed in C++, with Julia serving as the orchestrating layer, managing data exchange and other high-level tasks.

## Project Directory Structure
- The folder `trixi` stores folders from `Trixi.jl`, specifically `trixi/src`, `trixi/examples`, and `trixi/test`.
- The folder `docs` contains useful resources and instructions for this project.
- The folder `profile` contains contents about how to profile GPU kernels.
- The folder `cuda_julia` contains primary files (`cuda_dg_1d.jl`, `cuda_dg_2d.jl`, and `cuda_dg_3d.jl`) that are used to test the performance of `rhs!()` functions implemented in CUDA.jl.
- The folder `cuda_cpp` contains primary files (`cuda_dg_1d.cu`, `cuda_dg_2d.cu`, and `cuda_dg_3d.cu`) that are used to test the performance of `rhs!()` functions implemented in CUDA/C++.

## Kernels to be Implemented
- 1D Kernels: 1) `calc_volume_integral!()` - `volume_integral::VolumeIntegralShockCapturingHG`
- 2D Kernels: 1) `calc_volume_integral!()` - `volume_integral::VolumeIntegralShockCapturingHG`, 2) `calc_mortar_flux!()`
- 3D Kernels: 1) `calc_volume_integral!()` - `volume_integral::VolumeIntegralShockCapturingHG`, 2) `prolong2mortars!()`, 3) `calc_mortar_flux!()`

## How to Show Your Support
If you found this project interesting and inspiring, kindly give it a star. Your support means a lot to us! ❤️
If you found this project interesting and inspiring, kindly give it a star. Your support means a lot to us!

0 comments on commit 2c88958

Please sign in to comment.