@@ -89,21 +89,32 @@ rmm::device_uvector<vertex_t> vertex_coloring(
89
89
90
90
if (current_graph_view.compute_number_of_edges (handle) == 0 ) { break ; }
91
91
92
- cugraph::edge_src_property_t <graph_view_t , flag_t > src_mis_flags (handle, current_graph_view );
93
- cugraph::edge_dst_property_t <graph_view_t , flag_t > dst_mis_flags (handle, current_graph_view );
92
+ cugraph::edge_src_property_t <graph_view_t , flag_t > src_mis_flags (handle);
93
+ cugraph::edge_dst_property_t <graph_view_t , flag_t > dst_mis_flags (handle);
94
94
95
- cugraph::update_edge_src_property (
96
- handle, current_graph_view, is_vertex_in_mis.begin (), src_mis_flags);
95
+ if constexpr (graph_view_t ::is_multi_gpu) {
96
+ src_mis_flags =
97
+ cugraph::edge_src_property_t <graph_view_t , flag_t >(handle, current_graph_view);
98
+ dst_mis_flags =
99
+ cugraph::edge_dst_property_t <graph_view_t , flag_t >(handle, current_graph_view);
97
100
98
- cugraph::update_edge_dst_property (
99
- handle, current_graph_view, is_vertex_in_mis.begin (), dst_mis_flags);
101
+ cugraph::update_edge_src_property (
102
+ handle, current_graph_view, is_vertex_in_mis.begin (), src_mis_flags);
103
+
104
+ cugraph::update_edge_dst_property (
105
+ handle, current_graph_view, is_vertex_in_mis.begin (), dst_mis_flags);
106
+ }
100
107
101
108
if (color_id % 2 == 0 ) {
102
109
cugraph::transform_e (
103
110
handle,
104
111
current_graph_view,
105
- src_mis_flags.view (),
106
- dst_mis_flags.view (),
112
+ graph_view_t ::is_multi_gpu
113
+ ? src_mis_flags.view ()
114
+ : detail::edge_major_property_view_t <vertex_t , flag_t const *>(is_vertex_in_mis.begin ()),
115
+ graph_view_t ::is_multi_gpu ? dst_mis_flags.view ()
116
+ : detail::edge_minor_property_view_t <vertex_t , flag_t const *>(
117
+ is_vertex_in_mis.begin (), vertex_t {0 }),
107
118
cugraph::edge_dummy_property_t {}.view (),
108
119
[color_id] __device__ (
109
120
auto src, auto dst, auto is_src_in_mis, auto is_dst_in_mis, thrust::nullopt_t ) {
@@ -118,8 +129,12 @@ rmm::device_uvector<vertex_t> vertex_coloring(
118
129
cugraph::transform_e (
119
130
handle,
120
131
current_graph_view,
121
- src_mis_flags.view (),
122
- dst_mis_flags.view (),
132
+ graph_view_t ::is_multi_gpu
133
+ ? src_mis_flags.view ()
134
+ : detail::edge_major_property_view_t <vertex_t , flag_t const *>(is_vertex_in_mis.begin ()),
135
+ graph_view_t ::is_multi_gpu ? dst_mis_flags.view ()
136
+ : detail::edge_minor_property_view_t <vertex_t , flag_t const *>(
137
+ is_vertex_in_mis.begin (), vertex_t {0 }),
123
138
cugraph::edge_dummy_property_t {}.view (),
124
139
[color_id] __device__ (
125
140
auto src, auto dst, auto is_src_in_mis, auto is_dst_in_mis, thrust::nullopt_t ) {
0 commit comments