@@ -78,8 +78,15 @@ struct SimCol : vt::Collection<SimCol, vt::Index1D> {
78
78
79
79
void sparseHandler (Msg* m){
80
80
auto const this_node = theContext ()->getNode ();
81
+ auto const num_nodes = theContext ()->getNumNodes ();
82
+ auto const next_node = (this_node + 1 ) % num_nodes;
83
+ auto const prev_node = this_node - 1 >= 0 ? this_node - 1 : num_nodes - 1 ;
81
84
vt_debug_print (terse, lb, " sparseHandler: idx={}: elm={}\n " , getIndex (), getElmID ());
82
- if (m->iter >= 0 and m->iter <= 6 ) {
85
+ if (m->iter == 7 or m->iter == 8 or m->iter == 9 ) {
86
+ EXPECT_EQ (getIndex ().x () / 2 , next_node);
87
+ } else if (m->iter == 4 or m-> iter == 5 ) {
88
+ EXPECT_EQ (getIndex ().x () / 2 , prev_node);
89
+ } else {
83
90
EXPECT_EQ (getIndex ().x () / 2 , this_node);
84
91
}
85
92
}
@@ -171,8 +178,8 @@ TEST_F(TestOfflineLB, test_offlinelb_2) {
171
178
172
179
std::unordered_map<PhaseType, std::vector<ElementIDStruct>> ids;
173
180
int len = 2 ;
174
- PhaseType num_phases = 7 ;
175
- for (int i = 0 ; i < len; i++) {
181
+ PhaseType num_phases = 10 ;
182
+ for (int i = 0 ; i < len * 2 ; i++) {
176
183
auto id = elm::ElmIDBits::createCollectionImpl (true , i+1 , this_node, this_node);
177
184
id.curr_node = this_node;
178
185
ids[0 ].push_back (id);
@@ -183,51 +190,59 @@ TEST_F(TestOfflineLB, test_offlinelb_2) {
183
190
}
184
191
185
192
for (int i = 0 ; i < len; i++) {
186
- auto pid = elm::ElmIDBits::createCollectionImpl (true , i+1 , prev_node, this_node);
187
193
auto nid = elm::ElmIDBits::createCollectionImpl (true , i+1 , next_node, this_node);
188
- ids[1 ].push_back (pid);
189
- ids[2 ].push_back (pid);
190
- ids[4 ].push_back (nid);
191
- ids[5 ].push_back (nid);
194
+ auto pid = elm::ElmIDBits::createCollectionImpl (true , i+1 , prev_node, this_node);
195
+ ids[4 ].push_back (pid);
196
+ ids[7 ].push_back (nid);
192
197
}
193
198
194
199
LBDataHolder dh;
195
200
for (PhaseType i = 0 ; i < num_phases; i++) {
196
- for (auto && elm : ids[i]) {
197
- dh.node_data_ [i][elm] = LoadSummary{3 };
201
+ if (i != 1 and i != 2 and i != 5 and i != 8 and i != 9 ) {
202
+ auto & elms = ids[i];
203
+ for (std::size_t j = 0 ; j < elms.size (); j++) {
204
+ dh.node_data_ [i][elms[j]] = LoadSummary{ static_cast <double >(i + j) + 3 };
205
+ }
198
206
}
199
207
}
200
208
201
209
using JSONAppender = util::json::Appender<std::stringstream>;
202
210
std::stringstream stream{std::ios_base::out | std::ios_base::in};
203
211
nlohmann::json metadata, phasesMetadata;
204
212
phasesMetadata[" count" ] = num_phases;
205
- phasesMetadata[" skipped" ][" list" ] = {2 };
206
- phasesMetadata[" skipped" ][" range" ] = {{3 , 3 }};
207
- phasesMetadata[" identical_to_previous" ][" list" ] = {1 };
208
- phasesMetadata[" identical_to_previous" ][" range" ] = {{5 ,6 }};
213
+ phasesMetadata[" skipped" ][" list" ] = {9 };
214
+ phasesMetadata[" skipped" ][" range" ] = {{1 , 2 }};
215
+ phasesMetadata[" identical_to_previous" ][" list" ] = {8 };
216
+ phasesMetadata[" identical_to_previous" ][" range" ] = {{5 ,5 }};
209
217
metadata[" type" ] = " LBDatafile" ;
210
218
metadata[" phases" ] = phasesMetadata;
211
219
212
220
auto appender = std::make_unique<JSONAppender>(
213
221
" phases" , metadata, std::move (stream), true
214
222
);
215
- // Add phases 0 and 4
216
- appender->addElm (*dh.toJson (0 ));
217
- appender->addElm (*dh.toJson (4 ));
223
+ for (PhaseType i = 0 ; i < num_phases; i++) {
224
+ // ignore skipped and identical phases
225
+ if (i != 1 and i != 2 and i != 5 and i != 8 and i != 9 ) {
226
+ auto j = dh.toJson (i);
227
+ appender->addElm (*j);
228
+ }
229
+ }
218
230
stream = appender->finish ();
219
231
220
232
// Preapre configuration file
221
233
std::string file_name = getUniqueFilenameWithRanks (" .txt" );
222
234
std::ofstream out (file_name);
223
235
out << " "
224
236
" 0 OfflineLB\n "
225
- " 1 NoLB \n "
226
- " 2 NoLB \n "
227
- " 3 NoLB \n "
237
+ " 1 OfflineLB \n "
238
+ " 2 OfflineLB \n "
239
+ " 3 OfflineLB \n "
228
240
" 4 OfflineLB\n "
229
241
" 5 OfflineLB\n "
230
- " 6 NoLB\n " ;
242
+ " 6 OfflineLB\n "
243
+ " 7 OfflineLB\n "
244
+ " 8 OfflineLB\n "
245
+ " 9 OfflineLB\n " ;
231
246
out.close ();
232
247
233
248
theConfig ()->vt_lb = true ;
0 commit comments