17 #include "../../QueryEngine/OmniSciTypes.h" 18 #include "../../Shared/funcannotations.h" 20 #define EXTENSION_INLINE extern "C" ALWAYS_INLINE DEVICE 21 #define EXTENSION_NOINLINE extern "C" NEVER_INLINE DEVICE 26 int32_t output_row_count = copy_multiplier * input_col.
getSize();
27 if (output_row_count > 100) {
31 if (output_col.
getSize() != output_row_count) {
36 int32_t start = threadIdx.x + blockDim.x * blockIdx.x;
37 int32_t stop =
static_cast<int32_t
>(input_col.
getSize());
38 int32_t step = blockDim.x * gridDim.x;
41 auto stop = input_col.
getSize();
45 for (
auto i = start; i < stop; i += step) {
46 for (
int c = 0; c < copy_multiplier; c++) {
47 output_col[i + (c * input_col.
getSize())] = input_col[i];
51 return output_row_count;
58 int32_t output_row_count = copy_multiplier * input_col1.
getSize();
59 if (output_row_count > 100) {
63 if (output_col.
getSize() != output_row_count) {
68 int32_t start = threadIdx.x + blockDim.x * blockIdx.x;
69 int32_t stop =
static_cast<int32_t
>(input_col1.
getSize());
70 int32_t step = blockDim.x * gridDim.x;
73 auto stop = input_col1.
getSize();
76 auto stride = input_col1.
getSize();
77 for (
auto i = start; i < stop; i += step) {
78 for (
int c = 0; c < copy_multiplier; c++) {
80 output_col.
setNull(i + (c * stride));
82 output_col[i + (c * stride)] = input_col1[i] + input_col2[i];
87 return output_row_count;
95 int32_t output_row_count = copy_multiplier * input_col1.
getSize();
96 if (output_row_count > 100) {
100 if ((output_col1.
getSize() != output_row_count) ||
101 (output_col2.
getSize() != output_row_count)) {
106 int32_t start = threadIdx.x + blockDim.x * blockIdx.x;
107 int32_t stop =
static_cast<int32_t
>(input_col1.
getSize());
108 int32_t step = blockDim.x * gridDim.x;
111 auto stop = input_col1.
getSize();
114 auto stride = input_col1.
getSize();
115 for (
auto i = start; i < stop; i += step) {
116 for (
int c = 0; c < copy_multiplier; c++) {
117 output_col1[i + (c * stride)] = input_col1[i] + input_col2[i];
118 output_col2[i + (c * stride)] = input_col1[i] - input_col2[i];
121 return output_row_count;
127 if ((output_max_col.
getSize() != 1) || output_max_row_col.
getSize() != 1) {
131 int32_t start = threadIdx.x + blockDim.x * blockIdx.x;
132 int32_t stop =
static_cast<int32_t
>(input_col.
getSize());
133 int32_t step = blockDim.x * gridDim.x;
136 auto stop = input_col.
getSize();
140 int curr_max = -2147483648;
141 int curr_max_row = -1;
142 for (
auto i = start; i < stop; i += step) {
143 if (input_col[i] > curr_max) {
144 curr_max = input_col[i];
148 output_max_col[0] = curr_max;
149 output_max_row_col[0] = curr_max_row;
EXTENSION_NOINLINE int32_t row_adder(const int copy_multiplier, const Column< double > &input_col1, const Column< double > &input_col2, Column< double > &output_col)
EXTENSION_NOINLINE int32_t row_addsub(const int copy_multiplier, const Column< double > &input_col1, const Column< double > &input_col2, Column< double > &output_col1, Column< double > &output_col2)
DEVICE bool isNull(int64_t index) const
EXTENSION_NOINLINE int32_t get_max_with_row_offset(const Column< int > &input_col, Column< int > &output_max_col, Column< int > &output_max_row_col)
EXTENSION_NOINLINE int32_t row_copier(const Column< double > &input_col, int copy_multiplier, Column< double > &output_col)
DEVICE void setNull(int64_t index)
DEVICE int64_t getSize() const
#define EXTENSION_NOINLINE