-
Notifications
You must be signed in to change notification settings - Fork 577
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
MueLu: kokkos refactor of uncoupled aggregation and amalgamation process #5838
Comments
PR #5841 implements the new interface in LWGraph, first step done. |
…1 aggregation issue trilinos#5838 Adding a set and get methods to Aggregates_kokkos in order to store the coloring of the LWGraph used for aggregates creation. This will allow to pass the colors to all phases of aggregation without reworking interfaces too much. Using the new methods in LWGraph_kokkos avoids copying on host the data needed by the coloring algorithm. This saves 2 communication: 1 DtoH and 1 HtoD. Extra time monitors are added in AggregationPhase1 to account for coloring and aggregation separately. Adding a test that exercises the Distance2 algorithmic path in test/scaling
…s:develop' (b6b763a). * trilinos-develop: MueLu: interfacing distance2 coloring work with Aggregates and Phase 1 aggregation issue trilinos#5838 MueLu: adding unit-test for LWGraph_kokkos MueLu: extending the interface of LWGraph to give direct access to rowPtrs and entries
…s:develop' (b6b763a). * trilinos-develop: MueLu: interfacing distance2 coloring work with Aggregates and Phase 1 aggregation issue trilinos#5838 MueLu: adding unit-test for LWGraph_kokkos MueLu: extending the interface of LWGraph to give direct access to rowPtrs and entries
Using the work from #5841 the data from the |
With PR #5860 merged the framework upgrades for on device aggregation are completed, the next PR will tackle the algorithmic upgrade. |
Two new aggregation algorithms are implemented: 1) is a direct refactor of the serial algorithm using kokkos 2) is a similar approach to 1) but provides deterministic aggregates
Two new aggregation algorithms are implemented: 1) is a direct refactor of the serial algorithm using kokkos 2) is a similar approach to 1) but provides deterministic aggregates
…gregation Automatically Merged using Trilinos Pull Request AutoTester PR Title: MueLu: refactore of aggregation phase 1, see issue #5838 PR Author: lucbv
…s:develop' (98aab1e). * trilinos-develop: MueLu: fix -Wcatch-value warnings (trilinos#5891) Automatic snapshot commit from tribits at ae74743 Xpetra: ETI - BlockedMap - 2019-09-10 - bugfix MueLu: refactore of aggregation phase 1, see issue trilinos#5838 Xpetra: ETI - StridedMap MueLu: Nullspace fix for distributed coarse matrix Tpetra: Enabling L,G,N ETI for FECrsGraph (trilinos#5886) Tempus: Missing Args in explicit Steppers InArgs.
…s:develop' (98aab1e). * trilinos-develop: MueLu: fix -Wcatch-value warnings (trilinos#5891) Automatic snapshot commit from tribits at ae74743 Xpetra: ETI - BlockedMap - 2019-09-10 - bugfix MueLu: refactore of aggregation phase 1, see issue trilinos#5838 Xpetra: ETI - StridedMap MueLu: Nullspace fix for distributed coarse matrix Tpetra: Enabling L,G,N ETI for FECrsGraph (trilinos#5886) Tempus: Missing Args in explicit Steppers InArgs.
…#5838 As for phase 1, this adds two code path, one for deterministic and one for random aggregation a.k.a. non deterministic.
@lucbv Rather than just push directly to your branch, I made a PR to give you a chance to look at what I changed.
|
Tagging Nalu-Wind stakeholders @alanw0, @sayerhs, and @sthomas61. |
…#5838 As for phase 1, this adds two code path, one for deterministic and one for random aggregation a.k.a. non deterministic.
…s:develop' (2c8ff69). * trilinos-develop: MueLu: rebasing gold files MueLu: adding refactor for phase 2b of aggregation MueLu: kokkos refactor of phase 2a of aggregation, see issue trilinos#5838
…s:develop' (2c8ff69). * trilinos-develop: MueLu: rebasing gold files MueLu: adding refactor for phase 2b of aggregation MueLu: kokkos refactor of phase 2a of aggregation, see issue trilinos#5838
Phase 3 seems to work correctly, still need to test it on GPU and to rebase the gold files.
Phase 3 seems to work correctly, still need to test it on GPU and to rebase the gold files.
MueLu: refactor of Phase3 aggregation, see issue #5838
PR #5995 provides a kokkos refactor for the last phase of aggregation. Now only the amalgamation process needs to be refactored, this should technically be easy except for the switch from using |
…see issue trilinos#5838 Starting the proper kokkos refactor of the amalgamation process. It is not as easy as one might hope since the Map class is not that Kokkos friendly. The locaMap class is helping a bit tough. At the moment the interfaces for amalgamation methods have been modified to remove Teuchos::Array in favor of Kokkos::View, a few typedefs are added for convenience. The algorithms in AmalgamationInfo_kokkos are almost all refactored except for the method: ComputeUnamalgamatedImportDofMap which needs some more work. Next step: tackle the AmalgamationFactory_kokkos...
…s:develop' (4ec5f0b). * trilinos-develop: Change Spack module from SuperLUDist 6.2.0 to 5.4.0 (CDOFA-66) Testing: Tpetra: make nightly build faster Update CrsMatrix_UnitTests4.cpp Tpetra: Fixes so that trilinos#6076 can pass MueLu: rebasing the gold files for phase 3 refactored outputs MueLu: refactor of Phase3 aggregation, see issue trilinos#5838 KokkosKernels - trsm transpose does not solve the problem correctly.
…s:develop' (4ec5f0b). * trilinos-develop: Change Spack module from SuperLUDist 6.2.0 to 5.4.0 (CDOFA-66) Testing: Tpetra: make nightly build faster Update CrsMatrix_UnitTests4.cpp Tpetra: Fixes so that trilinos#6076 can pass MueLu: rebasing the gold files for phase 3 refactored outputs MueLu: refactor of Phase3 aggregation, see issue trilinos#5838 KokkosKernels - trsm transpose does not solve the problem correctly.
…artition-of-unity * 'develop' of https://github.com/searhein/Trilinos: (100 commits) Change initializer list order to make g++ happy Plumbing for BelosBlockCGSolMgr so that Assert Positive Definiteness flag gets passed to BelosCGIter Change Spack module from SuperLUDist 6.2.0 to 5.4.0 (CDOFA-66) Testing: Tpetra: make nightly build faster Update CrsMatrix_UnitTests4.cpp Tpetra: Fixes so that trilinos#6076 can pass MueLu: rebasing the gold files for phase 3 refactored outputs MueLu: refactor of Phase3 aggregation, see issue trilinos#5838 KokkosKernels - trsm transpose does not solve the problem correctly. Belos: treats cases where numResTests is zero Belos: removes a int cast warning and removes one unnecessary StatusTestCombo cast Belos: removes a int cast warning and removes one unnecessary StatusTestCombo cast Reduced from ctest -j8 to -j4 for all CUDA builds (trilinos#6052) Belos: solves Issue trilinos#6059 Belos: solves Issue trilinos#6059 ML: Code cleanup to RefMaxwell ML: Removing supperfluous import constructor ML: Adding new support routine Xpetra: disable Map cloner test if no Tpetra deprecated Phalanx - wrong number of kokkos allocation arguments. ...
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. |
This issue was closed due to inactivity for 395 days. |
Reopening until verified as fixed. |
Enhancement
@trilinos/muelu
This issue will track the progress made to integrate all changes from the branch MueLu_uncoupled_aggregation_refactor. The aggregation refactor was done about a year ago and cannot be merged easily anymore so merging the previously mentioned branch will not be attempted.
Instead the changes in that branch will broken into smaller incremental changes with the hope that these incremental changes will be merged quickly and show a more logical progression.
As I tried to merge the old branch I also realized that some changes are potentially poorly designed and I am planning on modifying the work a bit to accommodate better design changes.
Here is a list of new features that are needed to complete the refactor work:
MueLu::LWGraph
needs to new methods:getRowPtrs()
andgetEntries()
to avoid awkward extraction of data fromgraph_
see here and hereMueLu:: AggregationAlgorithmBase_kokkos::BuildAggregates(...)
I would like to update it to use aKokkos::View
instead of astd::vector
for portability reasons and store pointers to additional data such as coloring information inMueLu::Aggregates_kokkos
. This will avoid clashes withStructuredAggregation
which does not require coloring information and already stores a pointer to aMueLu::IndexManager_kokkos
MueLu::AmalgamationInfo_kokkos
andMueLu::AmalgamationFactory_kokkos
to set the infrastructure in MueLu for the related algorithms and data structured to be ported to kokkos.Kokkos::View
andAggregates_kokkos
and runs on device.The text was updated successfully, but these errors were encountered: