-
Notifications
You must be signed in to change notification settings - Fork 563
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
Ifpack2: LocalSparseTriangularSolver should use ZERO CombineMode on Import #672
Labels
Comments
This is, in fact, how Ifpack2::LocalFilter::apply should behave. |
mhoemmen
added
the
stage: in review
Primary work is completed and now is just waiting for human review and/or test feedback
label
Oct 4, 2016
mhoemmen
pushed a commit
that referenced
this issue
Oct 4, 2016
@trilinos/ifpack2 Make Ifpack2::LocalSparseTriangularSolver use the ZERO CombineMode if it needs to do an Import. This makes it behave as LocalFilter _should_ behave. This should not affect use in Ifpack2::AdditiveSchwarz, because for that case, per Andrew Bradley's fix, the domain and column Map that LocalSparseTriangularSolver sees should always be the same, regardless of overlap.
mhoemmen
removed
the
stage: in review
Primary work is completed and now is just waiting for human review and/or test feedback
label
Oct 4, 2016
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@trilinos/ifpack2
Suppose that users give LocalSparseTriangularSolver a matrix with a nontrivial Import object. What is the correct interpretation of "local sparse triangular solve" in that case?
Compare to ILU(k). If users give a matrix with a nontrivial Import to ILU(k), what they generally expect is domain decomposition with no overlap across MPI processes, and ILU(k) within each MPI process, as a subdomain solver.
This implies doing an Import with the ZERO CombineMode to take care of any local permutations from the domain Map to the column Map. Off-process entries should be zeroed out. The only reason LocalSparseTriangularSolve needs to do the Import, is to take care of any local permutations that may exist.
If the domain Map is fitted to the column Map on a process, it could avoid the copy by making its column Map (multi)vector just an alias of its domain Map (multi)vector on that process. Import of a MultiVector knows not to copy if the pointers are the same.
This may be part of #558. @ambrad pointed out that LocalSparseTriangularSolver does an Import (and is doing a nontrivial Import! suggesting that Ifpack2::AdditiveSchwarz is behaving badly), but CrsMatrix::localSolve does not (it assumes a post-Imported input (multi)vector).
The text was updated successfully, but these errors were encountered: