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.