WIP: Contiguous memory layout for the solution#189
Draft
Andres-MG wants to merge 5 commits into
Draft
Conversation
The solution is stored in small arrays scattered over all the elements. Additionally, a global vector also exists to enable implicit time integration. This commit defines the element-local arrays as pointers to the corresponding regions in the global vector, avoiding allocations and automatically coupling local and global representations of the solution. Still WIP as some features are missing, namely p-adaptation and the creation of individual elements (not attached to the global storage).
Collaborator
|
Seems quite interesting, let's talk about this on Thursday meeting! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Right now the solution vector is scattered across all the elements, in small non-contiguous arrays. On top of this, since implicit solvers need a long contiguous vector, we transfer the solution from local to global and vice-versa several times when using these methods.
This PR defines the local storage in terms of pointers to the correct regions of the global array. This means that there is only one solution vector with two different access patterns. The functions
global2Localandlocal2Globalare not necessary anymore, and the memory footprint is somewhat smaller as the arrays are not duplicated. Accelerating implicit methods with GPUs should also be easier now.Conversely, at least two features still need to be reworked: p-adaptation and the construction of individual elements.