From edc1fe192e7242f269403df355066001b4be0c59 Mon Sep 17 00:00:00 2001
From: Brad Rees <34135411+BradReesWork@users.noreply.github.com>
Date: Tue, 29 Mar 2022 11:24:12 -0400
Subject: [PATCH 1/7] 22.04 Update docs (#2171)
Authors:
- Brad Rees (https://github.com/BradReesWork)
Approvers:
- AJ Schmidt (https://github.com/ajschmidt8)
- Rick Ratzel (https://github.com/rlratzel)
URL: https://github.com/rapidsai/cugraph/pull/2171
---
README.md | 47 ++++++++++++------
conda/environments/cugraph_dev_cuda11.0.yml | 49 -------------------
docs/cugraph/source/basics/cugraph_blogs.rst | 30 ++++++++++--
docs/cugraph/source/basics/cugraph_intro.md | 5 ++
img/Scaling.png | Bin 0 -> 148382 bytes
img/cugraph-stack.png | Bin 0 -> 83217 bytes
6 files changed, 63 insertions(+), 68 deletions(-)
delete mode 100644 conda/environments/cugraph_dev_cuda11.0.yml
create mode 100644 img/Scaling.png
create mode 100644 img/cugraph-stack.png
diff --git a/README.md b/README.md
index 2f26a7511aa..7594e359c74 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,23 @@ There are 3 ways to get cuGraph :
---
+# cuGraph News
+
+### Scaling to 1 Trillion Edges
+cuGraph was recently tested on the Selene supercomputer using 2,048 GPUs and processing a graph with `1.1 Trillion edges`.
+
+
cuGraph Scaling
+
+
+### cuGraph Software Stack
+cuGraph has a new multi-layer software stack that allows users and system integrators to access cuGraph at different layers.
+
+ cuGraph Software Stack
+
+
+
+
+
# Currently Supported Features
As of Release 21.08 - including 21.08 nightly
@@ -50,24 +67,24 @@ _Italic_ algorithms are planned for future releases.
| ------------ | -------------------------------------- | ------------ | ------------------- |
| Centrality | | | |
| | Katz | Multi-GPU | |
-| | Betweenness Centrality | Single-GPU | |
+| | Betweenness Centrality | Single-GPU | MG planned for 22.08 |
| | Edge Betweenness Centrality | Single-GPU | |
+| | _Eigenvector Centrality_ | | _MG planned for 22.06_ |
| Community | | | |
-| | EgoNet | Single-GPU | |
| | Leiden | Single-GPU | |
| | Louvain | Multi-GPU | [C++ README](cpp/src/community/README.md#Louvain) |
| | Ensemble Clustering for Graphs | Single-GPU | |
| | Spectral-Clustering - Balanced Cut | Single-GPU | |
| | Spectral-Clustering - Modularity | Single-GPU | |
| | Subgraph Extraction | Single-GPU | |
-| | Triangle Counting | Single-GPU | |
-| | K-Truss | Single-GPU | |
+| | Triangle Counting | Single-GPU | MG planned for 22.06 |
+| | K-Truss | Single-GPU | MG planned for 22.10 |
| Components | | | |
| | Weakly Connected Components | Multi-GPU | |
-| | Strongly Connected Components | Single-GPU | |
+| | Strongly Connected Components | Single-GPU | MG planned for 22.06 |
| Core | | | |
-| | K-Core | Single-GPU | |
-| | Core Number | Single-GPU | |
+| | K-Core | Single-GPU | MG planned for 22.10 |
+| | Core Number | Single-GPU | MG planned for 22.08 |
| _Flow_ | | | |
| | _MaxFlow_ | --- | |
| _Influence_ | | | |
@@ -79,7 +96,7 @@ _Italic_ algorithms are planned for future releases.
| Link Analysis| | | |
| | Pagerank | Multi-GPU | [C++ README](cpp/src/centrality/README.md#Pagerank) |
| | Personal Pagerank | Multi-GPU | [C++ README](cpp/src/centrality/README.md#Personalized-Pagerank) |
-| | HITS | Single-GPU | Multi-GPU C code is ready, Python wrapper in 22.04 |
+| | HITS | Multi-GPU | |
| Link Prediction | | | |
| | Jaccard Similarity | Single-GPU | |
| | Weighted Jaccard Similarity | Single-GPU | |
@@ -89,10 +106,12 @@ _Italic_ algorithms are planned for future releases.
| Sampling | | | |
| | Random Walks (RW) | Single-GPU | Biased and Uniform |
| | Egonet | Single-GPU | multi-seed |
-| | _node2vec_ | --- | C code is ready, Python wrapper coming in 22.04 |
+| | Node2Vec | Single-GPU | |
+| | Neighborhood sampling | Multi-GPU | |
| Traversal | | | |
| | Breadth First Search (BFS) | Multi-GPU | with cutoff support
[C++ README](cpp/src/traversal/README.md#BFS) |
| | Single Source Shortest Path (SSSP) | Multi-GPU | [C++ README](cpp/src/traversal/README.md#SSSP) |
+| | _ASSP / APSP_ | | |
| Tree | | | |
| | Minimum Spanning Tree | Single-GPU | |
| | Maximum Spanning Tree | Single-GPU | |
@@ -164,20 +183,20 @@ Install and update cuGraph using the conda command:
```bash
-# CUDA 11.0
-conda install -c nvidia -c rapidsai -c numba -c conda-forge cugraph cudatoolkit=11.0
-# CUDA 11.2
-conda install -c nvidia -c rapidsai -c numba -c conda-forge cugraph cudatoolkit=11.2
+
+
# CUDA 11.4
conda install -c nvidia -c rapidsai -c numba -c conda-forge cugraph cudatoolkit=11.4
# CUDA 11.5
conda install -c nvidia -c rapidsai -c numba -c conda-forge cugraph cudatoolkit=11.5
+
+For CUDA > 11.5, please use the 11.5 environment
```
-Note: This conda installation only applies to Linux and Python versions 3.7/3.8.
+Note: This conda installation only applies to Linux and Python versions 3.8/3.9.
## Build from Source and Contributing
diff --git a/conda/environments/cugraph_dev_cuda11.0.yml b/conda/environments/cugraph_dev_cuda11.0.yml
deleted file mode 100644
index d596d0c1bb4..00000000000
--- a/conda/environments/cugraph_dev_cuda11.0.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-name: cugraph_dev
-channels:
-- rapidsai
-- nvidia
-- rapidsai-nightly
-- conda-forge
-dependencies:
-- cudatoolkit=11.0
-- libcugraphops=22.04.*
-- cudf=22.04.*
-- libcudf=22.04.*
-- rmm=22.04.*
-- librmm=22.04.*
-- libraft-headers=22.04.*
-- pyraft=22.04.*
-- cuda-python>=11.5,<12.0
-- dask==2022.03.0
-- distributed==2022.03.0
-- dask-cuda=22.04.*
-- dask-cudf=22.04.*
-- nccl>=2.9.9
-- ucx-py=0.25.*
-- ucx-proc=*=gpu
-- scipy
-- networkx>=2.5.1
-- clang=11.1.0
-- clang-tools=11.1.0
-- cmake>=3.20.1
-- python>=3.6,<3.9
-- notebook>=0.5.0
-- boost
-- cython>=0.29,<0.30
-- pytest
-- scikit-learn>=0.23.1
-- sphinx
-- pydata-sphinx-theme
-- sphinxcontrib-websupport
-- sphinx-markdown-tables
-- sphinx-copybutton
-- nbsphinx
-- numpydoc
-- ipython
-- recommonmark
-- pip
-- rapids-pytest-benchmark
-- doxygen
-- pytest-cov
-- gtest=1.10.0
-- gmock=1.10.0
diff --git a/docs/cugraph/source/basics/cugraph_blogs.rst b/docs/cugraph/source/basics/cugraph_blogs.rst
index 35db20ff454..4d544787977 100644
--- a/docs/cugraph/source/basics/cugraph_blogs.rst
+++ b/docs/cugraph/source/basics/cugraph_blogs.rst
@@ -7,8 +7,12 @@ these blog posts provide deeper dives into features from cuGraph.
Here, we've selected just a few that are of particular interest to cuGraph users:
-BLOGS
-==============
+BLOGS & Conferences
+====================
+2018
+-------
+ * `GTC18 Fall - RAPIDS: Benchmarking Graph Analytics on the DGX-2 `_
+
2019
-------
@@ -16,7 +20,8 @@ BLOGS
* `RAPIDS cuGraph — The vision and journey to version 1.0 and beyond `_
* `RAPIDS cuGraph : multi-GPU PageRank `_
* `Similarity in graphs: Jaccard versus the Overlap Coefficient `_
-
+ * `GTC19 Spring - Accelerating Graph Algorithms with RAPIDS `_
+ * `GTC19 Fall - Multi-Node Multi-GPU Machine Learning and Graph Analytics with RAPIDS `_
2020
------
@@ -24,10 +29,19 @@ BLOGS
* `Tackling Large Graphs with RAPIDS cuGraph and CUDA Unified Memory on GPUs `_
* `RAPIDS cuGraph adds NetworkX and DiGraph Compatibility `_
* `Large Graph Visualization with RAPIDS cuGraph `_
+ * `GTC 20 Fall - cuGraph Goes Big `_
2021
------
- *
+ * `GTC 21 - State of RAPIDS cuGraph and what's comming next `_
+
+
+2022
+------
+ * `GTC: State of cuGraph (video & slides) `_
+ * `GTC: Scaling and Validating Louvain in cuGraph against Massive Graphs (video & slides) `_
+
+
@@ -38,7 +52,13 @@ Media
Academic Papers
===============
-* S. Kang, A. Fender, J. Eaton, B. Rees: Computing PageRank Scores of Web Crawl Data Using DGX A100 Clusters. In IEEE HPEC, Sep. 2020
+
+ * S Kang, A. Fender, J. Eaton, B. Rees:`Computing PageRank Scores of Web Crawl Data Using DGX A100 Clusters`. In IEEE HPEC, Sep. 2020
+
+ * Hricik, T., Bader, D., & Green, O. (2020, September). `Using RAPIDS AI to accelerate graph data science workflows`. In 2020 IEEE High Performance Extreme Computing Conference (HPEC) (pp. 1-4). IEEE.
+
+ * Richardson, B., Rees, B., Drabas, T., Oldridge, E., Bader, D. A., & Allen, R. (2020, August). Accelerating and Expanding End-to-End Data Science Workflows with DL/ML Interoperability Using RAPIDS. In Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (pp. 3503-3504).
+
Other BLOGS
diff --git a/docs/cugraph/source/basics/cugraph_intro.md b/docs/cugraph/source/basics/cugraph_intro.md
index 142395fb719..0684129503f 100644
--- a/docs/cugraph/source/basics/cugraph_intro.md
+++ b/docs/cugraph/source/basics/cugraph_intro.md
@@ -67,3 +67,8 @@ documentation we will mostly use the terms __Node__ and __Edge__ to better
match NetworkX preferred term use, as well as other Python-based tools. At
the CUDA/C layer, we favor the mathematical terms of __Vertex__ and __Edge__.
+# Roadmap
+GitHub does not provide a robust project management interface, and so a roadmap turns into simply a projection of when work will be completed and not a complete picture of everything that needs to be done. To capture the work that requires multiple steps, issues are labels as “EPIC” and include multiple subtasks that could span multiple releases. The EPIC will be in the release where work in expected to be completed. A better roadmap is being worked an image of the roadmap will be posted when ready.
+
+ * GitHub Project Board: https://github.com/rapidsai/cugraph/projects/28
+
\ No newline at end of file
diff --git a/img/Scaling.png b/img/Scaling.png
new file mode 100644
index 0000000000000000000000000000000000000000..484c26ce2938f9df5014a5359a093a602deedbf4
GIT binary patch
literal 148382
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