Skip to content

Commit dff0729

Browse files
committed
remove duplicated vertices
1 parent 83cb71f commit dff0729

File tree

1 file changed

+33
-21
lines changed

1 file changed

+33
-21
lines changed

cpp/src/c_api/graph_sg.cpp

+33-21
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,39 @@ struct create_graph_functor : public cugraph::c_api::abstract_functor {
263263
std::optional<rmm::device_uvector<edge_time_t>> dummy_start_times{std::nullopt};
264264
std::optional<rmm::device_uvector<edge_time_t>> dummy_end_times{std::nullopt};
265265

266+
rmm::device_uvector<vertex_t> vertices(edgelist_srcs.size(), handle_.get_stream());
267+
268+
if (!renumber_) {
269+
raft::copy<vertex_t>(
270+
vertices.data(), edgelist_srcs.data(), edgelist_srcs.size(), handle_.get_stream());
271+
272+
cugraph::detail::sort_ints(
273+
handle_.get_stream(),
274+
raft::device_span<vertex_t>{vertices.data(), vertices.size()});
275+
276+
size_t unique_vertices_size = cugraph::detail::unique_ints(
277+
handle_.get_stream(),
278+
raft::device_span<vertex_t>{vertices.data(), vertices.size()});
279+
280+
vertices.resize(unique_vertices_size + edgelist_dsts.size(), handle_.get_stream());
281+
282+
raft::copy<vertex_t>(
283+
vertices.data() + unique_vertices_size,
284+
edgelist_dsts.data(),
285+
edgelist_dsts.size(),
286+
handle_.get_stream());
287+
288+
cugraph::detail::sort_ints(
289+
handle_.get_stream(),
290+
raft::device_span<vertex_t>{vertices.data(), vertices.size()});
291+
292+
unique_vertices_size = cugraph::detail::unique_ints(
293+
handle_.get_stream(),
294+
raft::device_span<vertex_t>{vertices.data(), vertices.size()});
295+
296+
vertices.resize(unique_vertices_size, handle_.get_stream());
297+
}
298+
266299
std::tie(*graph,
267300
new_edge_weights,
268301
new_edge_ids,
@@ -293,27 +326,6 @@ struct create_graph_functor : public cugraph::c_api::abstract_functor {
293326
*number_map = std::move(new_number_map.value());
294327
} else {
295328
// Ensure vertices are numbered consecutively
296-
rmm::device_uvector<vertex_t> vertices(edgelist_srcs.size(), handle_.get_stream());
297-
298-
raft::copy<vertex_t>(
299-
vertices.data(), edgelist_srcs.data(), edgelist_srcs.size(), handle_.get_stream());
300-
301-
cugraph::detail::sort_ints(
302-
handle_.get_stream(),
303-
raft::device_span<vertex_t>{vertices.data(), vertices.size()});
304-
305-
cugraph::detail::unique_ints(
306-
handle_.get_stream(),
307-
raft::device_span<vertex_t>{vertices.data(), vertices.size()});
308-
309-
auto unique_srcs_size = vertices.size();
310-
vertices.resize(unique_srcs_size + edgelist_dsts.size(), handle_.get_stream());
311-
312-
raft::copy<vertex_t>(
313-
vertices.data() + unique_srcs_size,
314-
edgelist_dsts.data(),
315-
edgelist_dsts.size(),
316-
handle_.get_stream());
317329

318330
number_map->resize(graph->number_of_vertices(), handle_.get_stream());
319331
cugraph::detail::sequence_fill(handle_.get_stream(),

0 commit comments

Comments
 (0)