Skip to content

Commit d515bb0

Browse files
authored
Add parquet range-read I/O benchmarks (local + S3) (#165)
Two standalone CLI benchmarks that isolate the raw column-chunk range-read cost (no parquet decode): hybrid_scan computes the byte ranges a column projection touches, then only the reads of those ranges into host/device memory are timed. - parquet_io_benchmark: io_context (vector-io / device_read_async) vs the cucascade::io::datasource per-range host_read/device_read_async, over uring. - parquet_s3_io_benchmark: native REST (vector-io host / host->device staging) vs kvikIO RemoteHandle datasource, host/device dest. - CMake: cucascade_parquet_io_benchmark (CUCASCADE_BUILD_IO) and cucascade_s3_parquet_io_benchmark (CUCASCADE_BUILD_S3_BENCHMARK). Authors: - Amin Aramoon (https://github.com/aminaramoon) Approvers: - Bobbi Winema Yogatama (https://github.com/bwyogatama) - https://github.com/felipeblazing URL: #165
1 parent ea9e4a1 commit d515bb0

3 files changed

Lines changed: 1192 additions & 0 deletions

File tree

benchmark/CMakeLists.txt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,20 @@ if(CUCASCADE_BUILD_IO)
9898

9999
target_link_libraries(cucascade_parquet_benchmark
100100
PRIVATE cucascade_cudf cucascade_io CUDA::cudart_static)
101+
102+
# Range-read I/O benchmark: isolates raw column-chunk range reads (io_context
103+
# vector-io vs cudf datasource) into host/device, without parquet decode.
104+
add_executable(cucascade_parquet_io_benchmark
105+
${CMAKE_CURRENT_SOURCE_DIR}/parquet_io_benchmark.cpp)
106+
107+
target_compile_options(
108+
cucascade_parquet_io_benchmark
109+
PRIVATE
110+
$<$<COMPILE_LANGUAGE:CXX>:${CUCASCADE_CXX_WARNING_FLAGS};-Wno-null-dereference>
111+
${CUCASCADE_CUDA_WARNING_FLAGS})
112+
113+
target_link_libraries(cucascade_parquet_io_benchmark
114+
PRIVATE cucascade_cudf cucascade_io CUDA::cudart_static)
101115
endif()
102116

103117
# =============================================================================
@@ -123,4 +137,20 @@ if(CUCASCADE_BUILD_S3_BENCHMARK)
123137
cucascade_s3_parquet_benchmark
124138
PRIVATE cucascade_cudf cucascade_io kvikio::kvikio ${AWSSDK_LINK_LIBRARIES}
125139
CUDA::cudart_static)
140+
141+
# S3 range-read I/O benchmark: raw column-chunk range reads (rest vector-io /
142+
# host->device vs kvikIO datasource) into host/device, without parquet decode.
143+
add_executable(cucascade_s3_parquet_io_benchmark
144+
${CMAKE_CURRENT_SOURCE_DIR}/parquet_s3_io_benchmark.cpp)
145+
146+
target_compile_options(
147+
cucascade_s3_parquet_io_benchmark
148+
PRIVATE
149+
$<$<COMPILE_LANGUAGE:CXX>:${CUCASCADE_CXX_WARNING_FLAGS};-Wno-null-dereference>
150+
${CUCASCADE_CUDA_WARNING_FLAGS})
151+
152+
target_link_libraries(
153+
cucascade_s3_parquet_io_benchmark
154+
PRIVATE cucascade_cudf cucascade_io kvikio::kvikio ${AWSSDK_LINK_LIBRARIES}
155+
CUDA::cudart_static)
126156
endif()

0 commit comments

Comments
 (0)