Skip to content
This repository was archived by the owner on Jul 28, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions .github/workflows/conda-python-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/docs-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
18 changes: 8 additions & 10 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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:
Expand Down Expand Up @@ -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:
Expand Down
8 changes: 4 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
4 changes: 2 additions & 2 deletions conda/recipes/legate-dataframe/conda_build_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -38,4 +38,4 @@ arrow_version:
- "19.0.*"

rapids_version:
- =25.04.*
- =25.08.*
20 changes: 11 additions & 9 deletions cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -144,22 +146,14 @@ 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
POSITION_INDEPENDENT_CODE ON
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)

Expand All @@ -173,6 +167,14 @@ target_include_directories(
PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
INTERFACE "$<INSTALL_INTERFACE:include>"
)
# 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 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/legate_dataframe/legion_hack>"
)

target_link_libraries(
LegateDataframe
Expand Down
2 changes: 1 addition & 1 deletion cpp/cmake/fetch_rapids.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
2 changes: 1 addition & 1 deletion cpp/cmake/thirdparty/get_cudf.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
2 changes: 1 addition & 1 deletion cpp/examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
34 changes: 34 additions & 0 deletions cpp/include/legate_dataframe/legion_hack/legion_defines.h
Original file line number Diff line number Diff line change
@@ -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
3 changes: 2 additions & 1 deletion cpp/src/join.cu
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@

#include <cudf/column/column_factories.hpp>
#include <cudf/copying.hpp>
#include <cudf/join.hpp>
#include <cudf/join/hash_join.hpp>
#include <cudf/join/join.hpp>
#include <cudf/table/table.hpp>

#include <legate_dataframe/core/repartition_by_hash.hpp>
Expand Down
4 changes: 2 additions & 2 deletions cpp/src/parquet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -471,8 +471,8 @@ ParquetReadInfo get_parquet_info(const std::vector<std::string>& 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<int64_t>(nrows_total)},
{static_cast<int64_t>(nrows_total + nrows_in_group - 1)}));
legate::Rect<1>({static_cast<legate::coord_t>(nrows_total)},
{static_cast<legate::coord_t>(nrows_total + nrows_in_group - 1)}));
nrows_total += nrows_in_group;
}
}
Expand Down
6 changes: 4 additions & 2 deletions cpp/src/unaryop.cu
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ namespace legate::dataframe::task {
TaskContext ctx{context};

const auto input = argument::get_next_input<PhysicalColumn>(ctx);
auto digits = argument::get_next_scalar<int32_t>(ctx);
auto decimal_places = argument::get_next_scalar<int32_t>(ctx);
auto mode = argument::get_next_scalar<std::string>(ctx);
auto output = argument::get_next_output<PhysicalColumn>(ctx);
cudf::column_view col = input.column_view();
Expand All @@ -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<cudf::column> 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 {
Expand Down
4 changes: 2 additions & 2 deletions cpp/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ set_target_properties(
cpp_tests
PROPERTIES RUNTIME_OUTPUT_DIRECTORY "$<BUILD_INTERFACE:${LegateDataframe_BINARY_DIR}/gtests>"
# 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
)

Expand Down
Loading