Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
a7ac1ae
Add PFOR core algorithm and tests
sfc-gh-pgaur Apr 20, 2026
c8501f5
Integrate PFOR encoding into parquet encoder/decoder
sfc-gh-pgaur Apr 21, 2026
8ac3f28
Add PFOR encoding benchmark
sfc-gh-pgaur Apr 21, 2026
ff837d9
Use signed integer types consistently per Arrow style guide
sfc-gh-pgaur Jun 3, 2026
f8c70e8
Use arrow::util::span for buffer parameters in Store/Load/Decode/Seri…
sfc-gh-pgaur Jun 3, 2026
65b29f1
Return Result<T>/Status on decode paths instead of ARROW_DCHECK
sfc-gh-pgaur Jun 3, 2026
7c5e6e4
Add static_assert(ARROW_LITTLE_ENDIAN) and replace reinterpret_cast w…
sfc-gh-pgaur Jun 3, 2026
0c5ef3e
Use single-call unpack() instead of manual batch loop + BitReader rem…
sfc-gh-pgaur Jun 3, 2026
a99dee8
Add pragma GCC unroll/ivdep to decode loops for better vectorization
sfc-gh-pgaur Jun 3, 2026
c1a8eb5
Add PforEncodedVectorView for zero-copy decode path
sfc-gh-pgaur Jun 3, 2026
49ef1ce
Make vector_size configurable on encode path with default kPforVector…
sfc-gh-pgaur Jun 3, 2026
6f3a5bf
Fix pfor_test.cc: unwrap Result<> from PforVectorInfo::Load()
sfc-gh-pgaur Jun 3, 2026
cd2ed56
Convert PforWrapper::LoadHeader to return Result<PforHeader>
sfc-gh-pgaur Jun 14, 2026
b6aae63
Use SafeLoadAs/SafeStore for header and offset array in PforWrapper
sfc-gh-pgaur Jun 14, 2026
374eae6
Validate header fields in PforWrapper::LoadHeader
sfc-gh-pgaur Jun 14, 2026
87564b8
Use int64_t and global ::arrow:: prefix at PFOR encoder/decoder call …
sfc-gh-pgaur Jun 15, 2026
4f305b9
Use uint8_t* consistently in PforWrapper API instead of char*
sfc-gh-pgaur Jun 15, 2026
9d5e82c
Convert PforVectorInfo to class with SafeLoadAs/SafeStore and bit_wid…
sfc-gh-pgaur Jun 15, 2026
5583424
Convert PforEncodedVector and PforEncodedVectorView to classes
sfc-gh-pgaur Jun 15, 2026
d801fe4
Tighten PforVectorInfo encapsulation: validate num_exceptions in Load…
sfc-gh-pgaur Jun 15, 2026
9fabb7e
make
sfc-gh-pgaur Jun 25, 2026
384e89f
Use bit_util::IsPowerOf2/CeilDiv and add incremental encode/decode TO…
sfc-gh-pgaur Jun 26, 2026
9d5470c
Drop Snowflake attribution from PFOR header comments
sfc-gh-pgaur Jun 26, 2026
9bef47b
Fix IsPowerOf2(int32_t) ambiguity in pfor_wrapper.cc
sfc-gh-pgaur Jun 28, 2026
6ae3c9b
Add FastLanes auto-vectorized bit-packing library
sfc-gh-pgaur Jun 28, 2026
822f91b
Add FastLanes-FOR to parquet-pfor-comparison-benchmark
sfc-gh-pgaur Jun 28, 2026
ef3e746
FastLanes-FOR: add DecodeFlat (flat output) and benchmark it
sfc-gh-pgaur Jun 28, 2026
4037bb2
FastLanes: add toTransposed32; correct fromTransposed32 docstring
sfc-gh-pgaur Jun 28, 2026
26ea3c4
PFOR: add PackingMode (BitPack | FastLanes) per-vector flag
sfc-gh-pgaur Jun 28, 2026
51f2568
PFOR: add OutputOrder { Flat, Transposed } decode option
sfc-gh-pgaur Jun 28, 2026
d9ef31b
Local: keep -O3 from CMake Release defaults (drop -O2 downgrade)
sfc-gh-pgaur Jun 28, 2026
6468d91
PFOR: cover bit_width 0 and 32 paths in transposed-output tests
sfc-gh-pgaur Jul 20, 2026
3a66cb1
PFOR: adapt to updated Arrow util APIs
sfc-gh-pgaur Jul 20, 2026
a106ed5
PFOR: migrate to std::span
sfc-gh-pgaur Jul 20, 2026
20b90fb
PFOR: add FastLanesOrdered packing mode (interleave without FL_ORDER)
sfc-gh-pgaur Jul 20, 2026
98bdbf2
PFOR: decode BitPack into stack scratch (avoid per-vector heap alloc)
sfc-gh-pgaur Jul 24, 2026
c52b0ff
PFOR: vectorize the frame-of-reference add in BitPack decode
sfc-gh-pgaur Jul 24, 2026
be09337
PFOR: speed up encode (cost-model histogram + stack deltas)
sfc-gh-pgaur Jul 24, 2026
aa4e37b
Skip FOR-add pass in PFOR decode when frame-of-reference is 0
sfc-gh-pgaur Jul 24, 2026
4e8d557
Add TPC-H, more TPC-DS, and NYC-taxi numeric columns to PFOR benchmark
sfc-gh-pgaur Jul 24, 2026
11825c5
Remove FastLanes packing modes from PFOR (BitPack only)
sfc-gh-pgaur Jul 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,6 @@ rat.txt

# for ODBC DLL
*.rc

# Local out-of-tree benchmark build dir
cpp/build-bench/
15 changes: 3 additions & 12 deletions cpp/cmake_modules/SetupCxxFlags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -633,21 +633,12 @@ endif()

if(NOT MSVC)
set(C_RELEASE_FLAGS "")
if(CMAKE_C_FLAGS_RELEASE MATCHES "-O3")
string(APPEND C_RELEASE_FLAGS " -O2")
endif()
# Local override: keep -O3 from CMake's default Release flags for the
# pfor benchmark — the bench is sensitive to inlining/unrolling that
# -O3 enables. Upstream Arrow downgrades to -O2 here; we skip that.
set(CXX_RELEASE_FLAGS "")
if(CMAKE_CXX_FLAGS_RELEASE MATCHES "-O3")
string(APPEND CXX_RELEASE_FLAGS " -O2")
endif()
set(C_RELWITHDEBINFO_FLAGS "")
if(CMAKE_C_FLAGS_RELWITHDEBINFO MATCHES "-O3")
string(APPEND C_RELWITHDEBINFO_FLAGS " -O2")
endif()
set(CXX_RELWITHDEBINFO_FLAGS "")
if(CMAKE_CXX_FLAGS_RELWITHDEBINFO MATCHES "-O3")
string(APPEND CXX_RELWITHDEBINFO_FLAGS " -O2")
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
string(APPEND C_RELEASE_FLAGS " -ftree-vectorize")
string(APPEND CXX_RELEASE_FLAGS " -ftree-vectorize")
Expand Down
11 changes: 11 additions & 0 deletions cpp/src/arrow/util/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,17 @@ add_arrow_test(threading-utility-test
test_common.cc
thread_pool_test.cc)

add_arrow_test(pfor-test
SOURCES
pfor/pfor_test.cc
pfor/pfor.cc
pfor/pfor_wrapper.cc)

add_arrow_benchmark(pfor/pfor_benchmark
EXTRA_SOURCES
pfor/pfor.cc
pfor/pfor_wrapper.cc)

add_arrow_benchmark(bit_block_counter_benchmark)
add_arrow_benchmark(bit_util_benchmark)
add_arrow_benchmark(bitmap_reader_benchmark)
Expand Down
Loading