Skip to content

Commit 6ca16f4

Browse files
authored
Refactor Graph 500 BFS code and replace thrust::tuple with cuda::std::tuple (#5235)
Graph 500 BFS updates and replace thrust::tuple, thrust::make_tuple, thrust::get with cuda::std::tuple, cuda::std::make_tuple, cuda::std::get (#5226 did this migration but there were multiple remaining ones). Authors: - Seunghwa Kang (https://github.com/seunghwak) Approvers: - Chuck Hastings (https://github.com/ChuckHastings) URL: #5235
1 parent 989bade commit 6ca16f4

52 files changed

Lines changed: 3198 additions & 2787 deletions

File tree

Some content is hidden

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

cpp/include/cugraph/edge_partition_device_view.cuh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ class edge_partition_device_view_base_t {
173173
auto edge_offset = offsets_[major_idx];
174174
auto local_degree = offsets_[major_idx + 1] - edge_offset;
175175
auto indices = indices_.data() + edge_offset;
176-
return thrust::make_tuple(indices, edge_offset, local_degree);
176+
return cuda::std::make_tuple(indices, edge_offset, local_degree);
177177
}
178178

179179
// major_idx == major offset if CSR/CSC, major_offset != major_idx if DCSR/DCSC

cpp/include/cugraph/utilities/dataframe_buffer.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
#include <rmm/cuda_stream_view.hpp>
2323
#include <rmm/device_uvector.hpp>
2424

25+
#include <cuda/std/tuple>
2526
#include <thrust/iterator/zip_iterator.h>
26-
#include <thrust/tuple.h>
2727

2828
#include <type_traits>
2929

cpp/src/centrality/eigenvector_centrality_impl.cuh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,9 @@ rmm::device_uvector<weight_t> eigenvector_centrality(
149149
handle,
150150
pull_graph_view,
151151
thrust::make_zip_iterator(centralities.begin(), old_centralities.data()),
152-
[] __device__(auto, auto val) { return std::abs(thrust::get<0>(val) - thrust::get<1>(val)); },
152+
[] __device__(auto, auto val) {
153+
return cuda::std::abs(cuda::std::get<0>(val) - cuda::std::get<1>(val));
154+
},
153155
weight_t{0.0});
154156

155157
iter++;

cpp/src/centrality/katz_centrality_impl.cuh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ void katz_centrality(
143143
val_first + pull_graph_view.local_vertex_partition_range_size(),
144144
new_katz_centralities,
145145
[] __device__(auto val) {
146-
auto const katz_centrality = thrust::get<0>(val);
147-
auto const beta = thrust::get<1>(val);
146+
auto const katz_centrality = cuda::std::get<0>(val);
147+
auto const beta = cuda::std::get<1>(val);
148148
return katz_centrality + beta;
149149
});
150150
}
@@ -153,7 +153,9 @@ void katz_centrality(
153153
handle,
154154
pull_graph_view,
155155
thrust::make_zip_iterator(new_katz_centralities, old_katz_centralities),
156-
[] __device__(auto, auto val) { return std::abs(thrust::get<0>(val) - thrust::get<1>(val)); },
156+
[] __device__(auto, auto val) {
157+
return std::abs(cuda::std::get<0>(val) - cuda::std::get<1>(val));
158+
},
157159
result_t{0.0});
158160

159161
iter++;

cpp/src/components/mis_impl.cuh

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
#include <cuda/functional>
3131
#include <cuda/std/iterator>
32+
#include <cuda/std/tuple>
3233
#include <thrust/count.h>
3334
#include <thrust/iterator/counting_iterator.h>
3435
#include <thrust/merge.h>
@@ -73,8 +74,8 @@ rmm::device_uvector<vertex_t> maximal_independent_set(
7374
thrust::make_zip_iterator(out_degrees.begin(), in_degrees.begin()),
7475
remaining_vertices.begin(),
7576
[] __device__(auto out_deg_and_in_deg) {
76-
return !((thrust::get<0>(out_deg_and_in_deg) == 0) &&
77-
(thrust::get<1>(out_deg_and_in_deg) == 0));
77+
return !((cuda::std::get<0>(out_deg_and_in_deg) == 0) &&
78+
(cuda::std::get<1>(out_deg_and_in_deg) == 0));
7879
})),
7980
handle.get_stream());
8081

@@ -90,8 +91,8 @@ rmm::device_uvector<vertex_t> maximal_independent_set(
9091
cuda::proclaim_return_type<vertex_t>(
9192
[] __device__(auto) { return std::numeric_limits<vertex_t>::max(); }),
9293
[] __device__(auto in_out_degree) {
93-
return (thrust::get<0>(in_out_degree) == 0) &&
94-
(thrust::get<1>(in_out_degree) == 0);
94+
return (cuda::std::get<0>(in_out_degree) == 0) &&
95+
(cuda::std::get<1>(in_out_degree) == 0);
9596
});
9697

9798
out_degrees.resize(0, handle.get_stream());

cpp/src/cores/core_number_impl.cuh

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,12 @@ void core_number(raft::handle_t const& handle,
136136
auto in_degrees = cur_graph_view.compute_in_degrees(handle);
137137
auto out_degrees = cur_graph_view.compute_out_degrees(handle);
138138
auto degree_pair_first = thrust::make_zip_iterator(in_degrees.begin(), out_degrees.begin());
139-
thrust::transform(handle.get_thrust_policy(),
140-
degree_pair_first,
141-
degree_pair_first + in_degrees.size(),
142-
core_numbers,
143-
[] __device__(auto p) { return thrust::get<0>(p) + thrust::get<1>(p); });
139+
thrust::transform(
140+
handle.get_thrust_policy(),
141+
degree_pair_first,
142+
degree_pair_first + in_degrees.size(),
143+
core_numbers,
144+
[] __device__(auto p) { return cuda::std::get<0>(p) + cuda::std::get<1>(p); });
144145
}
145146
}
146147

@@ -291,8 +292,8 @@ void core_number(raft::handle_t const& handle,
291292
auto new_core_number = v_val >= pushed_val ? v_val - pushed_val : edge_t{0};
292293
new_core_number = new_core_number < (k - delta) ? (k - delta) : new_core_number;
293294
new_core_number = new_core_number < k_first ? edge_t{0} : new_core_number;
294-
return thrust::make_tuple(cuda::std::optional<size_t>{bucket_idx_next},
295-
cuda::std::optional<edge_t>{new_core_number});
295+
return cuda::std::make_tuple(cuda::std::optional<size_t>{bucket_idx_next},
296+
cuda::std::optional<edge_t>{new_core_number});
296297
});
297298
}
298299

cpp/src/cores/k_core_impl.cuh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ k_core(raft::handle_t const& handle,
6868
thrust::make_counting_iterator(graph_view.local_vertex_partition_range_last()),
6969
core_numbers->end()),
7070
thrust::make_zip_iterator(subgraph_vertices.begin(), thrust::make_discard_iterator()),
71-
[k] __device__(auto tuple) { return (k <= thrust::get<1>(tuple)); });
71+
[k] __device__(auto tuple) { return (k <= cuda::std::get<1>(tuple)); });
7272

7373
subgraph_vertices.resize(
7474
cuda::std::distance(

cpp/src/detail/groupby_and_count.cuh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ rmm::device_uvector<size_t> groupby_and_count_edgelist_by_local_partition_id(
9191
cugraph::detail::compute_vertex_partition_id_from_ext_vertex_t<vertex_t>{
9292
comm_size}] __device__(auto pair) {
9393
auto local_edge_partition_id = local_edge_partition_id_key_func(pair);
94-
auto vertex_partition_id = vertex_partition_id_key_func(thrust::get<1>(pair));
94+
auto vertex_partition_id = vertex_partition_id_key_func(cuda::std::get<1>(pair));
9595
return (local_edge_partition_id * major_comm_size) +
9696
((vertex_partition_id) % major_comm_size);
9797
};

cpp/src/detail/utility_wrappers_impl.cuh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,11 +138,11 @@ vertex_t compute_maximum_vertex_id(rmm::cuda_stream_view const& stream_view,
138138
vertex_t const* d_edgelist_dsts,
139139
size_t num_edges)
140140
{
141-
auto max_v_first =
142-
thrust::make_transform_iterator(thrust::make_zip_iterator(d_edgelist_srcs, d_edgelist_dsts),
143-
cuda::proclaim_return_type<vertex_t>([] __device__(auto e) {
144-
return cuda::std::max(thrust::get<0>(e), thrust::get<1>(e));
145-
}));
141+
auto max_v_first = thrust::make_transform_iterator(
142+
thrust::make_zip_iterator(d_edgelist_srcs, d_edgelist_dsts),
143+
cuda::proclaim_return_type<vertex_t>([] __device__(auto e) {
144+
return cuda::std::max(cuda::std::get<0>(e), cuda::std::get<1>(e));
145+
}));
146146
return thrust::reduce(rmm::exec_policy(stream_view),
147147
max_v_first,
148148
max_v_first + num_edges,

cpp/src/generators/generate_bipartite_rmat_edgelist.cuh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ generate_bipartite_rmat_edgelist(raft::handle_t const& handle,
110110
dst_bit_set ? static_cast<vertex_t>(vertex_t{1} << (dst_scale - (level + 1))) : 0;
111111
}
112112
}
113-
return thrust::make_tuple(src, dst);
113+
return cuda::std::make_tuple(src, dst);
114114
});
115115
num_edges_generated += num_edges_to_generate;
116116
}

0 commit comments

Comments
 (0)