Skip to content

Conversation

@lindsayad
Copy link
Member

@lindsayad lindsayad commented Jan 26, 2026

I'll be interested to see whether the localize changes break stuff. I bet it will at least break unit testing but it will be more interesting to see whether it breaks production code

The code path that used to exist after the `operator=` branch is
incredibly non-performant. It led to a serial GPU run running 20%
slower on residual evaluations than a 30 rank CPU run. After its removal, the GPU run
residual evaluation is 3 times faster. That's how large the performance
penalty is
Copy link
Member

@roystgnr roystgnr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All I can find is that one assertion failing - and that's probably an overzealous assertion with any PETSc version that's not so ancient we stopped supporting it a decade ago? I'd try just removing it and see what happens.

LibmeshPetscCall(VecCopy(_vec,v_local->_vec));
else
libmesh_error_msg("Vectors are inconsistent");
libmesh_assert(this->comm().verify(int(this->type())));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To satisfy my OCD: could we use std::underlying_type<ParallelType>::type instead of int here?

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants