ls1-MarDyn
ls1-MarDyn molecular dynamics code
CollectiveCommBase.h
1#pragma once
2
3#include <vector>
4#include <stddef.h>
5#include "CollectiveCommBaseInterface.h"
22
23protected:
29 union valType {
30 int v_int;
31 unsigned long v_unsLong;
32 float v_float;
33 double v_double;
34 long double v_longDouble;
35 };
36
37public:
38 virtual ~~CollectiveCommBase() {
39 }
40
43 void init(int numValues) {
44 _values.reserve(numValues);
45 _getter = _values.begin();
46 }
47
50 virtual void appendInt(int intValue) override {
51 valType toPush;
52 toPush.v_int = intValue;
53 _values.push_back(toPush);
54 }
55
58 virtual void appendUnsLong(unsigned long unsLongValue) override {
59 valType toPush;
60 toPush.v_unsLong = unsLongValue;
61 _values.push_back(toPush);
62 }
63
66 virtual void appendFloat(float floatValue) override {
67 valType toPush;
68 toPush.v_float = floatValue;
69 _values.push_back(toPush);
70 }
71
74 virtual void appendDouble(double doubleValue) override {
75 valType toPush;
76 toPush.v_double = doubleValue;
77 _values.push_back(toPush);
78 }
79
82 virtual void appendLongDouble(long double longDoubleValue) override {
83 valType toPush;
84 toPush.v_longDouble = longDoubleValue;
85 _values.push_back(toPush);
86 }
87
90 virtual void broadcast(int /*root*/ = 0) override {
91 }
92
94 virtual void allreduceSum() override {
95 }
96
97 // doku in base class
98 virtual void allreduceCustom(ReduceType type) override{
99 }
100
102 virtual void scanSum() override {
103 }
104
110 virtual int getInt() override {
111 return (_getter++)->v_int;
112 }
113
119 virtual unsigned long getUnsLong() override {
120 return (_getter++)->v_unsLong;
121 }
122
128 virtual float getFloat() override {
129 return (_getter++)->v_float;
130 }
131
137 virtual double getDouble() override {
138 return (_getter++)->v_double;
139 }
140
146 virtual long double getLongDouble() override {
147 return (_getter++)->v_longDouble;
148 }
149
152 virtual void finalize() override {
153 _values.clear();
154 }
155
156 virtual size_t getTotalSize() override {
157 return _values.capacity() * sizeof(valType);
158 }
159
160protected:
162 std::vector<valType> _values;
163
165 std::vector<valType>::const_iterator _getter;
166
167};
168
This class is provides an interface for the base class of the collective communication.
Definition: CollectiveCommBaseInterface.h:24
This class is a dummy class which ensures that the collective communication commands also work if the...
Definition: CollectiveCommBase.h:21
virtual void allreduceCustom(ReduceType type) override
Definition: CollectiveCommBase.h:98
virtual double getDouble() override
Definition: CollectiveCommBase.h:137
virtual int getInt() override
Definition: CollectiveCommBase.h:110
std::vector< valType >::const_iterator _getter
Iterator to extract the values which were communicated.
Definition: CollectiveCommBase.h:165
virtual void appendUnsLong(unsigned long unsLongValue) override
Definition: CollectiveCommBase.h:58
virtual long double getLongDouble() override
Definition: CollectiveCommBase.h:146
virtual void appendInt(int intValue) override
Definition: CollectiveCommBase.h:50
virtual void finalize() override
delete memory and MPI_Type
Definition: CollectiveCommBase.h:152
virtual void appendDouble(double doubleValue) override
Definition: CollectiveCommBase.h:74
virtual void appendLongDouble(long double longDoubleValue) override
Definition: CollectiveCommBase.h:82
virtual unsigned long getUnsLong() override
Definition: CollectiveCommBase.h:119
void init(int numValues)
allocate memory for the values to be stored, initialize getter-iterator
Definition: CollectiveCommBase.h:43
virtual float getFloat() override
Definition: CollectiveCommBase.h:128
virtual void appendFloat(float floatValue) override
Definition: CollectiveCommBase.h:66
virtual void broadcast(int=0) override
Definition: CollectiveCommBase.h:90
virtual void scanSum() override
Performs a scan (sum)
Definition: CollectiveCommBase.h:102
virtual void allreduceSum() override
Performs an all-reduce (sum)
Definition: CollectiveCommBase.h:94
std::vector< valType > _values
Vector to store the values which shall be communicated.
Definition: CollectiveCommBase.h:162
virtual size_t getTotalSize() override
Definition: CollectiveCommBase.h:156
Enumeration class corresponding to the type schema type.
Definition: vtk-unstructured.h:1746
Definition: CollectiveCommBase.h:29