diff --git a/conda/environments/all_cuda-129_arch-aarch64.yaml b/conda/environments/all_cuda-129_arch-aarch64.yaml index 69866f35ad48..5ca23d8b6adc 100644 --- a/conda/environments/all_cuda-129_arch-aarch64.yaml +++ b/conda/environments/all_cuda-129_arch-aarch64.yaml @@ -23,7 +23,7 @@ dependencies: - cuda-python>=12.9.2,<13.0 - cuda-sanitizer-api - cuda-version=12.9 -- cupy>=13.6.0,!=14.0.0 +- cupy>=13.6.0,!=14.0.0,!=14.1.0 - cxx-compiler - cython>=3.2.2 - dask-cuda==26.8.*,>=0.0.0a0 diff --git a/conda/environments/all_cuda-129_arch-x86_64.yaml b/conda/environments/all_cuda-129_arch-x86_64.yaml index 542f6a9dabfd..d6e0569afc5d 100644 --- a/conda/environments/all_cuda-129_arch-x86_64.yaml +++ b/conda/environments/all_cuda-129_arch-x86_64.yaml @@ -23,7 +23,7 @@ dependencies: - cuda-python>=12.9.2,<13.0 - cuda-sanitizer-api - cuda-version=12.9 -- cupy>=13.6.0,!=14.0.0 +- cupy>=13.6.0,!=14.0.0,!=14.1.0 - cxx-compiler - cython>=3.2.2 - dask-cuda==26.8.*,>=0.0.0a0 diff --git a/conda/environments/all_cuda-132_arch-aarch64.yaml b/conda/environments/all_cuda-132_arch-aarch64.yaml index 0403992ac517..69f1925dd8f3 100644 --- a/conda/environments/all_cuda-132_arch-aarch64.yaml +++ b/conda/environments/all_cuda-132_arch-aarch64.yaml @@ -23,7 +23,7 @@ dependencies: - cuda-python>=13.0.1,<14.0 - cuda-sanitizer-api - cuda-version=13.2 -- cupy>=13.6.0,!=14.0.0 +- cupy>=13.6.0,!=14.0.0,!=14.1.0 - cxx-compiler - cython>=3.2.2 - dask-cuda==26.8.*,>=0.0.0a0 diff --git a/conda/environments/all_cuda-132_arch-x86_64.yaml b/conda/environments/all_cuda-132_arch-x86_64.yaml index 573795fa779f..05024af66ba2 100644 --- a/conda/environments/all_cuda-132_arch-x86_64.yaml +++ b/conda/environments/all_cuda-132_arch-x86_64.yaml @@ -23,7 +23,7 @@ dependencies: - cuda-python>=13.0.1,<14.0 - cuda-sanitizer-api - cuda-version=13.2 -- cupy>=13.6.0,!=14.0.0 +- cupy>=13.6.0,!=14.0.0,!=14.1.0 - cxx-compiler - cython>=3.2.2 - dask-cuda==26.8.*,>=0.0.0a0 diff --git a/conda/recipes/cudf/recipe.yaml b/conda/recipes/cudf/recipe.yaml index f8516466a588..e0cb0caecba5 100644 --- a/conda/recipes/cudf/recipe.yaml +++ b/conda/recipes/cudf/recipe.yaml @@ -89,7 +89,7 @@ requirements: run: - python - pandas >=3.0.0,<3.1.0 - - cupy >=13.6.0,!=14.0.0 + - cupy >=13.6.0,!=14.0.0,!=14.1.0 - numba-cuda >=0.22.2,<0.29.0 - numba >=0.60.0,<0.65.0 - numpy >=1.26,<3.0 diff --git a/dependencies.yaml b/dependencies.yaml index a1295d74ed64..eace5afa0eba 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -935,11 +935,11 @@ dependencies: - matrix: cuda: "12.*" packages: - - cupy-cuda12x!=14.0.0 + - cupy-cuda12x!=14.0.0,!=14.1.0 - matrix: cuda: "13.*" packages: - - cupy-cuda13x!=14.0.0 + - cupy-cuda13x!=14.0.0,!=14.1.0 - matrix: packages: test_python_dask_cudf: @@ -1160,7 +1160,7 @@ dependencies: common: - output_types: conda packages: - - cupy>=13.6.0,!=14.0.0 + - cupy>=13.6.0,!=14.0.0,!=14.1.0 # NOTE: This is intentionally not broken into groups by a 'cuda_suffixed' selector like # other packages with -cu{nn}x suffixes in this file. # All RAPIDS wheel builds (including in devcontainers) expect cupy to be suffixed. @@ -1170,11 +1170,11 @@ dependencies: - matrix: cuda: "12.*" packages: - - cupy-cuda12x>=13.6.0,!=14.0.0 + - cupy-cuda12x>=13.6.0,!=14.0.0,!=14.1.0 # fallback to CUDA 13 versions if 'cuda' is '13.*' or not provided - matrix: packages: - - cupy-cuda13x>=13.6.0,!=14.0.0 + - cupy-cuda13x>=13.6.0,!=14.0.0,!=14.1.0 depends_on_libkvikio: common: - output_types: conda diff --git a/docs/cudf/source/_static/polars_pdsds_sf1k.png b/docs/cudf/source/_static/polars_pdsds_sf1k.png new file mode 100644 index 000000000000..87ffeed2df1a Binary files /dev/null and b/docs/cudf/source/_static/polars_pdsds_sf1k.png differ diff --git a/docs/cudf/source/_static/polars_pdsds_sf3k.png b/docs/cudf/source/_static/polars_pdsds_sf3k.png new file mode 100644 index 000000000000..5661c2699d3f Binary files /dev/null and b/docs/cudf/source/_static/polars_pdsds_sf3k.png differ diff --git a/docs/cudf/source/_static/polars_pdsh_sf1k.png b/docs/cudf/source/_static/polars_pdsh_sf1k.png new file mode 100644 index 000000000000..09ceeae8120c Binary files /dev/null and b/docs/cudf/source/_static/polars_pdsh_sf1k.png differ diff --git a/docs/cudf/source/_static/polars_pdsh_sf3k.png b/docs/cudf/source/_static/polars_pdsh_sf3k.png new file mode 100644 index 000000000000..083486edc275 Binary files /dev/null and b/docs/cudf/source/_static/polars_pdsh_sf3k.png differ diff --git a/docs/cudf/source/cudf_polars/index.md b/docs/cudf/source/cudf_polars/index.md index a5087f6b7d5d..9e01902e31b5 100644 --- a/docs/cudf/source/cudf_polars/index.md +++ b/docs/cudf/source/cudf_polars/index.md @@ -50,32 +50,49 @@ available engines, {doc}`options` for the ## Benchmark -```{note} -The following benchmarks were performed with the `POLARS_GPU_ENABLE_CUDA_MANAGED_MEMORY` -environment variable set to `"0"`. Using managed memory (the default) imposes a performance cost -in order to avoid out of memory errors. Peak performance can still be attained by setting the -environment variable to `0`. -``` +Polars delivers high performance across a wide range of data scales through multiple execution engines. The default CPU engine is highly optimized for interactive and medium-scale analytics on a single node. The Polars GPU engine lets you move seamlessly to GPU nodes, providing meaningful acceleration when your dataset grows to hundreds of gigabytes or more. -We reproduced the [Polars Decision Support (PDS)](https://github.com/pola-rs/polars-benchmark) -benchmark to compare Polars GPU engine with the default CPU settings across several dataset sizes. -Here are the results: +We ran the Polars Decision Support (PDS) benchmarks to compare the Polars GPU engine with the CPU engine at larger scale factors to show how the GPU engine delivers meaningful speedups as dataset size grows: -```{figure} ../_static/pds_benchmark_polars.png -:width: 600px -``` +```{eval-rst} +.. list-table:: + :widths: 50 50 + :align: center + + * - .. figure:: ../_static/polars_pdsh_sf1k.png + :width: 100% + :alt: PDS-H benchmark at scale factor 1K -You can see up to 13x speedup using the GPU engine on the compute-heavy PDS queries involving -complex aggregation and join operations. Below are the speedups for the top performing queries: + PDS-H (SF1K) -```{figure} ../_static/compute_heavy_queries_polars.png -:width: 1000px + - .. figure:: ../_static/polars_pdsds_sf1k.png + :width: 100% + :alt: PDS-DS benchmark at scale factor 1K + + PDS-DS (SF1K) ``` -*PDS-H benchmark | GPU: NVIDIA H100 PCIe | CPU: Intel Xeon W9-3495X (Sapphire Rapids) | Storage: -Local NVMe* +On a single GPU, you can run TB-scale workloads with significant speedups compared to running on CPU. You can also scale up to run on multiple GPUs for processing even larger workloads: + +```{eval-rst} +.. list-table:: + :widths: 50 50 + :align: center + + * - .. figure:: ../_static/polars_pdsh_sf3k.png + :width: 100% + :alt: PDS-H benchmark at scale factor 3K + + PDS-H (SF3K) + + - .. figure:: ../_static/polars_pdsds_sf3k.png + :width: 100% + :alt: PDS-DS benchmark at scale factor 3K + + PDS-DS (SF3K) +``` -You can reproduce the results by visiting the [Polars Decision Support (PDS) GitHub repository](https://github.com/pola-rs/polars-benchmark). +For more information on the benchmarks being run, see the PDS-DS queries in the [cuDF GitHub repository](https://github.com/rapidsai/cudf/tree/release/26.06/python/cudf_polars/cudf_polars/streaming/benchmarks). ## Learn More diff --git a/python/cudf/pyproject.toml b/python/cudf/pyproject.toml index c87271eac023..2f646939f8ed 100644 --- a/python/cudf/pyproject.toml +++ b/python/cudf/pyproject.toml @@ -21,7 +21,7 @@ requires-python = ">=3.11" dependencies = [ "cachetools", "cuda-python>=13.0.1,<14.0", - "cupy-cuda13x>=13.6.0,!=14.0.0", + "cupy-cuda13x>=13.6.0,!=14.0.0,!=14.1.0", "fsspec>=0.6.0", "libcudf==26.8.*,>=0.0.0a0", "numba-cuda>=0.22.2,<0.29.0", diff --git a/python/dask_cudf/pyproject.toml b/python/dask_cudf/pyproject.toml index 78015967656f..56b8e3b779c7 100644 --- a/python/dask_cudf/pyproject.toml +++ b/python/dask_cudf/pyproject.toml @@ -22,7 +22,7 @@ license-files = ["LICENSE"] requires-python = ">=3.11" dependencies = [ "cudf==26.8.*,>=0.0.0a0", - "cupy-cuda13x>=13.6.0,!=14.0.0", + "cupy-cuda13x>=13.6.0,!=14.0.0,!=14.1.0", "fsspec>=0.6.0", "numpy>=1.26,<3.0", "nvidia-ml-py>=12", diff --git a/python/pylibcudf/pyproject.toml b/python/pylibcudf/pyproject.toml index c8ee2da7d61f..834783aff107 100644 --- a/python/pylibcudf/pyproject.toml +++ b/python/pylibcudf/pyproject.toml @@ -37,7 +37,7 @@ classifiers = [ [project.optional-dependencies] test = [ - "cupy-cuda13x>=13.6.0,!=14.0.0", + "cupy-cuda13x>=13.6.0,!=14.0.0,!=14.1.0", "fastavro>=0.22.9", "mmh3", "nanoarrow",