Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
c50e7aa
Add C++ streaming tests for libcudf_streaming
vyasr Jun 5, 2026
301dc54
Add C++ benchmarks for libcudf_streaming
vyasr Jun 5, 2026
c5ed4a2
Add C++ examples and scripts for libcudf_streaming
vyasr Jun 5, 2026
0c72c9e
Add Python tests for cudf_streaming
vyasr Jun 5, 2026
f1efac5
Add Python examples for cudf_streaming
vyasr Jun 5, 2026
7c0621e
Fix namespace references for cudf_streaming migration
vyasr Jun 9, 2026
2698c77
Add missing CUDA error checks
pentschev Jun 9, 2026
e5a3290
Check `dynamic_pointer_cast` before dereference
pentschev Jun 9, 2026
d9e7ae1
Ensure minimum of one run
pentschev Jun 9, 2026
f2021a6
Remove hardcoded dataset path
pentschev Jun 9, 2026
3b794e8
Add missing early return when expected file doesn't exist
pentschev Jun 9, 2026
9ed2c78
Fix incorrect string column length when `num_rows` is odd
pentschev Jun 9, 2026
a66120e
Prevent counting latch beyond zero, may lead to UB
pentschev Jun 9, 2026
9a9dda8
Add missing device_mr fixture
pentschev Jun 9, 2026
f842128
Merge remote-tracking branch 'upstream/main' into feat/add_remaining_…
pentschev Jun 9, 2026
67a1b99
Fix test imports
pentschev Jun 9, 2026
9dc973e
Add UCXX dependencies
pentschev Jun 9, 2026
ef848be
Download RapidsMPF CPM
pentschev Jun 9, 2026
c38543b
Merge remote-tracking branch 'upstream/main' into feat/add_remaining_…
pentschev Jun 9, 2026
1554f45
Fix style
pentschev Jun 9, 2026
4c8e42e
Add cuda-nvml-dev dependency
pentschev Jun 9, 2026
e0a5a17
Revert "Add cuda-nvml-dev dependency"
vyasr Jun 9, 2026
16a1b34
Revert "Download RapidsMPF CPM"
vyasr Jun 9, 2026
e14cbbd
Merge remote-tracking branch 'upstream/main' into feat/add_remaining_…
vyasr Jun 9, 2026
f31dc6f
Add cuda-cupti-dev dependency
vyasr Jun 9, 2026
3cf04a5
Remove -DBUILD_BENCHMARKS=ON from devcontainer builds
vyasr Jun 9, 2026
7959e95
Try to reenable cudf benchmarks while disabling cudf_streaming
vyasr Jun 9, 2026
61a3759
Fix flags
vyasr Jun 9, 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
5 changes: 4 additions & 1 deletion .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -713,6 +713,7 @@ jobs:
matrix_filter: map(select(.ARCH == "amd64")) | group_by(.CUDA_VER|split(".")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(".")|map(tonumber)), (.CUDA_VER|split(".")|map(tonumber))]))
build_type: pull-request
script: ci/test_wheel_dask_cudf.sh
# build cudf with benchmarks but disable for cudf_streaming since we can't use MPI/UCX in wheel-based builds
devcontainer:
permissions:
actions: read
Expand All @@ -734,7 +735,9 @@ jobs:
SCCACHE_DIST_FALLBACK_TO_LOCAL_COMPILE=false
build_command: |
sccache --zero-stats;
build-all -j0 -DBUILD_BENCHMARKS=ON --verbose 2>&1 | tee telemetry-artifacts/build.log;
configure-cudf-cpp -DBUILD_BENCHMARKS=ON;
configure-cudf_streaming-cpp -DBUILD_BENCHMARKS=OFF;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We enable -DBUILD_BENCHMARKS in rapidsmpf. https://github.com/rapidsai/rapidsmpf/blob/5234785a0255847784770948b9728beafe00a8a7/.github/workflows/pr.yaml#L356

The fix is probably switching to rapidsai/devcontainers:26.08-cpp-cuda13.2-ucx1.19.0-openmpi5.0.10, let's do that (and similar for 12.9). https://github.com/rapidsai/rapidsmpf/blob/5234785a0255847784770948b9728beafe00a8a7/.devcontainer/cuda13.2-pip/devcontainer.json#L8

Then delete these special configure-* commands.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update: this isn't viable. We switched to using rapidsmpf wheels, which don't have MPI support. Therefore, cudf-streaming benchmarks can't be built for pip devcontainers.

Follow-ups:

  • Enable all benchmarks for conda devcontainers
  • Split up (CMake?) logic so that MPI benchmarks and UCX benchmarks can be built separately
    • Enable UCX benchmarks for pip devcontainers (requires split above)

build-all -j0 --verbose 2>&1 | tee telemetry-artifacts/build.log;
sccache --show-adv-stats | tee telemetry-artifacts/sccache-stats.txt;
unit-tests-cudf-pandas:
needs: [wheel-build-cudf, changed-files]
Expand Down
3 changes: 3 additions & 0 deletions conda/environments/all_cuda-129_arch-aarch64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies:
- cmake>=4.0
- cramjam
- cuda-cudart-dev
- cuda-cupti-dev
- cuda-nvcc
- cuda-nvrtc-dev
- cuda-nvtx-dev
Expand Down Expand Up @@ -47,6 +48,7 @@ dependencies:
- librapidsmpf==26.8.*,>=0.0.0a0
- librdkafka>=2.11.1,<2.12.0
- librmm==26.8.*,>=0.0.0a0
- libucxx==0.51.*,>=0.0.0a0
- make
- mmh3
- moto>=4.0.8
Expand Down Expand Up @@ -105,6 +107,7 @@ dependencies:
- structlog
- sysroot_linux-aarch64==2.28
- typing_extensions>=4.0.0
- ucxx==0.51.*,>=0.0.0a0
- xlsxwriter
- zlib>=1.2.13
- zstandard
Expand Down
3 changes: 3 additions & 0 deletions conda/environments/all_cuda-129_arch-x86_64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies:
- cmake>=4.0
- cramjam
- cuda-cudart-dev
- cuda-cupti-dev
- cuda-nvcc
- cuda-nvrtc-dev
- cuda-nvtx-dev
Expand Down Expand Up @@ -47,6 +48,7 @@ dependencies:
- librapidsmpf==26.8.*,>=0.0.0a0
- librdkafka>=2.11.1,<2.12.0
- librmm==26.8.*,>=0.0.0a0
- libucxx==0.51.*,>=0.0.0a0
- make
- mmh3
- moto>=4.0.8
Expand Down Expand Up @@ -105,6 +107,7 @@ dependencies:
- structlog
- sysroot_linux-64==2.28
- typing_extensions>=4.0.0
- ucxx==0.51.*,>=0.0.0a0
- xlsxwriter
- zlib>=1.2.13
- zstandard
Expand Down
3 changes: 3 additions & 0 deletions conda/environments/all_cuda-132_arch-aarch64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies:
- cmake>=4.0
- cramjam
- cuda-cudart-dev
- cuda-cupti-dev
- cuda-nvcc
- cuda-nvrtc-dev
- cuda-nvtx-dev
Expand Down Expand Up @@ -47,6 +48,7 @@ dependencies:
- librapidsmpf==26.8.*,>=0.0.0a0
- librdkafka>=2.11.1,<2.12.0
- librmm==26.8.*,>=0.0.0a0
- libucxx==0.51.*,>=0.0.0a0
- make
- mmh3
- moto>=4.0.8
Expand Down Expand Up @@ -105,6 +107,7 @@ dependencies:
- structlog
- sysroot_linux-aarch64==2.28
- typing_extensions>=4.0.0
- ucxx==0.51.*,>=0.0.0a0
- xlsxwriter
- zlib>=1.2.13
- zstandard
Expand Down
3 changes: 3 additions & 0 deletions conda/environments/all_cuda-132_arch-x86_64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies:
- cmake>=4.0
- cramjam
- cuda-cudart-dev
- cuda-cupti-dev
- cuda-nvcc
- cuda-nvrtc-dev
- cuda-nvtx-dev
Expand Down Expand Up @@ -47,6 +48,7 @@ dependencies:
- librapidsmpf==26.8.*,>=0.0.0a0
- librdkafka>=2.11.1,<2.12.0
- librmm==26.8.*,>=0.0.0a0
- libucxx==0.51.*,>=0.0.0a0
- make
- mmh3
- moto>=4.0.8
Expand Down Expand Up @@ -105,6 +107,7 @@ dependencies:
- structlog
- sysroot_linux-64==2.28
- typing_extensions>=4.0.0
- ucxx==0.51.*,>=0.0.0a0
- xlsxwriter
- zlib>=1.2.13
- zstandard
Expand Down
29 changes: 29 additions & 0 deletions cpp/libcudf_streaming/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,25 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules/ConfigureCUDA.cmake)
# * conda environment -----------------------------------------------------------------------------
rapids_cmake_support_conda_env(conda_env MODIFY_PREFIX_PATH)

# ##################################################################################################
# * find C++ libraries from RAPIDS wheels in site-packages -----------------------------------------
find_package(Python COMPONENTS Interpreter)
if(Python_FOUND)
include(${rapids-cmake-dir}/cython-core/find_prefix_paths.cmake)
rapids_cython_find_prefix_paths("${Python_EXECUTABLE}" wheel_prefix_paths)
set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE)
list(APPEND CMAKE_PREFIX_PATH ${wheel_prefix_paths})
endif()

# ##################################################################################################
# * Build options
option(BUILD_TESTS "Build tests for libcudf_streaming" OFF)
option(BUILD_BENCHMARKS "Build benchmarks for libcudf_streaming" OFF)
option(BUILD_EXAMPLES "Build examples for libcudf_streaming" OFF)

message(VERBOSE "CUDF_STREAMING: Build gtests: ${BUILD_TESTS}")
message(VERBOSE "CUDF_STREAMING: Build benchmarks: ${BUILD_BENCHMARKS}")
message(VERBOSE "CUDF_STREAMING: Build examples: ${BUILD_EXAMPLES}")

# ##################################################################################################
# * Dependencies
Expand All @@ -51,6 +65,11 @@ include(cmake/thirdparty/get_cudf.cmake)
include(cmake/thirdparty/get_rapidsmpf.cmake)
include(../cmake/thirdparty/get_cucollections.cmake)

if(BUILD_BENCHMARKS)
rapids_find_package(ucxx REQUIRED)
rapids_find_package(MPI REQUIRED)
endif()

# ##################################################################################################
# * library target --------------------------------------------------------------------------------
add_library(
Expand Down Expand Up @@ -115,6 +134,16 @@ if(BUILD_TESTS)
add_subdirectory(tests)
endif()

# Benchmarks if enabled
if(BUILD_BENCHMARKS)
add_subdirectory(benchmarks)
endif()

# Examples if enabled
if(BUILD_EXAMPLES)
add_subdirectory(examples)
endif()

# ##################################################################################################
# * cudf_streaming Install -------------------------------------------------------------------------
rapids_cmake_install_lib_dir(lib_dir)
Expand Down
80 changes: 80 additions & 0 deletions cpp/libcudf_streaming/benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# =============================================================================
# cmake-format: off
# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION.
# SPDX-License-Identifier: Apache-2.0
# cmake-format: on
# =============================================================================

# Find or install GoogleBench
include(${rapids-cmake-dir}/cpm/gbench.cmake)
rapids_cpm_gbench(BUILD_STATIC)

add_library(bench_utils INTERFACE)
target_sources(bench_utils INTERFACE utils/random_data.cu)
target_compile_options(bench_utils INTERFACE $<$<COMPILE_LANGUAGE:CUDA>:--expt-extended-lambda>)

add_executable(bench_shuffle "bench_shuffle.cpp")
set_target_properties(
bench_shuffle
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CUDF_STREAMING_BINARY_DIR}/benchmarks"
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS ON
CUDA_STANDARD 20
CUDA_STANDARD_REQUIRED ON
)
target_link_libraries(
bench_shuffle PRIVATE cudf_streaming rapidsmpf::rapidsmpf ucxx::ucxx MPI::MPI_CXX
$<TARGET_NAME_IF_EXISTS:conda_env> bench_utils
)
install(
TARGETS bench_shuffle
COMPONENT benchmarking
DESTINATION bin/benchmarks/libcudf_streaming
EXCLUDE_FROM_ALL
)

add_executable(bench_partition "bench_partition.cpp")
set_target_properties(
bench_partition
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CUDF_STREAMING_BINARY_DIR}/benchmarks"
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS ON
CUDA_STANDARD 20
CUDA_STANDARD_REQUIRED ON
)
target_link_libraries(
bench_partition PRIVATE cudf_streaming rapidsmpf::rapidsmpf benchmark::benchmark
benchmark::benchmark_main $<TARGET_NAME_IF_EXISTS:conda_env> bench_utils
)
install(
TARGETS bench_partition
COMPONENT benchmarking
DESTINATION bin/benchmarks/libcudf_streaming
EXCLUDE_FROM_ALL
)

add_executable(bench_pack "bench_pack.cpp")
set_target_properties(
bench_pack
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CUDF_STREAMING_BINARY_DIR}/benchmarks"
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS ON
CUDA_STANDARD 20
CUDA_STANDARD_REQUIRED ON
LINK_FLAGS "-Wl,--allow-shlib-undefined"
)
target_link_libraries(
bench_pack PRIVATE cudf_streaming rapidsmpf::rapidsmpf benchmark::benchmark
benchmark::benchmark_main $<TARGET_NAME_IF_EXISTS:conda_env> bench_utils
)
install(
TARGETS bench_pack
COMPONENT benchmarking
DESTINATION bin/benchmarks/libcudf_streaming
EXCLUDE_FROM_ALL
)

add_subdirectory(streaming)
Loading
Loading