19 #include "../../QueryEngine/heavydbTypes.h"
31 int32_t output_row_count = copy_multiplier * input_col.
size();
32 if (output_row_count > 100) {
36 if (output_col.
size() != output_row_count) {
41 int32_t start = threadIdx.x + blockDim.x * blockIdx.x;
42 int32_t stop =
static_cast<int32_t
>(input_col.
size());
43 int32_t step = blockDim.x * gridDim.x;
46 auto stop = input_col.
size();
50 for (
auto i = start; i < stop; i += step) {
51 for (
int c = 0; c < copy_multiplier; c++) {
52 output_col[i + (c * input_col.
size())] = input_col[i];
56 return output_row_count;
65 if (copy_multiplier == -1) {
70 if (copy_multiplier == -2) {
76 if (copy_multiplier == -3) {
79 throw std::runtime_error(
"row_copier2: throw before calling set_output_row_size");
81 if (copy_multiplier == -4) {
85 throw std::runtime_error(
"row_copier2: throw after calling set_output_row_size");
88 if (copy_multiplier == -5) {
92 int32_t output_row_count = copy_multiplier * input_col.
size();
102 #endif // #ifndef __CUDACC__
107 int32_t output_row_count = copy_multiplier * input_col.
size();
108 if (output_row_count > 100) {
112 if (output_col.
size() != output_row_count) {
117 int32_t start = threadIdx.x + blockDim.x * blockIdx.x;
118 int32_t stop =
static_cast<int32_t
>(input_col.
size());
119 int32_t step = blockDim.x * gridDim.x;
122 auto stop = input_col.
size();
126 for (
auto i = start; i < stop; i += step) {
127 for (
int c = 0; c < copy_multiplier; c++) {
128 output_col[i + (c * input_col.
size())] = input_col[i];
132 return output_row_count;
142 int32_t output_row_count = copy_multiplier * input_col1.
size();
143 if (output_row_count > 100) {
147 if (output_col.
size() != output_row_count) {
152 int32_t start = threadIdx.x + blockDim.x * blockIdx.x;
153 int32_t stop =
static_cast<int32_t
>(input_col1.
size());
154 int32_t step = blockDim.x * gridDim.x;
157 auto stop = input_col1.
size();
160 auto stride = input_col1.
size();
161 for (
auto i = start; i < stop; i += step) {
162 for (
int c = 0; c < copy_multiplier; c++) {
164 output_col.
setNull(i + (c * stride));
166 output_col[i + (c * stride)] = input_col1[i] + input_col2[i];
171 return output_row_count;
184 int32_t output_row_count = copy_multiplier * input_col1.
size();
185 if (output_row_count > 100) {
189 if ((output_col1.
size() != output_row_count) ||
190 (output_col2.
size() != output_row_count)) {
195 int32_t start = threadIdx.x + blockDim.x * blockIdx.x;
196 int32_t stop =
static_cast<int32_t
>(input_col1.
size());
197 int32_t step = blockDim.x * gridDim.x;
200 auto stop = input_col1.
size();
203 auto stride = input_col1.
size();
204 for (
auto i = start; i < stop; i += step) {
205 for (
int c = 0; c < copy_multiplier; c++) {
206 output_col1[i + (c * stride)] = input_col1[i] + input_col2[i];
207 output_col2[i + (c * stride)] = input_col1[i] - input_col2[i];
210 return output_row_count;
225 if ((output_max_col.
size() != 1) || output_max_row_col.
size() != 1) {
229 auto stop = input_col.
size();
232 int curr_max = -2147483648;
233 int curr_max_row = -1;
234 for (
auto i = start; i < stop; i += step) {
235 if (input_col[i] > curr_max) {
236 curr_max = input_col[i];
240 output_max_col[0] = curr_max;
241 output_max_row_col[0] = curr_max_row;
245 #endif // #ifndef __CUDACC__
259 col = col_list[index];
263 #endif // #ifndef __CUDACC__
276 col2 = col_list[col_list.
numCols() - 1];
290 int32_t output_num_rows = input.
numCols();
292 for (
int i = 0; i < output_num_rows; i++) {
295 for (
int j = 0; j < col.size(); j++) {
300 return output_num_rows;
303 #endif // #ifndef __CUDACC__
EXTENSION_NOINLINE_HOST int32_t get_max_with_row_offset__cpu_(const Column< int > &input_col, Column< int > &output_max_col, Column< int > &output_max_row_col)
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)
EXTENSION_NOINLINE_HOST void set_output_row_size(int64_t num_rows)
#define EXTENSION_NOINLINE
EXTENSION_NOINLINE_HOST int32_t column_list_row_sum__cpu_(const ColumnList< int32_t > &input, Column< int32_t > &out)
DEVICE int64_t size() const
EXTENSION_NOINLINE int32_t row_copier_text(const Column< TextEncodingDict > &input_col, int copy_multiplier, Column< TextEncodingDict > &output_col)
DEVICE int64_t numCols() const
EXTENSION_NOINLINE int32_t row_copier(const Column< double > &input_col, int copy_multiplier, Column< double > &output_col)
EXTENSION_NOINLINE_HOST int32_t row_copier2__cpu__(const Column< double > &input_col, int copy_multiplier, Column< double > &output_col, Column< double > &output_col2)
EXTENSION_NOINLINE int32_t column_list_first_last(const ColumnList< double > &col_list, const int m, Column< double > &col1, Column< double > &col2)
#define EXTENSION_NOINLINE_HOST
EXTENSION_NOINLINE_HOST int32_t column_list_get__cpu_(const ColumnList< double > &col_list, const int index, const int m, Column< double > &col)
DEVICE bool isNull(int64_t index) const
DEVICE void setNull(int64_t index)
DEVICE int64_t size() const