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

[RELEASE] cugraph v23.12 #4027

Merged
merged 86 commits into from
Dec 6, 2023
Merged

[RELEASE] cugraph v23.12 #4027

merged 86 commits into from
Dec 6, 2023

Conversation

raydouglass
Copy link
Member

❄️ Code freeze for branch-23.12 and v23.12 release

What does this mean?

Only critical/hotfix level issues should be merged into branch-23.12 until release (merging of this PR).

What is the purpose of this PR?

  • Update documentation
  • Allow testing for the new release
  • Enable a means to merge branch-23.12 into main for the release

raydouglass and others added 30 commits September 22, 2023 10:58
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
Forward-merge branch-23.10 to branch-23.12
This PR builds conda packages using CUDA 12 on ARM.

Closes #3864.

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

Approvers:
   - Ray Douglass (https://github.com/raydouglass)
closes rapidsai/graph_dl#299

This PR adds new benchmarks for `nx-cugraph` which can be used to compare performance for NetworkX with and without the `cugraph` backend.

These benchmarks depend on `pytest`, `pytest-benchmark`, `networkx>=3.0`, `cugraph` (only for the Dataset APIs), and `nx-cugraph`

Some results can be seen here:
![image](https://github.com/rapidsai/cugraph/assets/3039903/d595eb3f-2ae6-4b2e-a0b1-a0f0bcb050a8)
![image](https://github.com/rapidsai/cugraph/assets/3039903/3ca367b4-14b8-4673-91d2-f83a947163e7)

### Other changes:
* `black` is now run on all python sources under `benchmarks`, which resulted in several format-only changes.
* Several other updates to versions, etc. were applied to various .yaml files in order to resolve CI errors.
* Merged in changes from [jnke2016/branch-23.10_increase-timeout](cbdbd8a) to get changes needed to fix dask CI failure.

Authors:
  - Rick Ratzel (https://github.com/rlratzel)
  - Joseph Nke (https://github.com/jnke2016)
  - AJ Schmidt (https://github.com/ajschmidt8)
  - Naim (https://github.com/naimnv)
  - Seunghwa Kang (https://github.com/seunghwak)
  - https://github.com/lmeyerov
  - Erik Welch (https://github.com/eriknw)
  - Alex Barghi (https://github.com/alexbarghi-nv)
  - Vyas Ramasubramani (https://github.com/vyasr)
  - Divye Gala (https://github.com/divyegala)
  - Tingyu Wang (https://github.com/tingyu66)
  - Chuck Hastings (https://github.com/ChuckHastings)
  - ralph (https://github.com/nv-rliu)
  - Paul Taylor (https://github.com/trxcllnt)

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

URL: #3854
Configures `breathe` and links the uploaded `wholegraph` and `cugraph-ops` XML docs artifacts.

Authors:
  - Jake Awe (https://github.com/AyodeAwe)

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

URL: #3906
Closes #3915 

This PR fixes two broken links in our README.md file.

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

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

URL: #3924
This PR switches back to using `branch-23.12` for CI workflows because the CUDA 12 ARM conda migration is complete.

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

Approvers:
  - Jake Awe (https://github.com/AyodeAwe)

URL: #3928
option to build all

Renamed the old buildAll function to buildDefault 
Added a check for the "all" argument

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

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

URL: #3916
naimnv and others added 20 commits November 14, 2023 11:25
* Move MTMG_TEST to MG tests block

* Remove extra newline

* remove reference to get_ucp.cmake

* make building MTMG a separate build flag

* Updates PropertyGraph for latest cudf changes.

* style fixes.

---------

Co-authored-by: Naim <[email protected]>
Co-authored-by: Charles Hastings <[email protected]>
Co-authored-by: Rick Ratzel <[email protected]>
…ions (#3991)

Currently dask versions are pinned as part of every release cycle and then unpinned for the next development cycle across all of RAPIDS. This introduces a great deal of churn. To centralize the dependency, we have created a metapackage to manage the required dask version and this PR introduces that metapackage as a dependency of cugraph.

xref: rapidsai/cudf#14364

Authors:
   - Chuck Hastings (https://github.com/ChuckHastings)
   - Rick Ratzel (https://github.com/rlratzel)
   - Vyas Ramasubramani (https://github.com/vyasr)
   - GALI PREM SAGAR (https://github.com/galipremsagar)
   - Naim ([email protected])

Approvers:
   - Jake Awe (https://github.com/AyodeAwe)
)

This PR fixes some pinnings in cuGraph conda recipes. The problem is similar to that handled in rapidsai/cudf#14420. The `{{ version }}` variable can only be used to constrain conda packages built by CI workflows in the _same repository_ because `{{ version }}` includes information about the git commit. We must use `{{ minor_version }}` to constrain other RAPIDS packages. In cuGraph, that means that `pylibcugraphops` (which is built by the cugraph-ops repository) and `rapids-dask-dependency` must pin with `={{ minor_version }}` instead of `={{ version }}`.

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

Approvers:
   - GALI PREM SAGAR (https://github.com/galipremsagar)
   - Ray Douglass (https://github.com/raydouglass)
…ader (#3978)

Fixes three major bugs:
1. Edge index is set to [dst, dst] instead of [dst, src] in some cases
2. The sample directory is always set to a new temporary directory rather than the path given
3. The version of `pylibcugraphops` in `meta.yaml` is wrong and causes the wrong packages to be resolved

This PR also simplifies `ci/test_python.sh` by doing only a single conda install when creating the `test_cugraph_pyg` environment.

Closes #3959

Authors:
  - Alex Barghi (https://github.com/alexbarghi-nv)
  - Naim (https://github.com/naimnv)

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

URL: #3978
RAPIDS currently relies on copies of CCCL headers bundled into rmm. This dependency is centralized by virtue of rmm installing these into the package and everything else finding those installed packages. To do this, however, rmm must be loaded first so that the libcudacxx install location is patched into CMake's search paths. cugraph also uses cuco, which requires libcudacxx but does not bundle its own, so rmm must be found first so that cuco can find libcudacxx where rmm installed it.

Authors:
  - Vyas Ramasubramani (https://github.com/vyasr)

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

URL: #4011
This PR replaces and is a continuation of #3857 (by @betochimas)

> This PR primarily adds testing for the `Resultset` class, introduced earlier in 23.10. The tests take a similar approach to test_dataset, creating a temporary directory to test downloading all result files. To align `Resultset` and `Dataset`, the setter and getter for each download directory is moved into `DefaultDownloadDir`, so that each class shares an instance of `DefaultDownloadDir` and can be configured independently, although their default locations are still both dependent on the RAPIDS_DATASET_ROOT_DIR_PATH environment variable. The old patterns are present but commented-out, so this change would be breaking. 

This PR also removes the deprecated `experimental.datasets` package due to it being promoted to stable for >=1 release.

Authors:
  - Ralph Liu (https://github.com/nv-rliu)
  - Dylan Chima-Sanchez (https://github.com/betochimas)
  - Rick Ratzel (https://github.com/rlratzel)
  - Brad Rees (https://github.com/BradReesWork)

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

URL: #3957
The current graph construction creates a single pandas dataframe, which for larger datasets (i.e. ogbn-papers100M) cannot be serialized.  This PR resolves this by breaking up the dataframe into scattered numpy arrays that are then reassembled.

Merge after #3978

Authors:
  - Alex Barghi (https://github.com/alexbarghi-nv)
  - Naim (https://github.com/naimnv)

Approvers:
  - Vibhu Jawa (https://github.com/VibhuJawa)
  - Brad Rees (https://github.com/BradReesWork)
  - Tingyu Wang (https://github.com/tingyu66)

URL: #3985
This PR works on addressing FIXMEs (and reduce the number of outstanding FIXMEs).

Authors:
  - Seunghwa Kang (https://github.com/seunghwak)
  - Naim (https://github.com/naimnv)
  - Ralph Liu (https://github.com/nv-rliu)

Approvers:
  - Naim (https://github.com/naimnv)
  - Joseph Nke (https://github.com/jnke2016)
  - Chuck Hastings (https://github.com/ChuckHastings)

URL: #3988
- Normalization factor was missing in the equation to decide if a node and a refined community is strongly connected inside their Louvain community. This PR adds that factor.
- Disable random moves in the refinement phase. We plan to expose a flag to enable/disable random moves in a future PR.
- Adds new function to flatten Leiden dendrogram as dendrogram flattening process needs additional info to unroll hierarchical leiden clustering

Closes #3850
Closes #3749

Authors:
  - Naim (https://github.com/naimnv)
  - Alex Barghi (https://github.com/alexbarghi-nv)

Approvers:
  - Chuck Hastings (https://github.com/ChuckHastings)
  - Seunghwa Kang (https://github.com/seunghwak)
  - Brad Rees (https://github.com/BradReesWork)

URL: #3990
There are many more traversal algorithms to implement, but these get us started!

Authors:
  - Erik Welch (https://github.com/eriknw)
  - Brad Rees (https://github.com/BradReesWork)
  - Rick Ratzel (https://github.com/rlratzel)

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

URL: #3976
Supports the `drop_last` argument in cuGraph-PyG for better compatibility with native PyG workflows.

Closes #3949 

Merge after #3985

Authors:
  - Alex Barghi (https://github.com/alexbarghi-nv)
  - Naim (https://github.com/naimnv)

Approvers:
  - Tingyu Wang (https://github.com/tingyu66)
  - Brad Rees (https://github.com/BradReesWork)
  - Vibhu Jawa (https://github.com/VibhuJawa)

URL: #3995
This PR enables parallel mode


Closes rapidsai/graph_dl#328

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

Approvers:
  - Chuck Hastings (https://github.com/ChuckHastings)
  - Naim (https://github.com/naimnv)
  - Brad Rees (https://github.com/BradReesWork)
  - Rick Ratzel (https://github.com/rlratzel)
  - Jake Awe (https://github.com/AyodeAwe)

URL: #3875
Updating the C API graph creation functions to support the following:
* Add support for isolated vertices
* Add MG optimization to support multiple device arrays per rank as input and concatenate them internally
* Add MG optimization to internally compute the number of edges via allreduce rather than requiring it as an input parameter (this can be expensive to compute in python)

This PR implements these features.  Some simple tests exist to check for isolate vertices (by running pagerank which generates a different result if the graph has isolated vertices).  A simple test for multiple input arrays exists for the MG case.

Closes #3947 
Closes #3974

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

Approvers:
  - Naim (https://github.com/naimnv)
  - Joseph Nke (https://github.com/jnke2016)
  - Seunghwa Kang (https://github.com/seunghwak)

URL: #3982
adding C and C++ API 
Adding WholeGraph APIs
Adding cugraph-ops APIs

closes #3406

Authors:
  - Brad Rees (https://github.com/BradReesWork)
  - GALI PREM SAGAR (https://github.com/galipremsagar)
  - Ralph Liu (https://github.com/nv-rliu)
  - Don Acosta (https://github.com/acostadon)

Approvers:
  - Seunghwa Kang (https://github.com/seunghwak)
  - Don Acosta (https://github.com/acostadon)
  - Rick Ratzel (https://github.com/rlratzel)
  - AJ Schmidt (https://github.com/ajschmidt8)

URL: #3938
I'm new to CuGraph repository and would like to contribute further in the future. So I start with minor tasks with docs to familiarize myself with the contribution process in this repository.

Here is what I have done in this PR:
- Fixed some invalid links in the documentation.
- Corrected and added formulas related to centrality.
- Added more references to the centrality to ensure consistency.

Also, the images located at https://github.com/rapidsai/cugraph/tree/main/python/cugraph cannot be displayed because it is symbolic link to the repository's README file. But it's not a major issue.

Authors:
  - Huiyu Xie (https://github.com/huiyuxie)
  - Ralph Liu (https://github.com/nv-rliu)
  - Naim (https://github.com/naimnv)
  - Brad Rees (https://github.com/BradReesWork)

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

URL: #4002
…`pagerank` (#3968)

Add `eigenvector_centrality`, `katz_centrality`, and `hits`. I may add pagerank next.

Authors:
  - Erik Welch (https://github.com/eriknw)
  - Ralph Liu (https://github.com/nv-rliu)
  - Naim (https://github.com/naimnv)
  - Rick Ratzel (https://github.com/rlratzel)

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

URL: #3968
…3941)

This PR includes changes that moves some of the MG graph etl steps (such as computing number of edges) to libcugraph to reduce the amount of dask overhead involved in graph creation. Those ETL steps were also responsible for various dask-related transient errors that caused us to temporarily disable MG testing in CI.  These changes allow us to re-enable MG testing in CI, so this PR includes that update too.

Authors:
  - Joseph Nke (https://github.com/jnke2016)
  - Chuck Hastings (https://github.com/ChuckHastings)
  - Naim (https://github.com/naimnv)
  - Vibhu Jawa (https://github.com/VibhuJawa)
  - Rick Ratzel (https://github.com/rlratzel)

Approvers:
  - Jake Awe (https://github.com/AyodeAwe)
  - Chuck Hastings (https://github.com/ChuckHastings)
  - Rick Ratzel (https://github.com/rlratzel)

URL: #3941
In MG tests, we had 2 different coding approaches, and one of the paths had a defect.

This makes all of the coding consistent and corrects the bug.

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

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

URL: #4021
@raydouglass raydouglass requested review from a team as code owners November 30, 2023 19:30
Copy link

copy-pr-bot bot commented Nov 30, 2023

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.

Copy link

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

raydouglass and others added 2 commits December 4, 2023 14:09
RAPIDS repos are using the `main` branch of https://github.com/actions/labeler which recently introduced [breaking changes](https://github.com/actions/labeler/releases/tag/v5.0.0).

This PR pins to the latest v4 release of the labeler action until we can evaluate the changes required for v5.

This PR also moves the labeler workflow to the correct location in the repo.

Authors:
   - Ray Douglass (https://github.com/raydouglass)

Approvers:
   - AJ Schmidt (https://github.com/ajschmidt8)
@raydouglass raydouglass merged commit 1fab996 into main Dec 6, 2023
4 of 5 checks passed
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.