PrincetonUniversity / SPECFEMPP

SPECFEM++ is a complete re-write of SPECFEM suite of packages (SPECFEM2D, SPECFEM3D, SPECFEM3D_GLOBE) using C++
https://specfem2d-kokkos.readthedocs.io/en/latest/
GNU General Public License v3.0
16 stars 9 forks source link

Port to gpu #26

Closed Rohit-Kakodkar closed 1 year ago

Rohit-Kakodkar commented 1 year ago

Description

Please describe the changes/features in this pull request.

Port to GPU ports the compute intensive routines inside time iteration loop for GPU. All relevant views are converted to Device Views and synced from Host Mirrors when required. Tested the code on Nvidia GPU with a baseline performance ~ 25% of fortran performance on A100 GPUs.

No support for generating seismograms in this version

Issue Number

If there is an issue created for these changes, link it here

Checklist

Please make sure to check developer documentation on specfem docs.

[x] I ran the code through pre-commit to check style [] My code passes all the integration tests [x] I have added sufficient unittests to test my changes [] I have added/updated documentation for the changes I am proposing [x] I have updated CMakeLists to ensure my code builds [x] My code builds across all platforms

github-actions[bot] commented 1 year ago

Visit the preview URL for this PR (updated for commit 122e71f):

https://specfem-kokkos--pr26-port-to-gpu-u6ju95l2.web.app

(expires Thu, 09 Feb 2023 14:30:42 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 51d90c814ea3f3c5bec4951920458fd82e6db885