7#ifndef KERNEL_LAFEM_ARCH_AXPY_HPP
8#define KERNEL_LAFEM_ARCH_AXPY_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_ a,
const DT_ *
const x,
const Index size)
26 value_generic(r, a, x, size);
29 template <
typename ValueType_>
30 static void value_blocked(ValueType_ * r,
const ValueType_ a,
const ValueType_ *
const x,
const Index size)
32 value_blocked_generic(r, a, x, size);
35#ifdef FEAT_HAVE_HALFMATH
38 BACKEND_SKELETON_VOID(value_cuda, value_generic, value_generic, r, a, x, size)
42 static void value(
float * r,
const float a,
const float *
const x,
const Index size)
44 BACKEND_SKELETON_VOID(value_cuda, value_mkl, value_generic, r, a, x, size)
47 static void value(
double * r,
const double a,
const double *
const x,
const Index size)
49 BACKEND_SKELETON_VOID(value_cuda, value_mkl, value_generic, r, a, x, size)
52 template <
typename DT_>
53 static void value_generic(DT_ * r,
const DT_ a,
const DT_ *
const x,
const Index size);
55 static void value_mkl(
float * r,
const float a,
const float *
const x,
const Index size);
56 static void value_mkl(
double * r,
const double a,
const double *
const x,
const Index size);
58 template <
typename DT_>
59 static void value_cuda(DT_ * r,
const DT_ a,
const DT_ *
const x,
const Index size);
61 template <
typename ValueType_>
62 static void value_blocked_generic(ValueType_ * r,
const ValueType_ a,
const ValueType_ *
const x,
const Index size);
66 extern template void Axpy::value_generic(
float *,
const float,
const float *
const,
const Index);
67 extern template void Axpy::value_generic(
double *,
const double,
const double *
const,
const Index);
75#include <kernel/lafem/arch/axpy_generic.hpp>
__half Half
Half data type.
@ value
specifies whether the space should supply basis function values
std::uint64_t Index
Index data type.