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 MG neighborhood sampling to cugraph Python API #2108

Closed
8 tasks
rlratzel opened this issue Mar 10, 2022 · 0 comments · Fixed by #2118
Closed
8 tasks

[ENH] Add MG neighborhood sampling to cugraph Python API #2108

rlratzel opened this issue Mar 10, 2022 · 0 comments · Fixed by #2118
Assignees
Labels
improvement Improvement / enhancement to an existing function
Milestone

Comments

@rlratzel
Copy link
Contributor

rlratzel commented Mar 10, 2022

  • cugraph API signature discussed and defined
  • cugraph tests in place
  • cugraph docstring
  • cugraph API implementation defined (calling pylibcugraph API stub)
  • pylibcugraph tests in place
  • pylibcugraph docstring
  • pylibcugraph API implementation defined (calling C API stub)
  • replace stubs with actual calls everywhere when C API finished, ensure tests with actual data pass

This depends on: #2073


Notes

  • A separate graph service for use by DGL would operate in a more parallel batch-type mode by
    • Collecting several calls from different clients and assigning each client a unique label (an integer type) and associating the starting vertices for that client with that label
    • The starting vertices arrays are combined into a single flat array of tuples of (starting_vertex, label)
    • When enough client calls are received to exceed some threshold, the service makes a single call to the pylibcugraph/C API uniform_neighborhood_sample() with the array of tuples.
    • The uniform_neighborhood_sample() is run (multi-GPU) and the result is processed. The result is a flat list of tuples of tuples: ((src, dst, label, index), rx_counts) where index is used to reconstruct the path (eg. if index=n, that edge is then the nth edge in the path for that label) and rx_counts is ???
  • Let start with this API for cugraph:
cugraph.dask.sampling.uniform_neighborhood(G, start_info_list, fanout_vals, with_replacement=True)

where G is a cugraph Graph instance created using from_dask_cudf_edgelist()

  • Lets start with this API for pylibcugraph:
pylibcugraph.uniform_neighborhood_sampling(G, start_info_list, fanout_vals, with_replacement=True)

where G is a MGGraph instance.

@rlratzel rlratzel added the ? - Needs Triage Need team to review and classify label Mar 10, 2022
@rlratzel rlratzel added this to the 22.04 milestone Mar 10, 2022
@BradReesWork BradReesWork added improvement Improvement / enhancement to an existing function and removed ? - Needs Triage Need team to review and classify labels Mar 10, 2022
rapids-bot bot pushed a commit that referenced this issue Mar 31, 2022
Closes #2108 when merged. Requires both #2088 and #2156 to be merged before, the former because this uses MGGraph, and the later because of the C implementation of neighborhood sampling.

Authors:
  - https://github.com/betochimas
  - Joseph Nke (https://github.com/jnke2016)
  - Rick Ratzel (https://github.com/rlratzel)

Approvers:
  - Don Acosta (https://github.com/acostadon)
  - Rick Ratzel (https://github.com/rlratzel)
  - Joseph Nke (https://github.com/jnke2016)
  - Chuck Hastings (https://github.com/ChuckHastings)
  - Jordan Jacobelli (https://github.com/Ethyling)

URL: #2118
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.

4 participants