-
Notifications
You must be signed in to change notification settings - Fork 976
Reduce output buffer sizes for pruned pages of columns with a list
parent
#20086
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
2c75a01
b32b9b5
8495eb5
ae246af
282d064
18de816
92714e4
ed12844
afc8006
7d52a04
a4f97b1
313fbff
144aabd
84f280d
1b9c4dc
8a64808
f77e210
f2739f5
9fb5597
83962a4
7082e32
1053d06
5839627
2aae6f4
da09e82
bfde9e7
1da789c
f58456b
d6c31f2
737df82
11b46af
1467af3
b774c6a
a471b6e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -608,8 +608,8 @@ CUDF_KERNEL void __launch_bounds__(preprocess_block_size) | |
if (t == 0) { | ||
// don't clobber these if they're already computed from the index | ||
if (!pp->has_page_index) { | ||
s->page.num_nulls = 0; | ||
s->page.num_valids = 0; | ||
pp->num_nulls = 0; | ||
pp->num_valids = 0; | ||
} | ||
// reset str_bytes to 0 in case it's already been calculated (esp needed for chunked reads). | ||
pp->str_bytes = 0; | ||
|
@@ -676,7 +676,6 @@ CUDF_KERNEL void __launch_bounds__(preprocess_block_size) | |
* @param page_mask Page mask indicating if this column needs to be decoded | ||
* @param min_rows crop all rows below min_row | ||
* @param num_rows Maximum number of rows to read | ||
* other settings and records the result in the PageInfo::str_bytes_all field | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. stale comments |
||
*/ | ||
CUDF_KERNEL void __launch_bounds__(delta_preproc_block_size) | ||
compute_delta_page_string_sizes_kernel(PageInfo* pages, | ||
|
@@ -770,7 +769,6 @@ CUDF_KERNEL void __launch_bounds__(delta_preproc_block_size) | |
* @param page_mask Page mask indicating if this column needs to be decoded | ||
* @param min_rows crop all rows below min_row | ||
* @param num_rows Maximum number of rows to read | ||
* other settings | ||
*/ | ||
CUDF_KERNEL void __launch_bounds__(delta_length_block_size) | ||
compute_delta_length_page_string_sizes_kernel(PageInfo* pages, | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -170,9 +170,11 @@ __device__ void update_string_offsets_for_pruned_pages( | |
|
||
// Initial string offset | ||
auto const initial_value = page.str_offset; | ||
// We must use the batch size from the nesting info (the size of the page for this batch) | ||
auto value_count = page.nesting[state->col.max_nesting_depth - 1].batch_size; | ||
auto const tid = cg::this_thread_block().thread_rank(); | ||
// The value count is either the leaf-level batch size in case of lists or the number of | ||
// effective rows being read by this page | ||
auto const value_count = | ||
has_lists ? page.nesting[state->col.max_nesting_depth - 1].batch_size : state->num_rows; | ||
auto const tid = cg::this_thread_block().thread_rank(); | ||
|
||
// Offsets pointer contains string sizes in case of large strings and actual offsets | ||
// otherwise | ||
|
@@ -190,10 +192,6 @@ __device__ void update_string_offsets_for_pruned_pages( | |
auto const input_col_idx = page.chunk_idx % chunks_per_rowgroup; | ||
compute_initial_large_strings_offset<has_lists>(state, initial_str_offsets[input_col_idx]); | ||
} else { | ||
// if no repetition we haven't calculated start/end bounds and instead just skipped | ||
// values until we reach first_row. account for that here. | ||
if constexpr (not has_lists) { value_count -= state->first_row; } | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For |
||
|
||
// Write the initial offset at all positions to indicate zero sized strings | ||
for (int idx = tid; idx < value_count; idx += block_size) { | ||
offptr[idx] = initial_value; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s
is not initialized at this point so directly updatepp
(PageInfo) whose references
will store insetup_local_page_info
function later