This repository was archived by the owner on May 9, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 5 files changed +37
-16
lines changed Expand file tree Collapse file tree 5 files changed +37
-16
lines changed Original file line number Diff line number Diff line change @@ -73,6 +73,7 @@ set(query_engine_source_files
73
73
OutputBufferInitialization.cpp
74
74
QueryPhysicalInputsCollector.cpp
75
75
PlanState.cpp
76
+ QuantileRuntime.cpp
76
77
QueryRewrite.cpp
77
78
QueryTemplateGenerator.cpp
78
79
QueryExecutionContext.cpp
@@ -136,6 +137,7 @@ set(group_by_hash_test_files
136
137
GroupByHashTest.cpp
137
138
MurmurHash.cpp
138
139
DynamicWatchdog.cpp
140
+ QuantileRuntime.cpp
139
141
RuntimeFunctions.cpp
140
142
)
141
143
Original file line number Diff line number Diff line change 19
19
20
20
#ifndef __CUDACC__
21
21
#include " QueryEngine/TopKAggRuntime.h"
22
- #include " Shared/quantile.h"
23
22
#endif
24
23
25
24
extern " C" RUNTIME_EXPORT ALWAYS_INLINE DEVICE uint32_t
@@ -413,16 +412,12 @@ DEF_AGG_TOPK_ALL(double, double)
413
412
#undef DEF_AGG_TOPK_SKIP_VAL
414
413
#undef DEF_AGG_TOPK
415
414
416
- template <typename ValueType>
417
- void agg_quantile_impl (int64_t * agg, ValueType val) {
418
- auto * quantile = reinterpret_cast <hdk::quantile::Quantile*>(*agg);
419
- quantile->add <ValueType>(val);
420
- }
421
-
422
- #define DEF_AGG_QUANTILE (val_type, suffix ) \
423
- extern " C" RUNTIME_EXPORT ALWAYS_INLINE DEVICE void agg_quantile_##suffix( \
424
- int64_t * agg, val_type val) { \
425
- agg_quantile_impl<val_type>(agg, val); \
415
+ #define DEF_AGG_QUANTILE (val_type, suffix ) \
416
+ extern " C" RUNTIME_EXPORT DEVICE void agg_quantile_impl_##suffix(int64_t * agg, \
417
+ val_type val); \
418
+ extern " C" RUNTIME_EXPORT ALWAYS_INLINE DEVICE void agg_quantile_##suffix( \
419
+ int64_t * agg, val_type val) { \
420
+ agg_quantile_impl_##suffix (agg, val); \
426
421
}
427
422
428
423
#define DEF_AGG_QUANTILE_SKIP_VAL (val_type, suffix ) \
Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright (C) 2023 Intel Corporation
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ #include " Shared/quantile.h"
8
+
9
+ #define DEF_AGG_QUANTILE_IMPL (val_type, suffix ) \
10
+ extern " C" RUNTIME_EXPORT DEVICE void agg_quantile_impl_##suffix(int64_t * agg, \
11
+ val_type val) { \
12
+ auto * quantile = reinterpret_cast <hdk::quantile::Quantile*>(*agg); \
13
+ quantile->add <val_type>(val); \
14
+ }
15
+
16
+ DEF_AGG_QUANTILE_IMPL (int8_t , int8)
17
+ DEF_AGG_QUANTILE_IMPL(int16_t , int16)
18
+ DEF_AGG_QUANTILE_IMPL(int32_t , int32)
19
+ DEF_AGG_QUANTILE_IMPL(int64_t , int64)
20
+ DEF_AGG_QUANTILE_IMPL(float , float )
21
+ DEF_AGG_QUANTILE_IMPL(double , double )
Original file line number Diff line number Diff line change 28
28
#include < cstdint>
29
29
#include < cstdlib>
30
30
#include < limits>
31
+ #include < type_traits>
31
32
32
33
#define NULL_BOOLEAN INT8_MIN
33
34
#define NULL_TINYINT INT8_MIN
Original file line number Diff line number Diff line change 11
11
12
12
#include " IR/OpTypeEnums.h"
13
13
14
+ #include < algorithm>
15
+ #include < cmath>
14
16
#include < cstdint>
15
17
#include < vector>
16
18
@@ -260,18 +262,18 @@ class Quantile {
260
262
size_t right_idx;
261
263
switch (interpolation) {
262
264
case ir::Interpolation::kLower :
263
- left_idx = right_idx = floor (pos);
265
+ left_idx = right_idx = std:: floor (pos);
264
266
break ;
265
267
case ir::Interpolation::kHigher :
266
- left_idx = right_idx = ceil (pos);
268
+ left_idx = right_idx = std:: ceil (pos);
267
269
break ;
268
270
case ir::Interpolation::kNearest :
269
- left_idx = right_idx = round (pos);
271
+ left_idx = right_idx = std:: round (pos);
270
272
break ;
271
273
case ir::Interpolation::kMidpoint :
272
274
case ir::Interpolation::kLinear :
273
- left_idx = floor (pos);
274
- right_idx = ceil (pos);
275
+ left_idx = std:: floor (pos);
276
+ right_idx = std:: ceil (pos);
275
277
break ;
276
278
}
277
279
You can’t perform that action at this time.
0 commit comments