Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
b3d633c
match config_options.executor.cluster
madsbk Mar 9, 2026
e2c9aec
Introduce Ray mode
madsbk Mar 8, 2026
66572ff
docs
madsbk Mar 10, 2026
2736985
cleanup
madsbk Mar 11, 2026
9983386
docs
madsbk Mar 11, 2026
0eaf862
query_bundle
madsbk Mar 11, 2026
12f940b
set_current_device_resource
madsbk Mar 12, 2026
9d067e8
num_streaming_threads <- max_io_threads
madsbk Mar 12, 2026
ccc59ef
ray.put() query_bundle
madsbk Mar 12, 2026
1a8658b
rapidsmpf_py_executor_max_workers default None
madsbk Mar 12, 2026
47a6c7a
doc
madsbk Mar 12, 2026
3f344ed
RayContext
madsbk Mar 12, 2026
1d1129d
cleanup
madsbk Mar 12, 2026
671b6e2
Multi-GPU Polars
madsbk Mar 12, 2026
844544e
doc
madsbk Mar 13, 2026
27e6fa5
Merge branch 'main' of github.com:rapidsai/cudf into rapidsmpf-ray
madsbk Mar 13, 2026
296eb55
RayClient: cleanup
madsbk Mar 13, 2026
3bae4a7
removed the design docs, now part of cudf-polars-mp.md
madsbk Mar 13, 2026
18bb8e4
docs
madsbk Mar 13, 2026
c32c0b4
@wence- review
madsbk Mar 13, 2026
68aafbd
doc
madsbk Mar 13, 2026
d68ef0d
Merge branch 'main' of github.com:rapidsai/cudf into rapidsmpf-ray
madsbk Mar 13, 2026
95850e5
Merge branch 'main' of github.com:rapidsai/cudf into rapidsmpf-ray
madsbk Mar 15, 2026
12060c3
fix test patch
madsbk Mar 16, 2026
6ca5a75
Apply suggestions from code review
madsbk Mar 16, 2026
43539a2
changes based on reviews
madsbk Mar 16, 2026
fc137fc
changes based on reviews
madsbk Mar 16, 2026
ee737a8
docs
madsbk Mar 16, 2026
3a90732
docs
madsbk Mar 16, 2026
4b63859
move to frontend
madsbk Mar 16, 2026
c06f0f9
update test
madsbk Mar 16, 2026
94bc8cb
remove test prefix
madsbk Mar 16, 2026
368b5b2
Merge branch 'main' of github.com:rapidsai/cudf into rapidsmpf-ray
madsbk Mar 16, 2026
8feec15
reorg docs
madsbk Mar 16, 2026
e1ac68d
cleanup
madsbk Mar 16, 2026
96619cd
cleanup
madsbk Mar 16, 2026
8cca416
Merge branch 'main' of github.com:rapidsai/cudf into rapidsmpf-ray
madsbk Mar 16, 2026
5c73829
docs
madsbk Mar 16, 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
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@

import rmm.statistics

from cudf_polars.experimental.rapidsmpf.spmd import spmd_execution
from cudf_polars.experimental.rapidsmpf.frontend.spmd import spmd_execution

# The dtype for count() aggregations depends on the presence
# of the polars-runtime-64 package (`polars[rt64]`).
Expand Down Expand Up @@ -1866,7 +1866,9 @@ def run_polars_spmd(
cuda_stream_policy=run_config.stream_policy,
) as (comm, ctx, engine):
from cudf_polars.experimental.rapidsmpf.collectives.common import reserve_op_id
from cudf_polars.experimental.rapidsmpf.spmd import allgather_polars_dataframe
from cudf_polars.experimental.rapidsmpf.frontend.spmd import (
allgather_polars_dataframe,
)

def _allgather_result(df: pl.DataFrame) -> pl.DataFrame:
with reserve_op_id() as op_id:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES.
# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES.
# SPDX-License-Identifier: Apache-2.0
"""Collective operations for the RapidsMPF streaming runtime."""

from __future__ import annotations

from cudf_polars.experimental.rapidsmpf.collectives.common import ReserveOpIDs
from cudf_polars.experimental.rapidsmpf.collectives.common import (
ReserveOpIDs,
reserve_op_id,
)

__all__ = ["ReserveOpIDs"]
__all__ = ["ReserveOpIDs", "reserve_op_id"]
95 changes: 55 additions & 40 deletions python/cudf_polars/cudf_polars/experimental/rapidsmpf/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,47 +108,62 @@ def evaluate_logical_plan(
# Build and execute the streaming pipeline.
# This must be done on all worker processes
# for cluster == "distributed".
if (
config_options.executor.cluster == "distributed"
): # pragma: no cover; block depends on executor type and Distributed cluster
# Distributed execution: Use client.run

# NOTE: Distributed execution requires Dask for now
from cudf_polars.experimental.rapidsmpf.dask import evaluate_pipeline_dask

result, metadata_collector = evaluate_pipeline_dask(
evaluate_pipeline,
ir,
partition_info,
config_options,
stats,
collective_id_map,
collect_metadata=collect_metadata,
)
elif config_options.executor.cluster == "spmd":
from cudf_polars.experimental.rapidsmpf.spmd import (
evaluate_pipeline_spmd_mode,
)
match config_options.executor.cluster:
case "distributed": # pragma: no cover; block depends on executor type and Distributed cluster
# Distributed execution: Use client.run
# NOTE: Distributed execution requires Dask for now
from cudf_polars.experimental.rapidsmpf.dask import (
evaluate_pipeline_dask,
)

result, metadata_collector = evaluate_pipeline_spmd_mode(
ir,
partition_info,
config_options,
stats,
collective_id_map,
collect_metadata=collect_metadata,
)
else:
# Single-process execution: Run locally
result, metadata_collector = evaluate_pipeline(
ir,
partition_info,
config_options,
stats,
collective_id_map,
single_process_communicator(Options(), ProgressThread()),
collect_metadata=collect_metadata,
)
result, metadata_collector = evaluate_pipeline_dask(
Comment thread
madsbk marked this conversation as resolved.
evaluate_pipeline,
ir,
partition_info,
config_options,
stats,
collective_id_map,
collect_metadata=collect_metadata,
)
case "spmd":
from cudf_polars.experimental.rapidsmpf.frontend.spmd import (
evaluate_pipeline_spmd_mode,
)

result, metadata_collector = evaluate_pipeline_spmd_mode(
ir,
partition_info,
config_options,
stats,
collective_id_map,
collect_metadata=collect_metadata,
)
case "ray":
from cudf_polars.experimental.rapidsmpf.frontend.ray import (
evaluate_pipeline_ray_mode,
)

result, metadata_collector = evaluate_pipeline_ray_mode(
ir,
partition_info,
config_options,
stats,
collective_id_map,
collect_metadata=collect_metadata,
)
case "single":
# Single-process execution: Run locally
result, metadata_collector = evaluate_pipeline(
ir,
partition_info,
config_options,
stats,
collective_id_map,
single_process_communicator(Options(), ProgressThread()),
collect_metadata=collect_metadata,
)
case other:
raise ValueError(f"Unknown cluster mode: {other}")

return result, metadata_collector

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION.
# SPDX-License-Identifier: Apache-2.0
"""Multi-GPU frontend execution modes for the RapidsMPF streaming engine."""

from __future__ import annotations

__all__: list[str] = []
Loading
Loading