FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
transpose.hpp
1// FEAT3: Finite Element Analysis Toolbox, Version 3
2// Copyright (C) 2010 by Stefan Turek & the FEAT group
3// FEAT3 is released under the GNU General Public License version 3,
4// see the file 'copyright.txt' in the top level directory for details.
5
6#pragma once
7#ifndef KERNEL_LAFEM_ARCH_TRANSPOSE_HPP
8#define KERNEL_LAFEM_ARCH_TRANSPOSE_HPP 1
9
10// includes, FEAT
12#include <kernel/backend.hpp>
13
14
15namespace FEAT
16{
17 namespace LAFEM
18 {
19 namespace Arch
20 {
21 struct Transpose
22 {
23 template <typename DT_>
24 static void value(DT_ * r, const DT_ * const x, const Index rows_x, const Index columns_x)
25 {
26 value_generic(r, x, rows_x, columns_x);
27 }
28
29 static void value(float * r, const float * const x, const Index rows_x, const Index columns_x)
30 {
31 BACKEND_SKELETON_VOID(value_cuda, value_mkl, value_generic, r, x, rows_x, columns_x)
32 }
33
34 static void value(double * r, const double * const x, const Index rows_x, const Index columns_x)
35 {
36 BACKEND_SKELETON_VOID(value_cuda, value_mkl, value_generic, r, x, rows_x, columns_x)
37 }
38
39 template <typename DT_>
40 static void value_generic(DT_ * r, const DT_ * const x, const Index rows_x, const Index columns_x);
41
42 static void value_mkl(float * r, const float * const x, const Index rows_x, const Index columns_x);
43 static void value_mkl(double * r, const double * const x, const Index rows_x, const Index columns_x);
44
45 static void value_cuda(float * r, const float * const x, const Index rows_x, const Index columns_x);
46 static void value_cuda(double * r, const double * const x, const Index rows_x, const Index columns_x);
47 };
48
49#ifdef FEAT_EICKT
50 extern template void Transpose::value_generic(float *, const float * const, const Index, const Index);
51 extern template void Transpose::value_generic(double *, const double * const, const Index, const Index);
52#endif
53
54 } // namespace Arch
55 } // namespace LAFEM
56} // namespace FEAT
57
58#ifndef __CUDACC__
59#include <kernel/lafem/arch/transpose_generic.hpp>
60#endif
61#endif // KERNEL_LAFEM_ARCH_TRANSPOSE_HPP
FEAT Kernel base header.
FEAT namespace.
Definition: adjactor.hpp:12
@ value
specifies whether the space should supply basis function values
std::uint64_t Index
Index data type.
static void value_generic(DT_ *r, const DT_ *const x, const Index rows_x, const Index columns_x)