7#ifndef KERNEL_LAFEM_ARCH_SLIP_FILTER_HPP
8#define KERNEL_LAFEM_ARCH_SLIP_FILTER_HPP 1
12#include <kernel/backend.hpp>
23 template <
int BlockSize_,
typename DT_,
typename IT_>
24 static void filter_rhs(DT_ * v,
const DT_ *
const nu_elements,
const IT_ *
const sv_indices,
const Index ue)
26 filter_rhs_generic<BlockSize_, DT_, IT_>(v, nu_elements, sv_indices, ue);
29 template <
int BlockSize_>
30 static void filter_rhs(
float * v,
const float *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue)
32 BACKEND_SKELETON_VOID_T1(BlockSize_, filter_rhs_cuda, filter_rhs_generic, filter_rhs_generic, v, nu_elements, sv_indices, ue)
35 template <
int BlockSize_>
36 static void filter_rhs(
double * v,
const double *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue)
38 BACKEND_SKELETON_VOID_T1(BlockSize_, filter_rhs_cuda, filter_rhs_generic, filter_rhs_generic, v, nu_elements, sv_indices, ue)
41 template <
int BlockSize_>
42 static void filter_rhs(
float * v,
const float *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue)
44 BACKEND_SKELETON_VOID_T1(BlockSize_, filter_rhs_cuda, filter_rhs_generic, filter_rhs_generic, v, nu_elements, sv_indices, ue)
47 template <
int BlockSize_>
48 static void filter_rhs(
double * v,
const double *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue)
50 BACKEND_SKELETON_VOID_T1(BlockSize_, filter_rhs_cuda, filter_rhs_generic, filter_rhs_generic, v, nu_elements, sv_indices, ue)
53 template <
int BlockSize_,
typename DT_,
typename IT_>
54 static void filter_def(DT_ * v,
const DT_ *
const nu_elements,
const IT_ *
const sv_indices,
const Index ue)
56 filter_def_generic<BlockSize_, DT_, IT_>(v, nu_elements, sv_indices, ue);
59 template <
int BlockSize_>
60 static void filter_def(
float * v,
const float *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue)
62 BACKEND_SKELETON_VOID_T1(BlockSize_, filter_def_cuda, filter_def_generic, filter_def_generic, v, nu_elements, sv_indices, ue)
65 template <
int BlockSize_>
66 static void filter_def(
double * v,
const double *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue)
68 BACKEND_SKELETON_VOID_T1(BlockSize_, filter_def_cuda, filter_def_generic, filter_def_generic, v, nu_elements, sv_indices, ue)
71 template <
int BlockSize_>
72 static void filter_def(
float * v,
const float *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue)
74 BACKEND_SKELETON_VOID_T1(BlockSize_, filter_def_cuda, filter_def_generic, filter_def_generic, v, nu_elements, sv_indices, ue)
77 template <
int BlockSize_>
78 static void filter_def(
double * v,
const double *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue)
80 BACKEND_SKELETON_VOID_T1(BlockSize_, filter_def_cuda, filter_def_generic, filter_def_generic, v, nu_elements, sv_indices, ue)
83 template <
int BlockSize_,
typename DT_,
typename IT_>
84 static void filter_rhs_generic(DT_ * v,
const DT_ *
const nu_elements,
const IT_ *
const sv_indices,
const Index ue);
86 template <
int BlockSize_,
typename DT_,
typename IT_>
87 static void filter_def_generic(DT_ * v,
const DT_ *
const nu_elements,
const IT_ *
const sv_indices,
const Index ue);
89 template <
int BlockSize_,
typename DT_,
typename IT_>
90 static void filter_rhs_cuda(DT_ * v,
const DT_ *
const nu_elements,
const IT_ *
const sv_indices,
const Index ue);
92 template <
int BlockSize_,
typename DT_,
typename IT_>
93 static void filter_def_cuda(DT_ * v,
const DT_ *
const nu_elements,
const IT_ *
const sv_indices,
const Index ue);
99 extern template void SlipFilter::filter_rhs_generic<2, float, std::uint64_t>(
float * v,
const float *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue);
100 extern template void SlipFilter::filter_rhs_generic<2, double, std::uint64_t>(
double * v,
const double *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue);
101 extern template void SlipFilter::filter_rhs_generic<2, float, std::uint32_t>(
float * v,
const float *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue);
102 extern template void SlipFilter::filter_rhs_generic<2, double, std::uint32_t>(
double * v,
const double *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue);
104 extern template void SlipFilter::filter_def_generic<2, float, std::uint64_t>(
float * v,
const float *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue);
105 extern template void SlipFilter::filter_def_generic<2, double, std::uint64_t>(
double * v,
const double *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue);
106 extern template void SlipFilter::filter_def_generic<2, float, std::uint32_t>(
float * v,
const float *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue);
107 extern template void SlipFilter::filter_def_generic<2, double, std::uint32_t>(
double * v,
const double *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue);
109 extern template void SlipFilter::filter_rhs_generic<3, float, std::uint64_t>(
float * v,
const float *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue);
110 extern template void SlipFilter::filter_rhs_generic<3, double, std::uint64_t>(
double * v,
const double *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue);
111 extern template void SlipFilter::filter_rhs_generic<3, float, std::uint32_t>(
float * v,
const float *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue);
112 extern template void SlipFilter::filter_rhs_generic<3, double, std::uint32_t>(
double * v,
const double *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue);
114 extern template void SlipFilter::filter_def_generic<3, float, std::uint64_t>(
float * v,
const float *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue);
115 extern template void SlipFilter::filter_def_generic<3, double, std::uint64_t>(
double * v,
const double *
const nu_elements,
const std::uint64_t *
const sv_indices,
const Index ue);
116 extern template void SlipFilter::filter_def_generic<3, float, std::uint32_t>(
float * v,
const float *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue);
117 extern template void SlipFilter::filter_def_generic<3, double, std::uint32_t>(
double * v,
const double *
const nu_elements,
const std::uint32_t *
const sv_indices,
const Index ue);
125#include <kernel/lafem/arch/slip_filter_generic.hpp>
std::uint64_t Index
Index data type.