Skip to content

Commit

Permalink
Merge Pull Request #12187 from trilinos/Trilinos/csiefer2-eti-devices
Browse files Browse the repository at this point in the history
Automatically Merged using Trilinos Pull Request AutoTester
PR Title: b'Tpetra: Removing the incorrect ETI_DEVICES'
PR Author: csiefer2
  • Loading branch information
trilinos-autotester authored Sep 6, 2023
2 parents 5382f31 + 06d6bb8 commit cb96935
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 29 deletions.
29 changes: 1 addition & 28 deletions packages/tpetra/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -111,18 +111,7 @@ INCLUDE(CMakeCuda.txt)
# Note on (2) above: some of the types can only be enabled if certain
# requirements are fulfilled.
#
# Tpetra also keeps a list of the Kokkos Device types (specializations
# of Kokkos::Device) over which it does instantiations and/or tests.
# This is the Tpetra_ETI_DEVICES CMake variable. Eventually, we will
# deprecate and remove the above Node instantiation list, and just use
# the list of enabled Devices. We use devices rather than execution
# spaces, because a Kokkos::Device is an (execution space, memory
# space) pair. This means that it is more general. For example,
# Device<Cuda, CudaSpace> != Device<Cuda, CudaUVMSpace>, yet some
# users may want both represented. The particular use case I have in
# mind here is Device<OpenMP, $MEM_SPACE> where $MEM_SPACE could be
# either HostSpace or the HBM (high-bandwidth memory) memory space.
#


SET(${PACKAGE_NAME}_ETI_SCALARS "")
# Exclude all ordinal types (GlobalOrdinal and int)
Expand All @@ -138,7 +127,6 @@ SET(${PACKAGE_NAME}_ETI_SCALARS_KOKKOS_ORDS "")

SET(${PACKAGE_NAME}_ETI_LORDS "")
SET(${PACKAGE_NAME}_ETI_GORDS "")
SET(${PACKAGE_NAME}_ETI_DEVICES "")
SET(${PACKAGE_NAME}_ETI_NODES "")

# ============================================================
Expand Down Expand Up @@ -572,36 +560,21 @@ ENDIF ()
# Construct the list of enabled Device and Node types.
#
IF(Tpetra_INST_SERIAL)
LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::Serial, Kokkos::HostSpace>")
LIST(APPEND ${PACKAGE_NAME}_ETI_NODES "Tpetra::KokkosCompat::KokkosSerialWrapperNode")
ENDIF()
IF(Tpetra_INST_PTHREAD)
LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::Threads, Kokkos::HostSpace>")
LIST(APPEND ${PACKAGE_NAME}_ETI_NODES "Tpetra::KokkosCompat::KokkosThreadsWrapperNode")
ENDIF()
IF(Tpetra_INST_OPENMP)
LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::OpenMP, Kokkos::HostSpace>")
LIST(APPEND ${PACKAGE_NAME}_ETI_NODES "Tpetra::KokkosCompat::KokkosOpenMPWrapperNode")
ENDIF()
IF(Tpetra_INST_CUDA)
# TpetraCore currently requires UVM, so it doesn't make sense to
# instantiate over Kokkos::CudaSpace as well as
# Kokkos::CudaUVMSpace.
LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::Cuda, Kokkos::CudaUVMSpace>")
LIST(APPEND ${PACKAGE_NAME}_ETI_NODES "Tpetra::KokkosCompat::KokkosCudaWrapperNode")
ENDIF()
IF(Tpetra_INST_HIP)
# TpetraCore currently requires UVM, so it doesn't make sense to
# instantiate over Kokkos::HIPSpace as well as
# Kokkos::HIPHostPinnedSpace.
LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::Experimental::HIP, Kokkos::Experimental::HIPHostPinnedSpace>")
LIST(APPEND ${PACKAGE_NAME}_ETI_NODES "Tpetra::KokkosCompat::KokkosHIPWrapperNode")
ENDIF()
IF(Tpetra_INST_SYCL)
# TpetraCore currently requires UVM, so it doesn't make sense to
# instantiate over Kokkos::SYCLDeviceUSMSpace as well as
# Kokkos::SYCLSharedUSMSpace.
LIST(APPEND ${PACKAGE_NAME}_ETI_DEVICES "Kokkos::Device<Kokkos::Experimental::SYCL, Kokkos::Experimental::SYCLSharedUSMSpace>")
LIST(APPEND ${PACKAGE_NAME}_ETI_NODES "Tpetra::KokkosCompat::KokkosSYCLWrapperNode")
ENDIF()

Expand Down
1 change: 0 additions & 1 deletion packages/tpetra/core/guide/src/Obtaining/Building.rst
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@ For all templated types, the CMake options have the pattern: ``Tpetra_INST_<TYPE

Concerning (2), some of the types can only be enabled if certain requirements are fulfilled.

Tpetra also keeps a list of the Kokkos Device types (specializations of ``Kokkos::Device``) over which it does instantiations and/or tests. This is the ``Tpetra_ETI_DEVICES`` CMake variable. Eventually, we will deprecate and remove the above ``Node`` instantiation list, and just use the list of enabled Devices. We use devices rather than execution spaces, because a ``Kokkos::Device`` is an (execution space, memory space) pair. This means that it is more general. For example, ``Device<Cuda, CudaSpace> != Device<Cuda, CudaUVMSpace>``, yet some users may want both represented. The particular use case is ``Device<OpenMP, $MEM_SPACE>`` where ``$MEM_SPACE`` could be either ``HostSpace`` or the ``HBM`` (high-bandwidth memory) memory space.

Kokkos Execution Space Types
----------------------------
Expand Down

0 comments on commit cb96935

Please sign in to comment.