Skip to content

Add CUDA backend implementation for RobBndCond

Issue/feature addressed

The RobBndCond operator was re-factored as a general implementation RobBndCondImpl.hpp. For the CUDA backend, this introduced repeated device/host and host/device copies. The same problem will occur with a Kokkos-CUDA backend.

Proposed solution

  • Fully implement Serial Robin BC backend for legacy Nektar++
  • Add CUDA back-end to avoid device/host and host/device copy.
  • Add Kokkos back-end to avoid device/host and host/device copy.
  • Fully update ConjGradImpl.hpp, DiagPreconImpl.hpp, FwdTransImpl.hpp, and HelmSolveImpl.hpp to use Robin BCs.

Implementation

Tests

  • The FwdTrans and HelmSolve unit tests are updated to add a test case (Helmholtz2D_AllBCs) with Robin boundary conditions

Note: Only the SerialStdMat and the CUDASumFac unit tests are currently activated

Suggested reviewers

Please suggest any people who would be appropriate to review your code.

Notes

Please add any other information that could be useful for reviewers.

Checklist

  • Functions and classes, or changes to them, are documented.
  • [ ] User guide/documentation is updated.
  • [ ] Changelog is updated.
  • Suitable tests added for new functionality.
  • Contributed code is correctly formatted. (See the contributing guidelines).
  • License added to any new files.
  • No extraneous files have been added (e.g. compiler output or test data files).
Edited by Jacques Xing

Merge request reports