59
59
#include " QueryEngine/OutputBufferInitialization.h"
60
60
#include " QueryEngine/QueryRewrite.h"
61
61
#include " QueryEngine/QueryTemplateGenerator.h"
62
+ #include " QueryEngine/ResultSetReduction.h"
62
63
#include " QueryEngine/ResultSetReductionJIT.h"
63
64
#include " QueryEngine/RuntimeFunctions.h"
64
65
#include " QueryEngine/SpeculativeTopN.h"
@@ -1250,12 +1251,18 @@ ResultSetPtr Executor::reduceMultiDeviceResultSets(
1250
1251
reduced_results->initializeStorage ();
1251
1252
switch (query_mem_desc.getEffectiveKeyWidth ()) {
1252
1253
case 4 :
1253
- first->getStorage ()->moveEntriesToBuffer <int32_t >(
1254
- result_storage->getUnderlyingBuffer (), query_mem_desc.getEntryCount ());
1254
+ ResultSetReduction::moveEntriesToBuffer<int32_t >(
1255
+ first->getStorage ()->getQueryMemDesc (),
1256
+ first->getStorage ()->getUnderlyingBuffer (),
1257
+ result_storage->getUnderlyingBuffer (),
1258
+ query_mem_desc.getEntryCount ());
1255
1259
break ;
1256
1260
case 8 :
1257
- first->getStorage ()->moveEntriesToBuffer <int64_t >(
1258
- result_storage->getUnderlyingBuffer (), query_mem_desc.getEntryCount ());
1261
+ ResultSetReduction::moveEntriesToBuffer<int64_t >(
1262
+ first->getStorage ()->getQueryMemDesc (),
1263
+ first->getStorage ()->getUnderlyingBuffer (),
1264
+ result_storage->getUnderlyingBuffer (),
1265
+ query_mem_desc.getEntryCount ());
1259
1266
break ;
1260
1267
default :
1261
1268
CHECK (false );
@@ -1278,10 +1285,12 @@ ResultSetPtr Executor::reduceMultiDeviceResultSets(
1278
1285
(ResultSetStorage*)nullptr ,
1279
1286
[&](auto r, ResultSetStorage* res) {
1280
1287
for (auto i = r.begin () + 1 ; i != r.end (); ++i) {
1281
- (*r.begin ())->reduce (**i, {}, reduction_code, getConfig (), this );
1288
+ ResultSetReduction::reduce (
1289
+ **r.begin (), **i, {}, reduction_code, getConfig (), this );
1282
1290
}
1283
1291
if (res) {
1284
- res->reduce (*(*r.begin ()), {}, reduction_code, getConfig (), this );
1292
+ ResultSetReduction::reduce (
1293
+ *res, *(*r.begin ()), {}, reduction_code, getConfig (), this );
1285
1294
return res;
1286
1295
}
1287
1296
return *r.begin ();
@@ -1293,16 +1302,17 @@ ResultSetPtr Executor::reduceMultiDeviceResultSets(
1293
1302
if (!rhs) {
1294
1303
return lhs;
1295
1304
}
1296
- lhs-> reduce (*rhs, {}, reduction_code, getConfig (), this );
1305
+ ResultSetReduction:: reduce (*lhs, *rhs, {}, reduction_code, getConfig (), this );
1297
1306
return lhs;
1298
1307
});
1299
1308
} else {
1300
1309
for (size_t i = 1 ; i < results_per_device.size (); ++i) {
1301
- reduced_results->getStorage ()->reduce (*(results_per_device[i].first ->getStorage ()),
1302
- {},
1303
- reduction_code,
1304
- getConfig (),
1305
- this );
1310
+ ResultSetReduction::reduce (*reduced_results->getStorage (),
1311
+ *(results_per_device[i].first ->getStorage ()),
1312
+ {},
1313
+ reduction_code,
1314
+ getConfig (),
1315
+ this );
1306
1316
}
1307
1317
}
1308
1318
reduced_results->addCompilationQueueTime (compilation_queue_time);
0 commit comments