Skip to content

Commit

Permalink
Remove "slow mem space" device ETI (#1619)
Browse files Browse the repository at this point in the history
Instead of instantiating kernels with all possible exec/mem1/mem2 combinations,
only do exec/mem. Plug in that one memory space for both "persistent"
and "temporary" space of the KokkosKernelsHandle.
  • Loading branch information
brian-kelley authored Dec 6, 2022
1 parent 39503ff commit d5ae5ce
Show file tree
Hide file tree
Showing 9 changed files with 239 additions and 247 deletions.
8 changes: 0 additions & 8 deletions cmake/kokkoskernels_eti_devices.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -220,14 +220,6 @@ FOREACH(EXEC ${EXEC_SPACES})
LIST(APPEND DEVICES ${EXEC}_MEMSPACE_${MEM})
SET(${EXEC}_MEMSPACE_${MEM}_CPP_TYPE "${${EXEC}_CPP_TYPE},${MEMSPACE_${MEM}_CPP_TYPE}")
SET(KOKKOSKERNELS_INST_${EXEC}_MEMSPACE_${MEM} ON)
FOREACH(MEM2 ${${EXEC}_VALID_MEM_SPACES})
IF (KOKKOSKERNELS_INST_MEMSPACE_${MEM2})
LIST(APPEND DEVICES_W_SLOW_SPACE ${EXEC}_MEMSPACE_${MEM}_MEMSPACE_${MEM2})
SET(${EXEC}_MEMSPACE_${MEM}_MEMSPACE_${MEM2}_CPP_TYPE
"${${EXEC}_CPP_TYPE},${MEMSPACE_${MEM}_CPP_TYPE},${MEMSPACE_${MEM2}_CPP_TYPE}")
SET(KOKKOSKERNELS_INST_${EXEC}_MEMSPACE_${MEM}_MEMSPACE_${MEM2} ON)
ENDIF()
ENDFOREACH()
ENDIF()
ENDFOREACH()
ENDIF()
Expand Down
2 changes: 1 addition & 1 deletion graph/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ KOKKOSKERNELS_GENERATE_ETI(Graph_color_d1 color_d1
COMPONENTS graph
HEADER_LIST ETI_HEADERS
SOURCE_LIST SOURCES
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES_W_SLOW_SPACE
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES
)
82 changes: 41 additions & 41 deletions graph/impl/KokkosGraph_color_d1_spec.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,21 +64,21 @@ struct color_d1_eti_spec_avail {
} // namespace Impl
} // namespace KokkosGraph

#define KOKKOSGRAPH_COLOR_D1_ETI_SPEC_AVAIL( \
SCALAR_TYPE, ORDINAL_TYPE, OFFSET_TYPE, LAYOUT_TYPE, EXEC_SPACE_TYPE, \
MEM_SPACE_TYPE, SLOW_MEM_SPACE_TYPE) \
template <> \
struct color_d1_eti_spec_avail< \
KokkosKernels::Experimental::KokkosKernelsHandle< \
const OFFSET_TYPE, const ORDINAL_TYPE, const SCALAR_TYPE, \
EXEC_SPACE_TYPE, MEM_SPACE_TYPE, SLOW_MEM_SPACE_TYPE>, \
Kokkos::View<const OFFSET_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
Kokkos::View<const ORDINAL_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>> { \
enum : bool { value = true }; \
#define KOKKOSGRAPH_COLOR_D1_ETI_SPEC_AVAIL(SCALAR_TYPE, ORDINAL_TYPE, \
OFFSET_TYPE, LAYOUT_TYPE, \
EXEC_SPACE_TYPE, MEM_SPACE_TYPE) \
template <> \
struct color_d1_eti_spec_avail< \
KokkosKernels::Experimental::KokkosKernelsHandle< \
const OFFSET_TYPE, const ORDINAL_TYPE, const SCALAR_TYPE, \
EXEC_SPACE_TYPE, MEM_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::View<const OFFSET_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
Kokkos::View<const ORDINAL_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>> { \
enum : bool { value = true }; \
};

// Include the actual specialization declarations
Expand Down Expand Up @@ -118,34 +118,34 @@ struct COLOR_D1<KernelHandle, size_view_t, lno_view_t, false,
} // namespace Impl
} // namespace KokkosGraph

#define KOKKOSGRAPH_COLOR_D1_ETI_SPEC_DECL( \
SCALAR_TYPE, ORDINAL_TYPE, OFFSET_TYPE, LAYOUT_TYPE, EXEC_SPACE_TYPE, \
MEM_SPACE_TYPE, SLOW_MEM_SPACE_TYPE) \
extern template struct COLOR_D1< \
typename KokkosKernels::Experimental::KokkosKernelsHandle< \
const OFFSET_TYPE, const ORDINAL_TYPE, const SCALAR_TYPE, \
EXEC_SPACE_TYPE, MEM_SPACE_TYPE, SLOW_MEM_SPACE_TYPE>, \
Kokkos::View<const OFFSET_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
Kokkos::View<const ORDINAL_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
#define KOKKOSGRAPH_COLOR_D1_ETI_SPEC_DECL(SCALAR_TYPE, ORDINAL_TYPE, \
OFFSET_TYPE, LAYOUT_TYPE, \
EXEC_SPACE_TYPE, MEM_SPACE_TYPE) \
extern template struct COLOR_D1< \
typename KokkosKernels::Experimental::KokkosKernelsHandle< \
const OFFSET_TYPE, const ORDINAL_TYPE, const SCALAR_TYPE, \
EXEC_SPACE_TYPE, MEM_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::View<const OFFSET_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
Kokkos::View<const ORDINAL_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
false, true>;

#define KOKKOSGRAPH_COLOR_D1_ETI_SPEC_INST( \
SCALAR_TYPE, ORDINAL_TYPE, OFFSET_TYPE, LAYOUT_TYPE, EXEC_SPACE_TYPE, \
MEM_SPACE_TYPE, SLOW_MEM_SPACE_TYPE) \
template struct COLOR_D1< \
KokkosKernels::Experimental::KokkosKernelsHandle< \
const OFFSET_TYPE, const ORDINAL_TYPE, const SCALAR_TYPE, \
EXEC_SPACE_TYPE, MEM_SPACE_TYPE, SLOW_MEM_SPACE_TYPE>, \
Kokkos::View<const OFFSET_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
Kokkos::View<const ORDINAL_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
#define KOKKOSGRAPH_COLOR_D1_ETI_SPEC_INST(SCALAR_TYPE, ORDINAL_TYPE, \
OFFSET_TYPE, LAYOUT_TYPE, \
EXEC_SPACE_TYPE, MEM_SPACE_TYPE) \
template struct COLOR_D1< \
KokkosKernels::Experimental::KokkosKernelsHandle< \
const OFFSET_TYPE, const ORDINAL_TYPE, const SCALAR_TYPE, \
EXEC_SPACE_TYPE, MEM_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::View<const OFFSET_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
Kokkos::View<const ORDINAL_TYPE *, LAYOUT_TYPE, \
Kokkos::Device<EXEC_SPACE_TYPE, MEM_SPACE_TYPE>, \
Kokkos::MemoryTraits<Kokkos::Unmanaged>>, \
false, true>;

#include <generated_specializations_hpp/KokkosGraph_color_d1_eti_spec_decl.hpp>
Expand Down
14 changes: 7 additions & 7 deletions sparse/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,28 +71,28 @@ KOKKOSKERNELS_GENERATE_ETI(Sparse_spgemm_symbolic spgemm_symbolic
COMPONENTS sparse
HEADER_LIST ETI_HEADERS
SOURCE_LIST SOURCES
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES_W_SLOW_SPACE
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES
)

KOKKOSKERNELS_GENERATE_ETI(Sparse_spgemm_numeric spgemm_numeric
COMPONENTS sparse
HEADER_LIST ETI_HEADERS
SOURCE_LIST SOURCES
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES_W_SLOW_SPACE
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES
)

KOKKOSKERNELS_GENERATE_ETI(Sparse_bspgemm_numeric bspgemm_numeric
COMPONENTS sparse
HEADER_LIST ETI_HEADERS
SOURCE_LIST SOURCES
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES_W_SLOW_SPACE
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES
)

KOKKOSKERNELS_GENERATE_ETI(Sparse_spgemm_jacobi spgemm_jacobi
COMPONENTS sparse
HEADER_LIST ETI_HEADERS
SOURCE_LIST SOURCES
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES_W_SLOW_SPACE
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES
)

# NOTE: SpAdd symbolic doesn't use scalars directly,
Expand Down Expand Up @@ -157,19 +157,19 @@ KOKKOSKERNELS_GENERATE_ETI(Sparse_gauss_seidel_symbolic gauss_seidel_symbolic
COMPONENTS sparse
HEADER_LIST ETI_HEADERS
SOURCE_LIST SOURCES
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES_W_SLOW_SPACE
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES
)

KOKKOSKERNELS_GENERATE_ETI(Sparse_gauss_seidel_numeric gauss_seidel_numeric
COMPONENTS sparse
HEADER_LIST ETI_HEADERS
SOURCE_LIST SOURCES
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES_W_SLOW_SPACE
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES
)

KOKKOSKERNELS_GENERATE_ETI(Sparse_gauss_seidel_apply gauss_seidel_apply
COMPONENTS sparse
HEADER_LIST ETI_HEADERS
SOURCE_LIST SOURCES
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES_W_SLOW_SPACE
TYPE_LISTS FLOATS ORDINALS OFFSETS LAYOUTS DEVICES
)
Loading

0 comments on commit d5ae5ce

Please sign in to comment.