-
Notifications
You must be signed in to change notification settings - Fork 915
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
Use cuco::static_set in JSON tree algorithm #13928
Use cuco::static_set in JSON tree algorithm #13928
Conversation
Benchmark Comparison: nested_json_gpu_parser[0] Quadro GV100
nested_json_gpu_parser_depth[0] Quadro GV100
json_read_data_type[0] Quadro GV100
json_read_io[0] Quadro GV100
Summary
|
The memory usage should change as a result of this, right? (By not having to store both keys and values) |
It makes no difference in peak memory usage of JSON reader, because this part of code does not take the highest memory usage. DetailsBenchmark Resultsnested_json_gpu_parser[0] Quadro GV100
nested_json_gpu_parser_depth[0] Quadro GV100
json_read_data_type[0] Quadro GV100
json_read_io[0] Quadro GV100
|
cuco::experimental::extent{compute_hash_table_size(num_nodes)}, | ||
cuco::empty_key<cudf::size_type>{empty_node_index_sentinel}, | ||
d_equal, | ||
cuco::experimental::linear_probing<1, hasher_type>{d_hashed_cache}, |
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.
Why using linear_probing
here? Do we have other options?
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.
used the same probing used in distinct_count. What other probing options are there?
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.
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.
We can switch between linear_probing
and double_hashing
. In general, linear_probing
delivers better performance for set/map and double_hashing
is preferred for multiset/multimap.
After replacing static_map with static_set in "node type + field name hashing". nested_json_gpu_parser[0] Quadro GV100
nested_json_gpu_parser_depth[0] Quadro GV100
json_read_data_type[0] Quadro GV100
json_read_io[0] Quadro GV100
Summary
|
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.
Looks great! Thanks!
/merge |
Description
In JSON tree algorithms of JSON reader, cuco static_map is used as a set. This PR replaces it with static_set.
No tests are changed. No significant runtime changes.
Addresses part of #12261
Checklist