Skip to content

Commit

Permalink
split up HIP compilation further
Browse files Browse the repository at this point in the history
  • Loading branch information
upsj committed Dec 13, 2023
1 parent 3a07342 commit 7413cfa
Show file tree
Hide file tree
Showing 5 changed files with 273 additions and 34 deletions.
126 changes: 99 additions & 27 deletions core/base/mixed_precision_types.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,35 +13,59 @@
#ifdef GINKGO_MIXED_PRECISION

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT1(_macro, ...) \
template _macro(float, float, float, __VA_ARGS__); \
template _macro(float, float, double, __VA_ARGS__); \
template _macro(float, double, float, __VA_ARGS__); \
template _macro(float, double, double, __VA_ARGS__)
template _macro(float, float, float, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT2(_macro, ...) \
template _macro(double, float, float, __VA_ARGS__); \
template _macro(double, float, double, __VA_ARGS__); \
template _macro(double, double, float, __VA_ARGS__); \
template _macro(double, double, double, __VA_ARGS__)
template _macro(float, float, double, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT3(_macro, ...) \
template _macro(float, double, float, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT4(_macro, ...) \
template _macro(float, double, double, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT5(_macro, ...) \
template _macro(double, float, float, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(_macro, ...) \
template _macro(double, float, double, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT7(_macro, ...) \
template _macro(double, double, float, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT8(_macro, ...) \
template _macro(double, double, double, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT9(_macro, ...) \
template _macro(std::complex<float>, std::complex<float>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<float>, std::complex<float>, \
std::complex<double>, __VA_ARGS__); \
template _macro(std::complex<float>, std::complex<double>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<float>, std::complex<double>, \
std::complex<float>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT10(_macro, ...) \
template _macro(std::complex<float>, std::complex<float>, \
std::complex<double>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT4(_macro, ...) \
template _macro(std::complex<double>, std::complex<float>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<double>, std::complex<float>, \
std::complex<double>, __VA_ARGS__); \
template _macro(std::complex<double>, std::complex<double>, \
std::complex<float>, __VA_ARGS__); \
template _macro(std::complex<double>, std::complex<double>, \
#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT11(_macro, ...) \
template _macro(std::complex<float>, std::complex<double>, \
std::complex<float>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT12(_macro, ...) \
template _macro(std::complex<float>, std::complex<double>, \
std::complex<double>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT13(_macro, ...) \
template _macro(std::complex<double>, std::complex<float>, \
std::complex<float>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT14(_macro, ...) \
template _macro(std::complex<double>, std::complex<float>, \
std::complex<double>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT15(_macro, ...) \
template _macro(std::complex<double>, std::complex<double>, \
std::complex<float>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT16(_macro, ...) \
template _macro(std::complex<double>, std::complex<double>, \
std::complex<double>, __VA_ARGS__)

#else
Expand All @@ -60,14 +84,62 @@
template _macro(std::complex<double>, std::complex<double>, \
std::complex<double>, __VA_ARGS__)

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT5(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT7(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT8(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT9(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT10(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT11(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT12(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT13(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT14(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT15(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT16(_macro, ...) \
static_assert(true, "avoid warnings about missing semicolon")

#endif


#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE(_macro, ...) \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT1(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT2(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT3(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT4(_macro, __VA_ARGS__)
#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE(_macro, ...) \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT1(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT2(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT3(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT4(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT5(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT7(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT8(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT9(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT10(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT11(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT12(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT13(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT14(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT15(_macro, __VA_ARGS__); \
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT16(_macro, __VA_ARGS__)


#define GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_AND_INDEX_TYPE(_macro) \
Expand Down
3 changes: 2 additions & 1 deletion hip/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
include(${PROJECT_SOURCE_DIR}/cmake/template_instantiation.cmake)
add_instantiation_files(. matrix/csr_kernels.instantiate.hip.cpp CSR_INSTANTIATE)
add_instantiation_files(. matrix/ell_kernels.instantiate.hip.cpp ELL_INSTANTIATE)
add_instantiation_files(. matrix/fbcsr_kernels.instantiate.hip.cpp FBCSR_INSTANTIATE)
# we don't split up the dense kernels into distinct compilations
list(APPEND GKO_UNIFIED_COMMON_SOURCES ${PROJECT_SOURCE_DIR}/common/unified/matrix/dense_kernels.instantiate.cpp)
Expand Down Expand Up @@ -42,7 +43,7 @@ set(GINKGO_HIP_SOURCES
${CSR_INSTANTIATE}
matrix/dense_kernels.hip.cpp
matrix/diagonal_kernels.hip.cpp
matrix/ell_kernels.hip.cpp
${ELL_INSTANTIATE}
${FBCSR_INSTANTIATE}
matrix/sellp_kernels.hip.cpp
matrix/sparsity_csr_kernels.hip.cpp
Expand Down
144 changes: 144 additions & 0 deletions hip/matrix/csr_kernels.instantiate.hip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,42 @@ GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT3(GKO_DECLARE_CSR_SPMV_KERNEL,
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT4(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT5(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT7(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT8(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT9(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT10(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT11(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT12(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT13(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT14(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT15(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT16(GKO_DECLARE_CSR_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT1(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
Expand All @@ -45,6 +81,42 @@ GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT3(GKO_DECLARE_CSR_SPMV_KERNEL,
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT4(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT5(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT7(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT8(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT9(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT10(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT11(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT12(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT13(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT14(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT15(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT16(GKO_DECLARE_CSR_SPMV_KERNEL,
int64);


// split
Expand All @@ -60,6 +132,42 @@ GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT3(
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT4(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT5(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT7(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT8(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT9(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT10(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT11(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT12(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT13(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT14(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT15(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT16(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT1(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
Expand All @@ -71,6 +179,42 @@ GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT3(
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT4(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT5(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT6(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT7(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT8(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT9(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT10(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT11(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT12(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT13(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT14(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT15(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE_SPLIT16(
GKO_DECLARE_CSR_ADVANCED_SPMV_KERNEL, int64);


// split
Expand Down
28 changes: 28 additions & 0 deletions hip/matrix/ell_kernels.instantiate.hip.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// SPDX-FileCopyrightText: 2017-2023 The Ginkgo authors
//
// SPDX-License-Identifier: BSD-3-Clause

#include "hip/matrix/ell_kernels.template.hip.cpp"


namespace gko {
namespace kernels {
namespace hip {
namespace ell {

// begin
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE(GKO_DECLARE_ELL_SPMV_KERNEL, int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE(GKO_DECLARE_ELL_SPMV_KERNEL, int64);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE(GKO_DECLARE_ELL_ADVANCED_SPMV_KERNEL,
int32);
// split
GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_TYPE(GKO_DECLARE_ELL_ADVANCED_SPMV_KERNEL,
int64);
// end

} // namespace ell
} // namespace hip
} // namespace kernels
} // namespace gko
Original file line number Diff line number Diff line change
Expand Up @@ -230,9 +230,6 @@ void spmv(std::shared_ptr<const HipExecutor> exec,
b, c);
}

GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_AND_INDEX_TYPE(
GKO_DECLARE_ELL_SPMV_KERNEL);


template <typename InputValueType, typename MatrixValueType,
typename OutputValueType, typename IndexType>
Expand Down Expand Up @@ -264,9 +261,6 @@ void advanced_spmv(std::shared_ptr<const HipExecutor> exec,
b, c, alpha, beta);
}

GKO_INSTANTIATE_FOR_EACH_MIXED_VALUE_AND_INDEX_TYPE(
GKO_DECLARE_ELL_ADVANCED_SPMV_KERNEL);


} // namespace ell
} // namespace hip
Expand Down

0 comments on commit 7413cfa

Please sign in to comment.