-
Notifications
You must be signed in to change notification settings - Fork 99
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
Only instantiate Kokkos's default Cuda mem space #1361
Conversation
Instead of instantiating for both Cuda,CudaSpace and Cuda,CudaUVMSpace by default, just instantiate for the Kokkos's default mem space (Cuda::memory_space), which is controlled by Kokkos_ENABLE_CUDA_UVM.
Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection Is Not Necessary for this Pull Request. |
Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects: Pull Request Auto Testing STARTING (click to expand)Build InformationTest Name: KokkosKernels_PullRequest_Tpls_CUDA9_Tpls_CUDA10_Tpls_CUDA10_LayoutRight_GCC720_Light_GCC720_GCC740
Jenkins Parameters
Build InformationTest Name: KokkosKernels_PullRequest_GCC720
Jenkins Parameters
Build InformationTest Name: KokkosKernels_PullRequest_GCC720_Light_LayoutRight
Jenkins Parameters
Build InformationTest Name: KokkosKernels_PullRequest_Tpls_GCC720
Jenkins Parameters
Build InformationTest Name: KokkosKernels_PullRequest_Tpls_INTEL18
Jenkins Parameters
Build InformationTest Name: KokkosKernels_PullRequest_CLANG1001
Jenkins Parameters
Using Repos:
Pull Request Author: brian-kelley |
Also if the build works with CudaSpace it is quite unlikely that it will fail with CudaUVMSpace, at least I can't think of instances when that would be the case? |
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.
I am okay with that change but we should talk about it tomorrow during the stand-up and also it will be good to advertise this among the development team!
@lucbv Yes I think so, since we don't do MPI or try to access device views on host. There are a couple of tests which are only enabled with UVM now actually, like findRelOffset and trsv, but there is nothing about the actual kernels that require UVM. The tests just need refactoring. |
Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED Pull Request Auto Testing has PASSED (click to expand)Build InformationTest Name: KokkosKernels_PullRequest_Tpls_CUDA9_Tpls_CUDA10_Tpls_CUDA10_LayoutRight_GCC720_Light_GCC720_GCC740
Jenkins Parameters
Build InformationTest Name: KokkosKernels_PullRequest_GCC720
Jenkins Parameters
Build InformationTest Name: KokkosKernels_PullRequest_GCC720_Light_LayoutRight
Jenkins Parameters
Build InformationTest Name: KokkosKernels_PullRequest_Tpls_GCC720
Jenkins Parameters
Build InformationTest Name: KokkosKernels_PullRequest_Tpls_INTEL18
Jenkins Parameters
Build InformationTest Name: KokkosKernels_PullRequest_CLANG1001
Jenkins Parameters
|
Status Flag 'Pre-Merge Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED AND APPROVED by [ lucbv ]! |
Status Flag 'Pull Request AutoTester' - Pull Request MUST BE MERGED MANUALLY BY Project Team - This Repo does not support Automerge |
Instead of instantiating for both
<Cuda,CudaSpace>
and<Cuda,CudaUVMSpace>
by default, just instantiate for the Kokkos's default mem space
(
Cuda::memory_space
), which is controlled by the optionKokkos_ENABLE_CUDA_UVM
.This is a 5 year old suggestion from Trilinos but still, I think better late than never :)
See trilinos/Trilinos#1729
This will roughly cut the library build time in half for Cuda builds, with no downsides that I can think of. The Tpetra stack is either all-UVM or all-CudaSpace. Meanwhile our unit tests, perf tests and examples all use the default mem space for the given exec space, so we're not losing coverage with this change.