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

Diagonal Assembly for Uncoupled Components #1219

Open
jeremylt opened this issue May 22, 2023 · 1 comment
Open

Diagonal Assembly for Uncoupled Components #1219

jeremylt opened this issue May 22, 2023 · 1 comment

Comments

@jeremylt
Copy link
Member

Summary

Our diagonal assembly does more work and memory than it needs when we are working with uncoupled fields. We should have a way to indicate uncoupled fields to improve performance (especially memory) for diagonal assembly.

Context

Jed:

I think the memory issue is related to assembling the diagonal for the projection, which I believe forms a dense qfunction "core" at each quadratrue. We could instead assemble the diagonal for a scalar projection and use a Kronecker product on the diagonal so that we never need to deal with that big intermediate data structure.

Jeremy:

Yeah, I also want to pursue that fix over in libCEED, but I think subsetting the list of values would also be a nice feature to have if we can add it without too much complexity. I'd put #79 as higher priority though.

This might be easier to add as a Ratel only fix in the short term. However, it feels like something that is generally useful. Though, I'm not sure how I'd want to indicate in libCEED that this sort of diagonal assembly should happen

Jed:

CeedQFunctionSetDiagonal(CeedQFunction, bool) or more generally CeedQFunctionSetCoupling(CeedQFunction, const CeedInt group[])?

@jeremylt
Copy link
Member Author

@zatkins-dev I think this would help with some of the memory usage from the diagonal assembly for the diagnostic value projection on the GPU

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant