-
Notifications
You must be signed in to change notification settings - Fork 4.1k
GH-48277: [C++][Parquet] unpack with shuffle algorithm #47994
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
Merged
Merged
Changes from all commits
Commits
Show all changes
85 commits
Select commit
Hold shift + click to select a range
6e0463d
Add SSE4.2 implementation
AntoinePrv ebf7d5c
Add unpack uint8_t benchmark
AntoinePrv 043a804
Add bool unpack benchmark
AntoinePrv 2b31e6a
Bias benchmarks toward small scale
AntoinePrv f48656e
Add Kernel plan builder
AntoinePrv 0c8a178
Add simd kernel
AntoinePrv 0f4f58a
Handle rshifts on SSE2
AntoinePrv fc923dd
Use new kernel when possible in generated 128 code
AntoinePrv 069c087
Refactor array to xsimd::batch_constant
AntoinePrv cc061ed
Refactor right shift
AntoinePrv 2ad839f
Add oversized plan
AntoinePrv f36961d
Add oversized kernel
AntoinePrv 68a4750
Rename kernels
AntoinePrv 2077441
Add simd kernel dispatch
AntoinePrv a3cc6c2
Call Simd kernel directly
AntoinePrv a90a872
Fix SIMD level None
AntoinePrv 8638216
Initialize swizzles to -1
AntoinePrv 4edea90
Doc
AntoinePrv db87718
Improve test error message
AntoinePrv 341cc0e
Use new kernel in avx2
AntoinePrv d4ccd85
AVX2 swizzle fallback
AntoinePrv d667c2c
Remove dead code
AntoinePrv 9dfc15c
Simplify Large masks
AntoinePrv ee70839
Remove bpacking 256 generated file
AntoinePrv 4894f8c
Remove uint8_t fallback
AntoinePrv 218ec04
Add boolean simd implementation
AntoinePrv d0a0386
Use std::is_base_of for arch detection
AntoinePrv 1dfa82a
Improve swizzle
AntoinePrv 7a26840
Only use lshift hack when available
AntoinePrv 7016645
Fix return type
AntoinePrv 066e2dc
Fix shift included size
AntoinePrv a55d331
Add Avx2 uint16_t shift fallback
AntoinePrv e11d127
Refactor make_mult
AntoinePrv 7c89682
Add Avx2 lshift unint8_t fallback
AntoinePrv 6ca1300
Refactor right shift excess
AntoinePrv f190833
Refactor make_mult
AntoinePrv 114b23d
Add SSE var shift uint8_t fallback to uint16_t
AntoinePrv b089c04
Implement size reading reduction
AntoinePrv 1e7e14f
Add fallback Avx2 right shift
AntoinePrv 1c8c4f5
Refactor static dispatch
AntoinePrv e9f4358
Forward oversized to larger uint when possible
AntoinePrv 329c2a3
Add arch detection functions
AntoinePrv 4fe32fa
Refactor traits usage
AntoinePrv 7c9f243
Forward x86_64 unpack64 to unpack32
AntoinePrv 11b09a9
Simplify template usage
AntoinePrv 77bd31a
Reorganize and doc
AntoinePrv 271a215
Refactor KernelDispatch and remove Oversized dispatch
AntoinePrv 1dac3c9
Forward large unpack8 to unpack16 on SSE2
AntoinePrv 1c6ac48
Use fallback right shift on large uint8_t avx2
AntoinePrv 671aaab
Fix enable_if
AntoinePrv ee71f4b
Add missing header
AntoinePrv 4d6a53f
fmt
AntoinePrv 3856200
Add SSE4.2 to dynamic dispatch
AntoinePrv eeacb2f
Rename bpacking_simd_impl > bpacking_simd_kernel
AntoinePrv 057551c
Restore modifications to simd_codegen
AntoinePrv a16dfed
Reduce reading size and declare bytes read
AntoinePrv 83a4c29
Add kBytesRead to scalar code
AntoinePrv a081b7b
Add kBytesRead to simd 512 generated code
AntoinePrv 6529bfa
Prevent overreading
AntoinePrv 6eb24a7
Fix pessimit overeading guard
AntoinePrv bb8d9ce
Fix overreading guard comparison
AntoinePrv 4b50d07
Add UnpackOptions and max_read_bytes
AntoinePrv 430a4c5
Use C++20 NTTP
AntoinePrv 498985f
xsimd 14.0 compatibility
AntoinePrv 101577e
fmt
AntoinePrv db1a2fb
C++20 NTTP options
AntoinePrv 5888738
Homogenous wording
AntoinePrv a3b26f4
Remove xsimd backward compatibility
AntoinePrv 43fc02f
Apply doc fixes from code review
AntoinePrv 018b876
Documentation and code improvements
AntoinePrv f6237e0
Move utilities into bpacking sub ns
AntoinePrv 01c506b
Refactor plan builders
AntoinePrv 05b9e8e
Move utilities
AntoinePrv dcac5cf
Kernel documentation
AntoinePrv 515a733
adjust_bytes_per_read doc
AntoinePrv 1b94a10
Fewer typename
AntoinePrv fc5d078
Add documentation
AntoinePrv 88d132e
Fix bounds in plan builders
AntoinePrv fdce6ab
Change names
AntoinePrv 9d8620d
Add extra comments
AntoinePrv 4871519
Fix comments
AntoinePrv 173600c
Old compiler compatibility
AntoinePrv 3a280e4
Initialize cpuid array
AntoinePrv ab60e96
Disable AVX2
AntoinePrv 8f18e86
Extra checks
AntoinePrv File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
I'm curious, why not put all the unpack-related APIs inside
arrow::internal::bpackingas well? Does it cause too much code churn, or would it fail for other reasons?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.
No reason, anything works really. My reasoning was
unpackis a "library-public" utility function, so it lives inarrow::internalwhilearrow::internal::bpackingis "private" to theunpackfunction. Does that makes sense?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.
Kind of, though we might want to revisit later anyway. Not necessary for this PR in any case!