Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ENH] Add graph creation methods to C API #1906

Closed
ChuckHastings opened this issue Oct 26, 2021 · 0 comments · Fixed by #1940
Closed

[ENH] Add graph creation methods to C API #1906

ChuckHastings opened this issue Oct 26, 2021 · 0 comments · Fixed by #1940
Assignees
Labels
improvement Improvement / enhancement to an existing function
Milestone

Comments

@ChuckHastings
Copy link
Collaborator

The new transpose method added in #1834 allows us to create a graph in one orientation and transpose it to another efficiently without needing to recreate everything.

In order to take advantage of this in the python layer, we need to create some create graph creation methods in the C API to return a type erased pointer to a graph. Ultimately this will replace the current graph container/graph envelope mechanism in use by the current Cython.

@ChuckHastings ChuckHastings added the ? - Needs Triage Need team to review and classify label Oct 26, 2021
@ChuckHastings ChuckHastings self-assigned this Oct 26, 2021
@ChuckHastings ChuckHastings added 2 - In Progress improvement Improvement / enhancement to an existing function and removed ? - Needs Triage Need team to review and classify labels Oct 26, 2021
@ChuckHastings ChuckHastings added this to the 21.12 milestone Oct 26, 2021
rapids-bot bot pushed a commit that referenced this issue Nov 5, 2021
Partially addresses #1906

This PR defines the API for graph creation and the pagerank and bfs calls that we will use to experiment with transposing a graph.

Some notes on the design here.

1. The intention is that the C API will handle renumbering (when set to true on graph creation).  This means that the opaque cugraph_graph_t pointer being populated by cugraph_sg_graph_create will contain the renumbering device vector and that the C API implementation of algorithms (pagerank and bfs demonstrated here) will unrenumber the result before returning
2. The intention is that the C API will understand whether the algorithm wants `store_transposed=true` or `store_transposed=false` and will call the transpose method if required.

Authors:
  - Chuck Hastings (https://github.com/ChuckHastings)

Approvers:
  - Andrei Schaffer (https://github.com/aschaffer)
  - Rick Ratzel (https://github.com/rlratzel)
  - Seunghwa Kang (https://github.com/seunghwak)

URL: #1907
rapids-bot bot pushed a commit that referenced this issue Nov 16, 2021
Implementation of the following capabilities into the C API:
* Graph creation
* Pagerank
* BFS

Note that the C API in this implementation supports:
* Renumbering in the C layer
* Transposing the graph if necessary to support the desired algorithm

Closes #1906

Authors:
  - Chuck Hastings (https://github.com/ChuckHastings)

Approvers:
  - Seunghwa Kang (https://github.com/seunghwak)
  - Kumar Aatish (https://github.com/kaatish)

URL: #1940
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
improvement Improvement / enhancement to an existing function
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant