Draft: Redesign of Nektar++ core data structures and algorithms
Issue/feature addressed
The existing Nektar++ design prevented the efficient use of vectorisation, GPUs and other current and future platforms. Assumptions made in the data structures did not allow for the reorganisation of memory to support vectorisation, or the use of memory on attached devices. Algorithms were tightly coupled to the ExpList
class, creating a bottleneck for the development of new solvers.
Proposed solution
Redesign the core data structures and algorithms of Nektar++ to address the above concerns. A high-level Field
class encapsulates the storage of solutions, tied to the nature of the representation (physical space, coefficient space, etc), tied to an abstraction of a memory back-end. Mathematical operations are represented as abstract Operators
, with specific concrete implementations targeted to different platforms or programming models.
Implementation
New implementation is currently captured in the Operators
library.
Tests
A range of unit tests have been added within the UnitTests
directory.
Suggested reviewers
Everyone
Notes
It is anticipated that this MR will be merged by the release of v5.6, but will not be integrated with our solvers until a later release.
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).