7#ifndef KERNEL_LAFEM_ARCH_COMPONENT_COPY_HPP 
    8#define KERNEL_LAFEM_ARCH_COMPONENT_COPY_HPP 1 
   12#include <kernel/backend.hpp> 
   13#include <kernel/util/half.hpp> 
   23        template <
typename DT_>
 
   24        static void value(DT_ * r, 
const DT_ * 
const x, 
const int stride, 
const int block, 
const Index size)
 
   26          BACKEND_SKELETON_VOID(value_cuda, value_generic, value_generic, r, x, stride, block, size)
 
   29        template <
typename DT_>
 
   30        static void value_to(
const DT_ * 
const r, DT_ * x, 
const int stride, 
const int block, 
const Index size)
 
   32          BACKEND_SKELETON_VOID(value_to_cuda, value_to_generic, value_to_generic, r, x, stride, block, size)
 
   35        template <
typename DT_>
 
   36        static void value_generic(DT_ * r, 
const DT_ * 
const x, 
const int stride, 
const int block, 
const Index size);
 
   38        template <
typename DT_>
 
   39        static void value_to_generic(
const DT_ * 
const r, DT_ * x, 
const int stride, 
const int block, 
const Index size);
 
   41        static void value_mkl(
float * r, 
const float * 
const x, 
const int stride, 
const int block, 
const Index size);
 
   43        static void value_mkl(
double * r, 
const double * 
const x, 
const int stride, 
const int block, 
const Index size);
 
   45        static void value_to_mkl(
const float * 
const r, 
float * x, 
const int stride, 
const int block, 
const Index size);
 
   47        static void value_to_mkl(
const double * 
const r, 
double * x, 
const int stride, 
const int block, 
const Index size);
 
   50        static void value_cuda(
float * r, 
const float * 
const x, 
const int stride, 
const int block, 
const Index size);
 
   51        static void value_to_cuda(
const float * 
const r, 
float * x, 
const int stride, 
const int block, 
const Index size);
 
   53        static void value_cuda(
double * r, 
const double * 
const x, 
const int stride, 
const int block, 
const Index size);
 
   54        static void value_to_cuda(
const double * 
const r, 
double * x, 
const int stride, 
const int block, 
const Index size);
 
   55#ifdef FEAT_HAVE_HALFMATH 
   56        static void value_cuda(
Half * r, 
const Half * 
const x, 
const int stride, 
const int block, 
const Index size);
 
   57        static void value_to_cuda(
const Half * 
const r, 
Half * x, 
const int stride, 
const int block, 
const Index size);
 
   62      extern template void ComponentCopy::value_generic(
float *, 
const float * 
const, 
const int, 
const int, 
const Index);
 
   63      extern template void ComponentCopy::value_generic(
double *, 
const double * 
const, 
const int, 
const int, 
const Index);
 
   64      extern template void ComponentCopy::value_to_generic(
const float * 
const, 
float *, 
const int, 
const int, 
const Index);
 
   65      extern template void ComponentCopy::value_to_generic(
const double * 
const, 
double *, 
const int, 
const int, 
const Index);
 
   72#include <kernel/lafem/arch/component_copy_generic.hpp> 
__half Half
Half data type.
@ value
specifies whether the space should supply basis function values
std::uint64_t Index
Index data type.