-
Notifications
You must be signed in to change notification settings - Fork 54
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
libCEED integration #97
Conversation
edde218
to
eb5ccd3
Compare
eb5ccd3
to
1cc8052
Compare
…d operator assembly (WIP)
… operator AddMult with non-unit coefficient
…arately from integration-based operators
1cc8052
to
f764f01
Compare
f764f01
to
b2b2d4a
Compare
Includes some test meshes in 2D and 3D, in test/unit/mesh.
…st of the Palace application
…taneous unordered_map::find while also inserting
…, tested across many meshes/finite element spaces in the unit tests
…ng the palace::FiniteElementSpace class which inherits from mfem::ParFiniteElementSpace and adds a UUID so each instance of the class can be uniquely identified Adds UUID generation functionality using https://github.com/mariusbancila/stduuid, one choice of many for a light-weight, permissively licensed, reliable UUID generator. We only need weak guarantees on uniqueness, since we won't be generating millions or billions of objects requiring unique identification.
… library dependency
…ocess-local block of the operator, not on the parallel assembled one)
Unit testing and benchmarking libCEED integration with Catch2
Add GitHub Actions workflow for unit tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's very hard to see much into the correctness of the Q functions, aside from some basic pattern matching, so am relying on the correctness of the tests. Very good there'll now be a unit test framework in place.
The only largish change I could see is doing away comes from reducing the indirection with the new bilinear form. Breaking from the mfem version it's possible to make a much neater interface.
…e and use return value from emplace_back()
…dientIntegrator for (grad(u), v) with u in H1 and v in vector H1
…ent in GradFluxErrorEstimator, enable partial assembly for BilinearForms, ensure thread-safety in loop over elements)
…e rule modifications for forming RHS
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes on the first decimal place seem surprising, but note for posterity: the regeneration here compared to mainline is due to regeneration necessary for b2b2d4a in updating the quadrature orders.
Integrate libCEED for operator partial assembly directly into Palace rather than via patches on MFEM, for both long-term maintainability and better integration with the specialized use within Palace.
All integrators are now assembled via libCEED using user-defined QFunctions rather than using the predefined MFEM integrators. This allows for a single code path for both CPU and device-based partial and full assembly. The
"Device"
configuration file option now only configures themfem::Device
(ascpu
,cuda
,hip
, etc.) while the new"Backend"
option configures the libCEED backend, with appropriate defaults based on the value of"Device"
for the typical end-user.TODO:
Resolves #101 (updates libCEED and MFEM dependencies)