Skip to content

Commit f5e7808

Browse files
authored
Merge pull request #1970 from rapidsai/branch-21.12
[RELEASE] cugraph v21.12
2 parents 8461702 + 4b8c133 commit f5e7808

235 files changed

Lines changed: 19701 additions & 2850 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 87 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,91 @@
1-
# cuGraph 21.10.00 (Date TBD)
1+
# cuGraph 21.12.00 (Date TBD)
22

3-
Please see https://github.com/rapidsai/cugraph/releases/tag/v21.10.00a for the latest changes to this development branch.
3+
Please see https://github.com/rapidsai/cugraph/releases/tag/v21.12.00a for the latest changes to this development branch.
4+
5+
# cuGraph 21.10.00 (7 Oct 2021)
6+
7+
## 🚨 Breaking Changes
8+
9+
- remove tsp implementation from 21.10 ([#1812](https://github.com/rapidsai/cugraph/pull/1812)) [@ChuckHastings](https://github.com/ChuckHastings)
10+
- multi seeds BFS with one seed per component ([#1591](https://github.com/rapidsai/cugraph/pull/1591)) [@afender](https://github.com/afender)
11+
12+
## 🐛 Bug Fixes
13+
14+
- make_zip_iterator should be on a make_tuple ([#1857](https://github.com/rapidsai/cugraph/pull/1857)) [@ChuckHastings](https://github.com/ChuckHastings)
15+
- Removed NetworkX requirement for type checks, fixed docstring, added new docstrings, import cleanups ([#1853](https://github.com/rapidsai/cugraph/pull/1853)) [@rlratzel](https://github.com/rlratzel)
16+
- Temporarily disable input argument checks for a currently disabled feature ([#1840](https://github.com/rapidsai/cugraph/pull/1840)) [@seunghwak](https://github.com/seunghwak)
17+
- Changed value of the expensive check param to `false` in `populate_graph_container` ([#1839](https://github.com/rapidsai/cugraph/pull/1839)) [@rlratzel](https://github.com/rlratzel)
18+
- Accommodate cudf change to is_string_dtype method ([#1827](https://github.com/rapidsai/cugraph/pull/1827)) [@ChuckHastings](https://github.com/ChuckHastings)
19+
- Changed code to disable `k_truss` on CUDA 11.4 differently ([#1811](https://github.com/rapidsai/cugraph/pull/1811)) [@rlratzel](https://github.com/rlratzel)
20+
- Clean-up artifacts from the multi-source BFS PR ([#1591) (#1804](https://github.com/rapidsai/cugraph/pull/1591) (#1804)) [@seunghwak](https://github.com/seunghwak)
21+
- MG WCC bug fix ([#1802](https://github.com/rapidsai/cugraph/pull/1802)) [@seunghwak](https://github.com/seunghwak)
22+
- Fix MG Louvain test compile errors ([#1797](https://github.com/rapidsai/cugraph/pull/1797)) [@seunghwak](https://github.com/seunghwak)
23+
- force_atlas2 to support nx hypercube_graph ([#1779](https://github.com/rapidsai/cugraph/pull/1779)) [@jnke2016](https://github.com/jnke2016)
24+
- Bug louvain reverted fix ([#1766](https://github.com/rapidsai/cugraph/pull/1766)) [@ChuckHastings](https://github.com/ChuckHastings)
25+
- Bug dask cudf personalization ([#1764](https://github.com/rapidsai/cugraph/pull/1764)) [@Iroy30](https://github.com/Iroy30)
26+
27+
## 📖 Documentation
28+
29+
- updated to new doc theme ([#1793](https://github.com/rapidsai/cugraph/pull/1793)) [@BradReesWork](https://github.com/BradReesWork)
30+
- Change python docs to pydata theme ([#1785](https://github.com/rapidsai/cugraph/pull/1785)) [@galipremsagar](https://github.com/galipremsagar)
31+
- Initial doc update for running the python E2E benchmarks in a MNMG environment. ([#1781](https://github.com/rapidsai/cugraph/pull/1781)) [@rlratzel](https://github.com/rlratzel)
32+
33+
## 🚀 New Features
34+
35+
- C++ benchmarking for additional algorithms ([#1762](https://github.com/rapidsai/cugraph/pull/1762)) [@seunghwak](https://github.com/seunghwak)
36+
37+
## 🛠️ Improvements
38+
39+
- Updating cuco to latest ([#1859](https://github.com/rapidsai/cugraph/pull/1859)) [@BradReesWork](https://github.com/BradReesWork)
40+
- fix benchmark exit status ([#1850](https://github.com/rapidsai/cugraph/pull/1850)) [@jnke2016](https://github.com/jnke2016)
41+
- add try/catch for python-louvain ([#1842](https://github.com/rapidsai/cugraph/pull/1842)) [@BradReesWork](https://github.com/BradReesWork)
42+
- Pin max dask and distributed versions to 2021.09.1 ([#1841](https://github.com/rapidsai/cugraph/pull/1841)) [@galipremsagar](https://github.com/galipremsagar)
43+
- add compiler version checks to cmake to fail early ([#1836](https://github.com/rapidsai/cugraph/pull/1836)) [@ChuckHastings](https://github.com/ChuckHastings)
44+
- Make sure we keep the rapids-cmake and cugraph cal version in sync ([#1830](https://github.com/rapidsai/cugraph/pull/1830)) [@robertmaynard](https://github.com/robertmaynard)
45+
- Remove obsolete file ([#1829](https://github.com/rapidsai/cugraph/pull/1829)) [@ChuckHastings](https://github.com/ChuckHastings)
46+
- Improve memory scaling for low average vertex degree graphs & many GPUs ([#1823](https://github.com/rapidsai/cugraph/pull/1823)) [@seunghwak](https://github.com/seunghwak)
47+
- Added the reduction op input parameter to host_scalar_(all)reduce utility functions. ([#1822](https://github.com/rapidsai/cugraph/pull/1822)) [@seunghwak](https://github.com/seunghwak)
48+
- Count if e test ([#1821](https://github.com/rapidsai/cugraph/pull/1821)) [@kaatish](https://github.com/kaatish)
49+
- Added Sorensen algorithm to Python API ([#1820](https://github.com/rapidsai/cugraph/pull/1820)) [@jnke2016](https://github.com/jnke2016)
50+
- Updated to enforce only supported dtypes, changed to use legacy connected_components API ([#1817](https://github.com/rapidsai/cugraph/pull/1817)) [@rlratzel](https://github.com/rlratzel)
51+
- Group return values of renumber_edgelist and input parameters of graph_t & graph_view_t constructors. ([#1816](https://github.com/rapidsai/cugraph/pull/1816)) [@seunghwak](https://github.com/seunghwak)
52+
- remove tsp implementation from 21.10 ([#1812](https://github.com/rapidsai/cugraph/pull/1812)) [@ChuckHastings](https://github.com/ChuckHastings)
53+
- Changed pylibcugraph connected_components APIs to use duck typing for CAI inputs, added doc placeholders ([#1810](https://github.com/rapidsai/cugraph/pull/1810)) [@rlratzel](https://github.com/rlratzel)
54+
- Add new new raft symlink path to .gitignore ([#1808](https://github.com/rapidsai/cugraph/pull/1808)) [@trxcllnt](https://github.com/trxcllnt)
55+
- Initial version of `pylibcugraph` conda package and CI build script updates ([#1806](https://github.com/rapidsai/cugraph/pull/1806)) [@rlratzel](https://github.com/rlratzel)
56+
- Also building cpp MG tests as part of conda/CI libcugraph builds ([#1805](https://github.com/rapidsai/cugraph/pull/1805)) [@rlratzel](https://github.com/rlratzel)
57+
- Split many files to separate SG from MG template instantiations ([#1803](https://github.com/rapidsai/cugraph/pull/1803)) [@ChuckHastings](https://github.com/ChuckHastings)
58+
- Graph primitives memory scaling improvements for low average vertex degree graphs and many GPUs (Part 1) ([#1801](https://github.com/rapidsai/cugraph/pull/1801)) [@seunghwak](https://github.com/seunghwak)
59+
- Pylibcugraph connected components ([#1800](https://github.com/rapidsai/cugraph/pull/1800)) [@Iroy30](https://github.com/Iroy30)
60+
- Transform Reduce E test ([#1798](https://github.com/rapidsai/cugraph/pull/1798)) [@kaatish](https://github.com/kaatish)
61+
- Update with rapids cmake new features ([#1790](https://github.com/rapidsai/cugraph/pull/1790)) [@robertmaynard](https://github.com/robertmaynard)
62+
- Update thrust/RMM deprecated calls ([#1789](https://github.com/rapidsai/cugraph/pull/1789)) [@dantegd](https://github.com/dantegd)
63+
- Update UCX-Py to 0.22 ([#1788](https://github.com/rapidsai/cugraph/pull/1788)) [@pentschev](https://github.com/pentschev)
64+
- Initial version of `pylibcugraph` source tree and build script updates ([#1787](https://github.com/rapidsai/cugraph/pull/1787)) [@rlratzel](https://github.com/rlratzel)
65+
- Fix Forward-Merge Conflicts ([#1786](https://github.com/rapidsai/cugraph/pull/1786)) [@ajschmidt8](https://github.com/ajschmidt8)
66+
- add conda environment for CUDA 11.4 ([#1784](https://github.com/rapidsai/cugraph/pull/1784)) [@seunghwak](https://github.com/seunghwak)
67+
- Temporarily pin RMM while refactor removes deprecated calls ([#1775](https://github.com/rapidsai/cugraph/pull/1775)) [@dantegd](https://github.com/dantegd)
68+
- MNMG memory footprint improvement for low average vertex degree graphs (part 2) ([#1774](https://github.com/rapidsai/cugraph/pull/1774)) [@seunghwak](https://github.com/seunghwak)
69+
- Fix unused variables/parameters warnings ([#1772](https://github.com/rapidsai/cugraph/pull/1772)) [@seunghwak](https://github.com/seunghwak)
70+
- MNMG memory footprint improvement for low average vertex degree graphs (part 1) ([#1769](https://github.com/rapidsai/cugraph/pull/1769)) [@seunghwak](https://github.com/seunghwak)
71+
- Transform reduce v test ([#1768](https://github.com/rapidsai/cugraph/pull/1768)) [@kaatish](https://github.com/kaatish)
72+
- Move experimental source files and a few implementation headers ([#1763](https://github.com/rapidsai/cugraph/pull/1763)) [@ChuckHastings](https://github.com/ChuckHastings)
73+
- updating notebooks ([#1761](https://github.com/rapidsai/cugraph/pull/1761)) [@BradReesWork](https://github.com/BradReesWork)
74+
- consolidate tests to use the fixture dask_client ([#1758](https://github.com/rapidsai/cugraph/pull/1758)) [@jnke2016](https://github.com/jnke2016)
75+
- Move all new graph objects out of experimental namespace ([#1757](https://github.com/rapidsai/cugraph/pull/1757)) [@ChuckHastings](https://github.com/ChuckHastings)
76+
- C++ benchmarking for MG PageRank ([#1755](https://github.com/rapidsai/cugraph/pull/1755)) [@seunghwak](https://github.com/seunghwak)
77+
- Move legacy implementations into legacy directories ([#1752](https://github.com/rapidsai/cugraph/pull/1752)) [@ChuckHastings](https://github.com/ChuckHastings)
78+
- Remove hardcoded Pagerank dtype ([#1751](https://github.com/rapidsai/cugraph/pull/1751)) [@jnke2016](https://github.com/jnke2016)
79+
- Add python end to end benchmark and create new directories ([#1750](https://github.com/rapidsai/cugraph/pull/1750)) [@jnke2016](https://github.com/jnke2016)
80+
- Modify MNMG louvain to support an empty vertex partition ([#1744](https://github.com/rapidsai/cugraph/pull/1744)) [@ChuckHastings](https://github.com/ChuckHastings)
81+
- Fea renumbering test ([#1742](https://github.com/rapidsai/cugraph/pull/1742)) [@ChuckHastings](https://github.com/ChuckHastings)
82+
- Fix auto-merger for Branch 21.10 coming from 21.08 ([#1740](https://github.com/rapidsai/cugraph/pull/1740)) [@galipremsagar](https://github.com/galipremsagar)
83+
- Use the new RAPIDS.cmake to fetch rapids-cmake ([#1734](https://github.com/rapidsai/cugraph/pull/1734)) [@robertmaynard](https://github.com/robertmaynard)
84+
- Biased Random Walks for GNN ([#1732](https://github.com/rapidsai/cugraph/pull/1732)) [@aschaffer](https://github.com/aschaffer)
85+
- Updated MG python tests to run in single and multi-node environments ([#1731](https://github.com/rapidsai/cugraph/pull/1731)) [@rlratzel](https://github.com/rlratzel)
86+
- ENH Replace gpuci_conda_retry with gpuci_mamba_retry ([#1720](https://github.com/rapidsai/cugraph/pull/1720)) [@dillon-cullinan](https://github.com/dillon-cullinan)
87+
- Apply modifications to account for RAFT changes ([#1707](https://github.com/rapidsai/cugraph/pull/1707)) [@viclafargue](https://github.com/viclafargue)
88+
- multi seeds BFS with one seed per component ([#1591](https://github.com/rapidsai/cugraph/pull/1591)) [@afender](https://github.com/afender)
489

590
# cuGraph 21.08.00 (4 Aug 2021)
691

@@ -224,7 +309,6 @@ Please see https://github.com/rapidsai/cugraph/releases/tag/v21.10.00a for the l
224309
- Create labeler.yml (#1318) @jolorunyomi
225310
- Updates to support nightly MG test automation (#1308) @rlratzel
226311
- Add C++ graph functions (coarsen_grpah, renumber_edgelist, relabel) and primitvies (transform_reduce_by_adj_matrix_row_key, transform_reduce_by_adj_matrix_col_key, copy_v_transform_reduce_key_aggregated_out_nbr) (#1257) @seunghwak
227-
>>>>>>> upstream/branch-0.18
228312

229313
# cuGraph 0.17.0 (10 Dec 2020)
230314
## New Features

README.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ As of Release 21.08 - including 21.08 nightly
4343

4444

4545
## Supported Algorithms
46+
_Italic_ algorithms are planned for future releases.
4647

4748
| Category | Algorithm | Scale | Notes |
4849
| ------------ | -------------------------------------- | ------------ | ------------------- |
@@ -66,6 +67,10 @@ As of Release 21.08 - including 21.08 nightly
6667
| Core | | | |
6768
| | K-Core | Single-GPU | |
6869
| | Core Number | Single-GPU | |
70+
| _Flow_ | | | |
71+
| | _MaxFlow_ | --- | |
72+
| _Influence_ | | | |
73+
| | _Influence Maximization_ | --- | |
6974
| Layout | | | |
7075
| | Force Atlas 2 | Single-GPU | |
7176
| Linear Assignment| | | |
@@ -78,8 +83,11 @@ As of Release 21.08 - including 21.08 nightly
7883
| | Jaccard Similarity | Single-GPU | |
7984
| | Weighted Jaccard Similarity | Single-GPU | |
8085
| | Overlap Similarity | Single-GPU | |
86+
| | Sorensen Coefficient | Single-GPU | |
87+
| | _Local Clustering Coefficient_ | --- | |
8188
| Sampling | | | |
82-
| | Random Walks (RW) | Single-GPU | |
89+
| | Random Walks (RW) | Single-GPU | Biased and Uniform |
90+
| | _node2vec_ | --- | |
8391
| Traversal | | | |
8492
| | Breadth First Search (BFS) | Multi-GPU | with cutoff support <br/> [C++ README](cpp/src/traversal/README.md#BFS) |
8593
| | Single Source Shortest Path (SSSP) | Multi-GPU | [C++ README](cpp/src/traversal/README.md#SSSP) |
@@ -89,16 +97,18 @@ As of Release 21.08 - including 21.08 nightly
8997
| Other | | | |
9098
| | Renumbering | Multi-GPU | multiple columns, any data type |
9199
| | Symmetrize | Multi-GPU | |
100+
| Data Generator | | | |
101+
| | RMAT | Multi-GPU | |
102+
| | _Barabasi-Albert_ | --- | |
92103
| | |
93104

94105
</br></br>
95106
## Supported Graph
96107
| Type | Description |
97108
| --------------- | --------------------------------------------------- |
98-
| Graph | An undirected Graph |
99-
| DiGraph | A Directed Graph |
109+
| Graph | An undirected Graph is default |
110+
| | directed=True yields a Directed Graph |
100111
| Multigraph | A Graph with multiple edges between a vertex pair |
101-
| MultiDigraph | A Directed Graph with multiple edges between a vertex pair |
102112
| | |
103113

104114
ALL Algorithms support Graphs and MultiGraph (directed and undirected)
@@ -156,6 +166,9 @@ conda install -c nvidia -c rapidsai -c numba -c conda-forge cugraph cudatoolkit=
156166

157167
# CUDA 11.2
158168
conda install -c nvidia -c rapidsai -c numba -c conda-forge cugraph cudatoolkit=11.2
169+
170+
# CUDA 11.4
171+
conda install -c nvidia -c rapidsai -c numba -c conda-forge cugraph cudatoolkit=11.4
159172
```
160173

161174
Note: This conda installation only applies to Linux and Python versions 3.7/3.8.

benchmarks/python_e2e/cugraph_dask_funcs.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from cugraph.comms import comms as Comms
2424
from cugraph.dask.common.mg_utils import get_visible_devices
2525
from cugraph.generators import rmat
26+
import tempfile
2627

2728

2829
def generate_edgelist(scale,
@@ -165,8 +166,12 @@ def setup(dask_scheduler_file=None):
165166
client = Client(scheduler_file=dask_scheduler_file)
166167

167168
else:
168-
cluster = LocalCUDACluster()
169+
tempdir_object = tempfile.TemporaryDirectory()
170+
cluster = LocalCUDACluster(local_directory=tempdir_object.name)
169171
client = Client(cluster)
172+
# add the obj to the client so it doesn't get deleted until
173+
# the 'client' obj gets cleaned up
174+
client.tempdir_object = tempdir_object
170175
client.wait_for_workers(len(get_visible_devices()))
171176

172177
Comms.initialize(p2p=True)

benchmarks/python_e2e/main.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,31 @@
2323
import cugraph_dask_funcs
2424
from benchmark import BenchmarkRun
2525

26+
import json
27+
from pathlib import Path
28+
29+
30+
def store_results_json(benchmark_dir=None,
31+
algo_name=None,
32+
algo_time=None,
33+
n_gpus=None,
34+
scale=None):
35+
"""
36+
Store all benchmark results in json files
37+
"""
38+
benchmark_result = {}
39+
benchmark_result['funcName'] = algo_name
40+
benchmark_result['result'] = algo_time
41+
benchmark_result['argNameValuePairs'] = [('scale', scale), ('ngpus', n_gpus)]
42+
43+
json_object = json.dumps(benchmark_result, indent=4)
44+
45+
benchmark_dir_path = Path(benchmark_dir)
46+
47+
with open(f"{benchmark_dir_path}/benchmark_result_scale_{scale}_ngpus_{n_gpus}_{algo_name}.json", "w") as outfile:
48+
outfile.write(json_object)
49+
50+
2651

2752
def log(s, end="\n"):
2853
print(s, end=end)
@@ -36,6 +61,7 @@ def run(algos,
3661
unweighted=False,
3762
symmetric=False,
3863
edgefactor=None,
64+
benchmark_dir=None,
3965
dask_scheduler_file=None):
4066
"""
4167
Run the nightly benchmark on cugraph.
@@ -47,6 +73,9 @@ def run(algos,
4773
funcs = cugraph_funcs
4874
else:
4975
funcs = cugraph_dask_funcs
76+
# For MNMG, find the number of GPUS after the client and
77+
# and the cluster started
78+
n_gpus = None
5079

5180
# Setup the benchmarks to run based on algos specified, or all.
5281
# Values are either callables, or tuples of (callable, args) pairs.
@@ -72,6 +101,11 @@ def run(algos,
72101
# output files/reports, etc.
73102
log("calling setup...", end="")
74103
setup_objs = funcs.setup(dask_scheduler_file)
104+
105+
# If the number of GPUs is None, This is a MNMG run
106+
# Extract the number of gpus from the client
107+
if n_gpus is None:
108+
n_gpus = len(setup_objs[0].scheduler_info()['workers'])
75109
log("done.")
76110

77111
try:
@@ -95,6 +129,13 @@ def run(algos,
95129
)
96130
success = benchmark.run()
97131

132+
algo_name = benchmark.results[1].name
133+
algo_name = f"benchmarks.{algo_name}"
134+
algo_time = benchmark.results[1].runtime
135+
# Generate json files containing the benchmark results
136+
if benchmark_dir is not None:
137+
store_results_json(benchmark_dir, algo_name, algo_time, n_gpus, scale)
138+
98139
# Report results
99140
print(generate_console_report(benchmark.results))
100141
if csv_results_file:
@@ -136,6 +177,9 @@ def run(algos,
136177
ap.add_argument("--edgefactor", type=int, default=16,
137178
help="edge factor for the graph edgelist generator "
138179
"(num_edges=num_verts*EDGEFACTOR).")
180+
ap.add_argument("--benchmark-dir", type=str, default=None,
181+
help="directory to store the results in json files")
182+
139183
args = ap.parse_args()
140184

141185
exitcode = run(algos=args.algo,
@@ -145,6 +189,7 @@ def run(algos,
145189
unweighted=args.unweighted,
146190
symmetric=args.symmetric_graph,
147191
edgefactor=args.edgefactor,
192+
benchmark_dir=args.benchmark_dir,
148193
dask_scheduler_file=args.dask_scheduler_file)
149194

150195
sys.exit(exitcode)

benchmarks/python_pytest_based/bench_algos.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ def setFixtureParamNames(*args, **kwargs):
3737

3838
from .params import FIXTURE_PARAMS
3939

40-
4140
###############################################################################
4241
# Helpers
4342
def createGraph(csvFileName, graphType=None):

0 commit comments

Comments
 (0)