Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Memory footprints of ActiveSubspace and POD for large problems. #10

Closed
tomoleary opened this issue Oct 5, 2021 · 2 comments
Closed
Assignees
Labels
enhancement New feature or request

Comments

@tomoleary
Copy link
Member

The way that these decompositions are currently computed (as well as data generation) are memory intensive operations, since they require storing many vectors simultaneously.

Reducing the memory footprint for data generation is easy, and already mostly fixed on tom_dev branch.

Reducing the memory footprint for the active subspace decomposition requires refactoring all the way from the randomized eigensolver down. The strategy is to iterate over samples one by one, solve the forward problem, set linearization points and then perform the entire Gaussian random matrix for that sample, updating the target matrix in place, and scaling accordingly for the averaging operation. The issue is that MatMVMult in hippylib iteratively applies a given operator to different vectors to perform a matrix-matrix product, but we want to put this MatMVMult itself inside of a for loop, so we need to create a custom averagedMatMVMult function that then can apply the entire matrix-matrix action for one sample, and then iterate over samples until the entire action is complete.

Additionally because the doublePass algorithm calls this operation twice, the samples need to be exactly the same for successive calls to this operator, but we want the option to not have to save the samples directly, so we need a deterministic sampling strategy (this requires custom instance of Random with deterministic burn-ins). This raises a question about the parRandom when it is on a communicator mesh grid.

@tomoleary tomoleary self-assigned this Oct 5, 2021
@tomoleary tomoleary added the enhancement New feature or request label Oct 5, 2021
@tomoleary tomoleary reopened this Oct 8, 2021
@tomoleary
Copy link
Member Author

Resolved in October 8 PR.

@tomoleary
Copy link
Member Author

Resolved in October 8 PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant