7#ifndef KERNEL_LAFEM_ARCH_MIRROR_HPP
8#define KERNEL_LAFEM_ARCH_MIRROR_HPP 1
12#include <kernel/backend.hpp>
22 template<
typename DT_,
typename IT_>
23 static void gather_dv(
const Index boff,
const Index nidx,
const IT_* idx, DT_* buf,
const DT_* vec)
25 gather_dv_generic(boff, nidx, idx, buf, vec);
28 static void gather_dv(
const Index boff,
const Index nidx,
const std::uint32_t * idx,
float * buf,
const float * vec)
30 BACKEND_SKELETON_VOID(gather_dv_cuda, gather_dv_generic, gather_dv_generic, boff, nidx, idx, buf, vec)
33 static void gather_dv(
const Index boff,
const Index nidx,
const std::uint64_t * idx,
float * buf,
const float * vec)
35 BACKEND_SKELETON_VOID(gather_dv_cuda, gather_dv_generic, gather_dv_generic, boff, nidx, idx, buf, vec)
38 static void gather_dv(
const Index boff,
const Index nidx,
const std::uint32_t * idx,
double * buf,
const double * vec)
40 BACKEND_SKELETON_VOID(gather_dv_cuda, gather_dv_generic, gather_dv_generic, boff, nidx, idx, buf, vec)
43 static void gather_dv(
const Index boff,
const Index nidx,
const std::uint64_t * idx,
double * buf,
const double * vec)
45 BACKEND_SKELETON_VOID(gather_dv_cuda, gather_dv_generic, gather_dv_generic, boff, nidx, idx, buf, vec)
48 template<
typename DT_,
typename IT_>
49 static void scatter_dv(
const Index boff,
const Index nidx,
const IT_* idx,
const DT_* buf, DT_* vec,
const DT_ alpha)
51 scatter_dv_generic(boff, nidx, idx, buf, vec, alpha);
54 static void scatter_dv(
const Index boff,
const Index nidx,
const std::uint32_t * idx,
const float * buf,
float * vec,
const float alpha)
56 BACKEND_SKELETON_VOID(scatter_dv_cuda, scatter_dv_generic, scatter_dv_generic, boff, nidx, idx, buf, vec, alpha)
59 static void scatter_dv(
const Index boff,
const Index nidx,
const std::uint64_t * idx,
const float * buf,
float * vec,
const float alpha)
61 BACKEND_SKELETON_VOID(scatter_dv_cuda, scatter_dv_generic, scatter_dv_generic, boff, nidx, idx, buf, vec, alpha)
64 static void scatter_dv(
const Index boff,
const Index nidx,
const std::uint32_t * idx,
const double * buf,
double * vec,
const double alpha)
66 BACKEND_SKELETON_VOID(scatter_dv_cuda, scatter_dv_generic, scatter_dv_generic, boff, nidx, idx, buf, vec, alpha)
69 static void scatter_dv(
const Index boff,
const Index nidx,
const std::uint64_t * idx,
const double * buf,
double * vec,
const double alpha)
71 BACKEND_SKELETON_VOID(scatter_dv_cuda, scatter_dv_generic, scatter_dv_generic, boff, nidx, idx, buf, vec, alpha)
74 template<
typename DT_,
typename IT_>
75 static void gather_dvb(
const Index bs,
const Index boff,
const Index nidx,
const IT_* idx, DT_* buf,
const DT_* vec)
77 gather_dvb_generic(bs, boff, nidx, idx, buf, vec);
80 static void gather_dvb(
const Index bs,
const Index boff,
const Index nidx,
const std::uint32_t * idx,
float * buf,
const float * vec)
82 BACKEND_SKELETON_VOID(gather_dvb_cuda, gather_dvb_generic, gather_dvb_generic, bs, boff, nidx, idx, buf, vec)
85 static void gather_dvb(
const Index bs,
const Index boff,
const Index nidx,
const std::uint64_t * idx,
float * buf,
const float * vec)
87 BACKEND_SKELETON_VOID(gather_dvb_cuda, gather_dvb_generic, gather_dvb_generic, bs, boff, nidx, idx, buf, vec)
90 static void gather_dvb(
const Index bs,
const Index boff,
const Index nidx,
const std::uint32_t * idx,
double * buf,
const double * vec)
92 BACKEND_SKELETON_VOID(gather_dvb_cuda, gather_dvb_generic, gather_dvb_generic, bs, boff, nidx, idx, buf, vec)
95 static void gather_dvb(
const Index bs,
const Index boff,
const Index nidx,
const std::uint64_t * idx,
double * buf,
const double * vec)
97 BACKEND_SKELETON_VOID(gather_dvb_cuda, gather_dvb_generic, gather_dvb_generic, bs, boff, nidx, idx, buf, vec)
100 template<
typename DT_,
typename IT_>
101 static void scatter_dvb(
const Index bs,
const Index boff,
const Index nidx,
const IT_* idx,
const DT_* buf, DT_* vec,
const DT_ alpha)
103 scatter_dvb_generic(bs, boff, nidx, idx, buf, vec, alpha);
106 static void scatter_dvb(
const Index bs,
const Index boff,
const Index nidx,
const std::uint32_t * idx,
const float * buf,
float * vec,
const float alpha)
108 BACKEND_SKELETON_VOID(scatter_dvb_cuda, scatter_dvb_generic, scatter_dvb_generic, bs, boff, nidx, idx, buf, vec, alpha)
111 static void scatter_dvb(
const Index bs,
const Index boff,
const Index nidx,
const std::uint64_t * idx,
const float * buf,
float * vec,
const float alpha)
113 BACKEND_SKELETON_VOID(scatter_dvb_cuda, scatter_dvb_generic, scatter_dvb_generic, bs, boff, nidx, idx, buf, vec, alpha)
116 static void scatter_dvb(
const Index bs,
const Index boff,
const Index nidx,
const std::uint32_t * idx,
const double * buf,
double * vec,
const double alpha)
118 BACKEND_SKELETON_VOID(scatter_dvb_cuda, scatter_dvb_generic, scatter_dvb_generic, bs, boff, nidx, idx, buf, vec, alpha)
121 static void scatter_dvb(
const Index bs,
const Index boff,
const Index nidx,
const std::uint64_t * idx,
const double * buf,
double * vec,
const double alpha)
123 BACKEND_SKELETON_VOID(scatter_dvb_cuda, scatter_dvb_generic, scatter_dvb_generic, bs, boff, nidx, idx, buf, vec, alpha)
126 template<
typename DT_,
typename IT_>
127 static void gather_sv(
const Index boff,
const Index nidx,
const IT_* idx, DT_* buf,
const Index nvec,
const DT_* vval,
const IT_* vidx)
129 gather_sv_generic(boff, nidx, idx, buf, nvec, vval, vidx);
132 template<
typename DT_,
typename IT_>
133 static void scatter_sv(
const Index boff,
const Index nidx,
const IT_* idx,
const DT_* buf,
const Index nvec, DT_* vval,
const IT_* vidx,
const DT_ alpha)
135 scatter_sv_generic(boff, nidx, idx, buf, nvec, vval, vidx, alpha);
138 template<
typename DT_,
typename IT_>
139 static void gather_svb(
const Index bs,
const Index boff,
const Index nidx,
const IT_* idx, DT_* buf,
const Index nvec,
const DT_* vval,
const IT_* vidx)
141 gather_svb_generic(bs, boff, nidx, idx, buf, nvec, vval, vidx);
144 template<
typename DT_,
typename IT_>
145 static void scatter_svb(
const Index bs,
const Index boff,
const Index nidx,
const IT_* idx,
const DT_* buf,
const Index nvec, DT_* vval,
const IT_* vidx,
const DT_ alpha)
147 scatter_svb_generic(bs, boff, nidx, idx, buf, nvec, vval, vidx, alpha);
152 template<
typename DT_,
typename IT_>
153 static void gather_dv_generic(
const Index boff,
const Index nidx,
const IT_* idx, DT_* buf,
const DT_* vec);
155 template<
typename DT_,
typename IT_>
156 static void scatter_dv_generic(
const Index boff,
const Index nidx,
const IT_* idx,
const DT_* buf, DT_* vec,
const DT_ alpha);
158 template<
typename DT_,
typename IT_>
159 static void gather_dvb_generic(
const Index bs,
const Index boff,
const Index nidx,
const IT_* idx, DT_* buf,
const DT_* vec);
161 template<
typename DT_,
typename IT_>
162 static void scatter_dvb_generic(
const Index bs,
const Index boff,
const Index nidx,
const IT_* idx,
const DT_* buf, DT_* vec,
const DT_ alpha);
164 template<
typename DT_,
typename IT_>
165 static void gather_sv_generic(
const Index boff,
const Index nidx,
const IT_* idx, DT_* buf,
const Index nvec,
const DT_* vval,
const IT_* vidx);
167 template<
typename DT_,
typename IT_>
168 static void scatter_sv_generic(
const Index boff,
const Index nidx,
const IT_* idx,
const DT_* buf,
const Index nvec, DT_* vval,
const IT_* vidx,
const DT_ alpha);
170 template<
typename DT_,
typename IT_>
171 static void gather_svb_generic(
const Index bs,
const Index boff,
const Index nidx,
const IT_* idx, DT_* buf,
const Index nvec,
const DT_* vval,
const IT_* vidx);
173 template<
typename DT_,
typename IT_>
174 static void scatter_svb_generic(
const Index bs,
const Index boff,
const Index nidx,
const IT_* idx,
const DT_* buf,
const Index nvec, DT_* vval,
const IT_* vidx,
const DT_ alpha);
176 template<
typename DT_,
typename IT_>
177 static void gather_dv_cuda(
const Index boff,
const Index nidx,
const IT_* idx, DT_* buf,
const DT_* vec);
179 template<
typename DT_,
typename IT_>
180 static void scatter_dv_cuda(
const Index boff,
const Index nidx,
const IT_* idx,
const DT_* buf, DT_* vec,
const DT_ alpha);
182 template<
typename DT_,
typename IT_>
183 static void gather_dvb_cuda(
const Index bs,
const Index boff,
const Index nidx,
const IT_* idx, DT_* buf,
const DT_* vec);
185 template<
typename DT_,
typename IT_>
186 static void scatter_dvb_cuda(
const Index bs,
const Index boff,
const Index nidx,
const IT_* idx,
const DT_* buf, DT_* vec,
const DT_ alpha);
197#include <kernel/lafem/arch/mirror_generic.hpp>
std::uint64_t Index
Index data type.