Skip to content

Commit a3991d7

Browse files
authored
Merge pull request #4907 from nv-rliu/branch-25.04-merge-25.02
Forward-merge branch-25.02 into branch-25.04
2 parents 2b69b0c + 412a31e commit a3991d7

File tree

95 files changed

+1645
-1100
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+1645
-1100
lines changed

.devcontainer/cuda12.5-conda/devcontainer.json renamed to .devcontainer/cuda12.8-conda/devcontainer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"context": "${localWorkspaceFolder}/.devcontainer",
44
"dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
55
"args": {
6-
"CUDA": "12.5",
6+
"CUDA": "12.8",
77
"PYTHON_PACKAGE_MANAGER": "conda",
88
"BASE": "rapidsai/devcontainers:25.04-cpp-mambaforge-ubuntu22.04"
99
}
@@ -20,7 +20,7 @@
2020
"overrideFeatureInstallOrder": [
2121
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
2222
],
23-
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda12.5-envs}"],
23+
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda12.8-envs}"],
2424
"postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
2525
"workspaceFolder": "/home/coder",
2626
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cugraph,type=bind,consistency=consistent",
@@ -29,7 +29,7 @@
2929
"source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent",
3030
"source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent",
3131
"source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent",
32-
"source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda12.5-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
32+
"source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda12.8-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
3333
],
3434
"customizations": {
3535
"vscode": {

.devcontainer/cuda12.5-pip/devcontainer.json renamed to .devcontainer/cuda12.8-pip/devcontainer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"context": "${localWorkspaceFolder}/.devcontainer",
44
"dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
55
"args": {
6-
"CUDA": "12.5",
6+
"CUDA": "12.8",
77
"PYTHON_PACKAGE_MANAGER": "pip",
88
"BASE": "rapidsai/devcontainers:25.04-cpp-cuda12.5-ucx1.17.0-openmpi-ubuntu22.04"
99
}
@@ -28,15 +28,15 @@
2828
"ghcr.io/rapidsai/devcontainers/features/cuda",
2929
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
3030
],
31-
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda12.5-venvs}"],
31+
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda12.8-venvs}"],
3232
"postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
3333
"workspaceFolder": "/home/coder",
3434
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cugraph,type=bind,consistency=consistent",
3535
"mounts": [
3636
"source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent",
3737
"source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent",
3838
"source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent",
39-
"source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda12.5-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent"
39+
"source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda12.8-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent"
4040
],
4141
"customizations": {
4242
"vscode": {

.github/workflows/pr.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ jobs:
195195
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
196196
with:
197197
arch: '["amd64"]'
198-
cuda: '["12.5"]'
198+
cuda: '["12.8"]'
199199
node_type: cpu32
200200
build_command: |
201201
sccache -z;

conda/environments/all_cuda-118_arch-x86_64.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ dependencies:
7070
- thriftpy2>=0.4.15,!=0.5.0,!=0.5.1
7171
- torchdata
7272
- torchmetrics
73-
- ucx-proc=*=gpu
7473
- ucx-py==0.43.*,>=0.0.0a0
7574
- wheel
7675
name: all_cuda-118_arch-x86_64

conda/environments/all_cuda-125_arch-x86_64.yaml renamed to conda/environments/all_cuda-128_arch-x86_64.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ dependencies:
1717
- cuda-nvtx-dev
1818
- cuda-profiler-api
1919
- cuda-python>=12.6.2,<13.0a0
20-
- cuda-version=12.5
20+
- cuda-version=12.8
2121
- cudf==25.4.*,>=0.0.0a0
2222
- cupy>=12.0.0
2323
- cxx-compiler
@@ -75,7 +75,6 @@ dependencies:
7575
- thriftpy2>=0.4.15,!=0.5.0,!=0.5.1
7676
- torchdata
7777
- torchmetrics
78-
- ucx-proc=*=gpu
7978
- ucx-py==0.43.*,>=0.0.0a0
8079
- wheel
81-
name: all_cuda-125_arch-x86_64
80+
name: all_cuda-128_arch-x86_64

conda/recipes/cugraph/meta.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ requirements:
9090
- raft-dask ={{ minor_version }}
9191
- rapids-dask-dependency ={{ minor_version }}
9292
- requests
93-
- ucx-proc=*=gpu
9493
- ucx-py {{ ucx_py_version }}
9594

9695
tests:

conda/recipes/libcugraph/meta.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ requirements:
7272
- libraft ={{ minor_version }}
7373
- librmm ={{ minor_version }}
7474
- nccl {{ nccl_version }}
75-
- ucx-proc=*=gpu
7675
- rapids-build-backend>=0.3.1,<0.4.0.dev0
7776

7877
outputs:
@@ -113,7 +112,6 @@ outputs:
113112
- libraft ={{ minor_version }}
114113
- librmm ={{ minor_version }}
115114
- nccl {{ nccl_version }}
116-
- ucx-proc=*=gpu
117115
about:
118116
home: https://rapids.ai/
119117
dev_url: https://github.com/rapidsai/cugraph

cpp/include/cugraph/detail/decompress_edge_partition.cuh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020-2024, NVIDIA CORPORATION.
2+
* Copyright (c) 2020-2025, NVIDIA CORPORATION.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -29,7 +29,6 @@
2929
#include <thrust/fill.h>
3030
#include <thrust/for_each.h>
3131
#include <thrust/iterator/counting_iterator.h>
32-
#include <thrust/optional.h>
3332
#include <thrust/sequence.h>
3433
#include <thrust/tuple.h>
3534

cpp/include/cugraph/edge_partition_device_view.cuh

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020-2024, NVIDIA CORPORATION.
2+
* Copyright (c) 2020-2025, NVIDIA CORPORATION.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -26,10 +26,10 @@
2626
#include <rmm/device_uvector.hpp>
2727
#include <rmm/exec_policy.hpp>
2828

29+
#include <cuda/std/optional>
2930
#include <thrust/binary_search.h>
3031
#include <thrust/distance.h>
3132
#include <thrust/execution_policy.h>
32-
#include <thrust/optional.h>
3333
#include <thrust/transform.h>
3434
#include <thrust/transform_reduce.h>
3535
#include <thrust/tuple.h>
@@ -43,18 +43,18 @@ namespace cugraph {
4343
namespace detail {
4444

4545
template <typename vertex_t>
46-
__device__ thrust::optional<vertex_t> major_hypersparse_idx_from_major_nocheck_impl(
46+
__device__ cuda::std::optional<vertex_t> major_hypersparse_idx_from_major_nocheck_impl(
4747
raft::device_span<vertex_t const> dcs_nzd_vertices, vertex_t major)
4848
{
4949
// we can avoid binary search (and potentially improve performance) if we add an auxiliary array
5050
// or cuco::static_map (at the expense of additional memory)
5151
auto it =
5252
thrust::lower_bound(thrust::seq, dcs_nzd_vertices.begin(), dcs_nzd_vertices.end(), major);
5353
return it != dcs_nzd_vertices.end()
54-
? (*it == major ? thrust::optional<vertex_t>{static_cast<vertex_t>(
54+
? (*it == major ? cuda::std::optional<vertex_t>{static_cast<vertex_t>(
5555
thrust::distance(dcs_nzd_vertices.begin(), it))}
56-
: thrust::nullopt)
57-
: thrust::nullopt;
56+
: cuda::std::nullopt)
57+
: cuda::std::nullopt;
5858
}
5959

6060
template <typename vertex_t, typename edge_t, typename return_type_t, bool multi_gpu, bool use_dcs>
@@ -490,7 +490,7 @@ class edge_partition_device_view_t<vertex_t, edge_t, multi_gpu, std::enable_if_t
490490
return major_value_start_offset_;
491491
}
492492

493-
__host__ __device__ thrust::optional<vertex_t> major_hypersparse_first() const noexcept
493+
__host__ __device__ cuda::std::optional<vertex_t> major_hypersparse_first() const noexcept
494494
{
495495
return major_hypersparse_first_;
496496
}
@@ -528,15 +528,16 @@ class edge_partition_device_view_t<vertex_t, edge_t, multi_gpu, std::enable_if_t
528528
return major_range_first_ + major_offset;
529529
}
530530

531-
__device__ thrust::optional<vertex_t> major_idx_from_major_nocheck(vertex_t major) const noexcept
531+
__device__ cuda::std::optional<vertex_t> major_idx_from_major_nocheck(
532+
vertex_t major) const noexcept
532533
{
533534
if (major_hypersparse_first_ && (major >= *major_hypersparse_first_)) {
534535
auto major_hypersparse_idx =
535536
detail::major_hypersparse_idx_from_major_nocheck_impl(*dcs_nzd_vertices_, major);
536537
return major_hypersparse_idx
537-
? thrust::make_optional((*major_hypersparse_first_ - major_range_first_) +
538-
*major_hypersparse_idx)
539-
: thrust::nullopt;
538+
? cuda::std::make_optional((*major_hypersparse_first_ - major_range_first_) +
539+
*major_hypersparse_idx)
540+
: cuda::std::nullopt;
540541
} else {
541542
return major - major_range_first_;
542543
}
@@ -554,60 +555,60 @@ class edge_partition_device_view_t<vertex_t, edge_t, multi_gpu, std::enable_if_t
554555
}
555556

556557
// major_hypersparse_idx: index within the hypersparse segment
557-
__device__ thrust::optional<vertex_t> major_hypersparse_idx_from_major_nocheck(
558+
__device__ cuda::std::optional<vertex_t> major_hypersparse_idx_from_major_nocheck(
558559
vertex_t major) const noexcept
559560
{
560561
if (dcs_nzd_vertices_) {
561562
return detail::major_hypersparse_idx_from_major_nocheck_impl(*dcs_nzd_vertices_, major);
562563
} else {
563-
return thrust::nullopt;
564+
return cuda::std::nullopt;
564565
}
565566
}
566567

567568
// major_hypersparse_idx: index within the hypersparse segment
568-
__device__ thrust::optional<vertex_t> major_from_major_hypersparse_idx_nocheck(
569+
__device__ cuda::std::optional<vertex_t> major_from_major_hypersparse_idx_nocheck(
569570
vertex_t major_hypersparse_idx) const noexcept
570571
{
571572
return dcs_nzd_vertices_
572-
? thrust::optional<vertex_t>{(*dcs_nzd_vertices_)[major_hypersparse_idx]}
573-
: thrust::nullopt;
573+
? cuda::std::optional<vertex_t>{(*dcs_nzd_vertices_)[major_hypersparse_idx]}
574+
: cuda::std::nullopt;
574575
}
575576

576577
__host__ __device__ vertex_t minor_from_minor_offset_nocheck(vertex_t minor_offset) const noexcept
577578
{
578579
return minor_range_first_ + minor_offset;
579580
}
580581

581-
// FIxME: better return thrust::optional<raft::device_span<vertex_t const>> for consistency (see
582-
// dcs_nzd_range_bitmap())
583-
__host__ __device__ thrust::optional<vertex_t const*> dcs_nzd_vertices() const
582+
// FIxME: better return cuda::std::optional<raft::device_span<vertex_t const>> for consistency
583+
// (see dcs_nzd_range_bitmap())
584+
__host__ __device__ cuda::std::optional<vertex_t const*> dcs_nzd_vertices() const
584585
{
585-
return dcs_nzd_vertices_ ? thrust::optional<vertex_t const*>{(*dcs_nzd_vertices_).data()}
586-
: thrust::nullopt;
586+
return dcs_nzd_vertices_ ? cuda::std::optional<vertex_t const*>{(*dcs_nzd_vertices_).data()}
587+
: cuda::std::nullopt;
587588
}
588589

589-
__host__ __device__ thrust::optional<vertex_t> dcs_nzd_vertex_count() const
590+
__host__ __device__ cuda::std::optional<vertex_t> dcs_nzd_vertex_count() const
590591
{
591592
return dcs_nzd_vertices_
592-
? thrust::optional<vertex_t>{static_cast<vertex_t>((*dcs_nzd_vertices_).size())}
593-
: thrust::nullopt;
593+
? cuda::std::optional<vertex_t>{static_cast<vertex_t>((*dcs_nzd_vertices_).size())}
594+
: cuda::std::nullopt;
594595
}
595596

596-
__host__ __device__ thrust::optional<raft::device_span<uint32_t const>> dcs_nzd_range_bitmap()
597+
__host__ __device__ cuda::std::optional<raft::device_span<uint32_t const>> dcs_nzd_range_bitmap()
597598
const
598599
{
599600
return dcs_nzd_range_bitmap_
600-
? thrust::make_optional<raft::device_span<uint32_t const>>(
601+
? cuda::std::make_optional<raft::device_span<uint32_t const>>(
601602
(*dcs_nzd_range_bitmap_).data(), (*dcs_nzd_range_bitmap_).size())
602-
: thrust::nullopt;
603+
: cuda::std::nullopt;
603604
}
604605

605606
private:
606607
// should be trivially copyable to device
607608

608-
thrust::optional<raft::device_span<vertex_t const>> dcs_nzd_vertices_{thrust::nullopt};
609-
thrust::optional<raft::device_span<uint32_t const>> dcs_nzd_range_bitmap_{thrust::nullopt};
610-
thrust::optional<vertex_t> major_hypersparse_first_{thrust::nullopt};
609+
cuda::std::optional<raft::device_span<vertex_t const>> dcs_nzd_vertices_{cuda::std::nullopt};
610+
cuda::std::optional<raft::device_span<uint32_t const>> dcs_nzd_range_bitmap_{cuda::std::nullopt};
611+
cuda::std::optional<vertex_t> major_hypersparse_first_{cuda::std::nullopt};
611612

612613
vertex_t major_range_first_{0};
613614
vertex_t major_range_last_{0};
@@ -790,10 +791,10 @@ class edge_partition_device_view_t<vertex_t, edge_t, multi_gpu, std::enable_if_t
790791

791792
__host__ __device__ vertex_t major_value_start_offset() const { return vertex_t{0}; }
792793

793-
__host__ __device__ thrust::optional<vertex_t> major_hypersparse_first() const noexcept
794+
__host__ __device__ cuda::std::optional<vertex_t> major_hypersparse_first() const noexcept
794795
{
795796
assert(false);
796-
return thrust::nullopt;
797+
return cuda::std::nullopt;
797798
}
798799

799800
__host__ __device__ constexpr vertex_t major_range_first() const noexcept { return vertex_t{0}; }
@@ -823,7 +824,8 @@ class edge_partition_device_view_t<vertex_t, edge_t, multi_gpu, std::enable_if_t
823824
return major_offset;
824825
}
825826

826-
__device__ thrust::optional<vertex_t> major_idx_from_major_nocheck(vertex_t major) const noexcept
827+
__device__ cuda::std::optional<vertex_t> major_idx_from_major_nocheck(
828+
vertex_t major) const noexcept
827829
{
828830
return major_offset_from_major_nocheck(major);
829831
}
@@ -834,34 +836,34 @@ class edge_partition_device_view_t<vertex_t, edge_t, multi_gpu, std::enable_if_t
834836
}
835837

836838
// major_hypersparse_idx: index within the hypersparse segment
837-
__device__ thrust::optional<vertex_t> major_hypersparse_idx_from_major_nocheck(
839+
__device__ cuda::std::optional<vertex_t> major_hypersparse_idx_from_major_nocheck(
838840
vertex_t major) const noexcept
839841
{
840842
assert(false);
841-
return thrust::nullopt;
843+
return cuda::std::nullopt;
842844
}
843845

844846
// major_hypersparse_idx: index within the hypersparse segment
845-
__device__ thrust::optional<vertex_t> major_from_major_hypersparse_idx_nocheck(
847+
__device__ cuda::std::optional<vertex_t> major_from_major_hypersparse_idx_nocheck(
846848
vertex_t major_hypersparse_idx) const noexcept
847849
{
848850
assert(false);
849-
return thrust::nullopt;
851+
return cuda::std::nullopt;
850852
}
851853

852854
__host__ __device__ vertex_t minor_from_minor_offset_nocheck(vertex_t minor_offset) const noexcept
853855
{
854856
return minor_offset;
855857
}
856858

857-
__host__ __device__ thrust::optional<vertex_t const*> dcs_nzd_vertices() const
859+
__host__ __device__ cuda::std::optional<vertex_t const*> dcs_nzd_vertices() const
858860
{
859-
return thrust::nullopt;
861+
return cuda::std::nullopt;
860862
}
861863

862-
__host__ __device__ thrust::optional<vertex_t> dcs_nzd_vertex_count() const
864+
__host__ __device__ cuda::std::optional<vertex_t> dcs_nzd_vertex_count() const
863865
{
864-
return thrust::nullopt;
866+
return cuda::std::nullopt;
865867
}
866868

867869
private:

cpp/include/cugraph/edge_partition_edge_property_device_view.cuh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
#include <cugraph/utilities/packed_bool_utils.hpp>
2222
#include <cugraph/utilities/thrust_tuple_utils.hpp>
2323

24+
#include <cuda/std/optional>
2425
#include <thrust/iterator/iterator_traits.h>
25-
#include <thrust/optional.h>
2626

2727
namespace cugraph {
2828

@@ -182,7 +182,7 @@ template <typename edge_t>
182182
class edge_partition_edge_dummy_property_device_view_t {
183183
public:
184184
using edge_type = edge_t;
185-
using value_type = thrust::nullopt_t;
185+
using value_type = cuda::std::nullopt_t;
186186

187187
static constexpr bool is_packed_bool = false;
188188
static constexpr bool has_packed_bool_element = false;
@@ -194,7 +194,7 @@ class edge_partition_edge_dummy_property_device_view_t {
194194
{
195195
}
196196

197-
__device__ auto get(edge_t offset) const { return thrust::nullopt; }
197+
__device__ auto get(edge_t offset) const { return cuda::std::nullopt; }
198198
};
199199

200200
} // namespace detail

0 commit comments

Comments
 (0)