forked from trilinos/Trilinos
-
Notifications
You must be signed in to change notification settings - Fork 0
[Mirror] [Tpetra] Revisit "initialize Kokkos if needed" pattern [rebase] #83
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
Open
csiefer2
wants to merge
9
commits into
develop
Choose a base branch
from
pr-mirror-15136
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+35
−60
Open
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
5bbd94e
[Tpetra] Revisit "initialize Kokkos if needed" pattern
dalg24 408de86
Tpetra: Fixing @dalg24's commit to make it compile
csiefer2 559c11f
Update packages/tpetra/core/src/Tpetra_Details_initializeKokkos.cpp
csiefer2 497ba23
Techos Teuchos::GlobalMPISession really shouldn't be finalizing Kokko…
csiefer2 aae9de9
Tpetra: Adding some const
csiefer2 5649f86
Techos: Purging Kokkos from Teuchos_GlobalMPISession as per @bartlett…
csiefer2 227ce94
Tpetra: Updating with @dalg24 feedback
csiefer2 4718267
Teuchos: Removing kokkos ifguards
csiefer2 1731522
Tpetra: Force Clang
csiefer2 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using
std::atexit(Kokkos::finalize)to finalize Kokkos can lead to an incorrect finalization order whenTeuchos::GlobalMPISessionis used. In typical Trilinos applications,GlobalMPISessionis instantiated on the stack inmain(). Its destructor, which callsMPI_Finalize(), will execute whenmain()returns, which is before any functions registered withstd::atexit()are called. This results inKokkos::finalize()being called afterMPI_Finalize(). This is generally considered unsafe in MPI environments and can lead to crashes or undefined behavior, especially with MPI-aware Kokkos backends or when Kokkos cleanup tasks (such as releasing memory in certain execution spaces) depend on a valid MPI state.