diff --git a/.github/workflows/conda-python-build.yaml b/.github/workflows/conda-python-build.yaml index b47f5eff..d88f3aa1 100644 --- a/.github/workflows/conda-python-build.yaml +++ b/.github/workflows/conda-python-build.yaml @@ -44,13 +44,13 @@ jobs: ARCH: - "amd64" CUDA_VER: - - "12.5.1" + - "12.9.1" PY_VER: - "3.11" - "3.12" runs-on: linux-${{ matrix.ARCH }}-cpu4 container: - image: "rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-ubuntu22.04-py${{ matrix.PY_VER }}" + image: "rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-ubuntu24.04-py${{ matrix.PY_VER }}" steps: - uses: aws-actions/configure-aws-credentials@v4 with: diff --git a/.github/workflows/docs-build.yaml b/.github/workflows/docs-build.yaml index f2ce953c..39d76caf 100644 --- a/.github/workflows/docs-build.yaml +++ b/.github/workflows/docs-build.yaml @@ -29,12 +29,11 @@ jobs: matrix: include: - ARCH: amd64 - CUDA_VER: "12.5.1" + CUDA_VER: "12.9.1" PY_VER: "3.12" - # NOTE: Try going back to "latest" runners once we bump RAPIDS 25.04 - runs-on: linux-${{ matrix.ARCH }}-gpu-v100-earliest-1 + runs-on: linux-${{ matrix.ARCH }}-gpu-l4-earliest-1 container: - image: "rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-ubuntu22.04-py${{ matrix.PY_VER }}" + image: "rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-ubuntu24.04-py${{ matrix.PY_VER }}" env: NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} steps: diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index efc61a55..d0da70a0 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -23,7 +23,7 @@ jobs: - conda-python-build - conda-python-cpu-tests - conda-python-gpu-tests - uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-25.04 + uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-25.08 pre-commit: runs-on: ubuntu-latest @@ -49,15 +49,14 @@ jobs: matrix: include: - ARCH: "amd64" - CUDA_VER: "12.5.1" + CUDA_VER: "12.9.1" PY_VER: "3.11" - ARCH: "amd64" - CUDA_VER: "12.5.1" + CUDA_VER: "12.9.1" PY_VER: "3.12" - # NOTE: Try going back to "latest" runners once we bump RAPIDS 25.04 runs-on: linux-${{ matrix.ARCH }}-cpu16 container: - image: "rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-ubuntu22.04-py${{ matrix.PY_VER }}" + image: "rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-ubuntu24.04-py${{ matrix.PY_VER }}" steps: - uses: actions/checkout@v4 with: @@ -90,15 +89,14 @@ jobs: matrix: include: - ARCH: "amd64" - CUDA_VER: "12.5.1" + CUDA_VER: "12.9.1" PY_VER: "3.11" - ARCH: "amd64" - CUDA_VER: "12.5.1" + CUDA_VER: "12.9.1" PY_VER: "3.12" - # NOTE: Try going back to "latest" runners once we bump RAPIDS 25.04 - runs-on: linux-${{ matrix.ARCH }}-gpu-v100-earliest-1 + runs-on: linux-${{ matrix.ARCH }}-gpu-l4-latest-1 container: - image: "rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-ubuntu22.04-py${{ matrix.PY_VER }}" + image: "rapidsai/ci-conda:cuda${{ matrix.CUDA_VER }}-ubuntu24.04-py${{ matrix.PY_VER }}" env: NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }} steps: diff --git a/Dockerfile b/Dockerfile index c7c16393..281f2f2f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,21 +13,21 @@ # limitations under the License. # -ARG CUDA_VERSION="12.5.1" +ARG CUDA_VERSION="12.9.1" ARG PYTHON_VERSION="3.11" -ARG BASE_IMAGE="rapidsai/miniforge-cuda:cuda${CUDA_VERSION}-base-ubuntu22.04-py${PYTHON_VERSION}" +ARG BASE_IMAGE="rapidsai/miniforge-cuda:cuda${CUDA_VERSION}-base-ubuntu24.04-py${PYTHON_VERSION}" FROM ${BASE_IMAGE} RUN apt-get update && apt-get install -y --no-install-recommends git && rm -rf /var/lib/apt/lists/* # Legate-dataframe: create conda environment, build, and install # -# Update conda the environment (we use `cut` to convert the format of CUDA_VERSION from "12.5.1" to "125") +# Update conda the environment (we use `cut` to convert the format of CUDA_VERSION from "12.9.1" to "129") RUN mkdir -p /opt/legate-dataframe/conda-env-file COPY ./conda/environments/*.yaml /opt/legate-dataframe/conda-env-file/ # To ensure we find the GPU version of legate in the docker build. -ARG CONDA_OVERRIDE_CUDA=12.4 +ARG CONDA_OVERRIDE_CUDA=12.9 RUN /bin/bash -c '/opt/conda/bin/mamba env create --name legate-dev --file \ /opt/legate-dataframe/conda-env-file/all_cuda-$(cut --output-delimiter="" -d "." -f 1,2 <<< ${CONDA_OVERRIDE_CUDA})_arch-x86_64.yaml' diff --git a/conda/environments/all_cuda-124_arch-x86_64.yaml b/conda/environments/all_cuda-129_arch-x86_64.yaml similarity index 80% rename from conda/environments/all_cuda-124_arch-x86_64.yaml rename to conda/environments/all_cuda-129_arch-x86_64.yaml index 9769efac..860ed011 100644 --- a/conda/environments/all_cuda-124_arch-x86_64.yaml +++ b/conda/environments/all_cuda-129_arch-x86_64.yaml @@ -16,19 +16,19 @@ dependencies: - cuda-nvtx-dev - cuda-profiler-api - cuda-sanitizer-api -- cuda-version=12.4 -- cudf==25.04.*,>=0.0.0a0 +- cuda-version=12.9 +- cudf==25.08.*,>=0.0.0a0 - cupy>=12.0.0 - cupynumeric==25.10.*,>=0.0.0.dev0 - cxx-compiler - cython>=3.0.3 -- dask-cuda==25.04.* -- dask-cudf==25.04.* +- dask-cuda==25.08.* +- dask-cudf==25.08.* - gcc_linux-64=11.* - legate==25.10.*,>=0.0.0.dev0 - libarrow-acero -- libcudf==25.04.*,>=0.0.0a0 -- librmm==25.04.*,>=0.0.0a0 +- libcudf==25.08.*,>=0.0.0a0 +- librmm==25.08.*,>=0.0.0a0 - make - myst-parser>=4.0 - nccl>=2.19 @@ -37,7 +37,7 @@ dependencies: - openssh - polars>=1.25,<1.32 - pydata-sphinx-theme>=0.16.0 -- pylibcudf==25.04.*,>=0.0.0a0 +- pylibcudf==25.08.*,>=0.0.0a0 - pynvjitlink<=0.6 - pytest>=7.0 - python>=3.11,<3.13 @@ -46,4 +46,4 @@ dependencies: - sphinx>=8.0,<8.2.0 - sysroot_linux-64==2.17 - valgrind -name: all_cuda-124_arch-x86_64 +name: all_cuda-129_arch-x86_64 diff --git a/conda/recipes/legate-dataframe/conda_build_config.yaml b/conda/recipes/legate-dataframe/conda_build_config.yaml index 6875176e..2a216832 100644 --- a/conda/recipes/legate-dataframe/conda_build_config.yaml +++ b/conda/recipes/legate-dataframe/conda_build_config.yaml @@ -24,7 +24,7 @@ gpu_enabled: - false legate_version: - - "=25.10.*,>=0.0.0.dev0" + - "=25.10.*,>=0.0.0.dev0,!=25.10.00.rc1" cupynumeric_version: - "=25.10.*,>=0.0.0.dev0" @@ -38,4 +38,4 @@ arrow_version: - "19.0.*" rapids_version: - - =25.04.* + - =25.08.* diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 6ffbdce9..1ebdedf8 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -14,6 +14,8 @@ cmake_minimum_required(VERSION 3.26.4 FATAL_ERROR) +set(rapids-cmake-version 25.08) + include(cmake/fetch_rapids.cmake) include(rapids-cmake) include(rapids-cpm) @@ -144,7 +146,7 @@ set_target_properties( PROPERTIES BUILD_RPATH "\$ORIGIN" INSTALL_RPATH "\$ORIGIN" # set target compile options - CXX_STANDARD 17 + CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON # For std:: support of __int128_t. Can be removed once using cuda::std CXX_EXTENSIONS ON @@ -152,14 +154,6 @@ set_target_properties( INTERFACE_POSITION_INDEPENDENT_CODE ON ) -if(Legion_USE_CUDA) - set_target_properties(LegateDataframe PROPERTIES CUDA_STANDARD 17 CUDA_STANDARD_REQUIRED ON) - # Need to add this define, as is done in legate CMakeLists.txt as well for __half support. If - # __half support fails elsewhere it may be needed there. This may be a CCCL 2.7.0 issue and become - # unnecessary in the future. - target_compile_definitions("LegateDataframe" PUBLIC _LIBCUDACXX_HAS_NVFP16=1) -endif() - list(APPEND LDF_CUDA_FLAGS --expt-extended-lambda) list(APPEND LDF_CUDA_FLAGS --expt-relaxed-constexpr) @@ -173,6 +167,14 @@ target_include_directories( PUBLIC "$" INTERFACE "$" ) +# Ridiculous hack, remove as soon as possible (i.e. after legate 25.10 for sure)! Legion headers +# barf on a cudart issue with cuda::std::complex<__half> when using C++20. So we inject our own +# `legion_defines.h` before legate does it. This should fix it: +# https://github.com/nv-legate/legate.internal/pull/2965 +target_include_directories( + LegateDataframe SYSTEM + PUBLIC "$" +) target_link_libraries( LegateDataframe diff --git a/cpp/cmake/fetch_rapids.cmake b/cpp/cmake/fetch_rapids.cmake index 96d0608e..4c5259e3 100644 --- a/cpp/cmake/fetch_rapids.cmake +++ b/cpp/cmake/fetch_rapids.cmake @@ -12,7 +12,7 @@ # the License. # ============================================================================= if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/LEGATE_DATAFRAME_RAPIDS.cmake) - file(DOWNLOAD https://raw.githubusercontent.com/rapidsai/rapids-cmake/branch-25.04/RAPIDS.cmake + file(DOWNLOAD https://raw.githubusercontent.com/rapidsai/rapids-cmake/branch-25.08/RAPIDS.cmake ${CMAKE_CURRENT_BINARY_DIR}/LEGATE_DATAFRAME_RAPIDS.cmake ) endif() diff --git a/cpp/cmake/thirdparty/get_cudf.cmake b/cpp/cmake/thirdparty/get_cudf.cmake index c6094a78..5713e9df 100644 --- a/cpp/cmake/thirdparty/get_cudf.cmake +++ b/cpp/cmake/thirdparty/get_cudf.cmake @@ -51,5 +51,5 @@ function(find_and_configure_cudf) endfunction() find_and_configure_cudf( - VERSION 25.04 GIT_REPO https://github.com/rapidsai/cudf.git GIT_TAG branch-25.04 + VERSION 25.08 GIT_REPO https://github.com/rapidsai/cudf.git GIT_TAG branch-25.08 ) diff --git a/cpp/examples/CMakeLists.txt b/cpp/examples/CMakeLists.txt index 338f7421..3d14435f 100644 --- a/cpp/examples/CMakeLists.txt +++ b/cpp/examples/CMakeLists.txt @@ -16,7 +16,7 @@ set(TEST_INSTALL_PATH bin/tests/hello_world) set(TEST_NAME hello_world) add_executable(hello_world hello.cpp) -set_target_properties(hello_world PROPERTIES INSTALL_RPATH "\$ORIGIN/..") +set_target_properties(hello_world PROPERTIES INSTALL_RPATH "\$ORIGIN/.." CXX_STANDARD 20) target_link_libraries(hello_world PRIVATE LegateDataframe::LegateDataframe) if(CMAKE_COMPILER_IS_GNUCXX) diff --git a/cpp/include/legate_dataframe/legion_hack/legion_defines.h b/cpp/include/legate_dataframe/legion_hack/legion_defines.h new file mode 100644 index 00000000..e7eaef71 --- /dev/null +++ b/cpp/include/legate_dataframe/legion_hack/legion_defines.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2025, NVIDIA CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "legate/deps/legion_defines.h" // if this fails, try removing the hack! + +/* + * As of early 25.10, legion headers are broken with C++20 which we need. + * We can hack around that by removing the legion redop half definition + * so let's just *assume* we can find the correct header here (where it should + * be). + * The problem is that legion wants to use cuda::std::complex<__half> inside + * an atomic and that is broken (an issue with cuda::std::complex<__half> or + * rather `__half2` used by it. + * Legate should work around this soon, until then undef redop half and hope + * we do not run into this. + * + * On the CPU undefinig this means __half isn't defined, so don't do it there. + */ +#ifdef LEGION_USE_CUDA +#undef LEGION_REDOP_HALF +#endif diff --git a/cpp/src/join.cu b/cpp/src/join.cu index 6f1fc76f..f27d9753 100644 --- a/cpp/src/join.cu +++ b/cpp/src/join.cu @@ -16,7 +16,8 @@ #include #include -#include +#include +#include #include #include diff --git a/cpp/src/parquet.cpp b/cpp/src/parquet.cpp index 35ba77ce..c12f42c8 100644 --- a/cpp/src/parquet.cpp +++ b/cpp/src/parquet.cpp @@ -471,8 +471,8 @@ ParquetReadInfo get_parquet_info(const std::vector& file_paths, // but it doesn't work either way (As of legate 25.07). For table reading // 1-D rects can be used (and are for eager mode). row_group_ranges.emplace_back( - legate::Rect<1>({static_cast(nrows_total)}, - {static_cast(nrows_total + nrows_in_group - 1)})); + legate::Rect<1>({static_cast(nrows_total)}, + {static_cast(nrows_total + nrows_in_group - 1)})); nrows_total += nrows_in_group; } } diff --git a/cpp/src/unaryop.cu b/cpp/src/unaryop.cu index 6f17da0d..345f077d 100644 --- a/cpp/src/unaryop.cu +++ b/cpp/src/unaryop.cu @@ -46,7 +46,7 @@ namespace legate::dataframe::task { TaskContext ctx{context}; const auto input = argument::get_next_input(ctx); - auto digits = argument::get_next_scalar(ctx); + auto decimal_places = argument::get_next_scalar(ctx); auto mode = argument::get_next_scalar(ctx); auto output = argument::get_next_output(ctx); cudf::column_view col = input.column_view(); @@ -58,8 +58,10 @@ namespace legate::dataframe::task { } else { throw std::invalid_argument("Unsupported rounding method: " + mode); } + // TODO(seberg): Need to switch to round_decimal, but it failed tests due to + // some input types in our tests and I have not yet checked why or what to use. std::unique_ptr ret = - cudf::round(col, digits, rounding_method, ctx.stream(), ctx.mr()); + cudf::round(col, decimal_places, rounding_method, ctx.stream(), ctx.mr()); if (get_prefer_eager_allocations()) { output.copy_into(std::move(ret)); } else { diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index 5cb31c5e..d9acab46 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -31,11 +31,11 @@ set_target_properties( cpp_tests PROPERTIES RUNTIME_OUTPUT_DIRECTORY "$" # INSTALL_RPATH "\$ORIGIN/../../../lib" - CXX_STANDARD 17 + CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON # For std:: support of __int128_t. Can be removed once using cuda::std CXX_EXTENSIONS ON - CUDA_STANDARD 17 + CUDA_STANDARD 20 CUDA_STANDARD_REQUIRED ON ) diff --git a/dependencies.yaml b/dependencies.yaml index 7b77181d..fd2d6f14 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -3,7 +3,7 @@ files: all: output: conda matrix: - cuda: ["12.4"] + cuda: ["12.9"] arch: [x86_64] includes: - build @@ -119,9 +119,9 @@ dependencies: - output_types: conda matrices: - matrix: - cuda: "12.4" + cuda: "12.9" packages: - - cuda-version=12.4 + - cuda-version=12.9 cuda: specific: @@ -176,8 +176,8 @@ dependencies: - cupynumeric==25.10.*,>=0.0.0.dev0 - pytest>=7.0 - polars>=1.25,<1.32 - - dask-cuda==25.04.* - - dask-cudf==25.04.* + - dask-cuda==25.08.* + - dask-cudf==25.08.* - output_types: conda packages: - cuda-sanitizer-api @@ -188,9 +188,9 @@ dependencies: common: - output_types: conda packages: - - &cudf_unsuffixed cudf==25.04.*,>=0.0.0a0 + - &cudf_unsuffixed cudf==25.08.*,>=0.0.0a0 - pynvjitlink<=0.6 - - &pylibcudf_unsuffixed pylibcudf==25.04.*,>=0.0.0a0 + - &pylibcudf_unsuffixed pylibcudf==25.08.*,>=0.0.0a0 specific: - output_types: [requirements, pyproject] matrices: @@ -198,8 +198,8 @@ dependencies: cuda: "12.*" cuda_suffixed: "true" packages: - - cudf-cu12==25.04.*,>=0.0.0a0 - - pylibcudf-cu12==25.04.*,>=0.0.0a0 + - cudf-cu12==25.08.*,>=0.0.0a0 + - pylibcudf-cu12==25.08.*,>=0.0.0a0 - {matrix: null, packages: [*cudf_unsuffixed, *pylibcudf_unsuffixed]} depends_on_cupy: @@ -225,7 +225,7 @@ dependencies: common: - output_types: conda packages: - - &libcudf_unsuffixed libcudf==25.04.*,>=0.0.0a0 + - &libcudf_unsuffixed libcudf==25.08.*,>=0.0.0a0 specific: - output_types: [requirements, pyproject] matrices: @@ -233,14 +233,14 @@ dependencies: cuda: "12.*" cuda_suffixed: "true" packages: - - libcudf-cu12==25.04.*,>=0.0.0a0 + - libcudf-cu12==25.08.*,>=0.0.0a0 - {matrix: null, packages: [*libcudf_unsuffixed]} depends_on_librmm: common: - output_types: conda packages: - - &librmm_unsuffixed librmm==25.04.*,>=0.0.0a0 + - &librmm_unsuffixed librmm==25.08.*,>=0.0.0a0 specific: - output_types: [requirements, pyproject] matrices: @@ -248,7 +248,7 @@ dependencies: cuda: "12.*" cuda_suffixed: "true" packages: - - librmm-cu12==25.04.*,>=0.0.0a0 + - librmm-cu12==25.08.*,>=0.0.0a0 - matrix: packages: - *librmm_unsuffixed diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 3172fc46..dfabdc72 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -14,6 +14,8 @@ cmake_minimum_required(VERSION 3.26.4 FATAL_ERROR) +set(rapids-cmake-version 25.08) + # read project version from VERSION file file(READ "${CMAKE_CURRENT_LIST_DIR}/legate_dataframe/VERSION" _version_content) if(_version_content MATCHES [[^([0-9]+)\.([0-9]+)\.([0-9]+)]]) @@ -39,6 +41,9 @@ project( C CXX ) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + option( FIND_LegateDataframe "Search for existing legate dataframe C++ installations before defaulting to local files" OFF diff --git a/python/benchmarks/join.py b/python/benchmarks/join.py index cf13077a..2ee78fca 100644 --- a/python/benchmarks/join.py +++ b/python/benchmarks/join.py @@ -21,7 +21,7 @@ import cudf import numpy -from cudf.utils.string import format_bytes +from cudf.core.buffer.string import format_bytes def create_key_and_data(args, module): diff --git a/python/legate_dataframe/lib/core/column_cu.pyx b/python/legate_dataframe/lib/core/column_cu.pyx index d19f455c..ebdb62c1 100644 --- a/python/legate_dataframe/lib/core/column_cu.pyx +++ b/python/legate_dataframe/lib/core/column_cu.pyx @@ -27,8 +27,6 @@ def from_cudf(col_or_scalar): col_or_scalar = col_or_scalar._column.to_pylibcudf("read") elif isinstance(col_or_scalar, cudf.core.column.column.ColumnBase): col_or_scalar = col_or_scalar.to_pylibcudf("read") - elif isinstance(col_or_scalar, cudf.Scalar): - col_or_scalar = col_or_scalar.device_value if isinstance(col_or_scalar, PylibcudfColumn): col = col_or_scalar @@ -53,7 +51,7 @@ def to_cudf(LogicalColumn col): def to_cudf_scalar(LogicalColumn col): cdef unique_ptr[scalar] scal = get_cudf_scalar(col._handle) pylibcudf_scalar = PylibcudfScalar.from_libcudf(move(scal)) - return cudf.Scalar.from_pylibcudf(pylibcudf_scalar) + return pylibcudf_scalar def cudf_dtype(LogicalColumn col): diff --git a/python/legate_dataframe/testing.py b/python/legate_dataframe/testing.py index bda91de9..4ba79498 100644 --- a/python/legate_dataframe/testing.py +++ b/python/legate_dataframe/testing.py @@ -21,6 +21,7 @@ def try_import_cudf(): cudf = None try: cudf = pytest.importorskip("cudf") + cudf.Series([3]) # check if cudf is functional (e.g. cuda exists) except Exception: pytest.skip("cudf is not available", allow_module_level=True) return cudf diff --git a/python/pyproject.toml b/python/pyproject.toml index 78b42981..c0c6a4a1 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -19,11 +19,11 @@ description = "Basic cudf operations on Legate" license = {text = "Apache 2.0"} requires-python = ">=3.11" dependencies = [ - "cudf==25.04.*,>=0.0.0a0", + "cudf==25.08.*,>=0.0.0a0", "legate==25.10.*,>=0.0.0.dev0", "libarrow-acero", "numpy >=1.23,<3.0.0a0", - "pylibcudf==25.04.*,>=0.0.0a0", + "pylibcudf==25.08.*,>=0.0.0a0", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../dependencies.yaml and run `rapids-dependency-file-generator`. [project.urls] @@ -35,8 +35,8 @@ Documentation = "https://rapidsai.github.io/legate-dataframe" [project.optional-dependencies] test = [ "cupynumeric==25.10.*,>=0.0.0.dev0", - "dask-cuda==25.04.*", - "dask-cudf==25.04.*", + "dask-cuda==25.08.*", + "dask-cudf==25.08.*", "polars>=1.25,<1.32", "pytest>=7.0", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../dependencies.yaml and run `rapids-dependency-file-generator`. @@ -56,7 +56,7 @@ requires = [ "cmake>=3.26.4,!=3.30.0", "cython>=3.0.3", "legate==25.10.*,>=0.0.0.dev0", - "libcudf==25.04.*,>=0.0.0a0", + "libcudf==25.08.*,>=0.0.0a0", "ninja", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../dependencies.yaml and run `rapids-dependency-file-generator`. diff --git a/python/tests/test_cudf.py b/python/tests/test_cudf.py index 39ba9288..7e86bdaf 100644 --- a/python/tests/test_cudf.py +++ b/python/tests/test_cudf.py @@ -28,14 +28,17 @@ def test_column_round_trip(cudf_col): def test_scalar_column_round_trip(): - cudf_scalar = cudf.Scalar(3) - # We support both cudf and pylibcudf scalars (but return cudf ones) - for scalar in [cudf_scalar, cudf_scalar.device_value]: - col = LogicalColumn.from_cudf(scalar) - assert col.is_scalar() + import pylibcudf as plc - cudf_res = col.to_cudf_scalar() - assert cudf_res.value == cudf_scalar.value + scalar = plc.scalar.Scalar.from_py(3) + # We support both pylibcudf scalars + col = LogicalColumn.from_cudf(scalar) + assert col.is_scalar() + + # Used to be a cudf Scalar, but those do not + # exist since 25.10, so a pylibcudf now... + cudf_res = col.to_cudf_scalar() + assert cudf_res.to_py() == scalar.to_py() def test_non_scalar_column_error():