Skip to content

Add per-edge triplet neighbor-intersection transform-reduce primitive#5551

Draft
jnke2016 wants to merge 32 commits into
rapidsai:mainfrom
jnke2016:fea_triplet_nbr_intersection_by_e
Draft

Add per-edge triplet neighbor-intersection transform-reduce primitive#5551
jnke2016 wants to merge 32 commits into
rapidsai:mainfrom
jnke2016:fea_triplet_nbr_intersection_by_e

Conversation

@jnke2016

@jnke2016 jnke2016 commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

No description provided.

seunghwak and others added 30 commits May 14, 2026 13:05
…nts_by_e invoke the operator once per common neighbor r
@copy-pr-bot

copy-pr-bot Bot commented Jun 9, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

std::tuple<rmm::device_uvector<typename GraphViewType::vertex_type>,
rmm::device_uvector<typename GraphViewType::vertex_type>,
dataframe_buffer_type_t<T>>
transform_reduce_triplet_of_dst_nbr_intersection_of_e_endpoints_by_e(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need "triplet of" here?

Comment on lines +1239 to +1240
VertexPairIterator vertex_pair_first,
VertexPairIterator vertex_pair_last,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we are performing reduction "by_e", this means vertex pairs should be edges. Then, we should better use an edge bucket than general vertex pairs.

See

https://github.com/rapidsai/cugraph/blob/main/cpp/include/cugraph/prims/transform_gather_e.cuh#L151

* @param edge_dst_value_input Wrapper used to access destination input property values.
* @param edge_value_input Wrapper used to access supporting-edge property values.
* @param intersection_op septenary per (edge, intersection vertex) operator (see the all-edges
* overload).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update the documentation similar to the "by_v" primitive.

https://github.com/rapidsai/cugraph/blob/main/cpp/include/cugraph/prims/transform_reduce_src_dst_nbr_intersection_of_e_endpoints_by_v.cuh#L595

The "by_v" primitive returns a triplet: one value for source, one value for destination, and one value for the intersection vertex.

We may do something similar for the "by_e" primitive. One value for the edge, a second value for the src-intersection edge, and a third value for the dst-intersection edge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants