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.