milupHPC documentation
  • include
helper.cuh
Go to the documentation of this file.
1#ifndef MILUPHPC_HELPER_CUH
2#define MILUPHPC_HELPER_CUH
3
4#include "parameter.h"
5#include "cuda_utils/cuda_utilities.cuh"
6#include <boost/mpi.hpp>
7#include "utils/logger.h"
8#include "cuda_utils/cuda_runtime.h"
9
10struct Reduction
11{
12 enum Type
13 {
14 min, max, sum
15 };
16 Type t_;
17 Reduction(Type t) : t_(t) {}
18 operator Reduction () const {return t_;}
19private:
20 template<typename T>
21 operator T () const;
22};
23
24class Helper {
25
26public:
27
28 /*integer *integerBuffer;
29 real *realBuffer;
30 keyType *keyTypeBuffer;
31
32 integer *integerVal;
33 real *realVal;
34 keyType *keyTypeVal;
35
36 CUDA_CALLABLE_MEMBER Helper();
37 CUDA_CALLABLE_MEMBER Helper(integer *integerVal, real *realVal, keyType *keyTypeVal, integer *integerBuffer,
38 real *realBuffer, keyType *keyTypeBuffer);
39 CUDA_CALLABLE_MEMBER ~Helper();
40 CUDA_CALLABLE_MEMBER void set(integer *integerVal, real *realVal, keyType *keyTypeVal, integer *integerBuffer,
41 real *realBuffer, keyType *keyTypeBuffer);
42
43 */
44
45 integer *integerVal;
46 integer *integerVal1;
47 integer *integerVal2;
48
49 real *realVal;
50 real *realVal1;
51 real *realVal2;
52
53 keyType *keyTypeVal;
54
55 integer *integerBuffer;
56 integer *integerBuffer1; // numParticles (or numParticlesLocal)
57 integer *integerBuffer2; // numParticles (or numParticlesLocal)
58 integer *integerBuffer3; // numParticles (or numParticlesLocal)
59 integer *integerBuffer4; // numParticles (or numParticlesLocal)
60
61 integer *sendCount; // subDomainKeyTreeHandler->h_subDomainKeyTree->numProcesses
62 integer *sendCount1; // subDomainKeyTreeHandler->h_subDomainKeyTree->numProcesses
63
64 idInteger *idIntegerBuffer;
65 idInteger *idIntegerBuffer1;
66
67 real *realBuffer;
68 real *realBuffer1;
69
70 keyType *keyTypeBuffer; // numParticlesLocal
71 keyType *keyTypeBuffer1; // sumParticles
72 keyType *keyTypeBuffer2; //sumParticles
73
74 CUDA_CALLABLE_MEMBER Helper();
75 CUDA_CALLABLE_MEMBER Helper(integer *integerVal, integer *integerVal1, integer *integerVal2,
76 real *realVal, real *realVal1, real *realVal2, keyType *keyTypeVal,
77 integer *integerBuffer, integer *integerBuffer1, integer *integerBuffer2,
78 integer *integerBuffer3, integer *integerBuffer4,
79 integer *sendCount, integer *sendCount1, idInteger *idIntegerBuffer,
80 idInteger *idIntegerBuffer1, real *realBuffer, real *realBuffer1,
81 keyType *keyTypeBuffer, keyType *keyTypeBuffer1, keyType *keyTypeBuffer2);
82
83 CUDA_CALLABLE_MEMBER void set(integer *integerVal, integer *integerVal1, integer *integerVal2,
84 real *realVal, real *realVal1, real *realVal2, keyType *keyTypeVal,
85 integer *integerBuffer, integer *integerBuffer1, integer *integerBuffer2,
86 integer *integerBuffer3, integer *integerBuffer4,
87 integer *sendCount, integer *sendCount1, idInteger *idIntegerBuffer,
88 idInteger *idIntegerBuffer1, real *realBuffer, real *realBuffer1,
89 keyType *keyTypeBuffer, keyType *keyTypeBuffer1, keyType *keyTypeBuffer2);
90
91 CUDA_CALLABLE_MEMBER ~Helper();
92
93};
94
95namespace HelperNS {
96
97 namespace Kernel {
98 //__global__ void set(Helper *helper, integer *integerVal, real *realVal, keyType *keyTypeVal,
99 // integer *integerBuffer, real *realBuffer, keyType *keyTypeBuffer);
100
101 __global__ void set(Helper *helper, integer *integerVal, integer *integerVal1, integer *integerVal2,
102 real *realVal, real *realVal1, real *realVal2, keyType *keyTypeVal,
103 integer *integerBuffer, integer *integerBuffer1, integer *integerBuffer2,
104 integer *integerBuffer3, integer *integerBuffer4,
105 integer *sendCount, integer *sendCount1, idInteger *idIntegerBuffer,
106 idInteger *idIntegerBuffer1, real *realBuffer, real *realBuffer1,
107 keyType *keyTypeBuffer, keyType *keyTypeBuffer1, keyType *keyTypeBuffer2);
108
109 namespace Launch {
110 //void set(Helper *helper, integer *integerVal, real *realVal, keyType *keyTypeVal, integer *integerBuffer,
111 // real *realBuffer, keyType *keyTypeBuffer);
112
113 void set(Helper *helper, integer *integerVal, integer *integerVal1, integer *integerVal2,
114 real *realVal, real *realVal1, real *realVal2, keyType *keyTypeVal,
115 integer *integerBuffer, integer *integerBuffer1, integer *integerBuffer2,
116 integer *integerBuffer3, integer *integerBuffer4,
117 integer *sendCount, integer *sendCount1, idInteger *idIntegerBuffer,
118 idInteger *idIntegerBuffer1, real *realBuffer, real *realBuffer1,
119 keyType *keyTypeBuffer, keyType *keyTypeBuffer1, keyType *keyTypeBuffer2);
120 }
121
122 template <typename T>
123 __global__ void copyArray(T *targetArray, T *sourceArray, integer n);
124
125 template <typename T>
126 __global__ void resetArray(T *array, T value, integer n);
127
128 namespace Launch {
129 template <typename T>
130 real copyArray(T *targetArray, T *sourceArray, integer n);
131
132 template <typename T>
133 real resetArray(T *array, T value, integer n);
134 }
135 }
136
137 template <typename A>
138 real sortKeys(A *keysToSort, A *sortedKeys, int n);
139
140 template <typename A, typename B>
141 real sortArray(A *arrayToSort, A *sortedArray, B *keyIn, B *keyOut, integer n);
142
143 template <typename T>
144 T reduceAndGlobalize(T *d_sml, T *d_aggregate, integer n, Reduction::Type reductionType);
145
146}
147
148#endif //MILUPHPC_HELPER_CUH
Helper
Definition: helper.cuh:24
Helper::~Helper
CUDA_CALLABLE_MEMBER ~Helper()
Definition: helper.cu:33
Helper::set
CUDA_CALLABLE_MEMBER void set(integer *integerVal, integer *integerVal1, integer *integerVal2, real *realVal, real *realVal1, real *realVal2, keyType *keyTypeVal, integer *integerBuffer, integer *integerBuffer1, integer *integerBuffer2, integer *integerBuffer3, integer *integerBuffer4, integer *sendCount, integer *sendCount1, idInteger *idIntegerBuffer, idInteger *idIntegerBuffer1, real *realBuffer, real *realBuffer1, keyType *keyTypeBuffer, keyType *keyTypeBuffer1, keyType *keyTypeBuffer2)
Definition: helper.cu:47
Helper::integerBuffer3
integer * integerBuffer3
Definition: helper.cuh:58
Helper::realVal1
real * realVal1
Definition: helper.cuh:50
Helper::idIntegerBuffer1
idInteger * idIntegerBuffer1
Definition: helper.cuh:65
Helper::realVal2
real * realVal2
Definition: helper.cuh:51
Helper::keyTypeBuffer1
keyType * keyTypeBuffer1
Definition: helper.cuh:71
Helper::keyTypeBuffer2
keyType * keyTypeBuffer2
Definition: helper.cuh:72
Helper::integerBuffer4
integer * integerBuffer4
Definition: helper.cuh:59
Helper::sendCount
integer * sendCount
Definition: helper.cuh:61
Helper::sendCount1
integer * sendCount1
Definition: helper.cuh:62
Helper::integerVal1
integer * integerVal1
Definition: helper.cuh:46
Helper::integerBuffer
integer * integerBuffer
Definition: helper.cuh:55
Helper::realBuffer1
real * realBuffer1
Definition: helper.cuh:68
Helper::realVal
real * realVal
Definition: helper.cuh:49
Helper::integerVal
integer * integerVal
Definition: helper.cuh:45
Helper::keyTypeVal
keyType * keyTypeVal
Definition: helper.cuh:53
Helper::integerBuffer1
integer * integerBuffer1
Definition: helper.cuh:56
Helper::integerBuffer2
integer * integerBuffer2
Definition: helper.cuh:57
Helper::keyTypeBuffer
keyType * keyTypeBuffer
Definition: helper.cuh:70
Helper::integerVal2
integer * integerVal2
Definition: helper.cuh:47
Helper::idIntegerBuffer
idInteger * idIntegerBuffer
Definition: helper.cuh:64
Helper::realBuffer
real * realBuffer
Definition: helper.cuh:67
Helper::Helper
CUDA_CALLABLE_MEMBER Helper()
Definition: helper.cu:5
cuda_runtime.h
CUDA runtime functionalities and wrappers.
cuda_utilities.cuh
CUDA utilities.
CUDA_CALLABLE_MEMBER
#define CUDA_CALLABLE_MEMBER
Definition: cuda_utilities.cuh:30
logger.h
C++ style logger.
HelperNS::Kernel::Launch::copyArray
real copyArray(T *targetArray, T *sourceArray, integer n)
Definition: helper.cu:284
HelperNS::Kernel::Launch::set
void set(Helper *helper, integer *integerVal, integer *integerVal1, integer *integerVal2, real *realVal, real *realVal1, real *realVal2, keyType *keyTypeVal, integer *integerBuffer, integer *integerBuffer1, integer *integerBuffer2, integer *integerBuffer3, integer *integerBuffer4, integer *sendCount, integer *sendCount1, idInteger *idIntegerBuffer, idInteger *idIntegerBuffer1, real *realBuffer, real *realBuffer1, keyType *keyTypeBuffer, keyType *keyTypeBuffer1, keyType *keyTypeBuffer2)
Definition: helper.cu:112
HelperNS::Kernel::Launch::resetArray
real resetArray(T *array, T value, integer n)
Definition: helper.cu:293
HelperNS::Kernel::resetArray
__global__ void resetArray(T *array, T value, integer n)
Definition: helper.cu:268
HelperNS::Kernel::set
__global__ void set(Helper *helper, integer *integerVal, integer *integerVal1, integer *integerVal2, real *realVal, real *realVal1, real *realVal2, keyType *keyTypeVal, integer *integerBuffer, integer *integerBuffer1, integer *integerBuffer2, integer *integerBuffer3, integer *integerBuffer4, integer *sendCount, integer *sendCount1, idInteger *idIntegerBuffer, idInteger *idIntegerBuffer1, real *realBuffer, real *realBuffer1, keyType *keyTypeBuffer, keyType *keyTypeBuffer1, keyType *keyTypeBuffer2)
Definition: helper.cu:95
HelperNS::Kernel::copyArray
__global__ void copyArray(T *targetArray, T *sourceArray, integer n)
Definition: helper.cu:254
HelperNS
Definition: helper.cuh:95
HelperNS::sortArray
real sortArray(A *arrayToSort, A *sortedArray, B *keyIn, B *keyOut, integer n)
Definition: helper.cu:151
HelperNS::sortKeys
real sortKeys(A *keysToSort, A *sortedKeys, int n)
Definition: helper.cu:135
HelperNS::reduceAndGlobalize
T reduceAndGlobalize(T *d_sml, T *d_aggregate, integer n, Reduction::Type reductionType)
Definition: helper.cu:184
Kernel
Definition: device_rhs.cuh:7
parameter.h
Settings via preprocessor directives, typedefs, constants, structs.
real
double real
Definition: parameter.h:15
keyType
unsigned long keyType
Definition: parameter.h:18
integer
int integer
Definition: parameter.h:17
idInteger
int idInteger
Definition: parameter.h:19
Reduction
Definition: helper.cuh:11
Reduction::Type
Type
Definition: helper.cuh:13
Reduction::sum
@ sum
Definition: helper.cuh:14
Reduction::min
@ min
Definition: helper.cuh:14
Reduction::max
@ max
Definition: helper.cuh:14
Reduction::t_
Type t_
Definition: helper.cuh:16
Reduction::Reduction
Reduction(Type t)
Definition: helper.cuh:17

milupHPC - include/helper.cuh Source File
Generated on Wed Aug 31 2022 12:16:52 by Doxygen 1.9.3