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

Tpetra::CrsGraph::computeLocalConstants ignores Maps to find lower/upper triangular, but CrsGraph uses Maps to find diagonal entries #2658

Closed
mhoemmen opened this issue Apr 30, 2018 · 2 comments
Assignees
Labels
CLOSED_DUE_TO_INACTIVITY Issue or PR has been closed by the GitHub Actions bot due to inactivity. MARKED_FOR_CLOSURE Issue or PR is marked for auto-closure by the GitHub Actions bot. pkg: Ifpack2 pkg: Tpetra TpetraRF

Comments

@mhoemmen
Copy link
Contributor

Tpetra::CrsGraph::computeLocalConstants only looks at the local index values to find whether the graph is structurally locally lower or upper triangular. However, computeLocalConstants and other CrsGraph methods (e.g., getLocalDiagOffsets) use global indices to identify diagonal entries.

This means that users who expect lower / upper triangular status to rely on global indices, may get wrong answers when they call Tpetra::CrsMatrix::localSolve. Furthermore, attempts to fix this may cause surprising test failures in application code.

Ifpack2's incomplete factorizations and Ifpack2::AdditiveSchwarz work around this (intentionally or not) by using Ifpack2::LocalFilter. This class assigns new, contiguous row and column Maps. Contiguous Maps don't have this problem. (This is a long-known issue. See Bug 5992 in the old Bugzilla system, circa November 2013.) However, Ifpack2 preconditioners that do not use LocalFilter may get the wrong answer, especially if they identify and pre-extract the diagonal entries (as e.g., Ifpack2::Relaxation does). It's not clear whether this could break Ifpack2, but it may be worth investigating.

This issue is coming to the fore once again, because of the urgency of #2630. Fixing #2630 will force detection of local lower/upper triangularity into downstream solvers, like Ifpack2::LocalSparseTriangularSolver. Comments like #581 (comment) suggest that HTS, an optimized sparse triangular solver in Trilinos, only uses local indices to determine the triangular structure. It may make sense for now, for Ifpack2 to use only local indices, and for LocalSparseTriangularSolver to reject noncontiguous Maps. I encourage discussion on this issue.

@trilinos/tpetra @trilinos/ifpack2 @ambrad @aprokop

Expectations

The way that Tpetra and/or Ifpack2 identify diagonal entries, should be consistent with the way that Tpetra and/or Ifpack2 identify local lower/upper triangular structure.

Current Behavior

Tpetra::CrsGraph::computeLocalConstants uses only local indices to identify local lower/upper triangular structure, but CrsGraph uses global indices (the row and column Maps together) to identify diagonal entries.

Motivation and Context

Fixing #2630 means purging local lower/upper triangular structure detection from Tpetra. Ifpack2::LocalSparseTriangularSolver needs this detection for local sparse triangular solves. LocalSparseTriangularSolver could just make users tell it about the local triangular structure; this would work for Ifpack2 classes like ILUT and RILUK, but would not work for actual direct users of LocalSparseTriangularSolver.

Related Issues

@mhoemmen mhoemmen self-assigned this Apr 30, 2018
kddevin added a commit that referenced this issue Jul 8, 2020
lowerTriangular_, upperTriangular_, nodeNumDiags_, globalNumDiags_
for #7446, #2630, #2658
jmgate pushed a commit to tcad-charon/Trilinos that referenced this issue Jul 10, 2020
…s:develop' (7cb81d9).

* trilinos-develop:
  Tempus: fix SSPERK54 bug and add error estimator
  Put pack the LD_LIBRARY_PATH to fix intel-18 test failures (ATDV-272)
  Intrepid2: Remove deprecation mascros (issue trilinos#7070)
  tpetra:  removing computation of unused fields lowerTriangular_, upperTriangular_, nodeNumDiags_, globalNumDiags_ for trilinos#7446, trilinos#2630, trilinos#2658
  Add if guard KOKKOS_ENABLE_CUDA_UVM
  Change COMPLEX to ADELUS_COMPLEX
  Add specialization for UVM
  Amesos2: Clean up Basker type handling
  Amesos2: Refactor Basker to use Kokkos views
  Use cuda host pinned memory for MPI_Irecv/MPI_Send
  Remove copy in solve and do some cleanups
jmgate pushed a commit to tcad-charon/Trilinos that referenced this issue Jul 10, 2020
…s:develop' (7cb81d9).

* trilinos-develop:
  Tempus: fix SSPERK54 bug and add error estimator
  Put pack the LD_LIBRARY_PATH to fix intel-18 test failures (ATDV-272)
  Intrepid2: Remove deprecation mascros (issue trilinos#7070)
  tpetra:  removing computation of unused fields lowerTriangular_, upperTriangular_, nodeNumDiags_, globalNumDiags_ for trilinos#7446, trilinos#2630, trilinos#2658
  Add if guard KOKKOS_ENABLE_CUDA_UVM
  Change COMPLEX to ADELUS_COMPLEX
  Add specialization for UVM
  Amesos2: Clean up Basker type handling
  Amesos2: Refactor Basker to use Kokkos views
  Use cuda host pinned memory for MPI_Irecv/MPI_Send
  Remove copy in solve and do some cleanups
@github-actions
Copy link

github-actions bot commented Jun 5, 2021

This issue has had no activity for 365 days and is marked for closure. It will be closed after an additional 30 days of inactivity.
If you would like to keep this issue open please add a comment and/or remove the MARKED_FOR_CLOSURE label.
If this issue should be kept open even with no activity beyond the time limits you can add the label DO_NOT_AUTOCLOSE.
If it is ok for this issue to be closed, feel free to go ahead and close it. Please do not add any comments or change any labels or otherwise touch this issue unless your intention is to reset the inactivity counter for an additional year.

@github-actions github-actions bot added the MARKED_FOR_CLOSURE Issue or PR is marked for auto-closure by the GitHub Actions bot. label Jun 5, 2021
@github-actions
Copy link

github-actions bot commented Jul 7, 2021

This issue was closed due to inactivity for 395 days.

@github-actions github-actions bot added the CLOSED_DUE_TO_INACTIVITY Issue or PR has been closed by the GitHub Actions bot due to inactivity. label Jul 7, 2021
@github-actions github-actions bot closed this as completed Jul 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLOSED_DUE_TO_INACTIVITY Issue or PR has been closed by the GitHub Actions bot due to inactivity. MARKED_FOR_CLOSURE Issue or PR is marked for auto-closure by the GitHub Actions bot. pkg: Ifpack2 pkg: Tpetra TpetraRF
Projects
None yet
Development

No branches or pull requests

1 participant