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
, andHelmSolveImpl.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