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

Ifpack2: LocalSparseTriangularSolver should use ZERO CombineMode on Import #672

Closed
mhoemmen opened this issue Sep 28, 2016 · 1 comment
Closed
Assignees

Comments

@mhoemmen
Copy link
Contributor

mhoemmen commented Sep 28, 2016

@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).

@mhoemmen
Copy link
Contributor Author

mhoemmen commented Sep 28, 2016

This is, in fact, how Ifpack2::LocalFilter::apply should behave.

@mhoemmen 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 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
@mhoemmen mhoemmen closed this as completed Oct 4, 2016
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

2 participants