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

Domain performance optimization #92

Closed Rohit-Kakodkar closed 11 months ago

Rohit-Kakodkar commented 11 months ago

Description

Implements the Kokkos kernels class.

This pull request implements the specfem::domain::impl::kernels class. Perviously we used virtual pointers on elements, sources and receivers to implement the physics related to different elements. However, on GPUs this is very inefficient. This update implements the templated kernels class which describes the kokkos parallelism and generates separate kernels for different types of elements. This restores the optimal performance achieved from working-operator-implementation branch.

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.