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

Merge cugraph branch-24.12 Files #4

Merged
merged 39 commits into from
Oct 10, 2024
Merged

Merge cugraph branch-24.12 Files #4

merged 39 commits into from
Oct 10, 2024

Conversation

nv-rliu
Copy link
Contributor

@nv-rliu nv-rliu commented Oct 3, 2024

This PR merges any changes made to rapidsai/cugraph/branch-24.12 into rapidsai/nx-cugraph.

Branch-24.12 should contain all the forward-merged changes from the 24.10 branch.

raydouglass and others added 30 commits July 19, 2024 17:27
Forward-merge branch-24.08 into branch-24.10
Forward-merge branch-24.08 into branch-24.10
Forward-merge branch-24.08 into branch-24.10
Forward-merge branch-24.08 into branch-24.10
This PR updates pre-commit hooks to the latest versions that are supported without causing style check errors.

Authors:
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)

Approvers:
  - James Lamb (https://github.com/jameslamb)

URL: rapidsai/cugraph#4605
Part of rapidsai/graph_dl#579

This PR allows `nx-cugraph` to operate with release candidate (under development) versions of `networkx`

What This Pattern Allows:
- Just a single digit: `3.4`, `3.9`, etc

- Release Candidate format: `3.4rc0`. `3.7rc2`

This is needed to complete adding nightly test coverage for development branches of `nx`

Authors:
  - Ralph Liu (https://github.com/nv-rliu)

Approvers:
  - Erik Welch (https://github.com/eriknw)
  - Rick Ratzel (https://github.com/rlratzel)

URL: rapidsai/cugraph#4613
Contributes to rapidsai/build-planning#88

Finishes the work of dropping Python 3.9 support.

This project stopped building / testing against Python 3.9 as of rapidsai/shared-workflows#235.
This PR updates configuration and docs to reflect that.

## Notes for Reviewers

### How I tested this

Checked that there were no remaining uses like this:

```shell
git grep -E '3\.9'
git grep '39'
git grep 'py39'
```

And similar for variations on Python 3.8 (to catch things that were missed the last time this was done).

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)
  - Bradley Dice (https://github.com/bdice)
  - Brad Rees (https://github.com/BradReesWork)

URL: rapidsai/cugraph#4625
This PR updates rapidsai/pre-commit-hooks to the version 0.4.0.

Authors:
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)

Approvers:
  - James Lamb (https://github.com/jameslamb)

URL: rapidsai/cugraph#4633
Contributes to rapidsai/build-planning#88.

#4625 dropped Python 3.9 support here (as part of the RAPIDS-wide effort to drop Python 3.9 in this release). This PR fixes a few things that were missed in that PR.

Authors:
  - James Lamb (https://github.com/jameslamb)
  - https://github.com/jakirkham

Approvers:
  - Don Acosta (https://github.com/acostadon)
  - https://github.com/jakirkham
  - Bradley Dice (https://github.com/bdice)
  - Mike Sarahan (https://github.com/msarahan)
  - Alex Barghi (https://github.com/alexbarghi-nv)
  - Rick Ratzel (https://github.com/rlratzel)

URL: rapidsai/cugraph#4637
Closes rapidsai/graph_dl#596
This PR adds scripts written by @rlratzel to generate benchmarking numbers for `nx-cugraph`

Authors:
  - Ralph Liu (https://github.com/nv-rliu)
  - Rick Ratzel (https://github.com/rlratzel)

Approvers:
  - Don Acosta (https://github.com/acostadon)
  - Rick Ratzel (https://github.com/rlratzel)

URL: rapidsai/cugraph#4616
Contributes to rapidsai/build-planning#40

This PR adds support for Python 3.12.

## Notes for Reviewers

This is part of ongoing work to add Python 3.12 support across RAPIDS.
It temporarily introduces a build/test matrix including Python 3.12, from rapidsai/shared-workflows#213.

A follow-up PR will revert back to pointing at the `branch-24.10` branch of `shared-workflows` once all
RAPIDS repos have added Python 3.12 support.

### This will fail until all dependencies have been updates to Python 3.12

CI here is expected to fail until all of this project's upstream dependencies support Python 3.12.

This can be merged whenever all CI jobs are passing.

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Bradley Dice (https://github.com/bdice)
  - Rick Ratzel (https://github.com/rlratzel)

URL: rapidsai/cugraph#4647
…(#4648)

This PR is a follow-up to rapidsai/cugraph#4616

This PR adds the following CLI argument options for `benchmarks/nx-cugraph/pytest-based/run-main-benchmarks.sh` 
 - `--cpu-only`
 - `--gpu-only`

And adds minor updates to the README

Authors:
  - Ralph Liu (https://github.com/nv-rliu)

Approvers:
  - Rick Ratzel (https://github.com/rlratzel)

URL: rapidsai/cugraph#4648
We need to update flake8 to fix a false-positive that appears with older flake8 versions on Python 3.12.

Authors:
  - Bradley Dice (https://github.com/bdice)

Approvers:
  - James Lamb (https://github.com/jameslamb)
  - Alex Barghi (https://github.com/alexbarghi-nv)
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)

URL: rapidsai/cugraph#4652
Recommending `miniforge` for conda install in installation docs.

Authors:
  - Mike McCarty (https://github.com/mmccarty)
  - Bradley Dice (https://github.com/bdice)
  - Alex Barghi (https://github.com/alexbarghi-nv)

Approvers:
  - Rick Ratzel (https://github.com/rlratzel)
  - Bradley Dice (https://github.com/bdice)

URL: rapidsai/cugraph#4650
Graph input with duplicate edges intended for `Graph`/`DiGraph` instances resulted in internal PLC `SGGraph` instances with duplicate edges, which were effectively treated as MultiGraphs and caused incorrect results from algorithms like `pagerank`.

This PR sets the `drop_multi_edges` PLC `SGGraph` ctor option to have PLC remove duplicate edges on `SGGraph` creation.

The overhead to drop duplicate edges for non-MultiGraphs is negligible, and in the case of a large test graph (wikipedia data, 37.5M nodes, 464.5M edges) resulted in <s>an overall _speedup_ for pagerank going from 12.2 seconds to 10.7 seconds on my workstation, likely due to fewer edges to process</s> a minor slowdown from 10.5s to 10.7s. _edit: after several re-runs, the pagerank runtime before the change settled to 10.5, and the runtime after the change was typically 10.7._

A test was added that uses pagerank to ensure Graphs vs. MultiGraphs are handled correctly and duplicate edges are dropped as needed.  The results when run without `drop_multi_edges` set:
```
>       assert actual_pr_for_G == approx(expected_pr_for_G)
E       assert {0: 0.0875795...7955580949783} == approx({0: 0....32 ± 1.8e-07})
E
E         comparison failed. Mismatched elements: 4 / 4:
E         Max absolute difference: 0.08785887916592061
E         Max relative difference: 0.5007959662968462
E         Index | Obtained            | Expected
E         0     | 0.08757955580949783 | 0.17543839772251532 ± 1.8e-07
E         1     | 0.41242048144340515 | 0.32456160227748454 ± 3.2e-07
E         2     | 0.41242048144340515 | 0.32456160227748454 ± 3.2e-07
E         3     | 0.08757955580949783 | 0.17543839772251532 ± 1.8e-07
```
The same test passes when run with the changes in this PR to set `drop_multi_edges`.

Authors:
  - Rick Ratzel (https://github.com/rlratzel)

Approvers:
  - Erik Welch (https://github.com/eriknw)

URL: rapidsai/cugraph#4658
Forward-merge branch-24.10 into branch-24.12
…workX Graph classes, needed for zero code change graph generators (#4629)

This is an alternative approach to #4558 for enabling GPU-accelerated NetworkX to "just work". It has similarities to #4558. I opted to make separate classes such as `ZeroGraph`, which I think makes for cleaner separation and gives us and users more control.

There are a few lingering TODOs and code comments to tidy up, but I don't think there are any show-stoppers. I have not updated methods (such as `number_of_nodes`) to optimistically try to use GPU if possible, b/c this is not strictly necessary, but we should update these soon.

I have run NetworkX tests with these classes using networkx/networkx#7585 and networkx/networkx#7600. We need the behavior in 7585, and 7600 is only useful for testing.

There are only 3 new failing tests, and 3 tests that hang (I'll run them overnight to see if they finish). Here's a test summary:
```
5548 passed, 24 skipped, 16 xfailed, 25 xpassed
```
Note that 25 tests that were failing now pass. I have not investigated test failures, xfails, or xpasses yet. I would like to add tests too.

We rely heavily on the networkx cache. I think this is preferred.

It is late for me. I will describe and show how and why this works later.

I opted for `zero=` and `ZeroGraph`, because I find them delightful! Renaming is trivial if other terms are preferred.

CC @quasiben

Authors:
  - Erik Welch (https://github.com/eriknw)

Approvers:
  - Bradley Dice (https://github.com/bdice)
  - Rick Ratzel (https://github.com/rlratzel)

URL: rapidsai/cugraph#4629
Forward-merge branch-24.10 into branch-24.12
Forward-merge branch-24.10 into branch-24.12
This PR removes the NumPy<2 pin which is expected to work for
RAPIDS projects once CuPy 13.3.0 is released (CuPy 13.2.0 had
some issues preventing the use with NumPy 2).

Authors:
  - Sebastian Berg (https://github.com/seberg)
  - https://github.com/jakirkham
  - Rick Ratzel (https://github.com/rlratzel)
  - Alex Barghi (https://github.com/alexbarghi-nv)
  - James Lamb (https://github.com/jameslamb)
  - Philip Hyunsu Cho (https://github.com/hcho3)

Approvers:
  - Alex Barghi (https://github.com/alexbarghi-nv)
  - James Lamb (https://github.com/jameslamb)

URL: rapidsai/cugraph#4615
In cudf we have observed a ~10% speed up of pytest suite execution by switching pytest traceback to `--native`:

```
currently:

102474 passed, 2117 skipped, 902 xfailed in 892.16s (0:14:52)

--tb=short:

102474 passed, 2117 skipped, 902 xfailed in 898.99s (0:14:58)

--tb=no:

102474 passed, 2117 skipped, 902 xfailed in 815.98s (0:13:35)

--tb=native:

102474 passed, 2117 skipped, 902 xfailed in 820.92s (0:13:40)
```

This PR makes similar change to `cugraph` repo.

xref: rapidsai/cudf#16851

Authors:
  - GALI PREM SAGAR (https://github.com/galipremsagar)

Approvers:
  - Brad Rees (https://github.com/BradReesWork)

URL: rapidsai/cugraph#4663
Forward-merge branch-24.10 into branch-24.12
Closes rapidsai/graph_dl#606 and [another
issue]

## Proposed Changes
In preparation for GA release, this PR adds a landing page for
`nx-cugraph` in the cugraph API documentation site. The new pages can be
viewed by clicking `nx-cugraph` in the navigation bar at the top of the
page.

### New pages
nx-cugraph
 └─ How it works
 └─ Supported Algorithms
 └─ Getting Started
 └─ Benchmarks
 └─ FAQ

## Notes for Reviewers

- In order to build and test these docs, I modified the `build.sh` file
to use `sphinx-autobuild`.

```bash
122
123     cd ${REPODIR}/docs/cugraph-docs
124     #make html
125     sphinx-autobuild source build/html
126 fi
127
```

- For now, I believe the best way to view these changes is to clone the
PR branch, then run `build.sh` in order to host the webserver locally..

---------

Co-authored-by: Don Acosta <[email protected]>
Co-authored-by: rlratzel <[email protected]>
Co-authored-by: Erik Welch <[email protected]>
GPUtester and others added 9 commits October 3, 2024 09:51
Forward-merge branch-24.10 into branch-24.12
## Proposed Changes

This PR adds an introduction notebook to the `notebooks/demo` directory
of the repository. Click the link to view the files directory in the dev
branch.
* [The introduction to `nx-cugraph`
notebook](https://github.com/rapidsai/cugraph/blob/1a70b7ad588bcc1dc6f65af8fe07149ed8083ef0/notebooks/demo/accelerating_networkx.ipynb)

---------

Co-authored-by: Erik Welch <[email protected]>
Forward-merge branch-24.10 into branch-24.12
Adding some content and navigation options per VDR,
resolves  rapidsai/graph_dl#594
resolves rapidsai/graph_dl#593

---------

Co-authored-by: rlratzel <[email protected]>
Forward-merge branch-24.10 into branch-24.12
@nv-rliu nv-rliu marked this pull request as ready for review October 3, 2024 18:49
@rlratzel rlratzel added non-breaking Introduces a non-breaking change improvement Improves an existing functionality labels Oct 10, 2024
@rlratzel rlratzel merged commit 801e977 into rapidsai:main Oct 10, 2024
3 of 4 checks passed
copy-pr-bot bot pushed a commit that referenced this pull request Oct 21, 2024
rapids-bot bot pushed a commit that referenced this pull request Nov 6, 2024
> Keep the nx-cugraph repo in sync with any relevant changes made to the cugraph codebase

Part of rapidsai/graph_dl#578

This PR updates branch-24.12 with any updates that were made since the last fast-forward ([PR on Oct 3, 2024](#4))

This was done by running `git log --since="2024-10-03" --name-only --pretty=format: -- python/nx-cugraph/ | sort | uniq` inside the cugraph repo to see which files were modified since the last fast-forward.

These files were then copied over while preserving their history

```bash
git filter-repo \
    --path python/nx-cugraph/_nx_cugraph/__init__.py \
    --path python/nx-cugraph/nx_cugraph/tests/test_ego_graph.py \
    --path python/nx-cugraph/README.md \
    --path-rename python/nx-cugraph/_nx_cugraph/__init__.py:_nx_cugraph/__init__.py \
    --path-rename python/nx-cugraph/nx_cugraph/tests/test_ego_graph.py:nx_cugraph/tests/test_ego_graph.py \
    --path-rename python/nx-cugraph/README.md:README.md
```

Authors:
  - Ralph Liu (https://github.com/nv-rliu)
  - Erik Welch (https://github.com/eriknw)
  - Ray Douglass (https://github.com/raydouglass)
  - Rick Ratzel (https://github.com/rlratzel)
  - gpuCI (https://github.com/GPUtester)
  - Jake Awe (https://github.com/AyodeAwe)
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Erik Welch (https://github.com/eriknw)

URL: #13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
benchmarks improvement Improves an existing functionality non-breaking Introduces a non-breaking change
Projects
None yet
Development

Successfully merging this pull request may close these issues.