6efadd986d17d18eb78475500da07a5fe49e00df
[LbmBenchmarkKernelsPublic.git] / src / KernelFunctions.h
1 // --------------------------------------------------------------------------
2 //
3 // Copyright
4 //   Markus Wittmann, 2016-2017
5 //   RRZE, University of Erlangen-Nuremberg, Germany
6 //   markus.wittmann -at- fau.de or hpc -at- rrze.fau.de
7 //
8 //   Viktor Haag, 2016
9 //   LSS, University of Erlangen-Nuremberg, Germany
10 //
11 //  This file is part of the Lattice Boltzmann Benchmark Kernels (LbmBenchKernels).
12 //
13 //  LbmBenchKernels is free software: you can redistribute it and/or modify
14 //  it under the terms of the GNU General Public License as published by
15 //  the Free Software Foundation, either version 3 of the License, or
16 //  (at your option) any later version.
17 //
18 //  LbmBenchKernels is distributed in the hope that it will be useful,
19 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
20 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 //  GNU General Public License for more details.
22 //
23 //  You should have received a copy of the GNU General Public License
24 //  along with LbmBenchKernels.  If not, see <http://www.gnu.org/licenses/>.
25 //
26 // --------------------------------------------------------------------------
27 #ifndef __KERNEL_FUNCTIONS_H__
28 #define __KERNEL_FUNCTIONS_H__
29
30 #include "BenchKernelD3Q19.h"
31 #include "BenchKernelD3Q19Aa.h"
32 #include "BenchKernelD3Q19AaVec.h"
33 #include "BenchKernelD3Q19AaVecSl.h"
34 #include "BenchKernelD3Q19List.h"
35 #include "BenchKernelD3Q19ListAa.h"
36 #include "BenchKernelD3Q19ListAaRia.h"
37 #include "BenchKernelD3Q19ListAaPv.h"
38 #include "BenchKernelD3Q19ListPullSplitNt.h"
39
40 typedef struct KernelFunctions_
41 {
42         char Name[128];
43         void (* Init)(LatticeDesc * ld, KernelData ** kernelData, Parameters * params);
44         void (* Deinit)(LatticeDesc * ld, KernelData ** kernelData);
45 } KernelFunctions;
46
47 KernelFunctions g_kernels[] =
48 {
49         {
50                 .Name   = "list-aa-pv-soa",
51                 .Init   = D3Q19ListAaPvInit_PushSoA,
52                 .Deinit = D3Q19ListAaPvDeinit_PushSoA
53         },
54         {
55                 .Name   = "list-aa-ria-soa",
56                 .Init   = D3Q19ListAaRiaInit_PushSoA,
57                 .Deinit = D3Q19ListAaRiaDeinit_PushSoA
58         },
59         {
60                 .Name   = "list-aa-soa",
61                 .Init   = D3Q19ListAaInit_PushSoA,
62                 .Deinit = D3Q19ListAaDeinit_PushSoA
63         },
64         {
65                 .Name   = "list-aa-aos",
66                 .Init   = D3Q19ListAaInit_PushAoS,
67                 .Deinit = D3Q19ListAaDeinit_PushAoS
68         },
69         {
70                 .Name   = "list-pull-split-nt-1s-soa",
71                 .Init   = D3Q19ListPullSplitNt1SInit_PullSoA,
72                 .Deinit = D3Q19ListPullSplitNtDeinit_PullSoA
73         },
74         {
75                 .Name   = "list-pull-split-nt-2s-soa",
76                 .Init   = D3Q19ListPullSplitNt2SInit_PullSoA,
77                 .Deinit = D3Q19ListPullSplitNtDeinit_PullSoA
78         },
79         {
80                 .Name   = "list-push-soa",
81                 .Init   = D3Q19ListInit_PushSoA,
82                 .Deinit = D3Q19ListDeinit_PushSoA
83         },
84         {
85                 .Name   = "list-push-aos",
86                 .Init   = D3Q19ListInit_PushAoS,
87                 .Deinit = D3Q19ListDeinit_PushAoS
88         },
89         {
90                 .Name   = "list-pull-soa",
91                 .Init   = D3Q19ListInit_PullSoA,
92                 .Deinit = D3Q19ListDeinit_PullSoA
93         },
94         {
95                 .Name = "list-pull-aos",
96                 .Init = D3Q19ListInit_PullAoS,
97                 .Deinit = D3Q19ListDeinit_PullAoS
98         },
99         {
100                 .Name   = "push-soa",
101                 .Init   = D3Q19Init_PushSoA,
102                 .Deinit = D3Q19Deinit_PushSoA
103         },
104         {
105                 .Name   = "push-aos",
106                 .Init   = D3Q19Init_PushAoS,
107                 .Deinit = D3Q19Deinit_PushAoS
108         },
109         {
110                 .Name   = "pull-soa",
111                 .Init   = D3Q19Init_PullSoA,
112                 .Deinit = D3Q19Deinit_PullSoA
113         },
114         {
115                 .Name   = "pull-aos",
116                 .Init   = D3Q19Init_PullAoS,
117                 .Deinit = D3Q19Deinit_PullAoS
118         },
119         {
120                 .Name   = "blk-push-soa",
121                 .Init   = D3Q19BlkInit_PushSoA,
122                 .Deinit = D3Q19BlkDeinit_PushSoA
123         },
124         {
125                 .Name   = "blk-push-aos",
126                 .Init   = D3Q19BlkInit_PushAoS,
127                 .Deinit = D3Q19BlkDeinit_PushAoS
128         },
129         {
130                 .Name   = "blk-pull-soa",
131                 .Init   = D3Q19BlkInit_PullSoA,
132                 .Deinit = D3Q19BlkDeinit_PullSoA
133         },
134         {
135                 .Name   = "blk-pull-aos",
136                 .Init   = D3Q19BlkInit_PullAoS,
137                 .Deinit = D3Q19BlkDeinit_PullAoS
138         },
139         {
140                 .Name   = "aa-aos",
141                 .Init   = D3Q19AaInit_AaAoS,
142                 .Deinit = D3Q19AaDeinit_AaAoS
143         },
144         {
145                 .Name   = "aa-soa",
146                 .Init   = D3Q19AaInit_AaSoA,
147                 .Deinit = D3Q19AaDeinit_AaSoA
148         },
149         {
150                 .Name   = "aa-vec-soa",
151                 .Init   = D3Q19AaVecInit_AaSoA,
152                 .Deinit = D3Q19AaVecDeinit_AaSoA
153         },
154         {
155                 .Name   = "aa-vec-sl-soa",
156                 .Init   = D3Q19AaVecSlInit_AaSoA,
157                 .Deinit = D3Q19AaVecSlDeinit_AaSoA
158         }
159
160
161 };
162
163 #endif // __KERNEL_FUNCTIONS_H__
This page took 0.062574 seconds and 3 git commands to generate.