You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Use different max_concurrent_io_tasks defaults for local and remote paths (#23847)
Add path-aware automatic defaults for `max_concurrent_io_tasks`.
By default, Scan actors use lower IO concurrency for local paths and higher concurrency for scans with remote URIs. Users can override this with an integer for all scans, or a `{"local": ..., "remote": ...}` dict. The environment variable also accepts `auto` or a JSON dict.
Closes#23552. Once this PR merges we won't be trying to set the value based on any heuristic, but we will at least be defining it based on observed benchmark results.
Authors:
- Richard (Rick) Zamora (https://github.com/rjzamora)
Approvers:
- Peter Andreas Entschev (https://github.com/pentschev)
- Tom Augspurger (https://github.com/TomAugspurger)
URL: #23847
Copy file name to clipboardExpand all lines: docs/cudf/source/cudf_polars/memory_errors.md
+12-3Lines changed: 12 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -59,6 +59,14 @@ enters the pipeline at once. For formats that do not support partial reads, such
59
59
the engine must load an entire file before it can begin processing, which may produce
60
60
chunks much larger than `target_partition_size`.
61
61
62
+
### Concurrent file reads
63
+
64
+
Each scan node may read more than one input chunk at a time. At least two IO
65
+
producer tasks help overlap IO with GPU compute. Larger
66
+
`max_concurrent_io_tasks` values may improve high-latency IO throughput but
67
+
increase memory use per Scan actor. See
68
+
{class}`~cudf_polars.engine.options.StreamingOptions` for current defaults.
69
+
62
70
## Spilling to host memory
63
71
64
72
When GPU memory pressure rises above a configurable threshold
@@ -95,10 +103,11 @@ constructing the GPU engine for queries.
95
103
| Option | Default | Effect |
96
104
|---|---|---|
97
105
|`target_partition_size` (executor option or `CUDF_POLARS__EXECUTOR__TARGET_PARTITION_SIZE`) | 1.5 GB or 2.5% of smallest GPU | Target chunk size in bytes. Smaller values reduce peak memory at some cost to compute efficiency. |
106
+
|`max_concurrent_io_tasks` (executor option or `CUDF_POLARS__EXECUTOR__MAX_CONCURRENT_IO_TASKS`) | auto | Number of concurrent IO producer tasks for each scan node. Larger values may improve high-latency IO throughput but increase memory pressure. |
98
107
|`RAPIDSMPF_SPILL_DEVICE_LIMIT`|`80%`| GPU memory fraction at which spilling begins. Lower values give more headroom for peaks. |
99
108
|`RAPIDSMPF_PINNED_MEMORY`| disabled | Set to `true` to enable pinned host memory for spill buffers. |
100
109
|`RAPIDSMPF_PINNED_INITIAL_POOL_SIZE`| (none) | Size of the pinned memory pool to pre-allocate (e.g. `32GB`). |
101
110
102
-
For the full list of engine configuration options, including `target_partition_size`,
103
-
see {doc}`options`. For the full list of memory and spill configuration options see the
Copy file name to clipboardExpand all lines: docs/cudf/source/cudf_polars/options.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -107,6 +107,7 @@ Environment variables follow these patterns:
107
107
|`max_rows_per_partition`| Maximum number of rows per partition. Only used for in-memory `DataFrame` sources, never for disk IO or dynamic planning. |`1_000_000`|
108
108
|`broadcast_limit`| Maximum number of bytes for broadcast joins. | auto |
109
109
|`target_partition_size`| Target partition size in bytes. Used for IO and dynamic planning. `0` means auto. | auto |
110
+
|`max_concurrent_io_tasks`| Number of concurrent IO producer tasks for each scan node. Tune with an integer or a `{"local": ..., "remote": ...}` dict. | auto |
|`join_filter_pushdown`| Configuration for join filter pushdown plan rewrites, dict or {class}`~cudf_polars.utils.config.JoinFilterPushdownOptions`. `None` disables. | enabled |
112
113
|`sink_to_directory`| Whether `.sink_*()` writes its output as a directory. The `spmd`, `ray`, and `dask` engines always use `True`; passing `False` raises `ValueError`. |`True`|
0 commit comments