From a3cda5de57e7c5849c85befd5b27ccea21b10255 Mon Sep 17 00:00:00 2001 From: Alex Barghi <105237337+alexbarghi-nv@users.noreply.github.com> Date: Mon, 6 Nov 2023 21:28:06 -0500 Subject: [PATCH 01/14] [BUG] Restore the original default order of CSR, which does not reverse edges in cuGraph-PyG (#3980) OGB and many other datasets express the edge index in CSR order, but in release 23.10, the default order was changed to CSC, which broke downstream workflows. This PR restores the original default, which should be acceptable for the most common datasets, and familiar to most PyG users. Closes #3969 Authors: - Alex Barghi (https://github.com/alexbarghi-nv) Approvers: - Tingyu Wang (https://github.com/tingyu66) - Rick Ratzel (https://github.com/rlratzel) URL: https://github.com/rapidsai/cugraph/pull/3980 --- python/cugraph-pyg/cugraph_pyg/data/cugraph_store.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/python/cugraph-pyg/cugraph_pyg/data/cugraph_store.py b/python/cugraph-pyg/cugraph_pyg/data/cugraph_store.py index 6192cd621d5..d1b24543956 100644 --- a/python/cugraph-pyg/cugraph_pyg/data/cugraph_store.py +++ b/python/cugraph-pyg/cugraph_pyg/data/cugraph_store.py @@ -214,7 +214,7 @@ def __init__( num_nodes_dict: Dict[str, int], *, multi_gpu: bool = False, - order: str = "CSC", + order: str = "CSR", ): """ Constructs a new CuGraphStore from the provided @@ -260,11 +260,11 @@ def __init__( Whether the store should be backed by a multi-GPU graph. Requires dask to have been set up. - order: str (Optional ["CSR", "CSC"], default = CSC) - The order to use for sampling. Should nearly always be CSC - unless there is a specific expectation of "reverse" sampling. - It is also not uncommon to use CSR order for correctness - testing, which some cuGraph-PyG tests do. + order: str (Optional ["CSR", "CSC"], default = CSR) + The order to use for sampling. CSR corresponds to the + standard OGB dataset order that is usually used in PyG. + CSC order constructs the same graph as CSR, but with + edges in the opposite direction. """ if None in G: From ac5b981dabc0ca2645713164cc74367b4366cd8b Mon Sep 17 00:00:00 2001 From: Chuck Hastings <45364586+ChuckHastings@users.noreply.github.com> Date: Tue, 7 Nov 2023 15:17:16 -0500 Subject: [PATCH 02/14] Fix eigenvector testing and HITS testing discrepancies (#3979) Address a couple of bugs discovered in nx-cugraph testing. HITS should raise an exception if it fails to converge. Eigenvector computation was not quite right, nx-cugraph testing discovered an edge condition where it was obvious. Closes #3971 Closes #3972 Authors: - Chuck Hastings (https://github.com/ChuckHastings) Approvers: - Naim (https://github.com/naimnv) - Seunghwa Kang (https://github.com/seunghwak) - Rick Ratzel (https://github.com/rlratzel) URL: https://github.com/rapidsai/cugraph/pull/3979 --- .../eigenvector_centrality_impl.cuh | 10 +++++++++- cpp/src/link_analysis/hits_impl.cuh | 17 ++++++++++------- cpp/tests/c_api/eigenvector_centrality_test.c | 19 +++++++++++++++++++ .../eigenvector_centrality_test.cpp | 1 - cpp/tests/link_analysis/hits_test.cpp | 4 ++-- .../cugraph/tests/link_analysis/test_hits.py | 6 +++++- 6 files changed, 45 insertions(+), 12 deletions(-) diff --git a/cpp/src/centrality/eigenvector_centrality_impl.cuh b/cpp/src/centrality/eigenvector_centrality_impl.cuh index 291abf18455..8d1bea4004d 100644 --- a/cpp/src/centrality/eigenvector_centrality_impl.cuh +++ b/cpp/src/centrality/eigenvector_centrality_impl.cuh @@ -96,7 +96,8 @@ rmm::device_uvector eigenvector_centrality( centralities.end(), old_centralities.data()); - update_edge_src_property(handle, pull_graph_view, centralities.begin(), edge_src_centralities); + update_edge_src_property( + handle, pull_graph_view, old_centralities.begin(), edge_src_centralities); if (edge_weight_view) { per_v_transform_reduce_incoming_e( @@ -122,6 +123,13 @@ rmm::device_uvector eigenvector_centrality( centralities.begin()); } + thrust::transform(handle.get_thrust_policy(), + centralities.begin(), + centralities.end(), + old_centralities.begin(), + centralities.begin(), + thrust::plus()); + // Normalize the centralities auto hypotenuse = sqrt(transform_reduce_v( handle, diff --git a/cpp/src/link_analysis/hits_impl.cuh b/cpp/src/link_analysis/hits_impl.cuh index 9badb041218..674046745b1 100644 --- a/cpp/src/link_analysis/hits_impl.cuh +++ b/cpp/src/link_analysis/hits_impl.cuh @@ -112,7 +112,8 @@ std::tuple hits(raft::handle_t const& handle, prev_hubs + graph_view.local_vertex_partition_range_size(), result_t{1.0} / num_vertices); } - for (size_t iter = 0; iter < max_iterations; ++iter) { + size_t iter{0}; + while (true) { // Update current destination authorities property per_v_transform_reduce_incoming_e( handle, @@ -162,17 +163,19 @@ std::tuple hits(raft::handle_t const& handle, thrust::make_zip_iterator(thrust::make_tuple(curr_hubs, prev_hubs)), [] __device__(auto, auto val) { return std::abs(thrust::get<0>(val) - thrust::get<1>(val)); }, result_t{0}); - if (diff_sum < epsilon) { - final_iteration_count = iter; - std::swap(prev_hubs, curr_hubs); - break; - } update_edge_src_property(handle, graph_view, curr_hubs, prev_src_hubs); // Swap pointers for the next iteration // After this swap call, prev_hubs has the latest value of hubs std::swap(prev_hubs, curr_hubs); + iter++; + + if (diff_sum < epsilon) { + break; + } else if (iter >= max_iterations) { + CUGRAPH_FAIL("HITS failed to converge."); + } } if (normalize) { @@ -188,7 +191,7 @@ std::tuple hits(raft::handle_t const& handle, hubs); } - return std::make_tuple(diff_sum, final_iteration_count); + return std::make_tuple(diff_sum, iter); } } // namespace detail diff --git a/cpp/tests/c_api/eigenvector_centrality_test.c b/cpp/tests/c_api/eigenvector_centrality_test.c index 9fd2d2bee6f..8bc5971a70c 100644 --- a/cpp/tests/c_api/eigenvector_centrality_test.c +++ b/cpp/tests/c_api/eigenvector_centrality_test.c @@ -109,11 +109,30 @@ int test_eigenvector_centrality() h_src, h_dst, h_wgt, h_result, num_vertices, num_edges, TRUE, epsilon, max_iterations); } +int test_eigenvector_centrality_3971() +{ + size_t num_edges = 4; + size_t num_vertices = 3; + + vertex_t h_src[] = {0, 1, 1, 2}; + vertex_t h_dst[] = {1, 0, 2, 1}; + weight_t h_wgt[] = {1.0f, 1.0f, 1.0f, 1.0f}; + weight_t h_result[] = {0.5, 0.707107, 0.5}; + + double epsilon = 1e-6; + size_t max_iterations = 1000; + + // Eigenvector centrality wants store_transposed = TRUE + return generic_eigenvector_centrality_test( + h_src, h_dst, h_wgt, h_result, num_vertices, num_edges, TRUE, epsilon, max_iterations); +} + /******************************************************************************/ int main(int argc, char** argv) { int result = 0; result |= RUN_TEST(test_eigenvector_centrality); + result |= RUN_TEST(test_eigenvector_centrality_3971); return result; } diff --git a/cpp/tests/centrality/eigenvector_centrality_test.cpp b/cpp/tests/centrality/eigenvector_centrality_test.cpp index 7cafcfbde85..6c3bd510abd 100644 --- a/cpp/tests/centrality/eigenvector_centrality_test.cpp +++ b/cpp/tests/centrality/eigenvector_centrality_test.cpp @@ -60,7 +60,6 @@ void eigenvector_centrality_reference(vertex_t const* src, size_t iter{0}; while (true) { std::copy(tmp_centralities.begin(), tmp_centralities.end(), old_centralities.begin()); - std::fill(tmp_centralities.begin(), tmp_centralities.end(), double{0}); for (size_t e = 0; e < num_edges; ++e) { auto w = weights ? (*weights)[e] : weight_t{1.0}; diff --git a/cpp/tests/link_analysis/hits_test.cpp b/cpp/tests/link_analysis/hits_test.cpp index 44fa619b503..d0e77769034 100644 --- a/cpp/tests/link_analysis/hits_test.cpp +++ b/cpp/tests/link_analysis/hits_test.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020-2022, NVIDIA CORPORATION. + * Copyright (c) 2020-2023, NVIDIA CORPORATION. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -176,7 +176,7 @@ class Tests_Hits : public ::testing::TestWithParam d_hubs(graph_view.local_vertex_partition_range_size(), handle.get_stream()); diff --git a/python/cugraph/cugraph/tests/link_analysis/test_hits.py b/python/cugraph/cugraph/tests/link_analysis/test_hits.py index 1c5a135e944..fcfd8cc5318 100644 --- a/python/cugraph/cugraph/tests/link_analysis/test_hits.py +++ b/python/cugraph/cugraph/tests/link_analysis/test_hits.py @@ -38,7 +38,11 @@ def setup_function(): fixture_params = gen_fixture_params_product( (datasets, "graph_file"), ([50], "max_iter"), - ([1.0e-6], "tol"), + # FIXME: Changed this from 1.0e-6 to 1.0e-5. NX defaults to + # FLOAT64 computation, cuGraph C++ defaults to whatever the edge weight + # is, cugraph python defaults that to FLOAT32. Does not converge at + # 1e-6 for larger graphs and FLOAT32. + ([1.0e-5], "tol"), ) From 663d95fab0a9e6312f93d1190d6dfd590b081cd5 Mon Sep 17 00:00:00 2001 From: Vibhu Jawa Date: Tue, 7 Nov 2023 16:44:18 -0800 Subject: [PATCH 03/14] [REVIEW]Optimize cugraph-DGL csc codepath (#3977) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR optimizes `cugraph-DGL` csc codepath and adds an end to end benchmark using cugraph-dgl. ```python3 sampled_dir = "/raid/vjawa/nov_1_bulksampling_benchmarks/ogbn_papers100M[2]_b512_f[10, 10, 10]" dataset = HomogenousBulkSamplerDataset(meta_json_d["total_num_nodes"], edge_dir=edge_dir, sparse_format="csc", return_type="cugraph_dgl.nn.SparseGraph") dataset.set_input_files(input_directory=sampled_dir+"/samples") dataloader = torch.utils.data.DataLoader(dataset, collate_fn=lambda x:x, shuffle=False, num_workers=0, batch_size=None) def run(dataloader): for input_nodes, output_nodes, blocks in dataloader: pass ``` ```python3 %%timeit run(dataloader) ``` With PR : ```python3 2.48 s ± 14 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) ``` MAIN: ```python3 %%timeit 9.52 s ± 151 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) ``` ### E2E Benchmarks: ``` python3 cugraph_dgl_benchmark.py ``` PR: ```python3 ... Epoch time = 70.41 seconds Time to create MFG = 3.37 seconds Time analysis for fanout = [10, 10, 10], batch_size = 512 mfg_creation_time_per_epoch = 3.37 seconds feature_time_per_epoch = 44.09 seconds m_fwd_time_per_epoch = 7.31 seconds m_bkwd_time_per_epoch = 15.60 seconds ``` MAIN: ```python3 .... Epoch time = 84.72 seconds Time to create MFG = 10.79 seconds Time analysis for fanout = [10, 10, 10], batch_size = 512 mfg_creation_time_per_epoch = 10.79 seconds feature_time_per_epoch = 47.09 seconds m_fwd_time_per_epoch = 8.24 seconds m_bkwd_time_per_epoch = 18.58 seconds ``` Authors: - Vibhu Jawa (https://github.com/VibhuJawa) Approvers: - Alex Barghi (https://github.com/alexbarghi-nv) - Tingyu Wang (https://github.com/tingyu66) URL: https://github.com/rapidsai/cugraph/pull/3977 --- .../scale-benchmarks/cugraph_dgl_benchmark.py | 152 ++++++++++++++++++ .../cugraph-dgl/scale-benchmarks/model.py | 17 +- .../bulk_sampling/cugraph_bulk_sampling.py | 55 +++++-- .../dataloading/utils/sampling_helpers.py | 71 ++++---- 4 files changed, 244 insertions(+), 51 deletions(-) create mode 100644 benchmarks/cugraph-dgl/scale-benchmarks/cugraph_dgl_benchmark.py diff --git a/benchmarks/cugraph-dgl/scale-benchmarks/cugraph_dgl_benchmark.py b/benchmarks/cugraph-dgl/scale-benchmarks/cugraph_dgl_benchmark.py new file mode 100644 index 00000000000..85f43b97b90 --- /dev/null +++ b/benchmarks/cugraph-dgl/scale-benchmarks/cugraph_dgl_benchmark.py @@ -0,0 +1,152 @@ +# Copyright (c) 2018-2023, NVIDIA CORPORATION. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import os + +os.environ["LIBCUDF_CUFILE_POLICY"] = "KVIKIO" +os.environ["KVIKIO_NTHREADS"] = "64" +os.environ["RAPIDS_NO_INITIALIZE"] = "1" +import json +import pandas as pd +import os +import time +from rmm.allocators.torch import rmm_torch_allocator +import rmm +import torch +from cugraph_dgl.dataloading import HomogenousBulkSamplerDataset +from model import run_1_epoch +from argparse import ArgumentParser +from load_graph_feats import load_node_labels, load_node_features + + +def create_dataloader(sampled_dir, total_num_nodes, sparse_format, return_type): + print("Creating dataloader", flush=True) + st = time.time() + dataset = HomogenousBulkSamplerDataset( + total_num_nodes, + edge_dir="in", + sparse_format=sparse_format, + return_type=return_type, + ) + + dataset.set_input_files(sampled_dir) + dataloader = torch.utils.data.DataLoader( + dataset, collate_fn=lambda x: x, shuffle=False, num_workers=0, batch_size=None + ) + et = time.time() + print(f"Time to create dataloader = {et - st:.2f} seconds", flush=True) + return dataloader + + +def setup_common_pool(): + rmm.reinitialize(initial_pool_size=5e9, pool_allocator=True) + torch.cuda.memory.change_current_allocator(rmm_torch_allocator) + + +def main(args): + print( + f"Running cugraph-dgl dataloading benchmark with the following parameters:\n" + f"Dataset path = {args.dataset_path}\n" + f"Sampling path = {args.sampling_path}\n" + ) + with open(os.path.join(args.dataset_path, "meta.json"), "r") as f: + input_meta = json.load(f) + + sampled_dirs = [ + os.path.join(args.sampling_path, f) for f in os.listdir(args.sampling_path) + ] + + time_ls = [] + for sampled_dir in sampled_dirs: + with open(os.path.join(sampled_dir, "output_meta.json"), "r") as f: + sampled_meta_d = json.load(f) + + replication_factor = sampled_meta_d["replication_factor"] + feat_load_st = time.time() + label_data = load_node_labels( + args.dataset_path, replication_factor, input_meta + )["paper"]["y"] + feat_data = feat_data = load_node_features( + args.dataset_path, replication_factor, node_type="paper" + ) + print( + f"Feature and label data loading took = {time.time()-feat_load_st}", + flush=True, + ) + + r_time_ls = e2e_benchmark(sampled_dir, feat_data, label_data, sampled_meta_d) + [x.update({"replication_factor": replication_factor}) for x in r_time_ls] + [x.update({"num_edges": sampled_meta_d["total_num_edges"]}) for x in r_time_ls] + time_ls.extend(r_time_ls) + + print( + f"Benchmark completed for replication factor = {replication_factor}\n{'=' * 30}", + flush=True, + ) + + df = pd.DataFrame(time_ls) + df.to_csv("cugraph_dgl_e2e_benchmark.csv", index=False) + print(f"Benchmark completed for all replication factors\n{'=' * 30}", flush=True) + + +def e2e_benchmark( + sampled_dir: str, feat: torch.Tensor, y: torch.Tensor, sampled_meta_d: dict +): + """ + Run the e2e_benchmark + Args: + sampled_dir: directory containing the sampled graph + feat: node features + y: node labels + sampled_meta_d: dictionary containing the sampled graph metadata + """ + time_ls = [] + + # TODO: Make this a parameter in bulk sampling script + sampled_meta_d["sparse_format"] = "csc" + sampled_dir = os.path.join(sampled_dir, "samples") + dataloader = create_dataloader( + sampled_dir, + sampled_meta_d["total_num_nodes"], + sampled_meta_d["sparse_format"], + return_type="cugraph_dgl.nn.SparseGraph", + ) + time_d = run_1_epoch( + dataloader, + feat, + y, + fanout=sampled_meta_d["fanout"], + batch_size=sampled_meta_d["batch_size"], + model_backend="cugraph_dgl", + ) + time_ls.append(time_d) + print("=" * 30) + return time_ls + + +def parse_arguments(): + parser = ArgumentParser() + parser.add_argument( + "--dataset_path", type=str, default="/raid/vjawa/ogbn_papers100M/" + ) + parser.add_argument( + "--sampling_path", + type=str, + default="/raid/vjawa/nov_1_bulksampling_benchmarks/", + ) + return parser.parse_args() + + +if __name__ == "__main__": + setup_common_pool() + arguments = parse_arguments() + main(arguments) diff --git a/benchmarks/cugraph-dgl/scale-benchmarks/model.py b/benchmarks/cugraph-dgl/scale-benchmarks/model.py index 08ae0e8b1ee..9a9dfe58f96 100644 --- a/benchmarks/cugraph-dgl/scale-benchmarks/model.py +++ b/benchmarks/cugraph-dgl/scale-benchmarks/model.py @@ -57,11 +57,11 @@ def create_model(feat_size, num_classes, num_layers, model_backend="dgl"): def train_model(model, dataloader, opt, feat, y): - times = {key: 0 for key in ["mfg_creation", "feature", "m_fwd", "m_bkwd"]} + times_d = {key: 0 for key in ["mfg_creation", "feature", "m_fwd", "m_bkwd"]} epoch_st = time.time() mfg_st = time.time() for input_nodes, output_nodes, blocks in dataloader: - times["mfg_creation"] += time.time() - mfg_st + times_d["mfg_creation"] += time.time() - mfg_st if feat is not None: fst = time.time() input_nodes = input_nodes.to("cpu") @@ -71,23 +71,24 @@ def train_model(model, dataloader, opt, feat, y): output_nodes = output_nodes["paper"] output_nodes = output_nodes.to(y.device) y_batch = y[output_nodes].to("cuda") - times["feature"] += time.time() - fst + times_d["feature"] += time.time() - fst m_fwd_st = time.time() y_hat = model(blocks, input_feat) - times["m_fwd"] += time.time() - m_fwd_st + times_d["m_fwd"] += time.time() - m_fwd_st m_bkwd_st = time.time() loss = F.cross_entropy(y_hat, y_batch) opt.zero_grad() loss.backward() opt.step() - times["m_bkwd"] += time.time() - m_bkwd_st + times_d["m_bkwd"] += time.time() - m_bkwd_st mfg_st = time.time() print(f"Epoch time = {time.time() - epoch_st:.2f} seconds") + print(f"Time to create MFG = {times_d['mfg_creation']:.2f} seconds") - return times + return times_d def analyze_time(dataloader, times, epoch_time, fanout, batch_size): @@ -119,6 +120,10 @@ def run_1_epoch(dataloader, feat, y, fanout, batch_size, model_backend): else: model = None opt = None + + # Warmup RUN + times = train_model(model, dataloader, opt, feat, y) + epoch_st = time.time() times = train_model(model, dataloader, opt, feat, y) epoch_time = time.time() - epoch_st diff --git a/benchmarks/cugraph/standalone/bulk_sampling/cugraph_bulk_sampling.py b/benchmarks/cugraph/standalone/bulk_sampling/cugraph_bulk_sampling.py index a8c0658767d..1ca5d6db637 100644 --- a/benchmarks/cugraph/standalone/bulk_sampling/cugraph_bulk_sampling.py +++ b/benchmarks/cugraph/standalone/bulk_sampling/cugraph_bulk_sampling.py @@ -22,7 +22,6 @@ get_allocation_counts_dask_lazy, sizeof_fmt, get_peak_output_ratio_across_workers, - restart_client, start_dask_client, stop_dask_client, enable_spilling, @@ -187,10 +186,10 @@ def sample_graph( output_path, seed=42, batch_size=500, - seeds_per_call=200000, + seeds_per_call=400000, batches_per_partition=100, fanout=[5, 5, 5], - persist=False, + sampling_kwargs={}, ): cupy.random.seed(seed) @@ -204,6 +203,7 @@ def sample_graph( seeds_per_call=seeds_per_call, batches_per_partition=batches_per_partition, log_level=logging.INFO, + **sampling_kwargs, ) n_workers = len(default_client().scheduler_info()["workers"]) @@ -469,6 +469,7 @@ def benchmark_cugraph_bulk_sampling( batch_size, seeds_per_call, fanout, + sampling_target_framework, reverse_edges=True, dataset_dir=".", replication_factor=1, @@ -564,17 +565,39 @@ def benchmark_cugraph_bulk_sampling( output_sample_path = os.path.join(output_subdir, "samples") os.makedirs(output_sample_path) - batches_per_partition = 200_000 // batch_size + if sampling_target_framework == "cugraph_dgl_csr": + sampling_kwargs = { + "deduplicate_sources": True, + "prior_sources_behavior": "carryover", + "renumber": True, + "compression": "CSR", + "compress_per_hop": True, + "use_legacy_names": False, + "include_hop_column": False, + } + else: + # FIXME: Update these arguments when CSC mode is fixed in cuGraph-PyG (release 24.02) + sampling_kwargs = { + "deduplicate_sources": True, + "prior_sources_behavior": "exclude", + "renumber": True, + "compression": "COO", + "compress_per_hop": False, + "use_legacy_names": False, + "include_hop_column": True, + } + + batches_per_partition = 400_000 // batch_size execution_time, allocation_counts = sample_graph( - G, - dask_label_df, - output_sample_path, + G=G, + label_df=dask_label_df, + output_path=output_sample_path, seed=seed, batch_size=batch_size, seeds_per_call=seeds_per_call, batches_per_partition=batches_per_partition, fanout=fanout, - persist=persist, + sampling_kwargs=sampling_kwargs, ) output_meta = { @@ -701,7 +724,13 @@ def get_args(): required=False, default=False, ) - + parser.add_argument( + "--sampling_target_framework", + type=str, + help="The target framework for sampling (i.e. cugraph_dgl_csr, cugraph_pyg_csc, ...)", + required=False, + default=None, + ) parser.add_argument( "--dask_worker_devices", type=str, @@ -738,6 +767,12 @@ def get_args(): logging.basicConfig() args = get_args() + if args.sampling_target_framework not in ["cugraph_dgl_csr", None]: + raise ValueError( + "sampling_target_framework must be one of cugraph_dgl_csr or None", + "Other frameworks are not supported at this time.", + ) + fanouts = [ [int(f) for f in fanout.split("_")] for fanout in args.fanouts.split(",") ] @@ -785,6 +820,7 @@ def get_args(): batch_size=batch_size, seeds_per_call=seeds_per_call, fanout=fanout, + sampling_target_framework=args.sampling_target_framework, dataset_dir=args.dataset_root, reverse_edges=args.reverse_edges, replication_factor=replication_factor, @@ -809,7 +845,6 @@ def get_args(): warnings.warn("An Exception Occurred!") print(e) traceback.print_exc() - restart_client(client) sleep(10) stats_df = pd.DataFrame( diff --git a/python/cugraph-dgl/cugraph_dgl/dataloading/utils/sampling_helpers.py b/python/cugraph-dgl/cugraph_dgl/dataloading/utils/sampling_helpers.py index a4f64668348..f674bece8be 100644 --- a/python/cugraph-dgl/cugraph_dgl/dataloading/utils/sampling_helpers.py +++ b/python/cugraph-dgl/cugraph_dgl/dataloading/utils/sampling_helpers.py @@ -14,7 +14,6 @@ from typing import List, Tuple, Dict, Optional from collections import defaultdict import cudf -import cupy from cugraph.utilities.utils import import_optional from cugraph_dgl.nn import SparseGraph @@ -444,53 +443,58 @@ def _process_sampled_df_csc( destinations, respectively. """ # dropna - major_offsets = df.major_offsets.dropna().values - label_hop_offsets = df.label_hop_offsets.dropna().values - renumber_map_offsets = df.renumber_map_offsets.dropna().values - renumber_map = df.map.dropna().values - minors = df.minors.dropna().values + major_offsets = cast_to_tensor(df.major_offsets.dropna()) + label_hop_offsets = cast_to_tensor(df.label_hop_offsets.dropna()) + renumber_map_offsets = cast_to_tensor(df.renumber_map_offsets.dropna()) + renumber_map = cast_to_tensor(df.map.dropna()) + minors = cast_to_tensor(df.minors.dropna()) - n_batches = renumber_map_offsets.size - 1 - n_hops = int((label_hop_offsets.size - 1) / n_batches) + n_batches = len(renumber_map_offsets) - 1 + n_hops = int((len(label_hop_offsets) - 1) / n_batches) # make global offsets local - major_offsets -= major_offsets[0] - label_hop_offsets -= label_hop_offsets[0] - renumber_map_offsets -= renumber_map_offsets[0] + # Have to make a clone as pytorch does not allow + # in-place operations on tensors + major_offsets -= major_offsets[0].clone() + label_hop_offsets -= label_hop_offsets[0].clone() + renumber_map_offsets -= renumber_map_offsets[0].clone() # get the sizes of each adjacency matrix (for MFGs) mfg_sizes = (label_hop_offsets[1:] - label_hop_offsets[:-1]).reshape( (n_batches, n_hops) ) n_nodes = renumber_map_offsets[1:] - renumber_map_offsets[:-1] - mfg_sizes = cupy.hstack((mfg_sizes, n_nodes.reshape(n_batches, -1))) + mfg_sizes = torch.hstack((mfg_sizes, n_nodes.reshape(n_batches, -1))) if reverse_hop_id: - mfg_sizes = mfg_sizes[:, ::-1] + mfg_sizes = mfg_sizes.flip(1) tensors_dict = {} renumber_map_list = [] + # Note: minors and major_offsets from BulkSampler are of type int32 + # and int64 respectively. Since pylibcugraphops binding code doesn't + # support distinct node and edge index type, we simply casting both + # to int32 for now. + minors = minors.int() + major_offsets = major_offsets.int() + # Note: We transfer tensors to CPU here to avoid the overhead of + # transferring them in each iteration of the for loop below. + major_offsets_cpu = major_offsets.to("cpu").numpy() + label_hop_offsets_cpu = label_hop_offsets.to("cpu").numpy() + for batch_id in range(n_batches): batch_dict = {} - for hop_id in range(n_hops): hop_dict = {} idx = batch_id * n_hops + hop_id # idx in label_hop_offsets - major_offsets_start = label_hop_offsets[idx].item() - major_offsets_end = label_hop_offsets[idx + 1].item() - minors_start = major_offsets[major_offsets_start].item() - minors_end = major_offsets[major_offsets_end].item() - # Note: minors and major_offsets from BulkSampler are of type int32 - # and int64 respectively. Since pylibcugraphops binding code doesn't - # support distinct node and edge index type, we simply casting both - # to int32 for now. - hop_dict["minors"] = torch.as_tensor( - minors[minors_start:minors_end], device="cuda" - ).int() - hop_dict["major_offsets"] = torch.as_tensor( + major_offsets_start = label_hop_offsets_cpu[idx] + major_offsets_end = label_hop_offsets_cpu[idx + 1] + minors_start = major_offsets_cpu[major_offsets_start] + minors_end = major_offsets_cpu[major_offsets_end] + hop_dict["minors"] = minors[minors_start:minors_end] + hop_dict["major_offsets"] = ( major_offsets[major_offsets_start : major_offsets_end + 1] - - major_offsets[major_offsets_start], - device="cuda", - ).int() + - major_offsets[major_offsets_start] + ) if reverse_hop_id: batch_dict[n_hops - 1 - hop_id] = hop_dict else: @@ -499,12 +503,9 @@ def _process_sampled_df_csc( tensors_dict[batch_id] = batch_dict renumber_map_list.append( - torch.as_tensor( - renumber_map[ - renumber_map_offsets[batch_id] : renumber_map_offsets[batch_id + 1] - ], - device="cuda", - ) + renumber_map[ + renumber_map_offsets[batch_id] : renumber_map_offsets[batch_id + 1] + ], ) return tensors_dict, renumber_map_list, mfg_sizes.tolist() From 9b9ce55070c42811a26d4ec1bed675d26962c36f Mon Sep 17 00:00:00 2001 From: brandon-b-miller <53796099+brandon-b-miller@users.noreply.github.com> Date: Wed, 8 Nov 2023 10:16:16 -0600 Subject: [PATCH 04/14] CuGraph compatibility fixes (#3973) This PR contains two changes. - A change that defers to `numpy.asarray` to process array objects that `cugraph` consumes - An update from using `unique` to use `drop_duplicates` in `simpleGraph.py`, which always always returns a Series to preserve pandas compatibility. Authors: - https://github.com/brandon-b-miller Approvers: - Rick Ratzel (https://github.com/rlratzel) URL: https://github.com/rapidsai/cugraph/pull/3973 --- python/cugraph/cugraph/structure/graph_classes.py | 3 +-- .../structure/graph_implementation/simpleGraph.py | 10 +++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/python/cugraph/cugraph/structure/graph_classes.py b/python/cugraph/cugraph/structure/graph_classes.py index 6f6c7e5a26c..03efcba0307 100644 --- a/python/cugraph/cugraph/structure/graph_classes.py +++ b/python/cugraph/cugraph/structure/graph_classes.py @@ -469,8 +469,7 @@ def from_numpy_array(self, np_array, nodes=None): nodes: array-like or None, optional (default=None) A list of column names, acting as labels for nodes """ - if not isinstance(np_array, np.ndarray): - raise TypeError("np_array input is not a Numpy array") + np_array = np.asarray(np_array) if len(np_array.shape) != 2: raise ValueError("np_array is not a 2D matrix") diff --git a/python/cugraph/cugraph/structure/graph_implementation/simpleGraph.py b/python/cugraph/cugraph/structure/graph_implementation/simpleGraph.py index 2b23d3a26b7..22d82eb1796 100644 --- a/python/cugraph/cugraph/structure/graph_implementation/simpleGraph.py +++ b/python/cugraph/cugraph/structure/graph_implementation/simpleGraph.py @@ -1286,9 +1286,13 @@ def nodes(self): else: return df[df.columns[0]] else: - return cudf.concat( - [df[simpleGraphImpl.srcCol], df[simpleGraphImpl.dstCol]] - ).unique() + return ( + cudf.concat( + [df[simpleGraphImpl.srcCol], df[simpleGraphImpl.dstCol]] + ) + .drop_duplicates() + .reset_index(drop=True) + ) if self.adjlist is not None: return cudf.Series(np.arange(0, self.number_of_nodes())) From 77bb2917729926b4d923e0f68a0fb76fabc90e8a Mon Sep 17 00:00:00 2001 From: Rick Ratzel <3039903+rlratzel@users.noreply.github.com> Date: Wed, 8 Nov 2023 10:51:33 -0600 Subject: [PATCH 05/14] Updates README file to include nx-cugraph user documentation, adds nx-cugraph to main README (#3984) * Updates the nx-cugraph README file to include nx-cugraph user documentation * Adds nx-cugraph and new News section to main README * Updates software strack diagram to remove DGL and PyG since they are not currently using PropertyGraph or cugraph-service Authors: - Rick Ratzel (https://github.com/rlratzel) - Ralph Liu (https://github.com/nv-rliu) Approvers: - Brad Rees (https://github.com/BradReesWork) --- README.md | 14 +++- img/Stack2.png | Bin 457436 -> 285038 bytes python/nx-cugraph/README.md | 135 +++++++++++++++++++++++++++++++----- 3 files changed, 132 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 560d1483242..8026e4feb64 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,18 @@ ----- +## News -## Table of content +___NEW!___ _[nx-cugraph](./python/nx-cugraph/README.md)_, a NetworkX backend that provides GPU acceleration to NetworkX with zero code change. +``` +> pip install nx-cugraph-cu11 --extra-index-url https://pypi.nvidia.com +> export NETWORKX_AUTOMATIC_BACKENDS=cugraph +``` +That's it. NetworkX now leverages cuGraph for accelerated graph algorithms. + +----- + +## Table of contents - Installation - [Getting cuGraph Packages](./docs/cugraph/source/installation/getting_cugraph.md) - [Building from Source](./docs/cugraph/source/installation/source_build.md) @@ -52,6 +62,7 @@ - [External Data Types](./readme_pages/data_types.md) - [pylibcugraph](./readme_pages/pylibcugraph.md) - [libcugraph (C/C++/CUDA)](./readme_pages/libcugraph.md) + - [nx-cugraph](./python/nx-cugraph/README.md) - [cugraph-service](./readme_pages/cugraph_service.md) - [cugraph-dgl](./readme_pages/cugraph_dgl.md) - [cugraph-ops](./readme_pages/cugraph_ops.md) @@ -116,6 +127,7 @@ df_page.sort_values('pagerank', ascending=False).head(10) * ArangoDB - a free and open-source native multi-model database system - https://www.arangodb.com/ * CuPy - "NumPy/SciPy-compatible Array Library for GPU-accelerated Computing with Python" - https://cupy.dev/ * Memgraph - In-memory Graph database - https://memgraph.com/ +* NetworkX (via [nx-cugraph](./python/nx-cugraph/README.md) backend) - an extremely popular, free and open-source package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks - https://networkx.org/ * PyGraphistry - free and open-source GPU graph ETL, AI, and visualization, including native RAPIDS & cuGraph support - http://github.com/graphistry/pygraphistry * ScanPy - a scalable toolkit for analyzing single-cell gene expression data - https://scanpy.readthedocs.io/en/stable/ diff --git a/img/Stack2.png b/img/Stack2.png index 132e85c9d154edb02d319803182e79654fbd345e..97f1979c2d86c3c7992a08411d6f2287e4bd8d6a 100644 GIT binary patch literal 285038 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�l9ml{1Knk8~CU4NoKIO#~k~2g@kLQh#^X?JRV{O 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

wR>xtus?tC77Y=xVa*a>=I}Y6(^i^WgE8; zt2c~agMkF*B`pFAKGiWzgF%ydLl32@dO5q(xSPHC3Ou*9wm%YHaqb&mRlkx6b>LsJ z!(en;v!m_oTe6=^Ljkb2B<}{!zm$QqKOVi1D|@ygcDD27A#LiMZa7ym;XIj)aZlUp zw{VgTbWncR?k{=u=of^rHnEocyfP(0J$k7Z}U7~5d6@1 z9xQRu4VNzG?Fj2)MXcO}*56(J^<`38@pqvy0e%&i>u;rCXiWRP|4jL~_qpi$YVg`F zA7rstGhJZkry2t14iN1S!fh*PukPjRjBsn19LJ7lxsbUD-MCF$47oJ{Lf}gHM0mF( zz070mEpgU{j{emIU7*6~ye6+G0LoX?wmy|0&q1sXWAT@v%O6{(3xl<`E5ziFyE2JP z8+=CsSV7N3;*<*1s(J#}_?J!8W?9=)7s<98$7hL7`iJ2J=4t|L0wV`^Bl}~RNv&zRgCKCHbFdrvdmvLRm!y}&o0<`B>M<3p= z2~%Dz6TKNu742O2#H3Hk-|)R4K3Oh;#~+CvME7+SONodV!-+33Zl2~x-iv(IzGY2e zy&CvuSZe^{vk1P!Ep3vHw2Kv`L97w3M1N!4Bm4R9I92yn!HZJ34pcsWRLB4GvFm>X zxBU5{f7l~pk78G*9vf$;T1$wl*oeU&h^P#7qvay)tZZvyLf;QM0Xc=J4opTRsj{8@>nrvsRxJ*pK>1k6*vEqJf0o7IrDc zY-I_mwvxVsx3f7A7k}$|cD(-5YMcC>LDT-}XDPE_9I!M!doUuWh!CkekxQ ziOyR!SRkD}TPLwK2AW_~NV4>U_59^9}F?83Xo z*XJZ!wLTQ?>rC;oiDP`Gw}T~b)ay$|A<<3A468fl*S`*yHgGP>PV5`g_(fU*ZkkpH zPPbc^CsJ-Au6+dzWOk_Y>!S+!qqj1M)^t*?<6U#^ZSPxvg31k)W0O?xLc!aGf=aCr z2dkv{*$vDjB-@;ODvj~{6b?@ne*o02M@liXPY>GlnefU5W-vdag`^@Z(w>;SAnojN{6{U{%7%!q_*eLKyjTH-a^T@iM)HE(JLZ6;Z- zsy4TG%+1X-oL~LbF2_<(u=0yOCWx9yB>vKTpld3~L6)0h82SAvVI`@9d%v9?*2MIns6F@lvfA` z|2|w|Bb+)RP){!}z}i$N#XFMn&wTVC+UdDa5IQZO$-8j3eSZ%|0sn0{>$QcT&PC?RH;C4jf{Yc~$SXj%F#q%U7>=xv_|_Bsmrr;mTkj zPw@d*V*>3a4WBglq9X_|BOO#qI)yax+5mm=k}pAec1K;(08*kY0jF)Ov&W*i7Py6! z|D z4is2F&7g|#0ANYLCZV@@cpitOZ{(X?f>PB+i8uIq<@Q}qBmlAp$Ei}-7LvH? z`#sT{#qJ>1C$2)G!tlVh|5~(uC%dfYr~oU&e@(UeJWxKaXCg{(I8M?I;8hmx5cGgj zN3l~6Sb_E`Cyxrrft5p7802Nf6Nl!m2mg%pJcTC4bj{7pY@(*n+y+YUKvF?7kWHys zitw%_KL`8tZ`Yeh*CVX7FNU;30Z*7ou1P2aUQhzP{5_=Hbt|jW$+-m`xQ2<5T1dy) ziS)fPgbR`@gZVu8F1UX_pyL80(6j+JjbWsfF4F-oCj!&PQ!a1jxv$FH8}4>xzXibs z9Ixip-bOmB%wOOzTWoNE$N*<6(1s?39)>WswpV-u6p?zZ=?^-jgz4PRAJIyD^kK~& zS}Ahjrwv@igu#U-bpn0x;^!YBd*De11hcB2 zkEf}IAn^C$u%FMEXfA~1+wC31-auS*^U5GCIR3gV{TqUHpjnx+3y^M6R8aI5ZSZ$k z-WZHH+CBoJf|oB39B*1M{c=>i#`APKzF#Dt z9-Tv5rIuzj>^)DbK24~ez1V-O3cTgH%Hx)TKTO*PJ@&t^Rb;ahEvAPGW~{Aax#g62 zZ~1I|59)ZF@_28*8e3`J(!Z^&-oKPCx|90_HyniuAl2PG`n}rel2KnoSwR6W`Pmv` zl8K6LlWx;IB6w&&j7mLgbo1j49=Aj4 z*m2DICal74eqB#D4=f{^X&v~_-%VaySH|7<7VF# zhCSQCfj#Y@vd+9Cj%#X{nOQfgSUq&!4e9{rqD) z<~szs+CFJ+2(0jbmBR87e{`WzCE%p{(1jpohQPQso|FTn&sS9>YGt_$P^%wMRrfb) zThEXhy>zyIVCfe4(76OuZ%cDl`R6E{&1oIuhn^e4I;t&(#g=p2w)J{F{w5}+9A`Ip zh_KgY`tS6xF!rLrb^El;VzFVmQC_YN=nP<$#k>||B_Z&EjkZrQDYrQ2v=vWXHBp)@ zmwZyb2s%dqVQ+IQ6T!HVN+~J+l8r!-1X|l)Rma=rHg8>x74H8JNyqO(BXrLcp_jT& z9*4hbpkS;FwUJ;MI}xeUbn|1yC1Of|{rZu%rnv?TQqF;Zlu#k*Eu3M1Y%^XlF;%^+ zX-gv1%v}bq(ae$zQ3;^NT?;5XW4vnJ1<4T^m_!Dav{X`c3D*C6v!mWVvYh347mnq*bz|KIr?epu2McBJ^Jz{c&TN$Ff} z!2nfG-g;)e!dTuy46wH@_q!3;HN(jJkypVv%ac=Z5}_%O)rRb_kKcCrpV|V4`|l)Fa`D{7U~hVKr&-{65J5p@8D7Sq z=-Ut`#w%Zo;MCe7yUNNdgw;(W+Xl5@8j(RI2j?*?;r(X|0IE?o3J&{4y|2K zCi3`|H#!ZNdua+x2bF2nGK|6~)A6 zBkGibw!V>D+7`r>T){{$A0t6HymCth7Ca%O;G))U$Xx6kFGkq}_#^2ce#WX)5iu8J_>#Gg0fgi9PfJKt$qS6!G9V#WDb91nP&iuK@{f6oL_x&L(RiLp*7P zcI@%ZDPfq8X$jpp{*D{?=URyuZ(jUrOTBv5%FI50^D*kS_o=kWcM?pM%1_!TPc3AZ z1K%_DIUU$p+z(5+v+l9=Vj0PJQHAir;jC}z;83H>*;a|0#E}Pd*(nVh@yPw#$}2W2 z85j@%PRA#hk^-rQ$1dZ4R3zqj60!{15vk6@<33_XXnP2Z&n4SHM3NU`mbertas=e< zl6ej+@GTd_+jU^I3U;j~CGdGx^60F}J>a5O>LSnXCdCbORLUq=bUOMrVq}=#AWTNI(CODPPrzJ zuHUTWZo5>vVpp5`QR|OS#nouhn;851Wo_`^ljkIAzx_azPS&geDWI@TDD+ccCBBQl znEn)EQ*ly0z&!r~LPfaep<;Nr_;NO>LLj?OyW6>K*cMtUW5+m3nnj z{;vl3_nq~fyGP$%N*4COOun}8Jr`%#IDwj*MX3d{yqxPh0czsCNlnOYh*rxP<+GKaaFUXrPC|7B+y1XYKjxcgI2VyWhOV5;lq`n$c;u_2K47ytCO z`1o~E-(xLg%^1h!FkWk7??ttaer@6Qxix?al0RY!l6Ec`yW zm#$eAcN?ET?1GOIKY;s%f#xfZ8a!3R0>1J7WY7605{!W1atjaK) zkRF=sR0;jn+EtN-G+QuoCQ$zws<*U#yJq_@v&u^RDNUk}Np>x7+@iE2gVaN^*v8b+ ztsG#NVm^8{+3XKVIfnXt={kE$XILN^7%gJ?dMQoOe&&-J`H}sc#5`Lf8eP z`|=A|e$+HLw2^MoE=W0ji=2|^=Wg`bFnAg$7mGi9E}2RTDWBcO+03&k60<+EhvNiY zOc6g{&KqChv~rL#1K*E6-jB+sKx1+d=^hO1BYUa@yzZYoR8G59Ncfaa(N(YmASEWX zQ(UU54m@Q{Q=${3Jh*?`D+R~zbM!BT9}{fdc>B5MQpg7F(C1~+|w znYa$=QLRM7)lrzkGAK4x(C9b;Jvf)nw12xNPP6PcqLPKRKtsO^uOMl&zW)A$M{;#ba@!rq#1O|%LcRE^e`ZgRC1 z-t4)c>A-)aduvXITfKp~=8Y~Q!TH7Tn-9UjxImX})6!E<%_wxKSf_Y*soza?Z(cv3 zed_4U(z3GgwKwR>Kow#N{bg#N{)soVZ>X6WoHm~`AMw`qSy^6_c%pOG-1-vm#0aK| zsMO&ebJu?bVkN79U5jOq`LnPwD6}vpow64&jJt$%m4c#J>oJ9*C$xhnw__(5(^eWm zw4h9dGr7u_#l8aH`B?iUcF3)$tpHVp1nanh?VbA9or@H@BD+H?om~X_n%j{{%R!fH zp3O^vI?X1@o5KZe$Nt|xf8)Q@l9g(^HS+-!AU+D(B|^ z+KhR+SjJKO1MOBjbr$PlDfGL!s@QuV5@6&H`c?`4%r)gxo`pw^`gS29LDTJjh18mP`c#G>z0 z4jZ$}01Qa2qqAm%LsaI#4xl14V*MYL)wSP~gh_VGxdOri|)S_O=zZ!!Zl%Yv` z)4m`T5_Uqd7QS5{fD0T2~OCeY?wjN!YW-Pbn=Fz@B;5M&>3WfoTXHNZrVVHPcNV-q5yA`!JrV568*Vou%vhM z)b>K$yDTF6iXT8ZL22J}P%Uh;MI8aQbW4#bx)bR`qTMWnc}08S?pQ33UU}wdSIf8T}I;EW;(^>hbU^6i9GRh#IFix z!Ua@#3;?Q!bXilRK|Z#8yh5vpyMFgw*}`Vog=Jpaa1BF^mu|;oxJU!eL&VC z`JBvc{j+|p^N7dPw)MOZY{%D-VwkXIKM^&kWqDRUcX71Jq?~4*w1O(EQ?;~V{NvT+ z)=c&3LOH-#Tu;6WDKNLG=4#Yza_}P9&V(MTM1x&NQBmIV_Lc>sLea?&{!HM**)|}L z3)J0g`<`=*(c}2_km>|d{>p)t97^_Q4ZgW*7`OHv)~RLYh?@HgtM`1!`yuuw z5JG81#~b!g-@RQObNp5{cT+9Bjrc&Yvn- z8^fFN4#FTk{_(VCYTB4JPVVs%?6n5-&U5;# z<^KQ|$1m|+xGYb`fygEvrgbP{IGn}K1Z0;_#Zwuf<)D-;0e@Q&v-g+x`qx#9Pd|^Z z^n_A*aC`g-ptRG}^1=Xc{;!=l3#ECjXJ0$i7P?b5={Daz&&j)b5k{mjQY~&@clIO$ zsQYBa#l%)#2?B^Z$=p7JLKf*;Wm{W+Lq#`woc+ACKOW}vzR|?#tgF;%GwU8Q%o3?B z=hV~m$Id|A_~L3kNEm%Z8Im?C__gR0jDwq-8`uLW?9<9*_=>;B z^PF>f`E}gp;7Cq;<*?)PzS)@lK0N&?G=tNsRCd$}M6FZ~v{HZ%km_4DXVQ=x4tNhg zCwm8{zC!)m#X}d0g80>{XjY!KJl29flV@OGMlmFq&reHwBF>QF{I0T^<@O-lnlaEi z@Jz-ySLtwmIJ2HST2&X>rd40vtz`ckR3BWmcV``k2hIQ~@8LZp;E9_2Q?!%6@Br@z z{H^~YJN^m*6Evegse|E8+V29!qK6N+2kiIaSwKa3rG&BoO)5T$mTVI>?NCv`NmZ+(2%UWmDd=zzssOKt-6C zU^sU4(mlp_6glw)AN=ehN5a#1^>7@*Dl|`zVOuh$+2=Izy z|8q|wR;_mBx(2*R6@>=-q%RIOQAV-8iOy3E(b>QG|6}IME9vX9*Xh99)Ko-1p=)F2 zM6Jr$KM;Bk5R86N@pfaVq&n$9C8xx^s6}3$_tAUad3@v{PPCw*gr1?BUzl2l=bmQ- zfZNn#<{MHJhUYr{8EE1GZ`h&!wdJS$vStRb#gn)(&+dDfMuW7RQ={I=Q_Ib>=f%}z z_N)MI3_O3VFok=xL#4jXkPrJM$Wvp-DJI!Mn=oSf0QFMkNyL)bMWdKA zb-ep~hPkwNDm>ASAkdVAArEx1UhwSASoP}Hystrr72k7-_0C$w5(#dQwYT^Co;Mff zm9UJ_?Ithn65drjK{VwBogc@8?{-xrUoWmEWOY4B=NSk}{pU;1Ff!y%O4$IDWxo)PjKU+QY$9F>H$d%`pTpazk${9!I>RS;n|C0|NKbtQ#u(l z#%s%?7gbL{r*Ub!1tzL(;2G=!zBN=PF*siNvli z4B_9rOV`Ycbj9N&BI?{f-ZH2eH2`G!IJd?!FkKp*We@|}SXW9oy)3`h>eq}{&6m9!Yxn5wr^ zXz0Gae?iYww70Zw%Gc%-A}8@B8eVx0D#6O7@Ts@cEEV`N_mHl*cJ@=r+JlAwj<>0f64_=aZq0Jpw~K>E|8Qr5v%k zvF|}3D;x(L18Fl`qaP%WE-rB}q`(Yhb^_}KC)X$q&#Z5&)O;C<$|UR`B3@0#BCn}X zXPhf>UYTNJI)Xut06(@}n{RKtKZ+y>jM$)9ER&e-3s`uJf%q1ru8)64UM`s*_PuRY z>)Va8Z}Sx!;Hps+nIqZ(!@V@Gdkv(@{P_by&Rp?pklH$)8{>XNBb}P<6_172mU`Dh zbpFW_=rYQHSDU0tt|^xiWS9W?m7Y(jjo^i%p*C`50@i?-t9YzQ61^uT~|_r1_d_^>vyN0FI~p)>!l--uIwRq&Q5w6f`jk zn5(-5sko78&X}vUMn5}tzf-R~&2!U$^3Q+yhSKP1ubljDo+;s7g}tl9H67G-)9zxEti zGuze0grn96K1ID+MhK@}P=E@eG!0T1AXJ6}M)_OFxmfP``5l4hsiC2~3i_{u)N<+? ze5B19B8TLO@YX2F+@jRzqA+f*L43x^-oZ)8&;>PgrbgSHMO;uJouhrCJ%xevW;BWW$$ED3I<)=uw2C(f| zWTUl19Tf9^pxE|irLj*wRShXY zs7ArJ_+oe}2ailj;joc0(?0~xc>r_8-xB1RTU>86fpT+K8=9r{b(yNlFBrSgzX}Y8N=SWjiYi8dT|l9$}^c ztcASJPN6&Y4k-0%+DgaM#Rf_c`|wFrK}P0#J$9(qEkN>SK(pd++7u3 z+_e)_PsD8IOJf&8fL8~2BLmucZ6u8(qmEC0<6nop@_D=ZC5m9Nd8=#sHwJy+v(h)E zt{qW$ZFzb9aXpDlR9|L;uo#O=SRf@qDJi5K9s1ehtnb>9sD}ZiqMznB)4tF>kT>uj;Z%7U;yX?>!VXXq4FfW0JGEAcOB zYeq|{kIcRmbG_YV@W^z{BBEgQ2a^?V7>A@rK_4ZjtJ!V9teB0gXqH@RUz-^2tZ8fk4RF@YEwQr{1IRB3fZ9J4u?-WX3Cswv z=8wyR@z;8H8dMg*TTcb|*q2*>%_fgoqkZr|@$RqIJrNX$`LSDUYFJS~P`Rcilnek9<`Mu;FALqiW%=9k-p}#=9 zOEkbP$+Wiy-(k@2bo^=8G3Aq_Lx+95UGg{F&Gmf+(UYb1FK7>l$UkL5ECY;u@fOqw z4!e_+-#XyQEQ@|)+*&7pz${KGewN>@3A|LJz8D@MPLOF!yNlwj6~{-;sYM51lEda? z7pW4Ms&7l4QWo-<*$u^}ct+E~W#Kop29ZV(Uj}E=v*#<*=BcB&ulX}T{g4oynN+dN z%ccSHp}J~dN|G_N)oI&)^x)V6UPSuHD;~jKBW+>plB2Vlp~X9H2KS0rH@`lU{`=mS zv`<~ff-LO(R7nFQ5q9R4WZ;yMkx!JuF7yc&Gc|4kf7_JyeHnjoUXl0pEY;DB@?}%s zt{5|jOd)ujU7?r{&Yw`}%Y5GWx|leG%Ebla9|-BAZ7gAs;=aR-Ov`_#6T3yzFD_2{#LoaD%m#&fb zO3-aFPYNCtX}5Z{4z>Fo!0v8lF0?6m_ee6P2ENy`V`(>~3sAK~+1A!BcA$B6Cb1eE z83_cmrtCP+$h@6PI_c;k`^>wSJgTBB36@v<7Yr!L#C=`}=?E0Q zAToIQ$pF`ujXigrl3+ApWr)n;tNR%aG0tm+s+I=0T|3g!@Wnf`($VW8#*qr%|u_K{E4_74J;P;Nz5{qL(JQ z$#;8=MgL4Yz;;xlHkM>q**Vuz43>vDX1&tpH31~9ll79xkeh=vey)_6?a$bR${Q|D zZsr1yF4H^bM=>xZb^WkOv;>7aC8rbI9HR@pP)%cpYZkUQjJ%GaYCt$66ivp|I(_7# zvVX7_SCEulXNa6b3N8SZ{bA%i2b{pKq@F2boaT}@x0bz1s zu{rl(94?GrCIn>}*rE!^4|d8w1rRS97vCuJuz}{Bdc04@m);1FItIL*djO+KrMhXG zRrNq-Fq()RiDMjYe*n1_NB2_Rg$X$Ps6#dU3AlcE!eRM0>;8d!yf0sRn$@Kliz5e< zv34y>K^E|D2AssD)x`(~i7R4a96w5A(hi7z*ls>}4T2^CuW|=uH$+M*(*M$Ab~LBQ zSZm=cg}@Sl1p{f{287!^q=^kQVK>-A%HO%KXv~)nVhwF_OBn?bEm?viXnd@E!QMsk z%G2T5(44(ZVDivNjZW}Ysq-k3&eezMz{3j99C360hingLAVFcZv)E(qAeXlpv2)5Gv zF}X~Y0D(RTrT+wL9NLfrQO5eb7iRHx-;q3;#nkDk4N~`ojBW7T7?GJ_x5Hy5-zT{% z4n@QBP!vPQfynZfjCXt7F;EEA$u%^=JyjZ-0!S~ggC)~h z64>Mgb{LM;MfK8?yT}201kFede+Wc`r>OsujWW0E)V@z4polVpf6?XU?j84d9Spys zx;9vRG_ z(hjV))bRS2S+Du8dGzwUy3`~Ya%Z{_^*`<^p%_@V&)$lbh z=HFo*Ly{>lHBbv9%#r~@x8I(zHkBO2O!2<)g(4P#+Lz83IqUT#`;MqPkDq*6GPt_K=u0Hmq#B(#ec z?hlR$*{EO8s@iv-tI;2VaI=!D_`C3_^<2M`jK;CHxViA(!s~cE%0$~uzfq0d%7H~03(cxKI?J+4|FoC(yC9gzLocsnz>-HZ3gt83tM{E35(d9n%a z%0~U0e7WiP!|XwJ4IC#`N|IU1ab5nJ+?E?^CTfVZ1>QE{oTz6$ zC<7pZ7zv>9Kl$G>4BXGajPg1CA@0F4{+F>H))RA$< zA4xWP8@y=VJ!N;P|Hkk(n`B4}q-Qp=p(Z}0LG2_NNA*u(Qzm+a%Ha48Os*US<4pt5Rv&Cmw1EUDg&zS->ndRNh zF;O7eL4}8#GiePNPK}z9Adj~*+~=4kT*Lh--HFTJO<~uN=vD~+uX+vz^&F335nG?C zPqZrxFc5?r-#9O@foV26(a!Py7hWY>u_HrpbvZXH>TXzXg?zr0OF` zUI9{0Ebd5;xnFf)f;cG!Wb>Qbc7_u#s7$d+D5|6y`UTnEJVz>j?ADh_7$J6Tm*;PG zYUlBZZT(?mYekBBf^SQjQdi5EMR-sJLYLJve zy^CvoSH^3dKf~uYBS-W^WxqqivE*hwk6y#;JCK>WW_`2$s4kt?;b7ba9zQ^nw*!~` zQA=-p?GTpldAssk`jw+LN89TTMx@eca zVvh+#ecux2-2Nc9dngjfvUmD)f$Y#_Z*SG#O}LpuLr?I2Xhj(d{S;-bbqoiWbM>^P zOl43^njKNKkMlk2&fl;Zhb;Do#HNCQ85PKd5-kmDOIPw1TKfCHGysg(Um}rV3bCts zwfKX=`cwCxeMa@$-LFBQ&t_p&?QKr@>E`FUQ_oGb=Xw0kzuIXkr$htk{Cfa!Y?pP; zYA2?|WNNTVF=#XVO<2UQ$_NpAvi8$<2pPQ(=T@Nnszs4dJw1sgWRViYS~ zgULw5=JnM^lY|mEC+HODFSL1uyGQY|su28zoE6XSfT7KYj8TUQ!g^dYJzM;-(5mVH z(3Hw5c3uxMyl*(m*Y#%DnFs-7g-lAd`npEP=3RebY_y^cc9!6#&g`NTiWuv^sIVtKG2aM<2$sc~JaHMZW>MJ`j=LvRSac=;`;#EL@XF9+icBS6;yy%H#RGjlR* zG!14_ZU~|trldCz1IuWkL_kPHNC1}5fFlVf%Lq3L$V`t$yedVm!kMzUl>SY~F9PFS z0}91F!}n?(NO|Y~R_6Y!64puLC(gx~VyUKgmIup)GW2tbiaW6&ovn1)gkpPQbVR;S(n<^0W!^$ zi_C9)kpV%@H2V}%&ZM0VI-`*A_~p^6uVsMY-R7Ed_Zhi@{8{5GV%-rtaVCoVB@?*ASMb#!smjO94i`Iv9Oqi6m&4zWmiOF zQC;|UX6F^xG+Raj1%~h-%BGyTN%#&nEB@#NXw16fXkHMIh4}M3$?%kr zS3HWnmOhAs$@ZV+I}`z$M8|UtIFTPc^ookCRNBRs6f+D>=_vh?ezysW1rM9yZCLG- zVeCn*W%$kq9*|H4oWC7BsD@+yyW$wbb2jLn;vi=ZM{diD21b5b;I98?%s7}_0Afld zC9|t5Pmgt+Xg|GQmLT9LK>>~A=tnww%e#vl$}!4Kz##yVG!q>sFQ^z8?MY7LrY+o+ zpPKnZt=wfcPOTsTJpph0YbO0Tf5bTy?pC%My~SuZUz% z;Q)b1tVd6T%%;A*9-ykQjd1N~o^xwLc=cQcIuJ^5g1B#F+5nhVG7(8%dwUQMEo^8-~ zYtBZ8?O%a)R*Vy9zDe{T7soFPK{DHyso_z4yIT7iR?$C~iiv|0xAtn&-O?pj~OAFdsNLGadg1#&kPK$ zPoQofOx)8_BgZwkS-y^>o8<6V=Srap%gA-%K5*w{Hc5}6rj_5OQ7-(eHl7sJeT$HyeCgAYVQouTgG|84&OTYEgj^I5%i)ksxf@` zWR4lSZ97XhtbsJL#E02rv8$w^x0B1;S_-K>!UPzb}u6V>P}h2(@yx@`+05 zBF$h${0E<0?GBIf-S!+$K9~HAFB;hU8PyB4pHa0f1LUVzAf%C2KLTK8{NF~7!u$RS ztAzb(;YtnsAP)XyiUAeDK1jO&Wcr0enhph>eneEQ;>h*{}&dPR9tTJAWc45hWqcFJNTy|?LL3{Fo->h>Ww z{qK_A2FnS_M+6>0u1w(tLwj322*ulc`MX!htZA^lR9iFes<|Dx@ob$&{QM-OG#7rN zvzAwuTr(yQ9CjIzm1Re1U9rGt*$$cs8^~E$BJ3coirw|t#K9hx)MUNUTXizCpJ(;^ za!pMiOqQaUfQW#Kh_rMw z79ibS0s_*~Ie;xSNJ}FyG>mjJDkUx5-7z!_3=FfcA(pQ7JpXf^vtR7bd9m*o3@|hI zbzkx8_!3|9j?8cAwJ2{f-#9{T4exG6)D?W@u|DDQ-Zv<#I;Jdk8GyJXn#BUv^RoS9 z`z?wkOMc4KQ}6jMCaqt9obQHVdtbQ6(xmXcHXSW0lW2eV!W(3GOgR;8kJKqLN)JJL zCrg)CBlOw==y`lKVIW5$F}GR4-D|v1?noloh-hgq%%-e~tU~zTxv2Af0^SJ_j>~ktf-CoMw zsMNWRuat0?DklSQrti3B5e8z-s+i`C#fvZFQ%FvC8kB-+=UtZ(d8R&&3*fx^0{t~^ zn6Te=uN?(CVge9Bsl}20@Ezt8zi~7_mVEgku_o{m%RllUeUmpA$Du$j$tYgnvfRZ6 z${!v=4gBohgHCYiOK;doUbcY_vxI@X8ee5Il(M9SPEY+a__u)ZS=e@tfXrx8K1+JE z4RT2Mf4q9M#`qNUGy9YV{Tr1vLW_LXY0lG$s}P>fEU+%v=G`rB9C3)sxeZf|%FDXL#iw5(Dnuk<{`N$mhK2WnDRCRVEr3S9(ji0w0nK@7I3X6m54m z^&QgGf2kUPtOZ`GwYIgbY^(^S<^Xl;`mf)IpZCmOANp{^|95aDQL_11+8pRW!1m-U zA%^C}J(GOdo8{+vemUUw*AwAnJI)zJoF{#rb5f65DUe*2)5sP2EgKTsA zmJeTk*UWu$>>Q}=p^s+MR1pwP%E= zP$fRuM||}&MC}DY6ZmUomOdH2jSr35LGA@ey`?<#>(ON^+1DhKGnn4=E} zF(s9!TteCW*S*v})&pSJ)`cBbu~f5^nz_90mHNI*0F?8QXemsCa|R-Scw`UV`Ed(0 z-5o6s!G2{KrzB_VqO&`Dxl$JN8UPKLNtP^ywM+eI*&j)$3U6L=_X2nXfmzs&AJ0s` ze9dYbj1>cHUUHI`kVtg|*e5SyAq~%~_(^t`F(qey(#r;1ss+$#Rb&ELpPIKV8upHZ zRH8PnhV-8F@-FP{=ruW_j`DK7yP)sO^C~u_ukr?p(RNdOYur~Tcoi57_KjTr6Tdw* zPgUCqG8%)ELSTRK$?K6qs6$2Fx~0jkDX34&TAhsPBe)u_v)qt2AThE@@@-579iF*Y zUhDSJFP;i_p?^hte=i#?3d2brc%T2mI>8St%k14{qPF~x%d!9w(xlCv)l^JU>(fee zDCiCa@)tA!Q2FZSUscOgHCNs#u9DsYJw|@xs{quZzx^X-prbK949{<1x-kauZ$CA2 zgLo%v$SvxY2f1Ia1N6_(df{S{QaJn7SqOpr-kU^QZ83?io9X8G5b1vjyWPqk&M5cy z;#fv|f2vml-5*kc$h#riR10bq0C`I_shju%_#KeYr2F;RIK9y@Yfn1p7KShRH&)%O z2Cf8t?&pCtZ&2B`(myLbfM&No-*8c%LV&y>t%v!?X<`xolO5pt%9_$}Cj zQVTo^ILf8$E{%3_sjz=A0OP6|D@V^D3{db#>Fxt)kG}Z@aThgxO_JXTyc;bVs4tI9 zRH)q5Jq8q3N$XSA6psbr!@%0PTz#7fV-8XBz?8xY>)1~yqe==jLh}65<|F`Ot0ZXB ze;G6cdnn3m+huW=rN>S#65|%FlB4pERwVJbZDwt670l@q6-m>l@*B_}l+$c&wdDz! z*w%JRCB&s0Hf-NQV8^@nPM3upPb6)KBbl>dwd!jgO5CiUAF}kuq7RRqAP-c2ANr>BqiD znKH8|@|)Tm`TUg#LMqTO=I^V7Lh@EO0P#(p z4TNKKJE_5*``m@j=4B}YTQ9_R&bzh(`2BVUR=EJcCc|E_%O@%gIrZ*cT($@RV0O#f za08tqNK4l$!dkPYGeFUMn#sLtZyH>cE#uCp52b1k$+tk=0K9gG2W77UDaM8K&Z$$h zdjM+69U4mQ@(}0Ip9TOR0Sl=GC>oXR4X&dAePixBJ8E*K`?*;l$57XF13iP2fx#4V zql6>a46UcB+%;+Dk3%`>brJ~Oxr5M;jWUSFxJINxr*$xOep1T2_OzI{(#%h~T>&?pyY0mt#@8J_J)&{LlXUaMbW9 zUvQ)YX4md!8=@F8^ti7-XM(tA+IE)UrZB-%`s1Y3q2I4O@rB&KckVBAr;P9eapsFj zSWUGP6Dr3|48Q3S8k3xKJ*GJ38Pf;Na+g&W`YO6}EydkYY{t7k<)lgB+I%j7W4=7K z7?i@L)9Qf{8Pi4U?iVACCrxBt9yRT6wmvO}J)`Q+EoGv5X1OI(D$gYT(LpOu7n`a= zdL9}+g98|lKD3CA) zc~GDv%?Ie{gk;d{aT~1X6I;;aRlZvdE<|O|-j+eL`6?BwoOE2YUbD5 z%Ky0pnQ;8{ZI&0l4y9t1-5hz_o1K&MqeSGi6ak8Q{MVM87AoYG?QOLF%5nMy)h{-pVbpD(v9DAHcZ>>yOC}oCL{+Mrhwv36#ol!p+l^y zDQ-$B@n*7H^6uMtf#Rh%eHKzb0s`~ZVnc+XN$;X7PJI{7wt;0wtzIq5Gy1H;=U#ic6*#S|XFs;U%|ZdBE`rt{==k}6 zqjmy+D`=i^qb`83aEQyE2ed~FZ2rZ;hL;>ZN)1)%}6Y(#0zRCpEW0X%|57^0u=`ATHZR&K6LPtS%gR1hcQ!{^WsAA)`crzQ5bHa1N^Br_beCD*iZ6n@}Z(pRlGH^rnEMKvQXi1&i zHT!$N#`|!pnT^sZ8qsU%+THg781m6IbMocam&Hmo9Sp;ix7gz#purBTLDc=#j?s-D zG<1`ojJm;k@6-0@(3k1b$LI*ph5=(Sy)9o`uk#r2s?bI|!#l$P_;jh=W&>0I>kYBt zkmfwRSGpt{G73D?%N?m9MaF$ppdUZSId6U<0EGFG_!>i)oer>y^g#wpTR1lphPCL~ zOewx&hoHMnIMw<}qJt}rdy_2v7~Pz;u5;Da19R1h(Wy7jK&!!XsUex3n&-!}ld2PGW4Qss{F$KsLHPFno?K-ottdV=fxx3JW<8+0rL*GO5;2V7a( zAV`Y*Je_}+f>({*tu}e%-|0e^$hY?{%E>V|SXiSFj-j>0d10l`4S2l-<9mwz(S#cCO&L6DL5g=Tpiju&#>>p#*%=*!C;-9E zwK3U7?tT6`ZO9rBoQy+*Zv4RE{k+P3XVoLLzN{%6w2pFD-gu`54l}5$C2PAx$@_$1 zx~oU&1CX7sL6L0z(;a*#kyDW}txJ`Q_?}ZrH2_x^ALo^?)r@4L24F93`PcA@E`IQ4 zGY~Kw-B)cl1{?NOTYie)rr6J?_9vF>RZL*E3W67>XwC-&@k8Xj$KCR&d4KKk`A$6A zoM5ftq3=#eO*OO^_E`EWwdBJ>PPCJdvmm!o1uM-H*z^(!i!ujSuM1 zHg}FZTN}V?y|fLed=l~NBSLX%Y&?@JE^al>w*WM#5Uv=65()R%6jV|<8h;_Rxet$9 zB>=T_5@H~0VWnfZ$4bExIQjs)y);8fgAa`baM)CKyzNi4%wApg`N_ax{q3av+24`C z0CBV2SHo@aOBFHSCQra`**wY}dsTJOq$+@Yq;jzB*BL{DDMCDEguLc3^e#u*#FmgV zWVDibdNd?I;ge>-?dgm5WdO<`mH=FWb&MNVqurIYJPiEej>3@{PfuRJ*8 z4lbp-6lXu_^T3Wj>w_KyDDNA!?-Q2hM#*7z_@)arAOoBs#DJ1P1E$&y`vHrxTE{*v zkVC7=Y_m8yZ#6uvrAIUcq+x-z;YX%=;roxlHNdX;u3w*@ys_5th!B+a8Px5G<<$zE z0R{0U=%9^QTdsX&H;=DjeJuc>h|-{%HQzR64qb6ETN03&MSt2quFb~J8%0EKmGe!O zW>0*hX_HrdX%=Y6M1~D`EjFYUe}T$&G2@n#{*d|XNB(9$gwXqH0dCOOCpIxfEm0T? zvwMz+oUZ*+bX$@?J}d01z!`ttn!Ih;>cCF-_>Q3)>dy4)xaO(9h&i?BqZ(arZ5t1i zuA9w%jC#DPj5g4BgUtSeH|)pOFn@Wc!EP4n^8lMH5pnHlhx%!e7(c-By#Um`ALvDh z2X#NZ?D24(@y2-6(7tI9;MX(TG;Yg}1v$GoU(UB%H4RUFE^x>C2yH{28b@dDJnvXK zw>IwsQUX9`{YgJ*`@W^6cObbVxO*x-@9q_l?G~3-Vc>W=MqpW4O0r0~gp|Q;BAlc= zf8JV2l>a?|Wg2@UYK8y^ZUkW|o)1$pS;au{lmmkZfVsTt`n+1Cz}nimS|Gvz(|l=RVE@-IP!7~RsR>L7W4rv5PuE%EQDOLA!+7R1<8mhGyqq3e3QN(UwKE< z^r{#XG<&ZH+Ot0@DESj9UohcqCkVwZ|e zBB|Y?j?s0@g1~AwT|N7sg1jo}2iJe`1jjA$sJn0Rf$+d(_a0Y5cY&=7SkDFkM?^{W zvQ0`?wd?2i9}s@Qkte|E_HA@b8R%7KRg%l!) ziJv{SHy{ht)%$nO@uvH8js=x}LpQ#;DX$*p50Kht8%+X9mVEaC<-?oXd+fA+T$LwF zwYawwe5UWWc$(Plg5!t)(h86r_zI0dMdY%&0%!xU;idEhW<2NI2@-HYVGavmr}EuT z8O3Xo`&phmHfSgd1ubws_qoRGGY@S9NY;>=+2)yzz`Bo!3-N}PQ2ilo((L)ZNosb! zB`5!N(pB=|#L3qh7XA<_P-V@0{)n>nU-LD!4QNBD0cH^?$leDAmUPJ?E%(biW3NRe zy5kGJTn1=Ip|GFX085CitoFvNM&bnXBb9A#yxm#S9J5=!b$8N5$aDT0US#1Fx{?^A zYLQY?mvNa7Eg@AXtmKcLSU>L~6OZ{@5u|C5KD%inLA_)`Joz^m&b|gytML!Pdgwty zN7~_2<-y}f0SDvtOITGWSJ3YtwoH%e#+Xqwz z)BF+;D}C&#DEecZP@`22x?6g=G{5WBdPX=X}w2X87J>1?J!Z{Xjg8$5N}4LyIJF>fHu z!kkwNpg-~Z(171MZaGXd|Cnl&O*ETAjruEMgziMoudJPW418=+1L%h!f$}~8XuJi` zXePBDgYFYR?ePKr0xpp4XQ6q6UOP8xbxFCTZ0`Q9(~Re4%skarpLomWc<1>C5A!+y`IKKs zQN<*9&4?@Vmn{nb9+a5A4vIYdJfgH-*UGR|Sp@NnukXp?Te~!KfoyKS7DuflWi4#j zZwo=)K=A~?I6FT_QT!N`Hbto#Y75&iDkRc$x4xajTnI3I#^85={1_;%vF`oIIx;#%L(|;S!gvn!1Z`6}b=Ushv7`STzM2N*1wMBxK|SK+>}vSyBAMV>Mc0;~ ztQ|Q$7F|>sF#tCF`B#9!264FW86n(V?OZ_KUK76CZAX-7f8qD~{_EE9-2FkwYxq_S zIO8RjZ}S;T$YUNf8y)4R(u#t|-i>L*z3xBl(erDR|Jj4qTNIUg--j(6nQPwS=p!!3v!%YmU z!;tqN6*q8p11qiHismvm30K+ytqwS1_N=X43&FD_Kx20zZx#T3-a@xF@7%IYfho}Hrxeeb%n!B`oY zX0VgXQmsc~W?Jp97601a79L+8UDOSpvQp;(^z5;fAIn7gt5HjBq;f*YG-Uo|fGNa|JVCjRIeA zlwA8gzElkfnG~dbHV6)ikg*L>e&6K zM3ir847ki^f~Wj>>qC`8zeN~$O6Yp4n02SJDm<@8#}!3#;`F(vXVggdtQiS9+`tfL z_o)6Nc%Yop7!}C#%~3zfx+3$SL+p16JszX&tor=vWKJDpy6zX+Vbl zVP`Kk;`_=(@>23ilJ;DS+G`GV%=Gf|wF5o$NsTw6FEe=v30RVn-B?$VP%3D!6u3?0 z(OVG|F_}tnS2VXwg+BX^Y8h54YH#c@{lli^&0EGbNztXrPecT_q^sI#6bVfI9(ViB z^wXar@Winh)(7*BzP$oAtMWXL@3=oim=*{KD41n_(MFf1qQ=6f$HZQ!f_@g-xPqOT z1pl$L^ehRJ?DEY%#?$AneY*UWX>n&FZp*2$ocA&d;MLp% zFDrTXw#LDs_UxO^@7D3rv?}L zf2?6_klNBuUU69b3_*%lN#Otk_sn{KaGcGS>rDazWxdF(WUm>N<=P+IO;-2AbI@y@0=2LMD^n743{=Ph~ zoB9iFeiZQ`CE<&9$IQ-Z5fD5x83a^Uy$36wiZDyEJ(eONA%p)y+;z8&PSurqMnshl zYsEDH_Nyhh*2uwTJJo2%^7kDH2p*u4Ccwx91ZfYGM((s@+^3@*YlP4PSI~owx>Awc z%+W-Dd|Iyb;E6mU*2TywVt(1lXb>jh-+&`3?4#T4rxc86Mn`1vv2IbD@ zj4|CYZy&4xb|~>u~(en*ya6yDKp_8N!DvIG{x_C$VPVXw`k%*S?(ES-ZES7Z*NOhA18aXd+HVJkmBO+A zG*Lc2zW+SYxWvGq-Q8WzKM!Yz<0TR(ULNFL_c-SEEtD@|4hVzc*arvud$El>+ZjZ=g`Vfy7I4`KYX~* z*4L+q^lN;{+3e>!K69EV_)(OG#{jPCH0DKj)`R$u-TCHy$i0{nq*Cj$YpEz| zsXg4H?ApYw=Tehv$c>{e8AsczMAD&{@f%r>%&tf@vFpseqVN` z-RQS0wV0Tkgr6k%=KW%8d2|Icj|g*i0b-!73;FrJ-XpL6Jq)Mo=7Qbt1Dn!&G~(c=xQB19-GBB#LelundG3!PDjM|QW2QbwW3}a^Hvafy zESAG3JZoNxDrikpP7kg}c;NN`#l;n*`q~6$X_tyF4VCYk=lf6SN%G;4dXI0+b!yIe zRF!P@nTeqn2f=6J3T9gq#4^A!q*rbPPtx{V_A-(luAm4wUlgeRLRphK05gf_&Zg;b z<{vw{+NBPDL*=f?|J`?Ta&rxU1t5`X9&WXvYum)NKUn>4xz(V3x3tOZx$B(weha&= zV~2hYa_5-^Vja*1Rv>ea9zk2i>ODKb!WAfIxg*dZ}w;QtUBRPUdgGb zs4M{Wk3PhFGDH=&(X9)?FJdWv5rGL3rm+35@$~C8lx_m3wKg*AMf(;~mc0xdw^{YO zT2%05rRYHf`3+fjjJt#!n^3=luU^oJ@2lOp<3`rsA6mhm7?v&+ z(2T8wp#)OZV@mY&IUCGEE=$@}_qSBdvI+-Z?l@;fZDVBKSL`bBt%ap*`NtL@bOnaF z&jv6rX`Vq&@Q`z_t&mu57Qh&S>$~#Jx_NQCYhbNBBbEZhsJyZbYLk?5tjB9eTwC&7 z(TlBL9)Ady=t`1~q$QO+(J;)>B6x*H3?`NOJcv#f2Hs4{>tRUGxXhTDryxOV1~|

R!ghxNE-*WHaqZxm<`HR?IbOYU|qHpl{xyN5Y${ zOO2*W-8eefJsUu`i#Ze&&Vmu+SA)asP<>p7RG4uMfUYU3Eo=3H2fqT{*_1w$Qs=TU zM>1GqFPXXuSWz{xzyh$0@z>Y*6~sP?$3-jvPGX{wp`5Ogy*(8P&f^2^_5?A1HLLOs z1%_TK*M$K5T&$maM-vj?_^dFA=S&k*Q%NT~?37nl%j@%MPHs*1#~CrWX50M zsg<{SpBmORH26?D^Z+d%e?1dPJUp?jcri zh=^SnX&L$r3n?%8Bh81!n^rr{UrA8cNe@;FWE^t8E90^9B{ZJJ)cV1Vx3k$-%@#}@$+dv!&`)8-*R6M+ZJ$n*Z zt*2?}LLS$h;qnU%N`p_ljd)sD*LLI|?ZF1#FH5>-k&4Ctg7Q|C_$3jBD_;^&e6BrNHqUBU z7!L0Sv^LXUXeIH@J4F?t(^~F|4i41;*Fw=a?2xb+56y@D8$1a4+1w0!b%HP{ZyoSU zYG4-7A7e~=_~ta+WOie|oAo;9i=!ia`%od=|Dsa((Me)Jg2j0u5se&e z$3d>&GnJ$GQ`1b-iWP>&1Nx>9$&!xbZY{JL2474(T3(5;urM-#g|Ck#4i?nn&@9>i zE5+uBBqVsAee(p_(tt@=;Q3Wj8wv>LRv^U=>7wsXKZYDL;4N41Vl1@?fAmN-%>ypW zQ2>$1SmL-8qhO6+-AZDC!~-tS@u#}!X&Mk6O?iTlSSq#X*oo6mEG;c19$0X__!Y-V zQV6s)QLxU3+LY;^>ga>~*`sr$3+ViAL65!i|c18oj4%1k#xm-EH1o0Vl z2lJdv)kWKnrDA2Ddg;1OAP_aKvgf4FkZLL|>x!y;_voN97F>>e(Ul}F!T8DQ?B=MV zj?Ak$P7ghmjt2EINL)mQ%i||&%nAoLt5^IVvab(;K{bOpEPfVK4F}&mOFtbNw7^oecTG0{#9OC-Ent9sWNpcwYnDq9)8L z7vHt`0QHG(?$s~M6WK6PLF##RPp+aiy+hAaBxicgjcok&`)&kZ&G(tiH(U>Vhu?ba zt^lb3)*Z{-PD+yNlD=uJw3Io%{5m!leVsydd;l{W)y9?D9alAP(`Qs#wP$7#Rd77* zO*hRSH~f}!z_FDVs{9;3w!nBHmJ8^}BIoWmB5QtX<}Vw=DiNVh9eMK%NYF z;CH;6QB^{vFii7985IJz zEX|}A9NYYl)l9)22#yYd^ENg#j7`5M1k9!WgX5#t%stt~X;7(hk1ES-I*9ZBW#U?jn=Ez`3sYhY2&o zw&h!u@B3@sX`c7B-C3j(+ZFL>UVxTWk?f;n{GHm zVMV=@RV<$|Y&n^dsZ16ABd}a$_$I9PStKvQ3Rm zy+R$ql9ue&R1=>qR0(tpf37gSe6s`ft%*9=9(_2K^{>9j8uiGf>trN?q{)^giZ{w+ zVteuw3t#9g@6scZHYlzx5)#uFWhGk`*p8wo$_#No_;Oj*%9VFaJJ-Ho^8*W89tFyxz76VqDzd4$UM3{BJ;<7j5|o2No!v0 zJ_nOK zBs+MYEn+fX!i%RnEVtu3HAf}HhXUfn=N`pI8?9I(>+YeGXEwkD*L8zH70hjRs^zyJ znGGW!HwwLp3a)={W1V7(q81oL7jC(<_2lLBXk#xhGDU3V%PZ1}hRx$XE6m0~Mkdsf zEvAF(3x;Vt{8dGv(F)d-k(~aqGFy@oB9v>5Le}FS5LZbfZy;AT-@UuNVPn%?T#e<0 z+6b~O1Qku^7LIRFSBR&Fm}PQP8X&oNV3ehqBovNw*NY|Z&0P~P&=3?DTXWh<_a9r) zd#wLGe%DUMIy~N6zyZPpk9WZuy!4Ic6N0bym)ZJnwdm9)uKT3g8dqRRC_)ti4b?s#_IDi11e@ znu3SKXZ2d+dJ0D>_VOF;hh{c?6uf6z<1O@7n)J#GK28CK**UgKw76sB!N+3M%({&> zlz0T|dp1AQZ4lj)G9F0XUzcl4x*#B0B>;ha^f>1%Bq|*l+)R(0EVshsua;49u*2Dq z^PN1K8U~dwI#a|)HN@Fla31HOtSoL=ug~{gMKw-=GxbcQ8?nQ`(y>REScUknQbO$* z^5*FOiXDA&(ZaO!4N2{22F>s>>g!Xa;d`;wl&4!4!uT$H7e*u{q5e#Znxzu?Z~_LZND}0|JUKu)kx+_3nJ$+AC@pUvF}NmARa6D;BXgYfb9G zqSxrxZe)GL@bS^^m33-3e(XGJspw3pwA^>iy)ky&8--Ta|1K^%WuF5rIhA}XxlBX8nJ1$OKw(O4p2B)KDZ#_OzvnX^ak ztn~~HEETe?_B4#`W}dDwif%yn6qtA1aagR78C@G)dyTCH>`8a|o*~?}!Pt2zGE^n$ zq$=ZrtN1A(c)zN!~I7ZFYTQIWepRSSL^ z*_EOLs`h1(Tg#5q!Rpsm{BI$WQ;RBHHl!7+Gr$U(S19-gd%IxzTlB{k!s#=eV7)K< zdkW^S(=$g4sSL+`-5ukZH;+(ZxT~mc{axk6_!Jm=zO0a>wDe(Q|N?;u9}+srSP1ideGtLgkj`qY z4H21WFcpquml<}yF_;M;BPDgVh02$gtau_sqQMS$Hq{5)>Z9jLT z9EpV(i8YLK^Ay~}k4H2b*!Lv~B$Mo~LulvTH0mOu&R50kc8q{>v+>1^>r0;=ih{9?k$8Tijbfadt|Fulkf?a4a%|cFB1;c0jQBdn{Q$k7{>B|E$X@DTa@bkKk=0t}X-k9{4>X!&uR&F--&qNUtAsW$xor4x@C;!Rx zzk*2{n4P51+PUl9vLfbMUoSYh;I1Sn(^s=}T8Qr?!SNbaO?{IFT!}5r3W+|exV#?} zlxs(=??~&1(eN-kXh7SQ+ek^;O**-)2Oyg;3Zx*HOflM%cOpmI;1|872r_}kr@Uo= zn|Nn_(YgldafRo+fKan5=Ie{zFD4~-m^>Vjzt|UdjJCez&HFL#B7k4m1=mp=*4j2#0jJ&<*G)6x2Xd1;X+|o4Lx%?wu@;yM{%mr zyY|C*@zllot7=-=SYhiQHT}sUt0tdtg_&Oo_Klwf84nEz z0`h%-!o4u5?JDsWEThXHKW|s@cGH=~HM$K=e_OEq#?C_?8t>f=7(sLHL%Z>m&muB)MHat-ER&pUQW;=IBtb^z$ncjpNH>M3}aPAcG6{F8Ir{QFx6Ovt%z;&0e=&pK(5A2vRu+e$yEK- zIUcEY{c$51pGaXhK4PbdDYd20@9(-9*GjZMA@3(Ohm$x$F)DpIDU8F=tYvGax~NlY z0OmioIqE(;Y+QJp|zE|BI@zAGmvV7%J)^eL(beVC(L5c zSXM(k4vFxiPLh@gW9ZEi>h?R))prN3EA?53h6;-r2Q;rg8I!G%4jd1|6=s&fNn?vF z@QyF+_!N)qmP!vCF4VY0-`gz#?m z?&wE)?9p9S;&%? zk=SLSYpeSgdVJh^xb{LjUG3Mp@v+X=^XTcq7#M01Yi3uv=l@RRV)(S0=u}0$xn{dI zpr?Sy=pY68@UhS}9VlnP&b01$_-Jfxk$O8(cWq;o%2q`0I!tn`S$2p?i&5O?z2Ep- zKj5nGg$g<-nJ@bjjn5eGk)u6Ublmv&YJbd!I1gr7xASGAJuJP+*QS#)eIf*nRkW}} zMD)y?-)91{x1&8^cf)YEx=J^8e@t)1o~0_39Co=&>@k-$;n*uf z#mFOqr^)tZK&KU8Sk+UmnUM>E9ofYEkcqK2`yL85nZtQh;?7fW*cC+tg zTSz)fe>x%^RydzY5M_e(Vjz)m=mgMO^NxZu)h@sSD|El1Gqv{&Sc>mN?m0p=T*4c4(ygxb1^|(q-V9ZA_KV=p9&ymU z9#*!kG&-&ofw%NZvGWnZ-VJ4>J6Qu92fpUejpGp^}i_vY2qMD;3h8ei{0 zSlq_zW*l*yCh+HURwV`BF(v6Edr%(uYJ*^Hvnwi_HdMLe zQ>QuQ?epM|CyE{YFn~K+0+!$^AxpdnSDS?4$DSf-PxN?`pk!1 z&+%LR%gvA87MF;e%j!c zZD(aaMOJvhnFb!u&t-8*z)@EKPTOyl>DR6_0GLd4Qpt36fNqU;Y(=<&b#!EbFSNVw z9z6c~#6%5!Q+E=%4(V-s8lP~v?Qu6`cgF`(qu(8r6;XhDP(I@gKCnL zgpEO8QcjZYgvlJCz5SUmmCB?Scx7JDfWYHx0M^=@9W0GbIePpv$9UL}6?MhwsxT{< zuY4@)pli*+)DM#&;@XczsPJ!geXHwCigZdc8UYAE&#G<_3w3Q7ZB2gW^z4|!&UQ>QA15k}pi_m9dbR}ul z+?b@%p%!g<>%!ML7#34+84Am~uZc%^&-cZT6=ugXlvrs5786Y;r|wpKzR!QRF(O7m z9`6I%PeLMSXvp%Ixzfu=ORewRpDJ7BuM3ksblTiw-Pg^Pyrk-Wl)WQTU`SKl2}yV; zV<~~W#$}-(D6s1j?0x-fAEvcLJ}6kCJAF_hTNE5B5_@#A6+CtEx`3@q)Y@DEJxQTO zcW1j&2k6T8RMDChiZ;aaMu~jQox4qKN*%9v->ozyTGNNL{PId@SJJ}oTi&|m_EzV0 zMP3g5xwl{|${r?gDkHoXBGc-5f+XFW*I%fE3`_h{d)8;SU8f~e@K|5yUfE_mNJt0& z4}HJy>`SXkKY`UNjF_Km z@9Sv6?B(kG7eyf44z?-n?63^Wwx)0?r&%-z)Zyn4=Af;al$xTtw=EyB{~rQR_rgjd5ccz!M(3S_FUyK%r3`EnN#S?siQR!}fF+7sphKA9b=U zki*ImWKeS(kOELitPRL9cZHTrv_o`QmT}v?A=n^8q29KHb5J8sT+zDnuAgLk+m6lH zXHMk`zq2ufg^MmPefdTaE5j#byw?h^Un||vV&%T4w$v4Gk@up9H=@Jp;-F@MpG8Rq z)wBiQP3@ebyBiET6FC_SIbe2IjGCS*$`|+Y9i+uPbAB;UrZdk`hndq~Nkwi15}dxBtKyBI{2|3sL0|rp75ogf;{3 zqd{Y%3B7U*Ogf_Wu`3nj66I#{)*wbxbX?-zy*h?1E9cao75n7iS&{(l4h0Lo`?Jkw z;y^xo<{YrMdZ}mu0qJTkE4kIeVMB1d%uE;-e{B?i!@h&aw~p|xzX}n=Y}C>RtZXD^ zgSe^mcoKM4>G60t9nP#O_zWOw`|s#>NmjmXEJicQq>g=qYA0mXt!c~cQMH6jQe${X zQho09T=}>U4eLjt?w*^O8C&4Q>}Rf|Se{>-tGy0Y@$z%jZQ=W9EXOwCRhxGJxrP~iv$ZBV%p?0>+jjP0M)P5R`qXAFZ6RcZ_^eU zlAujaOV@j<`;_VHZKB)4m;yb)Z5^F~P4kAW`O3`kP-Bf6Tk6T`ud#Er1KY})ybuE! zl`_6OdBI(y+#kb{+t_a5f-Qc*Rh9N@!bv(zX+JJp=76{^1V?R+M81EAT*A<4ROkB_ zGDLBp8>&n~N_7uTHp2(me(+lgJI7QLIDNo3A){#hm=5N}>`td&FxY&(O&`E!-d4m(5~hlH7(r?_m;%@zg|MMp#N2x_^BcaY4AqECc-^hHd0E%SwGRiK}+l9mN|qgX5X{!w|%c$fzC;Vr+l?O059@ z)xDv{CFG)4b@!-mzkn#xwzT>#-NwgZ?M}Wd=M4K@&g?DYG7>gJBZpm7Kv#CFmymvX zyKB{}FoeR^4)}!hcY8BMUgO2ECRx;_$mju~=JI6iGOS_3&lXuo-1X;YUl1dcY|Y&z z(3fSA*ait@4T6I#V6KA@Mw(Q^dpPy|uxRDYhXn^}t|@R6o>R+Ll|TYdc1*THuF8Sj zN%o3uih!_6S4-oRk39*}4T;%Bi02w7rCM&;?fS3ur63d;7E7Wp_^L?Wt9#MU%gQoj z1e{5(`aPf2)K0)m2V6or_g&=!3pvQi#gG8qYG;J-bwVK*NxWCMb#_kCU?Xzxs;i(A zRBIh`h0VS>BhRoYn`vjCWqYQzeG!}I#ncFm1**clg=7X9R0f^kKkKwtZ@D-1Pl^mf zyBL{vi{{3!7<5C{y-xeh!)<-cN+o=LGz8n#r;WHK7H`-}>^f5tSt?FBFlUNNQ&j1B z3^F(4mX-{5aQ*ip3K(|E(Ty8AhA3j|`f|dmS)6dnGA3BH{Bo9SLRlMx!UP26@Mj?( z;~=g1p!2gZqrje>>Q2vei}qNBszz0CxTH&rakVOh^CL|b>IM#7*v#gkR}DEq4#@TU zk|kOHZnmb@j#K0{_IP=wM%~qxNNz?t9bCM)7VgP>kHyRGqP1;O5*CVZAs)somqdGW zN29``+0-sJgUvwQ=^*2Y8l;ZJr4L%gHs;PQ=%VF{f)&&ZW_BRWwiSyS>uiars+ujP zjlo#)mp?;>aG%B#nwY@Cy1 z1DhwlvicLDFlO9zol{EDI>=+A=YR!gcH|jG%)uytO)p(-(UEQDwpD6tkU*^6CLvEj z7KQt+H(fQCDFCbwqsGW9bV9hL;LuoQ%>tiVG#|_LsZjTeyC67F(~QP47i>@K;w_qw zuE2O2qQGkV#_(}f#Bg#`ZDYoHr#r>QYiAYPXiZ^;y*&HkK@YtI6qPcQJIx;u zt-a#0Jru94v*58vY~34KTQwJ%8K|Pl6mAnHsSDvR*ls#)VmOP4Sb%(P_F_@1g}qSC+@0Vx=?Fe>7};m{$p z?+8j^*N!X%ycWsQwv`{gHeHR?EsIo;7qHi55w4y{%yNL>x51+Aa1);EC z8{GbDg*PtBF1TuyZT7bt;I)>}>S*+w!Aj+N9X&II&b$oD$(-=l^jqU4A3w{|doh$N zA{y%1ObrL(H;%p2Dwv{ns6_P~zhU~%=G3yvZ4G;KQf*gzDU<2|dLurRE}=*Rv2^>{ z<)LoBF|;b;>Uh#rQpjBHeF$TW3k2~j&1t(00mW!nzV2`5OKN1o2`?ojYgD&WD>b|8 zrQ7?slWK$yVRGcPb`fn5$e=?xxiw}8Us8cToh9P?8C=Rqnm%nlC+{}ttbR8*U_|xJ z^{~fX{etk1nX2kSebZdPEmjJF3P|rFxcYN?(NUBZh0seBOpqGsos3En=>k#%L=qu%2rYz! za8`i5|9jrwdp?{m=kNtAAy3w`p1WMvbzkdJk9^CQ+gO}jfvf4J#LWin?p~L355=2x zTQimA%gzq}Q0KhZ@1Cn36+c0%oj8>kT(>9zYAgKR7G-@BLc)f?iiUKWr9^Jh>lU^^ z+t>+^i1LU%qF|%u9lOJ9mHJ~H!Ze5ZSDX5PeSGU^(elV9h% zrtEkh`EWKz6ai&qsD!aamnknM^VP$fWIzdoxilDGwLJUGVpMk<=jyn5X91no-Qmw5 z7U#}jEgK9ION6C(EihL_lN;76+G@NVPT%vT5B~hs`NzC^U@8dMH$56v6?Sh`1zt*b z{+?MCW`q>RByoPk=JQsN5YsJ}{fC!1V$Nj$iLsy|H+|}Yvf{D`cdu1&{N~3;72PLu z&~Y6d9dXNY6kK(*@|6PhSH&hdI!d7&mWm=kNvkXUoJBT67I`ba?o;{GE@DBS$FdEp zjwS*vVFg|g2AQPm6I>uwM>{)_~Fhw`` z!Wym4`}k{7fx_uFCUWIm6(cp~bs+0xF#S}MSwfQ;TbCC#^(1^Md5YOP(2CLz%Q-8z zo))8bcQz@d;Kuu8r0MQB*S2hZd?e!G9Q;$c0R4*&iL4t_NII(HY1Hyyy<_d&v*v9# z%ZF$PYs?Gk)|a0guYYx{EDgv20cJ-3=~{O?gZ2*kOx%T&fIJo zZk4E2N8c(8@GUHwzw$w0_lFOu*)=Ax%^g6n+Ahol(`zmA3Z|cf`D6LW-KQg4801q4 zoSA7!=kS)(Fo^m#t(hmqSwoJ7nVIfh-?RWDX6PdV>cOx4OJ zQ(Z>&vTFR3E#NS6_Y)CRgnG~T8ZLZ0&W6@mXDB#%N}v^U!G*9MGmhk~!wsn-G&;k0 zPrE>wid0lB=j`emn6mO%exN#YFhewtY-J8OA)__@ze=SqHjR;A%{9mf4mZv{sHcS$ z(C3aDl9*p#B3&x!O)6hvkRkp;ZH6U1NqWmlKjvv7fA_2DNx1hk&U^A_y_2H|2qeC& zr6Z?)FTq^#OJg97xo${OF-lBIISNg<$blxspA;8i}pINq<=dfq9>)fo4$naA#kIMXuWm4X9?seE5Z_iO6*x@r`zsJ;$)L7Y8Z3gHvl z?#p`lq z%$(05K#94OFxCT3;l|e}+4moc1i*z4&qxZ_Ub&G?f(}^1Qy5*K$`9Ar529$QlsocC z?lQ-L4>?raHSaDuId>EC)dzrF&~hbW3#)0xr7`=M$FBy1fsP6%n{SZ;%31$|9*-Am zMB9R463(Y|$p7m@#>PPPHp@VP)Sxwa=G5NwVEE4Cx_%AW$8xL{!Im&*IV=rvPE)>T zY-@!%q>sU-CVMQGfO!QMW_!FOa_B4BbMb{c+^oyVMglPHVa$-cIbh z+2QPge(@3m_}okPd>a-x#9}{Azc{>ASPGUiRuPgu2x{TcDVJB??U#D;&ZDAt;ShtR zDsTWu(0s`vnvif;1M%&6T^(vMoF0loAtw==M zM*x{rny1v?D)~dkDv_T7e(JBXYEn*h0X0O$7Ob5I8r zfMifiBYv9PF&lj(F3Fx-_=dSEi2wb>{GfAw>0;@*aEm#NL&AAoMfuV7@(f*9Fi$|q z=NiB#rcMb85&w$waeX_$dMstU=U8dn6agQWp&BiC9v^^=231}x*L1u079&X2Q1;D{ zs1s$mgUA^MU)_Rzi}Z}RU9083@=ag;wRU`aW^fgqqPPjW96-t`&CtFmh0PzUvAr4I zlJ+yKE$FWy82xQks{(6N9#5Y1zEH=l+aS-^^90=M61@)fmA5U|D4XEkdmZ%SdF>(q5A)Y|HiMZ1;R?waa77m8VMyzWKp9aLf48hSN^R!_Z+rNONuOVf z9*JTSIf~Arc0qHbSa&0$2sNG89Sej-ntVMF7MpH$x1;;=u7BKfu;g5eZ&eY)C4tHv z{DFX+#<`vf)21E(1%Ev}`E#D$>X(r>?&(0`(iIU5P++|zSl(XPA_tSrhwcqo3%v=C z)5XM`%J{_OhyR+-)H>I!h zc7IVoWZaBok~29;C~IhX`3EVyIpVgL?lXs@A{#jZOActf?KIM(!}jC^JP1NOao#!T zE2N?GdxO4e^L9e;yXx@_&0x0J(cShZkKtRnOW=mFpg3a1t`wN*;eT-trkAij*2p=? zzZz8n1r$W@K}xBJ)M|@y9YA}fFwiTMEyNc0$xB5apSkIa1XWP2@U=J=_L@`^`G(Iw z@^vCWJ!rh=Nt~~?V=Q}LCR~gP6a?BSV+he{cXHkP@+c87;y7ARWfc%)m?r&EQjW3i zz^_1b=q=!}=oPIsb#(8| z2Oh>EE#kOvTYK-Gto`0n+qvz}oABwTUgFm-i0=crtNsZYnm^8@S$wn*IB}k(4+v|} zFqhVyCH|5fwtO136zr!gjlJ(V;US$_By-riVrvXB@_qR+1L!yoi>UCbC}4#Bq5rtc z<5rEUx`+T<$jz{EX7n6UPXwc*Wu)v_yk z$M8)N&G$YQRRmBZg$?fcPih8GmiA~k1VQe~MVa<=0Yl+5ZS?fq6o%-a7Y*bud@0C9 z4);f%#%ESvv8cx{PFXc^$P=1BIcsev@Sg&{rlbOBE$7B*tL*z?WP_to#Ubi*#& z0g#&3`bVs=HvSkcHICh_nQa&lY6^*$>*_^;^1sP8^TrI~13E^uG5}M5XW<$=_^tb0 zBqD!u6u9PTx`K$Nlc=7xocb5W^0J5Ok>MK&8?nLCS>r#zh9r!@dxDbZV-5asNX zXR(=~r63q~lSNvS zZj3C{xb{_LQssBKzcjvCeW4t4Jb+agdn(BxR7X9Da;It9K0H~*|J)j9oyNz~5fj5t zJ&&-Excm7rDYyy%1M_7T1if?hKJqta8p0^cv7~~iy_av)Zv%~90X$&Ww#!SR`kY9pHRlz^4+TfGIe_tabwJ<%|OoY6v;sSxK$-E&Hns~YCXd=+n?aPy=R zYYy*`7sU};yy(nXIuGA8J$80d%D582Ngb%Z=hJ^!7JHXA7|cmZnK^R|0U$caDLrF{ zMcW~_H*6GX^#0D?m$i{d+nM-(LJ&@iZ+Km{c*;21=kfXAO4??x2ss2*2LR2bvr&%K z5I>}6-N@{p;uX9K9d}MuBPnpN(t^8=6#_H{G}~(HWf#AunPQ5T3iWQC~p~q-`hGp`e-}#tv!A(*TwmT+zYw_w(t#@Li6pOzLvs9E|p8YP3OzY{wOKKSf``9-V*q{Mc&xnpBa(!HHs{h8ZkqlJR$6q zj#l{?eD7R!2v%0uqV4y4cFZEY+en-%BFRy^o!dA1c35_0BDo;7175 zZrOXPIA7oC&b@(*XPng5kf$P6-sPhnH*A90&~w%HE4Bq8u|TZGC_K&V?VY?)bo=XX z#Ze~k4-6y6@0H95t#3xYFu~3S5JL1*mVQJGke>p=fXmG*8zatueyWBNnq-|Am;Mrs zGk8yex7S9I)X0va1ScRTYmDYAK93T1Y$3$W7JGlK8;UerA-88TKoww<@_RgdY)yrtW7Zb(YSBx9m9tJ9-G>oOCWl(F;)lqHoDQ@rcj4wyD z#|c0FLIeQ%8IDt9kT%PlO?dV~+xg1&C^D*gqcSal2@9r^3hfW;7xeE3@YFnCx7)+o zlf(5mZ3PNNd2V}oU!DMzdMYk1TQ@L3baO*T(HAj|_Wtzy@ik%6N?!d%dBl1V5ci31 zuRR>u$&+>4NRaWy2J!We>?6Zv%6dZFRsl>Cp^KIvX;*#6oZIj@6vJLa_ILD0czhaW z+P^I-z8&YhJipg8`|;IA;2$MEnfWjD#R+maIr_pDApP?>n_eWKEX%TvqeKI&-XHWG z#k#2t2lSOR3RiXk$UB(@mkNuPKlnNYMTC+v0;O=@%%`<01@&7x)@`j1R7Y!bT%8vq zorlAh3vk}p9pzGjbb#Jm?1<~`TI#hJ?Phb)D0hbX=gL%i%IOmW^OX@x>z69-m|H`z zP1Bjy%x*Jm`r!W7`qgRQ*W&(VKBA<~ZP#*7=iuWq*JT+F#MW$0MSeSprRkpM=zj+a zCrIba6kab5K$5Rly@r0ih)Y0i2AmgN;i_wwU1^beeB!BdU7kc;%$lKnQ3lHpX>-@9 z2US9iL1aRVuJUDMKxg2$(LA-NzBbo1;L{G&gOPsWlt)a&+Z7jkK(WeQ@zPkBjy>LK zdfBHpHlVaW9~j4X(?Gzw?#HkBq>WK*`Wwrdqnkp+8h{{Bmy~5Hk1wOvwpS^J6}=dnBv|0m_b@N(-X90ng*}N4 ztZJ0Uw)6pt?4xoh-aXaJRoaT2eH=amB)Op)9sd9VJ@NweRQ!NT_%GHi%*A(C4H(PVQRjL1Xz!J~-!@8g0`D{N{sI?eHA0Ny57}z zm9|Hk&nsL@^!wFQTL@+_l0VfX4RK7&qB|j28ed{F}#0)ywz(-0oa4B!BIdlrSv6r<&Jr_jkvz4HSH% zT;L+UuaZz+Rdvyn8ugoYbkBzopWO4_AvY>%%&=@?Ag?kg0b{QtDJKy;dmadM zli*c2qS-(psf3CYOMw+#vufa1r=YGdn-k9bzn)o@>s&9$4b#R#iKZwEnuCgjb;$%&yjKAm(jqWdBq z@i0R>%6f`^HDG3AJNlg&lQ+9kT-N{6tFyKO^oM<|po)OaXx`?D>bUzPWU0y+n&#TB zGTPp4b~KunfhwVEJ*fKugK?ou>nty+dFKQ@8we!}6bsyJ-(pnEn@CW4nSM{g@)4HZ z4NaF|AFkzH!r(tMWB!^iqmYk^HNG1DwID-1$`cg71*;8PyxHfEdTS($(sKnU_w3|` z0tPhfReUVAxw{-Ayin6(T)ngPV`-f!7fM^C*Mj|U122O4>W5UPcgYn&6aWvk>-}ChB#CSwg4|s(J*Q)FnIgeDFFc{u zg#yKK4nWPv?zr+{qQ2UQ6Y~D{thp!FO|SMJ(SM{CmhzJO^+Ld(?(aR9h^J9x=yYbF z?$b^%QeGa-YEYkJBgt&Mp0lm$>g*d-3HJ9NLPCVr`@>wUyx-m+b%8dxC{Qmxo*I4G zG>Z9_pGivigB*Y}fzJwrara<1j!2z{eOnu~+IfoB3+f^%?Jy*Fxm}C?Nm$}ZCzTgC z&Ya5z$KZlVjA*5Z=<)SYEg)*llf5#Kk1St5a7jRROMmSJ(Yw=P(*$}AuE*9_e5D2w!2>fP3oNq< zL9gbGn~uyLB)!Lsdf5gHqTv4g(r{XzUd+lv1-ry3Cn<#Yq_HX`{{ucqW-7u%v*LWI zWqbxV69ysZjfIp&v5wtV4$J|?Q!D1C0(6j3E^MD>cQ2 z%$VB|7u^d_;0g!(WAs`Pjyu1$yXd}AHl1{j7Hy=XMA2j?)R#xtcQAtRi@UXawCLm%gODQ2B z+>avly5bcKRjzx_iBXWhiH-&aK~8(E=*h2LNafb+tX~@lXQx~`oQXUT?%TTZhXgl# z2q4^Ks2~HhHwKT%T-&^p^t+t-Tg&)o(dIdmeTmr}`@{V5qu5(QBspfLN<_ zvd2|(Klx^4e|FExNP9x(_v`^AzWB1c2Gmh@j z0P7(yKRY<%xFCfrTG9Cmq>NW+Azw8d{qbnSq>^;pnnR)ST%87NJLqj7$uQt;3@o|H#qTsG(Q(J^pu>Khc);J$ ztNljQBkNo=dM2ZXx0gqZ>HNW__y;w~{8^ywmDOI@gJQnea+@3w`wH-M>XPG5U63<#3+e96dv{O+ygs3e4EY^= z%Km)w#R!tBj8$$06$%ipr6xe~u{}Jzh~k9-sTS-LQTUDIl!V=0%8yX+sXrDhu087% z_e%jAG}yE~_FR~^n!<%ovJG7Ym*&PJuT}dh0u3&%yW{EkDp}U|^Mjhb@$W+~N9<)0 zq-FUs7uyVs(0<%~aq@tdN@OAz0>oiv4VNzEMu+ePA@qFzttUwlSfu-B{#3^cqrk*0 zq)6O71t{&;YifU82JO;xljCaOwv<4Rjy^+z3HLalOEq{DDYkit^^a- z-%!mGkE|QZk52Bqm^8<`&aJql-yU|~X@mII8W(YKW*LH*7Hw@TZD@8ta)|0Zh<*`p zXTs0buXUyiXqAw*^lc;b*+A93rNEtah|UV?ze2T3$Aio z{DR$U37$zsWZW|iokn(WV<#>VA^w2S|MYQ1ge2B07xVn={%U>U)FM!{z&}K07h2YqmX_Wbeq~oWQ5$^Ew@>xLUKBMhaSC*a{g4HGlUnk>ng0IB^Ac1nwjZ_hmE9O2FS0eRf z2su!L4Vt%h-&F6v^jH7&_IN7k4GVF-s9tDkjn<~ciZ2K_cNS`|Y*K>tZLwJ2e%~EM z!iet?W`|1LO9$(GUHgpe5Ia86fb^kPm$`TDMuAxd5X##W)s{|2<+VaV>-l3ZQb6xS z_A?7O_(gFS@e*gHs8vYUuR4=ACc;|OrzgMuNvkPZ@?SRv{9Bg0W+z{6T;-a;$>;0B z68PwzyHvVU#&h=dg(PW#cNNwJd>Cd@~Q*~Ly2aoLF>q=#A>A{U89R(Fs!@4m+Cv*MkaD{RibXm9n2?$)=zzib=zsH+DUGuRC zNM+#LgJ1LSP9k4ct64U5X%Sji^_H|5W0Y^m5Nvq8J(;TuXo(=c!e z8@wMuUUy&OsmleZ@8~_pxP(5vR#gjiEBSf|_4Uz}bA=PgTaKH3-@xC0gwYd@Ap|&> zI(&rzo_}|#$$|sg(z{~V`$yS^q@tzMHVX~MOmm8djD`zk^@0Y30%P`_?ixf zoW|LV%Ng&`+E~qIArp-Dwjv=|-|=DpsF#Rln_TE8sd z^T%R6Jct40fIN$KUQA!SVi>4b)4J;Z>#dUtGxywe|zGZ_KiU5@HdFLdeH9satbea;l3Ove^7f(B8yO3BT+^k)+&yN}LCYz0fe8Anrn& zlaNqgJFH(Gpi`sIoKVox)O3lm_d^V0;eQp>wH?9hou)$Nc17O3xb#6ZnGIBKv>h<{ z7bC%oDh*p;_f2KN@_ASzgLQ(a&35y01bwvPeT)qNVVkQ~BVxex332gAD)Murzj?|b zTW&QyL5?L6A1)`zxB~@A$8!MZ3H2y&B$#I6N;=CLj8WTP0$uIxBKdS58IRE6#W0V1 zW8Kz-<>Lr@Q_sVvl2`)}qDO$%r=txTr)@-4FP$8TgxD9=n=}|1e7SAp7&@DAr~eI& z^E9D+X@+<_J>f~rP8z}isQ%5H*RANlpIN2V*(C3Ic7LUoFO^y0#NS$FrKL}fBb3TN z1*IRO-Vs`fnUFpxdR}Yo*O{N-nfk@J9x#pW?aZqbE44m-T*zv-&huJGyF&OQXtrA6 zY6z*n$ot=#>8mt)AACp^iQ1dw_FNTAy4{tfDwWsDTv87iSfFhUHI0!VY5+;j zdp({^8Je0gB|xYB5k~qtz4>hX<*CHguHO3fghD#WU0nXkt)eHV^$p4FU0y{O>*A-g zqob!Ep1L4x!wtAs?c4f8nS5@IO{TyekN(=CQ#I{XR4jYHc^nu7sMuO(yYty&{#qKm zkeSzas6p3ql<&BeR`loGTTTw~R?{ojSSy^ZGMovsi8iX5=?JEg^tk7a1rin?DH<1e z6-L0fvo|;|abU+$qIY~FG=UfDrs>tr zClCsBB?Q8F%sKU!!&Y$WXNKFm*K2$FJPCrR1cTKi2X1k^V#s(xwSD7DFm$$n3YX^V z(zbVUSB?XhwhX&%FOTqrm%X%&2b`%tjGeDEI~ni8z^EM2uw3@N?ZQeyI=5J>@iDJNo>wJIW1+V_mQ>H`%j*t3U3DQ{_>-m zuK1)h$*lY7Hv>WL)2i$4V~dNkLkPq@e?5i9>RgG<1wnCf$GNq2;q>5W-QsJ}=6ADn zWu@%D$R(s5DI9_dlQf+eZN<51jz^V|*V>v~)RJ8F22n*y!ER%vizCQ|BI9Pinb!>P z>%U!o7|Eo!MLt6Elx5U{DwRC0th-|$aA*uYhZ(tsXIN8*{|SSg0oMHg0yh2Mfq^$* z$Le!IQp(C0SQ$P~PQf0UnEu1(q@a97W<%$eY6S0BGumL z^fQBHH(HJ!n2_bxj>=c;*#pNi+e!XRUz5D=p|I@m)rXaJntgzEC|`xw95p)%@4uw= z%Id|>S|JWv&g!%1dgRB`{1MLTzrAlr{C-WI23bFvNUM2hhI;F8;tB8@`_QvSNV}P~ zSX%l{j|Jv2__j3_q1mR7{^r3pe`fE@34nJ7b(ReOkT<#V=SXQVs`?Cn++4Xr`NGT> z+|#iDXPyH7IiG-i^tIX3L5CW%!?EFmYd?&bFC4F8Ma`DOqBrb{?!0YZ!ZbfWGrh0; z7?3ACRg~hYBu(60Zk6 zd55w}dq_Mm6g6f}fMIU)EY-v{;C>VO#0;sYKB=>@s2=pNtRMoQ{|(-q)kkVZ9~iLV zGo5=kyeqogk<=IOFG|V&$5~_l9S%JgrR7+^Vb( zirsa~4b2_+Hl!Qbx+6WgGerSsBY?$G_g#1Tx7`CzB8v5uvq#L;zbnr1S9c!H7QZ&WM%msaQNTGUG4Cgz^3~!0v>Ysx zXimcsfjN_0sEhldjpgABZ?X3s7w><&>#^We;9UR=ShhZr9}fJ}lAMA$kvO`}0Kck% zvMhe$CxwHWIy!}w}!m*@o?)%tsf)yk_5u+jJe16v(@@q&}j-Emuk5+&da;S4p zSHHD1`8PAVzt;9o5c$WnW_cL(&Zifyka(T7_Gi*@G_;Rd$t9>e#cC)aCNervuFtYJ#E!hyA!50#_hjv0Mt3bR8_`W61|e1X5#r115>dxkHvUBRGGp>aBu z;@{*9UseQ8str{OR$k;6FIQguQ)Qq<-!-B6^A7rTQNgj$BpD?#?w_5`tash+e_g{D z{_fv2ivwQI!p&h8b=nb2ukH+1I)P(-sFT|^Io$DwGJ|=Zi5JKj?g~#;q1lDqZd%kB z11=|?uaj)CmQL6mo)^=)w;Nu5{ttgi#&#sc-ZMTF+f8kWTsF!xC8aWn= z5fsa=1Lwl@4G`j?fx5_|1-qn?TiNH{bT7-usd`OuN0`f<^pq76v6G;yF?5F_<0Q~m z=CiX{E^-R#-Y}O^ULEMTLWv@(kZj^r#w^91aNw8tIuKDYrpf&B6&c&M*ErYv zkoJhusqo-vnu1L$GP>HS;szR7W56+H>nDm>WcHHDSDQ%cb$NuJL{;%)r{dY z%6sEsbt4*+x?d8&NkIOxa_a4OMqXUw`lYHEBY$!Ih#(tYOQ~cyhCpQ^#9GwnQ_vln zm0uzbaJz#=x<3t00s=o)iZ+M#z7-b+>X(7Lx<-PPb?ck*{hhS^i_1d>X5gIxv7{T>OK8_Rdo z=*o=A8H^em0#jx0Ka6KYqi?Mg(D0NMF|b4I?|G+WOF^eVM;3qj#XBN z=8IumU-6BBgIf47*4<+7TLs_03LXnZRhJ^}PbgQA7>jnY)O^mcmLhI*`N7lm;TR|M z9`-?P1>AKQ{gd#&KtT%1;02j6f+ zNtiWJX!3`Nl~{9+5cBgS0X1XHwB5To6CKSSF8n<`nGxyDe|F%by{vehC_l8S%0N?a zUAnF`R+$IvT;4A&cLBC2s- zr?eHf?0i$Ii*z!7OZj7^^;!Qpc9ZHAav@8#~vVgu!9xLDoFH#4CCSiO3hAHX*lf0hI1j) z8n;`@`Ym<%`Kd)K%($rZm|?R>Fmjc_Ps7ZTWXk3)_H{k?D#}E$;}lAEC5VPxh8ij4 zu6Xt)#5*G|hcUKJ3&+CeKeY0n{}P@IWSfhHmeEWriaeT1QSveD<)RhtF4z6hDvDpO?B9SPQTBBd*+$Y`Z zGJ3dd``_L~GX<2uPh6XL64Wi*YUsKQ<;^$l1C}Aj@Kpw)4SlsT9-U|JJMK*ySM1aj zlCPmAzGt08NQRQ;JMGWV9b-Pz%N3qYrZQF&2w(qXoL}9k7#(Q5HgE12oM9BmV_8^U%On~JkkA_C z&7Jj`0|R|3O30}P>hwpk#>VcZF}#=IGx1YQW*D6|4VE-341;o7Y0^Zf%?|O|*PSPR z$O#1g&NwIs1e=!jP9}zS+rL6DH6}A6CKh^=j3=WtTXQsJ;_}r!d~aWrn`e^A9>h=6q#PTx%m{@D~7mqjH9khgd_ivtY_}p&}NZT zJNtiv)6+w(Z>KLWkiPA<$64wqF?!?im$%2uvQ-sy%=VGB!^OT8aiE{v8w*WUxkxal zqdT%Ry{w~^+#wLF6d7p4B7=iP`(NvOx4r4EMmlXa;cRbG`Ex;`nY`Tm$Tlw6{jW|G zSu#*Nx4b>{{j>A|^wP7UO}Pm!3!k#y9Ck%3_N<(fT=?V4mPC(K}^n zRN*n%1}25I9D2JDaQejh8aPxAB$;yyA@iVK2#eY9l&o_b%~bX^TnuMTGkfY>u+VAe zbDKA`x4;go3<;ztLZ`Lh199<2j}t@$!GmK4F;0^a)|i=Vf_2o|piUILF<3wsd(leg zDh4KO+BkHAX?90qrlN}Y1x0nNpGdha)7SHcp-FN5m)j3bW&d_i(m&Ep?IV!e_z*@gz&TtRI%*vVxYkjAZa`G*Xv%mrZEqrN?61S}Oe#L84FJ~Onw}iI zptj)u++s6lZ$3paXl)x^?D_e#a6j6=C22aHYDs)Gsx*N1&xJV0|M&BKQ)0id_)NGg zYt0w6Wfgn!E8}-*{uUjfz+lk2YAb&yfcJS&`m#Kvs1%5vFM|O95Vq5Enw7RX&neDP z(DP~gZbkEtp`s!JUQn~5(q(@woD8L>1TO&k6q)_q2j5!_vnXynBH2s%D@;~icog@A zTl_RjTV5ei{Cw3+FSMvMsrz`pWsK5{6*tSi!K&#_F7?Xa8iLn*2XVaE-1*^bUn>kU z>S=j%?dEgck}VThErTF>x;I);8#{hpWvMBAXB{ZaH<7*p-!Em?TrYB42wOa(V#$l(S+ikQrPJ1s684d#3Vh;Oy4&QtBOoN&F$ViL=;!pR zxNGUw#^%3YZAk{ycZlY_zi;MGU|Jfis`OxMMEsrcH|F5Vx=Nhe+qax#096T82lBsra7utzOEoSWe8=kb`>EbOdJM<{kQdi(&EBe>=D8{*KwcxEKq% z4>K4W7$>CQBz-f|g+=fqDp)@W)9p*p2G)p_zT3O5IhoXu4?7OnA~z1+3eny^fH@V< ztm@cn-W&xUWBr!a1xLaBsr9uKuC(9iC2Zx40$>b!qzR(0ib*CI5TczNY#f^{D3>G4 zMW$2t>Me=jEIjbOhh|lWTkSvV1L_{-)WAp;i0PQB|LGGV=sh_GNCxg*332hVK9pv# z7?h90u*<#=O-tGy=USV}IIO(0a<8csv$(vlb*ghOM^9x5lD7~StrHV;)&LGsfsHow z*LqJAwQIb&U07LPncf7p@nsD*bNO$U=U=k+3rI*!z}OY&bhaXX?YGAg_Aetkl|49a z9c|dsme;K!RHO!U^rT&22`Cm{*sLh0ssMkx@QsuoWp=A;e68W_?XQcd*rJ)svKrp& z7t?aCNMDA)mNIqg)@Uz=*r|j|{~gg^=pJ~D7jYja_FJ~{8)fhIF&m3$CL8^Y_YU(r z%!YsS)@C8N0UtH9)1#>C5P8sjw&$Yn$YJhqZw(PV)>nMSbZJBMcZl)E|;F@*Xrm>s_x_@dEuS%qu= z{ps%S90=I4o;}&wxHXl4kH0{TRYR5+l|2?LKB_|X$~lh-0s{=-nOCYmOx1+OFM*0L ztK)(Wcs8d>P%yXU2XXNxW6J({xU7=J=uBYdm^EKWIw6aMc4xS-eGeF&!~HXVa5x3p z-s0uEpgog!mRJ2WU-Z@j%7BbpDLjceqwN==4HRK9CDIq zId5Q|b0$?V@ocSME-uTV!HOs;1)Gm*zwyw}`!cmFV*S4kj{p;!jg1h&Os2C}WTWaEjcoCC;8OZwF70_VY?Gl)n% zdeTWnMX3%o#<1FsZ>{GaO19uUyD%vSR$+%9?cYJohkutZyL4V+gDSU+k)?>|K6u>R z+-zIsAB#pf1}5%aeVnwXi3PJl50g{Aj@$%@fj%iQ4s|K%hWDI`x9uh^qtOS_9<1YS z&Bm(wXV=)y|CViKZ{rxW#@}$on6!bBzw){2!eMhl!&*&{igSpcC=~_!8Kr zamMlrDDehqv^yD0`_GZX=p6j3qEeNykhrp@dnnS03nb9pK_~~?#)ljyXJ1%^h;r{@ zcz4vYAtl(N9o2<#xo;h6!R-edw=JEYvh`~G?b*J?t?BjuetZ7+zfK)yAYEYb^wPho zI6dcf^XecO++QTE)Ico4U%T)qPjO)Yp%?)!(D&5>2Sx4Oc=fH;s^vtlnob`|llm$~&vAZD_=aouWbR~J43_m5J1tHG)6tbJzZBEXKpX7CfRgCLiMm97>M7b;gUBbY z`E2E=mCf+Ib)fc`rdox7dtP z1|4@t2RJK9Ky~6r?9S54iY^A{M-JRsA93$4*6ZE1c9BY2*j+~hkN1s4zAYwXa~O26 zpq${)4gVjCt#rc}kcq&6z*EDBL5}KLQLkRYFoAak>nB_5Cx%+&#MZCxokWEKc*~#I zSnDIqT897L9K9;T@1sW$gLxI+Q^j**#js=-0#uyw*NWHclngqVznSq$j71a)mjY^SQb{ z&tY|3gREjk?Mpm(oUa}cH>R`khQGt%aEOPB|0i|v5e^H>(g`NmfasrN0#02HCmE|VV8C}8>Pf-Msbc@}zi1N-94I5{19sZez|L4nA_W;;U5H{l9w~4XR zXSiY!P_(J9_AL~=u9x=j7_KlVQNO)gMoVtx5MjqeB?^)n)Gy`SjnEGM{1iKV4wTAH z_WxQVY}p3C-{0oN%T+Q0wA9OIZzN>uO7hmHSJ6H*E${+5KU7<`cE$9Lui$y%=3ScX zvHsuEo3^%{_~?wX&&OYemOpBU*@fw>6IbiECK#~G)I5M(iG;GD-)V45GZ6hMikcHt zYpU*5LxJp{mDTtZsJa%Y^& z!~e7FzzxRbfJI1N@1hKvWX`W18u)cSD%W`h;yA!B&1 z;Ho&WU>nUvt9eu>>502Cm4X%l;Pyew739D5Dn9+#VN)M=hpTOl~sTQUi5Fz&P-AN>(Q5 ze;v1G2Ksi#lxQCc1I#G%?4bEq+Z#pXFS3?8k82*MU6FM z!fDY0m~@K?>$5~=6KEr2#6{0x%<`Vq4ywV2Hn!grmJ^(oTP}mTA-%RU7OX%Hu2MH! zTbJLw|F5Xrm9S{glXckFfu*g4BOoeD0B~04jYhe5|KZg(9jGgSG1*ads=Cehuw;=F zlk|9;^4Xxxc4pz;xP*&IZbo@oW*9KTgpMwAUvtT>-pv5!9QjQ8iuv)$TXRcCbZsi% zL?T)lZlWAG{5k@if_bHq{9*C`zU`mFB8Zt7@ypDS_4oOEDrV{OggQ!S3vJvz z)a08WuVLU?b4?$dDDH!cihXx3;_ar4In3zPq9{0L5Bg17%kraa^8JU-W>3dL`=I>U zp751d0TF9sH~NY_n!q`Ggcc@Vo!xK@R;&Xk97C~S^HR%?s{TThrPdPqQ!~BmMWOdV z|ElWZT{HVB-)hc-+ck$JpmG&e451wP)-27UFRU9_PJf`AZ(pjG==bEUmvLme9_7#`Yg1i91~4Hv$ufL`@h+H@35xwZ*SE3c^qeS zl$lXLk)kq!bm<**6dA#Q5JN8t0@4k=CeApBQdOFC6(JCM@5BOxB7|N-i4uAXErgJe z-0#LRw-`+O-{W#!}cmk$yn| zmUZJxJpAs|XpO#B*@*JK-LcPBkE15U?l|&*zs>^e0y&p#hkMK%2jW@`Ru1gXJ3xQL zGZP81@f8+^YYyofqkECV=7h$*g5!~uc+_#S$F)089@l7=slHuO!Jc|ZUK0j+qecx9Rc=5`$uwH#n#K52bs;>C&2sJs1 zT$Yq`@B5`;>#cQ$E$~=NTO4BW+O*#tUS4M(QqDu?ksPODxl|`tlgaVV3p4+td}d(m z@WXq9V=|dqGHCVE50QH(c2=!1AV>`)nZS-sx%Wit-YDINY--;tMVl7c^q2o3PGI@H z)iCHP@YkWXa64SSx=#6y{&3dE;8O0m$nLb9U&_hD0oTR*4?t!BhBWc{czu&WlNO&OJd}_fx zE^FKQt)3XZbbs1YL(^!K%%#`gD;EPx(}6SPC?|K*u$20zj*q*~uxF2W`bQ+>IaC7B zK!5CUkInv#c|Ng<+i`|FJuff3-Rh_@Z}i;1qil5B>QRN=n8F4X)GTZjtL7bK%!I$; zu-KmNmA=KC{fD^w7^&4!S6JJrvYkC4BGFTaM5R>sON#UdyCy3{A5zWdb#NJ$YG9H> zpa99`m4{bBp;nAOJhkUy2PcdZi?qb3yABa6) zaePd2t%7ab9u&!}nX6oII}T@iA%c7-;-t5VSjcgoz{@w=73PR8kX!{thfamT?-P6K z3}Qf(Ro&3+)=dKg-nGUKX$Mde|10NoDq+_Rj=#N@Vp=@7cdzXLv)b_p$T`cXav%tv z#!b>{u&$-k-J&>C9bKQ%URvX$)eQI_M9-EpPc zagU&@Z3fP!7eBjwlX%Ic%P~&LK1M^N-#T$E{%u;-nSv8*hQ#wr!#0`y6Dx;M@ja(! z>env)z{|AxRJ{JzKjA1nQC$ zuGJFdL7`|Zw_|G_%&AQ6&&-3}3*AizEk?m_*V{V;Kq-BVjp(P!?ry|BO|2%a)jo%d zwlqfJ!$WRr!T_R6F8F;^g%&5Q6aL4iY1#ep9`muBXaDAV{5{*;5y^#| zGycts7sq6Sb?R7D2P6SlD5g^CJh|3^0UNb6te*>r0T)#%@g1s`b!LqYQJ$kOfmk=; z`2N3L{+0g60G`t%*ur=r#Z+zpa|RIm)T7bc7v$<^X~jML!cFm&md9{G8{5ZL+K#N+ z@ku${q_0h6>)QY=+q@$<4%-#UpRc+#_Yq%-gaNw?dM?AUG7yS}6}h~7s;LO+jjxQc zEys^N^FF_Q_vhrt{(@ho2Y|9u4i z+6{$XyPNX==UcoRAYQof73Q`ldt`Sg`)twUL71~DJKM7Z0U=-QR8Xh$BToZ*{x8S> zR)cfh3iFItRu9;Ca5<6(FnIcelYN%C zX51?sJ`0|eUO+VgFyTDtOxy>=MmaFay+LQ3@b4|M;w*zyE(t7yhr4 zrO*@4V@yl!o9=$I*JixV-x1#6*qhbFq_4xxUb>D{fUeb3Y+RT+ZB!PuS(^Sga-{b~ zyPY#}>;&YeQM+!wKHXtkPaO!q5+j5Npp*WHiD-=xP6%A2C0s?eWhJ{MMeSBlht9vd z{SjRSzn(w50X11ybW1T@Y7H7^GMRr_=g&}ISksU8x)RGCg68Khud5z7Z~*FB{TK7` z{LYt_<0rMZsSDhZClvJ@=j=4BQ7F`B4FKFH^e2|~o;@v(q3-FRtvR6k?c29+x25@~ z2LbLcYS+es{(f|EXPX+{9C-qB-7}F8lb)Xbmu1{1^~IR+$c9>XWAxKwowA-iJGs5N z^eHz7x<;SoU+3jPoxrP*3`Zt}Cd237H2xkqd zS=KPe-A1Tkp3%e7XIfG%3sqFVJrpc_COdJN?||*(KEPvx@u?SiUQJY1IAgL|!|leu z_i%vv8K?H4@2#6PmsKV1qgRb0jLEQ<{k(buV>}A)vIe$(8!~5?#WUA^5}5hZOi%jWAC;>!tt4zg1PU^5PF7O zDp~6m=%?~x+Q_O{dvSawd&sqx)Z|l7d&m^(=#}Smjwihs9r1iGDXc~6;P_4Zo9gNE zzqg{_bKVZJi?0bUR`#wU8P=K+F(}n@ddeF$N|dJz^1wPNx*&B>NBi^VfBg9oIJ%K& z?pzKdN8{?`c;o@vAMQ2Rr{2lhu{;AGfAJA${PH#`s15=;P*tb9mIcb)zQ#((a`qZ~ zR<`)DVD9JB?rwwh9k4wu@IGRgoS;-<;ghf8(LfCfLTggolN7-QR0;DQ>gTt9{MqLU z32~F@w7`Xir;2Dd9lJxvR}F(ySKI$mSG#9sM?;TY^e$N5-Y;^S=7WRoOiSM2al%CQH|EV-l*<^wukR(haCc-K zt|n@nvO3PZt+qOGX!W&lVdI+@`{p3z^>4?#Ec96C>$|HAP_2dj;eY2BgV}N4)rj*U zo31MOodguW13%JPuEqIj#osOg-X8qO*y6OT+9tDT7TwXC*-lxiuq;%fJ>`S{F*;1e zmfCi8`5OL_G&lbI+-0jf!8(0?-FsE>v5B_uKkNzvKTJ!%e>MnzQ4z$PdasnnZWcih z617LURNZ$LV!0ST6WK#EjRhh*e#A=22<<}t7(>&9Q4cS*wb56xr_B`Hk1Q0@OK1B~ zakmHUn@o!CpsuE=NH&O7N2IQ31*vTBc->l-cPEMtSa`p^4evT-#+~=0t1imDr^@ka znu3N9?D&a{hMiwD_~NS7Gp!4xd}Tt;EO?Pl6U&#cZy%F$OA+X`zZ&M=9L!}M&5&!p zx}`SVnH(1t^#q?~Y7yA1+wEBn(^(IvsPQ`N?A(1abH~cD;1Ddi?16lZ+mB)eMNX}m z&R5*{W$j@i!Frb?ca$1jq0X!?sqky8?l^J^TVDZgNg)`dun# zOjcCn&GdTC4Ba%60HfM<^sMH9x#z;{D6;&?U`JTy%t+r8d{EoQ_tJL6KYM5)BE5J_ zMsA@>VN=BYLnjh6^b+x^>n7#52Sl?7DHhv)XlZ+sAZAnT8EuL58MHrYp7K#HQ(s$h zM?OFt2>g<96${AsP=?$0K&T(m(Q^U`Z1W()t-3f*SFb>6YS<*dT}1>@z$Ve6PYGIG z6){JIaaIs-R1P`dZEfGCja<&S9NAkwEEGh8)u~KA^xH01ow%oOb!CKD>NI23?OVE& zK~qt^MCcFD&HyYR`Kk8U!aDhlIlsBFP;x(wA2dxp2woj=8A~Nc2)coI94Vz3Osaxp zCe|Foh)2Fga)9iZ2vaz@>L8=}&sJ+p$CD{VNB%&nx(aHwlq9}NCj=$0Ef>v9Lutt>VUqQJ>}tb)DN;qB4=Q%$VK{dGTIxlK~IlvJ;ojzL~faew;9T)_*$rM zvgiUf39g4D<2%eTt`#p{yck-2U?lA@{;te44|V}RltD2lrU&32q>U+Te8Z<< z=2?OzcKqw_0^cSJFva*K{l~7RFkv-WPFORK9_R87n?YBO@TC9>U%pv|7?j_^V$XC0 zlH;{IBXeYhvX<7)41Su(KFKdyv*^}mECMB$Z(b4Yldp=H>j7JQJA1zUsH27VyeG2z zVYC*-8)XG$HiY_!HSq^WMK}|Jlsh#ypZBbV6Ca5rDlO1_n_Rhnh`hMDD6o)M-1Kw% z4>B?|P59Xuk>mceVcp0ZxR?x6RMQ#G5WX5abri{(XR?1$m)#th6w9C+iCC0QqVf}? z%u4twl+G^WHb6}fDYjAOAIX5iGjwaI0of!%XoT;@wTmjX4tb^WO-vjS&=)appLT7l zUvfR5@>1|Ls+j6N(RnbmiKUu;4Jsq%OyOt)r>j*83wT(n`O%G$TUIlTDr1U;J)R?2 zt&t&@`cxf4=m>k;V6m2rJVUGACKycnOHed?Tn5hsw)zA+tCLMA)p4_mZ<9)wi#9t~^Y_X_DH+Pk#>U_Q z>VL9SEsU$srTl4a&52v2VMOB`n1w)5PZ-yx{j8X(T4iRZz}XrUwa|$wouqnQBVM=6 z3KCjZ+bJPkafGM)>;LT;f%#kmDVX#7WTv>$%4-!{Q&OxH1w;brrGE+o&zN|m&ieV# z3Aw8ynS;;Abh>T(BjH#^=hj$9G2t-!YR)Dkb@iAdddT*SnJgG}v8LlDa>WgkS$4}B zC95`0pB;{snUaWnL9l0Nfg}>5czrqOADh6U=bXLWE$JFx-^o|gq{&({+c0x2Ez3#V z@zu~!DYsV6OrpR2hI?>9hU3$Y_;k~+^iv@lAp25Q;{*qeX$~z5$I@GoC#LXm7_}24 z?ltu>qH0>^NQ@{z=4R(bMFg`s@X<-hHI{#W9cGTY`DxE)N0ySBlrxI z1-@(deu*Rf;S4F@Jucz(TkGEjCp#bgB-K>SR#QTG&l8aw{v(YfH+rzz)*^{q|3Rwx zkA3UC2Arzfcf&KZD`AG%Q6#QLX28@oJhn~IbF&Nx+S(Uv62}8lTJ_CE|Is$&t1HgU z0-YoUmOp7u+HYvRxajsxm4L_egVRmQdpSfUhO!rGe5}L{vv9J8qSn*J>|PS;r&`u? zxJ&RID<(-g1lcxKi=VMZKaDzT9n%c6?W{8u>A$+3CDB{fGU-SrKV~xpJGU89gZr`ld6;U?~-`f0aF!TlQuLBZ_~MTleB8Uc5=uFjZY(0Y6PH|`xVLbni6LLjl+C&GZn0j ztGRb}|5}`*Y(uzeTGd&-s@wRjsaADe>zD+R&(%7GTh~-x1l1dn@FM?7Oc0JWJt}coE|_fB?6w!!1vsgqwZ*v z&4oSzCsNHh{`!EcI>Q>Xa;#U86N{(VFZ{B1j?GdDb+<8edXIzPHS>koo%u@&KvT19Vnly_4ca95ID6xFa4taQ(G%7h#p_{e*2;!cIZhb`|5C;H%H1(v>is+0eAi8_!Em}9?L(7E6>!tgwZ=2 zHedN|M%Drr^p(mpg7C9mB?E$zH;WGM1oN8ci)rZ$CY4q#5vW^Nv zOusEnLpv)r-!X;@`R?}wkaqI=%|7I^CYq0%6x0Z5#%8pl3JXcf$qbQG)KojUjGBMq z1sfXxcHK}=z4gmj3Ao!6k+V73UV?BG@--C~Ie7mEon#jV#p_qc<83_wQ}uWBhlf4o#Wyf+Z$A!gIWzdvT9L0MRsb`Hdn_O z*IL+SR9#&r!$$%>{zTbVrn0zXBxaTPNO$|xY z&&r4q0o=1U;E{!`>Q3p^lrjHEiFmhg4jyq`!0&6BZ?fB3q&**4d|@vpLPQX5H@p9+ zn(Fo>>!Wk4QUu9&Q}rV*AA-om{K3&-1N)ZXZ9c1j86#UriZkpFR<<`8-C8l#6~|_a zRSf$@-|l+GbeC@cu*2wTBe>jhm}*qGKWJeOX!YR=#U2=WkYNX`C~da$X1MaYJx~-K zPvy_Bg0A3{R$|L1es?IquF>O_mnpvKM@y&Q{gzykq$u_P0rZ?d%-Paml!(Ltu&O|&Y^sohi!7Kn^DvR&)$9w34_+p3PJg|C;b#ExTj>D$hZe`WtupRV7<}KtUsz(yGqgeA|onel^}zs zBUw`shM-M7y(w+C-5A?8-;)!VG%xwJ^4((x#eVOyrTvLjRjk*zm$9ypUF29C8At`6 z_xf#Gbfsp1Q0A0%tx;+Z$ov3(u9A`IS=Z&QqmHKm{;FzU-Q;93cYze$dzkww{>06gZmEMn4QF;jEoZn-}i3<*m^$9^-#;Kb@i_~?^m(eW)CH~2BJ6l-< zrliIRb-BzE9z`cZGp{wjteDR9Kr)_rY9#_octZPJ0u5l>gf6v2W6?yX#0 zkU{F;xd5*bkZ}c4>~AKacp#Yrv$JcHMr~Cgv~GsF0d6<7Qn2@WuyrKg<1Au-#)uHI z?WSTQ*%*ByA)QH43M%xpX+PxikU!V$XsYhAF4%3|;yA6mK4kgO?fj()VEpI^BuaRW zmTa^p-0O|aw*{qfW6j}N`d8tmk)Wa?d~8zv@4S*dCwCFu>{r=fZNe)C_KCd|dGSnZ z1f(jp_!2LOS9(iQG-EZ>qj zce6iU?U-WPy3b<8(#>u;oPUkI<76f&A+jy(#(|{DD@UgOVM{%NLD0?h8yiFVJ+b+) zc96%QDXvDhwiOOCSaV)|v2sM3Roe}=%ZN{C;Y#`0J$u+2S1w(+j>!>SdqJ^hV3f^a zx_ZD#ev(BjUJ?py;^RIHd0cS{?V*XKPz3W}zM|(G#`EOtlI0x&l1?X0gI!nwtRP+R zaWmE&ku*(|a;A$ge-P|w*=^7ii+I%Qfgnv?Gt;H;kpJnhFz&1}7nd&25hYqQZP)eA z3ZfiBOS}2a<|#S6zX06d z#`c$*Q>u`!YKwJlMwf{=52PH2?7f#|E?#qGmo0+ckROv?IudU&w%T7K-!!Qi*>olsL;IZ?*eCaEO956CQ(nU&wnYd<#G*s!f);((>?`^3V=Gia13s*>gp zET7QEn}KOZpv`U(INjczv(q-$;-aYGWpwo^(_5##xj~hWyCazs2ss zQW#E>>x}Lg98pGCKolH=F?B29F$O9D2W)xng6#o`0M0{G4=K#;+;-`~69( zK{ksns>A$f{9aXe>OxDq7@PG2a5$2<0^PR`0=YV(zO9`bpNJQ(Y)IWgB$aRiY%d9m z@qT>(B%;lg3gO?fs}&mfX^zC}W0(w$2S+5w!QNVtGPquM&NU(5C*K%I&~@&2;Q-c4 zG~Ds&Ye2)`710{Of*=LQ@WpBG4`0jGXOd8y@qD?sxY?tulBB812YO4!S8`C!eMMIm zE5<&E*acGS@x5h3ssid@i{+b@MZTr+JThDkf?s*qqLW$!I+F5C%12zJsflGK4d2OM zBH#BMe|Tbl-4RRdof8eIN}}J^dwHhFt~?uBiWX~jCs=5X^KGVkxsG+!nO*>CX*)|T z0L<0{$tLy-%NA>OuE~ZKl^Q`Ru22ix$Nwkp0&NyRo_`q^oYD( zs2TD4ZMv>wv3>&&uRze6lg_XY#q*YzxnpW9z(jZyZpTiq1*@*+niN6VOiPgDe~B!O z#ZD*euy}L5bLg()H^cXm+u&)D0C3Yw*0Lw09xwa>C0@|5pud^`Ohi(8t@mQ!gj4a( zbC_-Vk=kZ!cO|(r|DA%TYOWUB4{D|s4z%4ex($Dtg&nz_uTcz41h{Cf-TDAXI-H!6 ze~_`saMl?H$S$9LgO{hyfBk@A2l!=BICh9ZSDmX)`#5n7WRvzUHS9b_c1a3jVwW1w z)`=irS=|Q()PhUbIe?fZ4h3Y4^=8dO_-)mPluGhiOuAn38Yibzg!GYy-*WOei9S*F zptzZiF0{xJG}7e}Rlim$ksp|6T)5Xn@_>w-f|~WlSsG&#InP;(uV>eYr=b^E$5ht( zkEyPPKUtW`5?rXz*RBWq*sR=zJGZdTN=LUsk0wEWaYP_oC~_S*M*YTCiZJ=!7pA## z2-vi8?OGqZk;hW;w`3PKiW>D)!`TB=z$rm}ZTM&F?nVeIt{fH1+u(WU&B{Fv<$-A z1{ylTkRMi~FR?S0BmUr8>Z!0vCHh8svhKL=O4rhn=3;}wCENUd1=wIbrCs`MPwXxt zgVI#}C3DRiNTZZsK->nX-%D7>Vp)IT3xl_y*s|gEvU9AR`6W|3p+x*?_||H8KKcl5 zgi)tNf3z@>l0kV0d|?3yv9zrnXF$�VL+jXp@S|Q9K~w1`2Jo?zlZM)LOGi=ZlII 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�hTuVex`s-s|#V~h@0@#fiV|SR)@j;vd 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 literal 457436 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∋u5!=Z-6_%yXY+Rns*;qJ*b^!gc7M=GgIO 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 z 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 z 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 MXkN%TfBVt@0fYxuh5!Hn diff --git a/python/nx-cugraph/README.md b/python/nx-cugraph/README.md index ab267e5a756..148fb2f0993 100644 --- a/python/nx-cugraph/README.md +++ b/python/nx-cugraph/README.md @@ -2,31 +2,134 @@ ## Description [RAPIDS](https://rapids.ai) nx-cugraph is a [backend to NetworkX](https://networkx.org/documentation/stable/reference/classes/index.html#backends) -with minimal dependencies (`networkx`, `cupy`, and `pylibcugraph`) to run graph algorithms on the GPU. +to run supported algorithms with GPU acceleration. -### Contribute +## System Requirements -Follow instructions for [contributing to cugraph](https://github.com/rapidsai/cugraph/blob/branch-23.12 -and [building from source](https://docs.rapids.ai/api/cugraph/stable/installation/source_build/), then build nx-cugraph in develop (i.e., editable) mode: -``` -$ ./build.sh nx-cugraph --pydevelop -``` +nx-cugraph requires the following: + + * NVIDIA GPU, Pascal architecture or later + * CUDA 11.2, 11.4, 11.5, 11.8, or 12.0 + * Python versions 3.9, 3.10, or 3.11 + * NetworkX >= version 3.2 -### Run tests +More details about system requirements can be found in the [RAPIDS System Requirements documentation](https://docs.rapids.ai/install#system-req).. -Run nx-cugraph tests from `cugraph/python/nx-cugraph` directory: +## Installation + +nx-cugraph can be installed using either conda or pip. + +### conda ``` -$ pytest +conda install -c rapidsai-nightly -c conda-forge -c nvidia nx-cugraph ``` -Run nx-cugraph benchmarks: +### pip ``` -$ pytest --bench +python -m pip install nx-cugraph-cu11 --extra-index-url https://pypi.nvidia.com ``` -Run networkx tests (requires networkx version 3.2): +Notes: + + * Nightly wheel builds will not be available until the 23.12 release, therefore the index URL for the stable release version is being used in the pip install command above. + * Additional information relevant to installing any RAPIDS package can be found [here](https://rapids.ai/#quick-start). + +## Enabling nx-cugraph + +NetworkX will use nx-cugraph as the graph analytics backend if any of the +following are are used: + +### `NETWORKX_AUTOMATIC_BACKENDS` environment variable. +The `NETWORKX_AUTOMATIC_BACKENDS` environment variable can be used to have NetworkX automatically dispatch to specified backends an API is called that the backend supports. +Set `NETWORKX_AUTOMATIC_BACKENDS=cugraph` to use nx-cugraph to GPU accelerate supported APIs with no code changes. +Example: ``` -$ ./run_nx_tests.sh +bash> NETWORKX_AUTOMATIC_BACKENDS=cugraph python my_networkx_script.py ``` -Additional arguments may be passed to pytest such as: + +### `backend=` keyword argument +To explicitly specify a particular backend for an API, use the `backend=` +keyword argument. This argument takes precedence over the +`NETWORKX_AUTOMATIC_BACKENDS` environment variable. This requires anyone +running code that uses the `backend=` keyword argument to have the specified +backend installed. + +Example: ``` -$ ./run_nx_tests.sh -x --sw -k betweenness +nx.betweenness_centrality(cit_patents_graph, k=k, backend="cugraph") ``` + +### Type-based dispatching + +NetworkX also supports automatically dispatching to backends associated with +specific graph types. Like the `backend=` keyword argument example above, this +requires the user to write code for a specific backend, and therefore requires +the backend to be installed, but has the advantage of ensuring a particular +behavior without the potential for runtime conversions. + +To use type-based dispatching with nx-cugraph, the user must import the backend +directly in their code to access the utilities provided to create a Graph +instance specifically for the nx-cugraph backend. + +Example: +``` +import networkx as nx +import nx_cugraph as nxcg + +G = nx.Graph() +... +nxcg_G = nxcg.from_networkx(G) # conversion happens once here +nx.betweenness_centrality(nxcg_G, k=1000) # nxcg Graph type causes cugraph backend + # to be used, no conversion necessary +``` + +## Supported Algorithms + +The nx-cugraph backend to NetworkX connects +[pylibcugraph](../../readme_pages/pylibcugraph.md) (cuGraph's low-level python +interface to its CUDA-based graph analytics library) and +[CuPy](https://cupy.dev/) (a GPU-accelerated array library) to NetworkX's +familiar and easy-to-use API. + +Below is the list of algorithms (many listed using pylibcugraph names), +available today in pylibcugraph or implemented using CuPy, that are or will be +supported in nx-cugraph. + +| feature/algo | release/target version | +| ----- | ----- | +| analyze_clustering_edge_cut | ? | +| analyze_clustering_modularity | ? | +| analyze_clustering_ratio_cut | ? | +| balanced_cut_clustering | ? | +| betweenness_centrality | 23.10 | +| bfs | ? | +| core_number | ? | +| degree_centrality | 23.12 | +| ecg | ? | +| edge_betweenness_centrality | 23.10 | +| ego_graph | ? | +| eigenvector_centrality | 23.12 | +| get_two_hop_neighbors | ? | +| hits | 23.12 | +| in_degree_centrality | 23.12 | +| induced_subgraph | ? | +| jaccard_coefficients | ? | +| katz_centrality | 23.12 | +| k_core | ? | +| k_truss_subgraph | 23.12 | +| leiden | ? | +| louvain | 23.10 | +| node2vec | ? | +| out_degree_centrality | 23.12 | +| overlap_coefficients | ? | +| pagerank | 23.12 | +| personalized_pagerank | ? | +| sorensen_coefficients | ? | +| spectral_modularity_maximization | ? | +| sssp | 23.12 | +| strongly_connected_components | ? | +| triangle_count | ? | +| uniform_neighbor_sample | ? | +| uniform_random_walks | ? | +| weakly_connected_components | ? | + +To request nx-cugraph backend support for a NetworkX API that is not listed +above, visit the [cuGraph GitHub repo](https://github.com/rapidsai/cugraph). From c3b3ceec056723fc0ac9dfadeba7373e1e88387b Mon Sep 17 00:00:00 2001 From: Rick Ratzel <3039903+rlratzel@users.noreply.github.com> Date: Wed, 8 Nov 2023 11:07:29 -0600 Subject: [PATCH 06/14] Fixes typos, updates link to NX backend docs. (#3989) * Fixes typos (repeated word, extra periods) * Updates link to the current docs on NetworkX backends Authors: - Rick Ratzel (https://github.com/rlratzel) Approvers: - Ray Douglass (https://github.com/raydouglass) --- python/nx-cugraph/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python/nx-cugraph/README.md b/python/nx-cugraph/README.md index 148fb2f0993..273a6112d77 100644 --- a/python/nx-cugraph/README.md +++ b/python/nx-cugraph/README.md @@ -1,7 +1,7 @@ # nx-cugraph ## Description -[RAPIDS](https://rapids.ai) nx-cugraph is a [backend to NetworkX](https://networkx.org/documentation/stable/reference/classes/index.html#backends) +[RAPIDS](https://rapids.ai) nx-cugraph is a [backend to NetworkX](https://networkx.org/documentation/stable/reference/utils.html#backends) to run supported algorithms with GPU acceleration. ## System Requirements @@ -13,7 +13,7 @@ nx-cugraph requires the following: * Python versions 3.9, 3.10, or 3.11 * NetworkX >= version 3.2 -More details about system requirements can be found in the [RAPIDS System Requirements documentation](https://docs.rapids.ai/install#system-req).. +More details about system requirements can be found in the [RAPIDS System Requirements documentation](https://docs.rapids.ai/install#system-req). ## Installation @@ -35,7 +35,7 @@ Notes: ## Enabling nx-cugraph NetworkX will use nx-cugraph as the graph analytics backend if any of the -following are are used: +following are used: ### `NETWORKX_AUTOMATIC_BACKENDS` environment variable. The `NETWORKX_AUTOMATIC_BACKENDS` environment variable can be used to have NetworkX automatically dispatch to specified backends an API is called that the backend supports. From ff943332512e6b5bd3bdbad4893ce46987fd9b1b Mon Sep 17 00:00:00 2001 From: Rick Ratzel <3039903+rlratzel@users.noreply.github.com> Date: Tue, 14 Nov 2023 09:29:03 -0600 Subject: [PATCH 07/14] Adds update-version.sh support for proper versioning to cu version suffix pacakges and nx-cugraph meta-data files. (#3994) Adds `update-version.sh` support for: * nx-cugraph meta-data files * `cugraph-pyg`, `cugraph-dgl` env yaml files * `*-cu11`, `*-cu12` wheel dependencies in dependencies.yaml Authors: - Rick Ratzel (https://github.com/rlratzel) Approvers: - Alex Barghi (https://github.com/alexbarghi-nv) - Brad Rees (https://github.com/BradReesWork) - Ray Douglass (https://github.com/raydouglass) --- ci/release/update-version.sh | 8 +++++++- python/nx-cugraph/_nx_cugraph/__init__.py | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index d3dbed6ae46..0f2d4a3b914 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -90,8 +90,9 @@ DEPENDENCIES=( ucx-py ) for DEP in "${DEPENDENCIES[@]}"; do - for FILE in dependencies.yaml conda/environments/*.yaml; do + for FILE in dependencies.yaml conda/environments/*.yaml python/cugraph-{pyg,dgl}/conda/*.yaml; do sed_runner "/-.* ${DEP}==/ s/==.*/==${NEXT_SHORT_TAG_PEP440}.*/g" ${FILE} + sed_runner "/-.* ${DEP}-cu[0-9][0-9]==/ s/==.*/==${NEXT_SHORT_TAG_PEP440}.*/g" ${FILE} sed_runner "/-.* ucx-py==/ s/==.*/==${NEXT_UCX_PY_VERSION}.*/g" ${FILE} done for FILE in python/**/pyproject.toml python/**/**/pyproject.toml; do @@ -108,6 +109,11 @@ sed_runner "/^ucx_py_version:$/ {n;s/.*/ - \"${NEXT_UCX_PY_VERSION}.*\"/}" cond sed_runner "/^ucx_py_version:$/ {n;s/.*/ - \"${NEXT_UCX_PY_VERSION}.*\"/}" conda/recipes/cugraph-service/conda_build_config.yaml sed_runner "/^ucx_py_version:$/ {n;s/.*/ - \"${NEXT_UCX_PY_VERSION}.*\"/}" conda/recipes/pylibcugraph/conda_build_config.yaml +# nx-cugraph NetworkX entry-point meta-data +sed_runner "s@branch-[0-9][0-9].[0-9][0-9]@branch-${NEXT_SHORT_TAG}@g" python/nx-cugraph/_nx_cugraph/__init__.py +# FIXME: can this use the standard VERSION file and update mechanism? +sed_runner "s/__version__ = .*/__version__ = \"${NEXT_FULL_TAG}\"/g" python/nx-cugraph/_nx_cugraph/__init__.py + # CI files for FILE in .github/workflows/*.yaml; do sed_runner "/shared-workflows/ s/@.*/@branch-${NEXT_SHORT_TAG}/g" "${FILE}" diff --git a/python/nx-cugraph/_nx_cugraph/__init__.py b/python/nx-cugraph/_nx_cugraph/__init__.py index 8ef976aabf1..26638d1e735 100644 --- a/python/nx-cugraph/_nx_cugraph/__init__.py +++ b/python/nx-cugraph/_nx_cugraph/__init__.py @@ -136,6 +136,7 @@ def get_info(): return d +# FIXME: can this use the standard VERSION file and update mechanism? __version__ = "23.12.00" if __name__ == "__main__": From 96a7a6eaf12e4550256c5835a0f0486c78db539e Mon Sep 17 00:00:00 2001 From: Naim <110031745+naimnv@users.noreply.github.com> Date: Tue, 14 Nov 2023 18:25:39 +0100 Subject: [PATCH 08/14] Move MTMG_TEST to MG tests block (#3993) * 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 Co-authored-by: Charles Hastings Co-authored-by: Rick Ratzel --- build.sh | 8 ++++ cpp/CMakeLists.txt | 5 ++- cpp/tests/CMakeLists.txt | 37 +++++++++++-------- .../cugraph/structure/property_graph.py | 24 +++--------- 4 files changed, 39 insertions(+), 35 deletions(-) diff --git a/build.sh b/build.sh index 99082fa96fb..1723e750978 100755 --- a/build.sh +++ b/build.sh @@ -31,6 +31,7 @@ VALIDARGS=" cugraph-dgl nx-cugraph cpp-mgtests + cpp-mtmgtests docs all -v @@ -59,6 +60,7 @@ HELP="$0 [ ...] [ ...] cugraph-dgl - build the cugraph-dgl extensions for DGL nx-cugraph - build the nx-cugraph Python package cpp-mgtests - build libcugraph and libcugraph_etl MG tests. Builds MPI communicator, adding MPI as a dependency. + cpp-mtmgtests - build libcugraph MTMG tests. Adds UCX as a dependency (temporary). docs - build the docs all - build everything and is: @@ -105,6 +107,7 @@ BUILD_TYPE=Release INSTALL_TARGET="--target install" BUILD_CPP_TESTS=ON BUILD_CPP_MG_TESTS=OFF +BUILD_CPP_MTMG_TESTS=OFF BUILD_ALL_GPU_ARCH=0 BUILD_WITH_CUGRAPHOPS=ON CMAKE_GENERATOR_OPTION="-G Ninja" @@ -172,6 +175,9 @@ fi if hasArg --without_cugraphops; then BUILD_WITH_CUGRAPHOPS=OFF fi +if hasArg cpp-mtmgtests; then + BUILD_CPP_MTMG_TESTS=ON +fi if hasArg cpp-mgtests || hasArg all; then BUILD_CPP_MG_TESTS=ON fi @@ -264,6 +270,7 @@ if buildDefault || hasArg libcugraph || hasArg all; then -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -DBUILD_TESTS=${BUILD_CPP_TESTS} \ -DBUILD_CUGRAPH_MG_TESTS=${BUILD_CPP_MG_TESTS} \ + -DBUILD_CUGRAPH_MTMG_TESTS=${BUILD_CPP_MTMG_TESTS} \ -DUSE_CUGRAPH_OPS=${BUILD_WITH_CUGRAPHOPS} \ ${CMAKE_GENERATOR_OPTION} \ ${CMAKE_VERBOSE_OPTION} @@ -294,6 +301,7 @@ if buildDefault || hasArg libcugraph_etl || hasArg all; then -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -DBUILD_TESTS=${BUILD_CPP_TESTS} \ -DBUILD_CUGRAPH_MG_TESTS=${BUILD_CPP_MG_TESTS} \ + -DBUILD_CUGRAPH_MTMG_TESTS=${BUILD_CPP_MTMG_TESTS} \ -DCMAKE_PREFIX_PATH=${LIBCUGRAPH_BUILD_DIR} \ ${CMAKE_GENERATOR_OPTION} \ ${CMAKE_VERBOSE_OPTION} \ diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 41870cbc92b..360165e688d 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -166,7 +166,10 @@ endif() include(cmake/thirdparty/get_nccl.cmake) include(cmake/thirdparty/get_cuhornet.cmake) -include(cmake/thirdparty/get_ucp.cmake) + +if (BUILD_CUGRAPH_MTMG_TESTS) + include(cmake/thirdparty/get_ucp.cmake) +endif() if(BUILD_TESTS) include(cmake/thirdparty/get_gtest.cmake) diff --git a/cpp/tests/CMakeLists.txt b/cpp/tests/CMakeLists.txt index 2f69cf9cb0d..6530a25d178 100644 --- a/cpp/tests/CMakeLists.txt +++ b/cpp/tests/CMakeLists.txt @@ -415,13 +415,6 @@ ConfigureTest(K_HOP_NBRS_TEST traversal/k_hop_nbrs_test.cpp) # - install tests --------------------------------------------------------------------------------- rapids_test_install_relocatable(INSTALL_COMPONENT_SET testing DESTINATION bin/gtests/libcugraph) -################################################################################################### -# - MTMG tests ------------------------------------------------------------------------- -ConfigureTest(MTMG_TEST mtmg/threaded_test.cu) -target_link_libraries(MTMG_TEST - PRIVATE - UCP::UCP - ) ################################################################################################### # - MG tests -------------------------------------------------------------------------------------- @@ -681,15 +674,6 @@ if(BUILD_CUGRAPH_MG_TESTS) rapids_test_install_relocatable(INSTALL_COMPONENT_SET testing_mg DESTINATION bin/gtests/libcugraph_mg) - ############################################################################################### - # - Multi-node MTMG tests --------------------------------------------------------------------- - ConfigureTest(MTMG_MULTINODE_TEST mtmg/multi_node_threaded_test.cu utilities/mg_utilities.cpp) - target_link_libraries(MTMG_MULTINODE_TEST - PRIVATE - cugraphmgtestutil - UCP::UCP - ) - endif() ################################################################################################### @@ -749,4 +733,25 @@ ConfigureCTest(CAPI_EGONET_TEST c_api/egonet_test.c) ConfigureCTest(CAPI_TWO_HOP_NEIGHBORS_TEST c_api/two_hop_neighbors_test.c) ConfigureCTest(CAPI_LEGACY_K_TRUSS_TEST c_api/legacy_k_truss_test.c) +if (BUILD_CUGRAPH_MTMG_TESTS) + ################################################################################################### + # - MTMG tests ------------------------------------------------------------------------- + ConfigureTest(MTMG_TEST mtmg/threaded_test.cu) + target_link_libraries(MTMG_TEST + PRIVATE + UCP::UCP + ) + + if(BUILD_CUGRAPH_MG_TESTS) + ############################################################################################### + # - Multi-node MTMG tests --------------------------------------------------------------------- + ConfigureTest(MTMG_MULTINODE_TEST mtmg/multi_node_threaded_test.cu utilities/mg_utilities.cpp) + target_link_libraries(MTMG_MULTINODE_TEST + PRIVATE + cugraphmgtestutil + UCP::UCP + ) + endif(BUILD_CUGRAPH_MG_TESTS) +endif(BUILD_CUGRAPH_MTMG_TESTS) + rapids_test_install_relocatable(INSTALL_COMPONENT_SET testing_c DESTINATION bin/gtests/libcugraph_c) diff --git a/python/cugraph/cugraph/structure/property_graph.py b/python/cugraph/cugraph/structure/property_graph.py index 36ce5baa212..513798f35f9 100644 --- a/python/cugraph/cugraph/structure/property_graph.py +++ b/python/cugraph/cugraph/structure/property_graph.py @@ -800,15 +800,9 @@ def add_vertex_data( tmp_df.index = tmp_df.index.rename(self.vertex_col_name) # FIXME: handle case of a type_name column already being in tmp_df - if self.__series_type is cudf.Series: - # cudf does not yet support initialization with a scalar - tmp_df[TCN] = cudf.Series( - cudf.Series([type_name], dtype=cat_dtype).repeat(len(tmp_df)), - index=tmp_df.index, - ) - else: - # pandas is oddly slow if dtype is passed to the constructor here - tmp_df[TCN] = pd.Series(type_name, index=tmp_df.index).astype(cat_dtype) + tmp_df[TCN] = self.__series_type(type_name, index=tmp_df.index).astype( + cat_dtype + ) if property_columns: # all columns @@ -1207,15 +1201,9 @@ def add_edge_data( tmp_df[self.src_col_name] = tmp_df[vertex_col_names[0]] tmp_df[self.dst_col_name] = tmp_df[vertex_col_names[1]] - if self.__series_type is cudf.Series: - # cudf does not yet support initialization with a scalar - tmp_df[TCN] = cudf.Series( - cudf.Series([type_name], dtype=cat_dtype).repeat(len(tmp_df)), - index=tmp_df.index, - ) - else: - # pandas is oddly slow if dtype is passed to the constructor here - tmp_df[TCN] = pd.Series(type_name, index=tmp_df.index).astype(cat_dtype) + tmp_df[TCN] = self.__series_type(type_name, index=tmp_df.index).astype( + cat_dtype + ) # Add unique edge IDs to the new rows. This is just a count for each # row starting from the last edge ID value, with initial edge ID 0. From b90e1a53e4c2ae6fdde73258c2d366dde596a154 Mon Sep 17 00:00:00 2001 From: GALI PREM SAGAR Date: Tue, 14 Nov 2023 14:35:20 -0600 Subject: [PATCH 09/14] Use new `rapids-dask-dependency` metapackage for managing `dask` versions (#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: https://github.com/rapidsai/cudf/pull/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 (naim@uib.no) Approvers: - Jake Awe (https://github.com/AyodeAwe) --- ci/build_wheel.sh | 7 +++++-- ci/release/update-version.sh | 1 + ci/test_wheel_cugraph.sh | 3 --- conda/environments/all_cuda-118_arch-x86_64.yaml | 4 +--- conda/environments/all_cuda-120_arch-x86_64.yaml | 4 +--- conda/recipes/cugraph-pyg/meta.yaml | 2 +- conda/recipes/cugraph-service/meta.yaml | 2 +- conda/recipes/cugraph/meta.yaml | 4 +--- dependencies.yaml | 8 +------- python/cugraph-service/server/pyproject.toml | 3 +-- python/cugraph/pyproject.toml | 3 +-- 11 files changed, 14 insertions(+), 27 deletions(-) diff --git a/ci/build_wheel.sh b/ci/build_wheel.sh index c888c908056..163520ea1da 100755 --- a/ci/build_wheel.sh +++ b/ci/build_wheel.sh @@ -40,8 +40,11 @@ for dep in rmm cudf raft-dask pylibcugraph pylibraft ucx-py; do sed -r -i "s/${dep}==(.*)\"/${dep}${PACKAGE_CUDA_SUFFIX}==\1${alpha_spec}\"/g" ${pyproject_file} done -# dask-cuda doesn't get a suffix, but it does get an alpha spec. -sed -r -i "s/dask-cuda==(.*)\"/dask-cuda==\1${alpha_spec}\"/g" ${pyproject_file} +# dask-cuda & rapids-dask-dependency doesn't get a suffix, but it does get an alpha spec. +for dep in dask-cuda rapids-dask-dependency; do + sed -r -i "s/${dep}==(.*)\"/${dep}==\1${alpha_spec}\"/g" ${pyproject_file} +done + if [[ $PACKAGE_CUDA_SUFFIX == "-cu12" ]]; then sed -i "s/cupy-cuda11x/cupy-cuda12x/g" ${pyproject_file} diff --git a/ci/release/update-version.sh b/ci/release/update-version.sh index 0f2d4a3b914..69eb085e7ed 100755 --- a/ci/release/update-version.sh +++ b/ci/release/update-version.sh @@ -88,6 +88,7 @@ DEPENDENCIES=( raft-dask rmm ucx-py + rapids-dask-dependency ) for DEP in "${DEPENDENCIES[@]}"; do for FILE in dependencies.yaml conda/environments/*.yaml python/cugraph-{pyg,dgl}/conda/*.yaml; do diff --git a/ci/test_wheel_cugraph.sh b/ci/test_wheel_cugraph.sh index f9e2aa6d8da..d351ea21624 100755 --- a/ci/test_wheel_cugraph.sh +++ b/ci/test_wheel_cugraph.sh @@ -8,7 +8,4 @@ RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})" RAPIDS_PY_WHEEL_NAME="pylibcugraph_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 ./local-pylibcugraph-dep python -m pip install --no-deps ./local-pylibcugraph-dep/pylibcugraph*.whl -# Always install latest dask for testing -python -m pip install git+https://github.com/dask/dask.git@main git+https://github.com/dask/distributed.git@main - ./ci/test_wheel.sh cugraph python/cugraph diff --git a/conda/environments/all_cuda-118_arch-x86_64.yaml b/conda/environments/all_cuda-118_arch-x86_64.yaml index 2f3a9c988cf..aa38defcd7c 100644 --- a/conda/environments/all_cuda-118_arch-x86_64.yaml +++ b/conda/environments/all_cuda-118_arch-x86_64.yaml @@ -20,11 +20,8 @@ dependencies: - cupy>=12.0.0 - cxx-compiler - cython>=3.0.0 -- dask-core>=2023.9.2 - dask-cuda==23.12.* - dask-cudf==23.12.* -- dask>=2023.7.1 -- distributed>=2023.7.1 - doxygen - fsspec>=0.6.0 - gcc_linux-64=11.* @@ -62,6 +59,7 @@ dependencies: - pytest-xdist - python-louvain - raft-dask==23.12.* +- rapids-dask-dependency==23.12.* - recommonmark - requests - rmm==23.12.* diff --git a/conda/environments/all_cuda-120_arch-x86_64.yaml b/conda/environments/all_cuda-120_arch-x86_64.yaml index 31ff503e682..a9f793b15f5 100644 --- a/conda/environments/all_cuda-120_arch-x86_64.yaml +++ b/conda/environments/all_cuda-120_arch-x86_64.yaml @@ -20,11 +20,8 @@ dependencies: - cupy>=12.0.0 - cxx-compiler - cython>=3.0.0 -- dask-core>=2023.9.2 - dask-cuda==23.12.* - dask-cudf==23.12.* -- dask>=2023.7.1 -- distributed>=2023.7.1 - doxygen - fsspec>=0.6.0 - gcc_linux-64=11.* @@ -61,6 +58,7 @@ dependencies: - pytest-xdist - python-louvain - raft-dask==23.12.* +- rapids-dask-dependency==23.12.* - recommonmark - requests - rmm==23.12.* diff --git a/conda/recipes/cugraph-pyg/meta.yaml b/conda/recipes/cugraph-pyg/meta.yaml index 2714dcfa55a..a6744a9f340 100644 --- a/conda/recipes/cugraph-pyg/meta.yaml +++ b/conda/recipes/cugraph-pyg/meta.yaml @@ -26,7 +26,7 @@ requirements: - python - scikit-build >=0.13.1 run: - - distributed >=2023.9.2 + - rapids-dask-dependency ={{ version }} - numba >=0.57 - numpy >=1.21 - python diff --git a/conda/recipes/cugraph-service/meta.yaml b/conda/recipes/cugraph-service/meta.yaml index ae8074ba7d3..d52a004db05 100644 --- a/conda/recipes/cugraph-service/meta.yaml +++ b/conda/recipes/cugraph-service/meta.yaml @@ -59,10 +59,10 @@ outputs: - cupy >=12.0.0 - dask-cuda ={{ minor_version }} - dask-cudf ={{ minor_version }} - - distributed >=2023.9.2 - numba >=0.57 - numpy >=1.21 - python + - rapids-dask-dependency ={{ minor_version }} - thriftpy2 >=0.4.15 - ucx-py {{ ucx_py_version }} diff --git a/conda/recipes/cugraph/meta.yaml b/conda/recipes/cugraph/meta.yaml index 65403bc8d73..58b9ea220d4 100644 --- a/conda/recipes/cugraph/meta.yaml +++ b/conda/recipes/cugraph/meta.yaml @@ -76,15 +76,13 @@ requirements: - cupy >=12.0.0 - dask-cuda ={{ minor_version }} - dask-cudf ={{ minor_version }} - - dask >=2023.9.2 - - dask-core >=2023.9.2 - - distributed >=2023.9.2 - fsspec>=0.6.0 - libcugraph ={{ version }} - pylibcugraph ={{ version }} - pylibraft ={{ minor_version }} - python - raft-dask ={{ minor_version }} + - rapids-dask-dependency ={{ minor_version }} - requests - ucx-proc=*=gpu - ucx-py {{ ucx_py_version }} diff --git a/dependencies.yaml b/dependencies.yaml index b127d9bd29e..13f100610cf 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -377,15 +377,13 @@ dependencies: common: - output_types: [conda, pyproject] packages: - - &dask dask>=2023.7.1 - - &distributed distributed>=2023.7.1 + - &dask rapids-dask-dependency==23.12.* - &dask_cuda dask-cuda==23.12.* - &numba numba>=0.57 - &ucx_py ucx-py==0.35.* - output_types: conda packages: - aiohttp - - &dask-core_conda dask-core>=2023.9.2 - fsspec>=0.6.0 - libcudf==23.12.* - requests @@ -431,14 +429,10 @@ dependencies: packages: - *dask - *dask_cuda - - *distributed - *numba - *numpy - *thrift - *ucx_py - - output_types: conda - packages: - - *dask-core_conda - output_types: pyproject packages: - *cugraph diff --git a/python/cugraph-service/server/pyproject.toml b/python/cugraph-service/server/pyproject.toml index f50b33b3f15..d68f8055ded 100644 --- a/python/cugraph-service/server/pyproject.toml +++ b/python/cugraph-service/server/pyproject.toml @@ -25,10 +25,9 @@ dependencies = [ "cupy-cuda11x>=12.0.0", "dask-cuda==23.12.*", "dask-cudf==23.12.*", - "dask>=2023.7.1", - "distributed>=2023.7.1", "numba>=0.57", "numpy>=1.21", + "rapids-dask-dependency==23.12.*", "rmm==23.12.*", "thriftpy2", "ucx-py==0.35.*", diff --git a/python/cugraph/pyproject.toml b/python/cugraph/pyproject.toml index aaa301fa05f..319900b3de3 100644 --- a/python/cugraph/pyproject.toml +++ b/python/cugraph/pyproject.toml @@ -33,12 +33,11 @@ dependencies = [ "cupy-cuda11x>=12.0.0", "dask-cuda==23.12.*", "dask-cudf==23.12.*", - "dask>=2023.7.1", - "distributed>=2023.7.1", "fsspec[http]>=0.6.0", "numba>=0.57", "pylibcugraph==23.12.*", "raft-dask==23.12.*", + "rapids-dask-dependency==23.12.*", "rmm==23.12.*", "ucx-py==0.35.*", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. From 8c104a52bbece783f91001c64cc6bf0732f10594 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 15 Nov 2023 17:01:59 -0600 Subject: [PATCH 10/14] Pin to minor versions of packages outside the cuGraph repository. (#4004) This PR fixes some pinnings in cuGraph conda recipes. The problem is similar to that handled in https://github.com/rapidsai/cudf/pull/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) --- conda/recipes/cugraph-dgl/meta.yaml | 2 +- conda/recipes/cugraph-pyg/meta.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conda/recipes/cugraph-dgl/meta.yaml b/conda/recipes/cugraph-dgl/meta.yaml index bb85734098a..aaa1cd8a936 100644 --- a/conda/recipes/cugraph-dgl/meta.yaml +++ b/conda/recipes/cugraph-dgl/meta.yaml @@ -26,7 +26,7 @@ requirements: - dgl >=1.1.0.cu* - numba >=0.57 - numpy >=1.21 - - pylibcugraphops ={{ version }} + - pylibcugraphops ={{ minor_version }} - python - pytorch diff --git a/conda/recipes/cugraph-pyg/meta.yaml b/conda/recipes/cugraph-pyg/meta.yaml index a6744a9f340..07caf07daab 100644 --- a/conda/recipes/cugraph-pyg/meta.yaml +++ b/conda/recipes/cugraph-pyg/meta.yaml @@ -26,14 +26,14 @@ requirements: - python - scikit-build >=0.13.1 run: - - rapids-dask-dependency ={{ version }} + - rapids-dask-dependency ={{ minor_version }} - numba >=0.57 - numpy >=1.21 - python - pytorch >=2.0 - cupy >=12.0.0 - cugraph ={{ version }} - - pylibcugraphops ={{ version }} + - pylibcugraphops ={{ minor_version }} - pyg >=2.3,<2.4 tests: From 119816cfe04be421bf96baa8075d342f72cbbfc4 Mon Sep 17 00:00:00 2001 From: Alex Barghi <105237337+alexbarghi-nv@users.noreply.github.com> Date: Fri, 17 Nov 2023 09:16:31 -0500 Subject: [PATCH 11/14] [BUG] Fix Incorrect Edge Index, Directory Selection in cuGraph-PyG Loader (#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: https://github.com/rapidsai/cugraph/pull/3978 --- ci/test_python.sh | 31 ++++++----- conda/recipes/cugraph-pyg/meta.yaml | 2 +- dependencies.yaml | 4 +- .../conda/cugraph_pyg_dev_cuda-118.yaml | 4 +- .../cugraph_pyg/data/cugraph_store.py | 12 +++-- .../cugraph_pyg/loader/cugraph_node_loader.py | 48 ++++++++++------- .../tests/mg/test_mg_cugraph_store.py | 2 +- .../cugraph_pyg/tests/test_cugraph_loader.py | 54 +++++++++++++++++-- .../cugraph_pyg/tests/test_cugraph_store.py | 2 +- 9 files changed, 112 insertions(+), 47 deletions(-) diff --git a/ci/test_python.sh b/ci/test_python.sh index 1690ce2f15b..273d3c93482 100755 --- a/ci/test_python.sh +++ b/ci/test_python.sh @@ -197,27 +197,26 @@ if [[ "${RAPIDS_CUDA_VERSION}" == "11.8.0" ]]; then conda activate test_cugraph_pyg set -u - # Install pytorch + # Will automatically install built dependencies of cuGraph-PyG rapids-mamba-retry install \ - --force-reinstall \ - --channel pyg \ + --channel "${CPP_CHANNEL}" \ + --channel "${PYTHON_CHANNEL}" \ --channel pytorch \ --channel nvidia \ - 'pyg=2.3' \ - 'pytorch=2.0.0' \ - 'pytorch-cuda=11.8' + --channel pyg \ + --channel rapidsai-nightly \ + "cugraph-pyg" \ + "pytorch>=2.0,<2.1" \ + "pytorch-cuda=11.8" # Install pyg dependencies (which requires pip) - pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.0.0+cu118.html - - rapids-mamba-retry install \ - --channel "${CPP_CHANNEL}" \ - --channel "${PYTHON_CHANNEL}" \ - libcugraph \ - pylibcugraph \ - pylibcugraphops \ - cugraph \ - cugraph-pyg + pip install \ + pyg_lib \ + torch_scatter \ + torch_sparse \ + torch_cluster \ + torch_spline_conv \ + -f https://data.pyg.org/whl/torch-2.0.0+cu118.html rapids-print-env diff --git a/conda/recipes/cugraph-pyg/meta.yaml b/conda/recipes/cugraph-pyg/meta.yaml index 07caf07daab..a2a02a1d9f6 100644 --- a/conda/recipes/cugraph-pyg/meta.yaml +++ b/conda/recipes/cugraph-pyg/meta.yaml @@ -34,7 +34,7 @@ requirements: - cupy >=12.0.0 - cugraph ={{ version }} - pylibcugraphops ={{ minor_version }} - - pyg >=2.3,<2.4 + - pyg >=2.3,<2.5 tests: imports: diff --git a/dependencies.yaml b/dependencies.yaml index 13f100610cf..a89acd9288b 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -497,9 +497,9 @@ dependencies: - output_types: [conda] packages: - cugraph==23.12.* - - pytorch==2.0 + - pytorch>=2.0 - pytorch-cuda==11.8 - - pyg=2.3.1=*torch_2.0.0*cu118* + - pyg>=2.4.0 depends_on_rmm: common: diff --git a/python/cugraph-pyg/conda/cugraph_pyg_dev_cuda-118.yaml b/python/cugraph-pyg/conda/cugraph_pyg_dev_cuda-118.yaml index f98eab430ba..71d1c7e389c 100644 --- a/python/cugraph-pyg/conda/cugraph_pyg_dev_cuda-118.yaml +++ b/python/cugraph-pyg/conda/cugraph_pyg_dev_cuda-118.yaml @@ -13,13 +13,13 @@ dependencies: - cugraph==23.12.* - pandas - pre-commit -- pyg=2.3.1=*torch_2.0.0*cu118* +- pyg>=2.4.0 - pylibcugraphops==23.12.* - pytest - pytest-benchmark - pytest-cov - pytest-xdist - pytorch-cuda==11.8 -- pytorch==2.0 +- pytorch>=2.0 - scipy name: cugraph_pyg_dev_cuda-118 diff --git a/python/cugraph-pyg/cugraph_pyg/data/cugraph_store.py b/python/cugraph-pyg/cugraph_pyg/data/cugraph_store.py index d1b24543956..edeeface4c4 100644 --- a/python/cugraph-pyg/cugraph_pyg/data/cugraph_store.py +++ b/python/cugraph-pyg/cugraph_pyg/data/cugraph_store.py @@ -210,7 +210,10 @@ class EXPERIMENTAL__CuGraphStore: def __init__( self, F: cugraph.gnn.FeatureStore, - G: Union[Dict[str, Tuple[TensorType]], Dict[str, int]], + G: Union[ + Dict[Tuple[str, str, str], Tuple[TensorType]], + Dict[Tuple[str, str, str], int], + ], num_nodes_dict: Dict[str, int], *, multi_gpu: bool = False, @@ -744,7 +747,7 @@ def _subgraph(self, edge_types: List[tuple] = None) -> cugraph.MultiGraph: def _get_vertex_groups_from_sample( self, nodes_of_interest: TensorType, is_sorted: bool = False - ) -> dict: + ) -> Dict[str, torch.Tensor]: """ Given a tensor of nodes of interest, this method a single dictionary, noi_index. @@ -808,7 +811,10 @@ def _get_sample_from_vertex_groups( def _get_renumbered_edge_groups_from_sample( self, sampling_results: cudf.DataFrame, noi_index: dict - ) -> Tuple[dict, dict]: + ) -> Tuple[ + Dict[Tuple[str, str, str], torch.Tensor], + Tuple[Dict[Tuple[str, str, str], torch.Tensor]], + ]: """ Given a cudf (NOT dask_cudf) DataFrame of sampling results and a dictionary of non-renumbered vertex ids grouped by vertex type, this method diff --git a/python/cugraph-pyg/cugraph_pyg/loader/cugraph_node_loader.py b/python/cugraph-pyg/cugraph_pyg/loader/cugraph_node_loader.py index 8552e7412e0..ad8d22e255e 100644 --- a/python/cugraph-pyg/cugraph_pyg/loader/cugraph_node_loader.py +++ b/python/cugraph-pyg/cugraph_pyg/loader/cugraph_node_loader.py @@ -15,6 +15,7 @@ import os import re +import warnings import cupy import cudf @@ -159,23 +160,34 @@ def __init__( if batch_size is None or batch_size < 1: raise ValueError("Batch size must be >= 1") - self.__directory = tempfile.TemporaryDirectory(dir=directory) + self.__directory = ( + tempfile.TemporaryDirectory() if directory is None else directory + ) if isinstance(num_neighbors, dict): raise ValueError("num_neighbors dict is currently unsupported!") - renumber = ( - True - if ( - (len(self.__graph_store.node_types) == 1) - and (len(self.__graph_store.edge_types) == 1) + if "renumber" in kwargs: + warnings.warn( + "Setting renumbering manually could result in invalid output," + " please ensure you intended to do this." + ) + renumber = kwargs.pop("renumber") + else: + renumber = ( + True + if ( + (len(self.__graph_store.node_types) == 1) + and (len(self.__graph_store.edge_types) == 1) + ) + else False ) - else False - ) bulk_sampler = BulkSampler( batch_size, - self.__directory.name, + self.__directory + if isinstance(self.__directory, str) + else self.__directory.name, self.__graph_store._subgraph(edge_types), fanout_vals=num_neighbors, with_replacement=replace, @@ -219,7 +231,13 @@ def __init__( ) bulk_sampler.flush() - self.__input_files = iter(os.listdir(self.__directory.name)) + self.__input_files = iter( + os.listdir( + self.__directory + if isinstance(self.__directory, str) + else self.__directory.name + ) + ) def __next__(self): from time import perf_counter @@ -423,9 +441,6 @@ def __next__(self): sampler_output.edge, ) else: - if self.__graph_store.order == "CSR": - raise ValueError("CSR format incompatible with CSC output") - out = filter_cugraph_store_csc( self.__feature_store, self.__graph_store, @@ -437,11 +452,8 @@ def __next__(self): # Account for CSR format in cuGraph vs. CSC format in PyG if self.__coo and self.__graph_store.order == "CSC": - for node_type in out.edge_index_dict: - out[node_type].edge_index[0], out[node_type].edge_index[1] = ( - out[node_type].edge_index[1], - out[node_type].edge_index[0], - ) + for edge_type in out.edge_index_dict: + out[edge_type].edge_index = out[edge_type].edge_index.flip(dims=[0]) out.set_value_dict("num_sampled_nodes", sampler_output.num_sampled_nodes) out.set_value_dict("num_sampled_edges", sampler_output.num_sampled_edges) diff --git a/python/cugraph-pyg/cugraph_pyg/tests/mg/test_mg_cugraph_store.py b/python/cugraph-pyg/cugraph_pyg/tests/mg/test_mg_cugraph_store.py index ed7f70034e2..13c9c90c7c2 100644 --- a/python/cugraph-pyg/cugraph_pyg/tests/mg/test_mg_cugraph_store.py +++ b/python/cugraph-pyg/cugraph_pyg/tests/mg/test_mg_cugraph_store.py @@ -120,7 +120,7 @@ def test_get_edge_index(graph, edge_index_type, dask_client): G[et][0] = dask_cudf.from_cudf(cudf.Series(G[et][0]), npartitions=1) G[et][1] = dask_cudf.from_cudf(cudf.Series(G[et][1]), npartitions=1) - cugraph_store = CuGraphStore(F, G, N, multi_gpu=True) + cugraph_store = CuGraphStore(F, G, N, order="CSC", multi_gpu=True) for pyg_can_edge_type in G: src, dst = cugraph_store.get_edge_index( diff --git a/python/cugraph-pyg/cugraph_pyg/tests/test_cugraph_loader.py b/python/cugraph-pyg/cugraph_pyg/tests/test_cugraph_loader.py index 853836dc2a6..27b73bf7d35 100644 --- a/python/cugraph-pyg/cugraph_pyg/tests/test_cugraph_loader.py +++ b/python/cugraph-pyg/cugraph_pyg/tests/test_cugraph_loader.py @@ -18,6 +18,7 @@ import cudf import cupy +import numpy as np from cugraph_pyg.loader import CuGraphNeighborLoader from cugraph_pyg.loader import BulkSampleLoader @@ -27,6 +28,8 @@ from cugraph.gnn import FeatureStore from cugraph.utilities.utils import import_optional, MissingModule +from typing import Dict, Tuple + torch = import_optional("torch") torch_geometric = import_optional("torch_geometric") trim_to_layer = import_optional("torch_geometric.utils.trim_to_layer") @@ -40,7 +43,11 @@ @pytest.mark.skipif(isinstance(torch, MissingModule), reason="torch not available") -def test_cugraph_loader_basic(karate_gnn): +def test_cugraph_loader_basic( + karate_gnn: Tuple[ + FeatureStore, Dict[Tuple[str, str, str], np.ndarray], Dict[str, int] + ] +): F, G, N = karate_gnn cugraph_store = CuGraphStore(F, G, N, order="CSR") loader = CuGraphNeighborLoader( @@ -66,7 +73,11 @@ def test_cugraph_loader_basic(karate_gnn): @pytest.mark.skipif(isinstance(torch, MissingModule), reason="torch not available") -def test_cugraph_loader_hetero(karate_gnn): +def test_cugraph_loader_hetero( + karate_gnn: Tuple[ + FeatureStore, Dict[Tuple[str, str, str], np.ndarray], Dict[str, int] + ] +): F, G, N = karate_gnn cugraph_store = CuGraphStore(F, G, N, order="CSR") loader = CuGraphNeighborLoader( @@ -342,7 +353,7 @@ def test_cugraph_loader_e2e_coo(): @pytest.mark.skipif(isinstance(torch, MissingModule), reason="torch not available") @pytest.mark.skipif(not HAS_TORCH_SPARSE, reason="torch-sparse not available") @pytest.mark.parametrize("framework", ["pyg", "cugraph-ops"]) -def test_cugraph_loader_e2e_csc(framework): +def test_cugraph_loader_e2e_csc(framework: str): m = [2, 9, 99, 82, 9, 3, 18, 1, 12] x = torch.randint(3000, (256, 256)).to(torch.float32) F = FeatureStore() @@ -442,3 +453,40 @@ def test_cugraph_loader_e2e_csc(framework): x = x.narrow(dim=0, start=0, length=s - num_sampled_nodes[1]) assert list(x.shape) == [1, 1] + + +@pytest.mark.skipif(isinstance(torch, MissingModule), reason="torch not available") +@pytest.mark.parametrize("directory", ["local", "temp"]) +def test_load_directory( + karate_gnn: Tuple[ + FeatureStore, Dict[Tuple[str, str, str], np.ndarray], Dict[str, int] + ], + directory: str, +): + if directory == "local": + local_dir = tempfile.TemporaryDirectory(dir=".") + + cugraph_store = CuGraphStore(*karate_gnn) + cugraph_loader = CuGraphNeighborLoader( + (cugraph_store, cugraph_store), + torch.arange(8, dtype=torch.int64), + 2, + num_neighbors=[8, 4, 2], + random_state=62, + replace=False, + directory=None if directory == "temp" else local_dir.name, + batches_per_partition=1, + ) + + it = iter(cugraph_loader) + next_batch = next(it) + assert next_batch is not None + + if directory == "local": + assert len(os.listdir(local_dir.name)) == 4 + + count = 1 + while next(it, None) is not None: + count += 1 + + assert count == 4 diff --git a/python/cugraph-pyg/cugraph_pyg/tests/test_cugraph_store.py b/python/cugraph-pyg/cugraph_pyg/tests/test_cugraph_store.py index da3043760d4..b39ebad8254 100644 --- a/python/cugraph-pyg/cugraph_pyg/tests/test_cugraph_store.py +++ b/python/cugraph-pyg/cugraph_pyg/tests/test_cugraph_store.py @@ -113,7 +113,7 @@ def test_get_edge_index(graph, edge_index_type): G[et][0] = cudf.Series(G[et][0]) G[et][1] = cudf.Series(G[et][1]) - cugraph_store = CuGraphStore(F, G, N) + cugraph_store = CuGraphStore(F, G, N, order="CSC") for pyg_can_edge_type in G: src, dst = cugraph_store.get_edge_index( From 06f082b43aab84408d63a907327b9524f1cd0229 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Fri, 17 Nov 2023 10:36:35 -0600 Subject: [PATCH 12/14] Enable build concurrency for nightly and merge triggers. (#4009) --- .github/workflows/build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ccfdb826812..0f490283795 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -22,7 +22,7 @@ on: default: nightly concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} cancel-in-progress: true jobs: From 5d43f1463c1829322d2a92684f2bb11269730af3 Mon Sep 17 00:00:00 2001 From: Vyas Ramasubramani Date: Fri, 17 Nov 2023 18:17:47 -0800 Subject: [PATCH 13/14] Find rmm before cuco (#4011) 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: https://github.com/rapidsai/cugraph/pull/4011 --- cpp/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 360165e688d..3e867643041 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -153,6 +153,11 @@ rapids_cpm_init() # lags behind. ### +# Need to make sure rmm is found before cuco so that rmm patches the libcudacxx +# directory to be found by cuco. +include(${rapids-cmake-dir}/cpm/rmm.cmake) +rapids_cpm_rmm(BUILD_EXPORT_SET cugraph-exports + INSTALL_EXPORT_SET cugraph-exports) # Putting this before raft to override RAFT from pulling them in. include(cmake/thirdparty/get_libcudacxx.cmake) include(${rapids-cmake-dir}/cpm/cuco.cmake) From 0684f9de2015c4b7d45f28605f2bb2f9bf523359 Mon Sep 17 00:00:00 2001 From: Ralph Liu <137829296+nv-rliu@users.noreply.github.com> Date: Sun, 19 Nov 2023 07:09:32 -0500 Subject: [PATCH 14/14] `Resultset` and `Dataset` Refactors (#3957) 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: https://github.com/rapidsai/cugraph/pull/3957 --- datasets/README.md | 4 + .../cugraph-pyg/cugraph_pyg/tests/conftest.py | 2 +- .../testing/benchmark_server_extension.py | 2 +- .../cugraph/cugraph/dask/community/leiden.py | 2 +- .../cugraph/cugraph/dask/community/louvain.py | 2 +- python/cugraph/cugraph/datasets/__init__.py | 10 + python/cugraph/cugraph/datasets/dataset.py | 86 +++-- .../datasets/metadata/cit-patents.yaml | 22 ++ .../cugraph/datasets/metadata/europe_osm.yaml | 21 ++ .../cugraph/datasets/metadata/hollywood.yaml | 26 ++ .../datasets/metadata/soc-livejournal1.yaml | 22 ++ .../datasets/metadata/soc-twitter-2010.yaml | 22 ++ .../cugraph/experimental/datasets/__init__.py | 79 ----- .../cugraph/experimental/datasets/dataset.py | 312 ------------------ .../datasets/datasets_config.yaml | 5 - .../datasets/metadata/__init__.py | 13 - .../experimental/datasets/metadata/cyber.yaml | 22 -- .../datasets/metadata/dolphins.yaml | 25 -- .../datasets/metadata/email-Eu-core.yaml | 22 -- .../datasets/metadata/karate-disjoint.yaml | 22 -- .../datasets/metadata/karate.yaml | 24 -- .../datasets/metadata/karate_asymmetric.yaml | 24 -- .../datasets/metadata/karate_data.yaml | 22 -- .../datasets/metadata/karate_undirected.yaml | 22 -- .../datasets/metadata/ktruss_polbooks.yaml | 23 -- .../datasets/metadata/netscience.yaml | 22 -- .../datasets/metadata/polbooks.yaml | 22 -- .../datasets/metadata/small_line.yaml | 22 -- .../datasets/metadata/small_tree.yaml | 22 -- .../datasets/metadata/toy_graph.yaml | 22 -- .../metadata/toy_graph_undirected.yaml | 22 -- python/cugraph/cugraph/testing/__init__.py | 8 +- .../cugraph/testing/generate_resultsets.py | 9 +- python/cugraph/cugraph/testing/resultset.py | 90 ++--- .../test_edge_betweenness_centrality_mg.py | 4 +- .../cugraph/tests/nx/test_compat_pr.py | 2 +- .../cugraph/tests/utils/test_dataset.py | 109 +++--- .../cugraph/tests/utils/test_resultset.py | 71 ++++ 38 files changed, 379 insertions(+), 882 deletions(-) create mode 100644 python/cugraph/cugraph/datasets/metadata/cit-patents.yaml create mode 100644 python/cugraph/cugraph/datasets/metadata/europe_osm.yaml create mode 100644 python/cugraph/cugraph/datasets/metadata/hollywood.yaml create mode 100644 python/cugraph/cugraph/datasets/metadata/soc-livejournal1.yaml create mode 100644 python/cugraph/cugraph/datasets/metadata/soc-twitter-2010.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/__init__.py delete mode 100644 python/cugraph/cugraph/experimental/datasets/dataset.py delete mode 100644 python/cugraph/cugraph/experimental/datasets/datasets_config.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/__init__.py delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/cyber.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/dolphins.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/email-Eu-core.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/karate-disjoint.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/karate.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/karate_asymmetric.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/karate_data.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/karate_undirected.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/ktruss_polbooks.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/netscience.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/polbooks.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/small_line.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/small_tree.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/toy_graph.yaml delete mode 100644 python/cugraph/cugraph/experimental/datasets/metadata/toy_graph_undirected.yaml create mode 100644 python/cugraph/cugraph/tests/utils/test_resultset.py diff --git a/datasets/README.md b/datasets/README.md index e42413fc996..a23dc644081 100644 --- a/datasets/README.md +++ b/datasets/README.md @@ -120,9 +120,13 @@ The benchmark datasets are described below: | soc-twitter-2010 | 21,297,772 | 265,025,809 | No | No | **cit-Patents** : A citation graph that includes all citations made by patents granted between 1975 and 1999, totaling 16,522,438 citations. + **soc-LiveJournal** : A graph of the LiveJournal social network. + **europe_osm** : A graph of OpenStreetMap data for Europe. + **hollywood** : A graph of movie actors where vertices are actors, and two actors are joined by an edge whenever they appeared in a movie together. + **soc-twitter-2010** : A network of follower relationships from a snapshot of Twitter in 2010, where an edge from i to j indicates that j is a follower of i. _NOTE: the benchmark datasets were converted to a CSV format from their original format described in the reference URL below, and in doing so had edge weights and isolated vertices discarded._ diff --git a/python/cugraph-pyg/cugraph_pyg/tests/conftest.py b/python/cugraph-pyg/cugraph_pyg/tests/conftest.py index 083c4a2b37b..1512901822a 100644 --- a/python/cugraph-pyg/cugraph_pyg/tests/conftest.py +++ b/python/cugraph-pyg/cugraph_pyg/tests/conftest.py @@ -24,7 +24,7 @@ import torch import numpy as np from cugraph.gnn import FeatureStore -from cugraph.experimental.datasets import karate +from cugraph.datasets import karate import tempfile diff --git a/python/cugraph-service/server/cugraph_service_server/testing/benchmark_server_extension.py b/python/cugraph-service/server/cugraph_service_server/testing/benchmark_server_extension.py index 5f9eac6b2a3..361226c8071 100644 --- a/python/cugraph-service/server/cugraph_service_server/testing/benchmark_server_extension.py +++ b/python/cugraph-service/server/cugraph_service_server/testing/benchmark_server_extension.py @@ -17,7 +17,7 @@ import cugraph from cugraph.experimental import PropertyGraph, MGPropertyGraph -from cugraph.experimental import datasets +from cugraph import datasets from cugraph.generators import rmat diff --git a/python/cugraph/cugraph/dask/community/leiden.py b/python/cugraph/cugraph/dask/community/leiden.py index 75582fa48f7..67bd0876ce6 100644 --- a/python/cugraph/cugraph/dask/community/leiden.py +++ b/python/cugraph/cugraph/dask/community/leiden.py @@ -125,7 +125,7 @@ def leiden( Examples -------- - >>> from cugraph.experimental.datasets import karate + >>> from cugraph.datasets import karate >>> G = karate.get_graph(fetch=True) >>> parts, modularity_score = cugraph.leiden(G) diff --git a/python/cugraph/cugraph/dask/community/louvain.py b/python/cugraph/cugraph/dask/community/louvain.py index 8efbbafaf7b..1b091817a1a 100644 --- a/python/cugraph/cugraph/dask/community/louvain.py +++ b/python/cugraph/cugraph/dask/community/louvain.py @@ -129,7 +129,7 @@ def louvain( Examples -------- - >>> from cugraph.experimental.datasets import karate + >>> from cugraph.datasets import karate >>> G = karate.get_graph(fetch=True) >>> parts = cugraph.louvain(G) diff --git a/python/cugraph/cugraph/datasets/__init__.py b/python/cugraph/cugraph/datasets/__init__.py index 65a820f108b..ac18274d354 100644 --- a/python/cugraph/cugraph/datasets/__init__.py +++ b/python/cugraph/cugraph/datasets/__init__.py @@ -39,3 +39,13 @@ small_tree = Dataset(meta_path / "small_tree.yaml") toy_graph = Dataset(meta_path / "toy_graph.yaml") toy_graph_undirected = Dataset(meta_path / "toy_graph_undirected.yaml") + +# Benchmarking datasets: be mindful of memory usage +# 250 MB +soc_livejournal = Dataset(meta_path / "soc-livejournal1.yaml") +# 965 MB +cit_patents = Dataset(meta_path / "cit-patents.yaml") +# 1.8 GB +europe_osm = Dataset(meta_path / "europe_osm.yaml") +# 1.5 GB +hollywood = Dataset(meta_path / "hollywood.yaml") diff --git a/python/cugraph/cugraph/datasets/dataset.py b/python/cugraph/cugraph/datasets/dataset.py index 877eade7708..dd7aa0df00a 100644 --- a/python/cugraph/cugraph/datasets/dataset.py +++ b/python/cugraph/cugraph/datasets/dataset.py @@ -14,44 +14,45 @@ import cudf import yaml import os +import pandas as pd from pathlib import Path from cugraph.structure.graph_classes import Graph class DefaultDownloadDir: """ - Maintains the path to the download directory used by Dataset instances. + Maintains a path to be used as a default download directory. + + All DefaultDownloadDir instances are based on RAPIDS_DATASET_ROOT_DIR if + set, or _default_base_dir if not set. + Instances of this class are typically shared by several Dataset instances in order to allow for the download directory to be defined and updated by a single object. """ - def __init__(self): - self._path = Path( - os.environ.get("RAPIDS_DATASET_ROOT_DIR", Path.home() / ".cugraph/datasets") - ) + _default_base_dir = Path.home() / ".cugraph/datasets" - @property - def path(self): + def __init__(self, *, subdir=""): """ - If `path` is not set, set it to the environment variable - RAPIDS_DATASET_ROOT_DIR. If the variable is not set, default to the - user's home directory. + subdir can be specified to provide a specialized dir under the base dir. """ - if self._path is None: - self._path = Path( - os.environ.get( - "RAPIDS_DATASET_ROOT_DIR", Path.home() / ".cugraph/datasets" - ) - ) - return self._path + self._subdir = Path(subdir) + self.reset() + + @property + def path(self): + return self._path.absolute() @path.setter def path(self, new): self._path = Path(new) - def clear(self): - self._path = None + def reset(self): + self._basedir = Path( + os.environ.get("RAPIDS_DATASET_ROOT_DIR", self._default_base_dir) + ) + self._path = self._basedir / self._subdir default_download_dir = DefaultDownloadDir() @@ -159,7 +160,7 @@ def unload(self): """ self._edgelist = None - def get_edgelist(self, download=False): + def get_edgelist(self, download=False, reader="cudf"): """ Return an Edgelist @@ -168,6 +169,9 @@ def get_edgelist(self, download=False): download : Boolean (default=False) Automatically download the dataset from the 'url' location within the YAML file. + + reader : 'cudf' or 'pandas' (default='cudf') + The library used to read a CSV and return an edgelist DataFrame. """ if self._edgelist is None: full_path = self.get_path() @@ -180,14 +184,29 @@ def get_edgelist(self, download=False): " exist. Try setting download=True" " to download the datafile" ) + header = None if isinstance(self.metadata["header"], int): header = self.metadata["header"] - self._edgelist = cudf.read_csv( - full_path, + + if reader == "cudf": + self.__reader = cudf.read_csv + elif reader == "pandas": + self.__reader = pd.read_csv + else: + raise ValueError( + "reader must be a module with a read_csv function compatible with \ + cudf.read_csv" + ) + + self._edgelist = self.__reader( + filepath_or_buffer=full_path, delimiter=self.metadata["delim"], names=self.metadata["col_names"], - dtype=self.metadata["col_types"], + dtype={ + self.metadata["col_names"][i]: self.metadata["col_types"][i] + for i in range(len(self.metadata["col_types"])) + }, header=header, ) @@ -219,6 +238,10 @@ def get_graph( dataset -if present- will be applied to the Graph. If the dataset does not contain weights, the Graph returned will be unweighted regardless of ignore_weights. + + store_transposed: Boolean (default=False) + If True, stores the transpose of the adjacency matrix. Required + for certain algorithms, such as pagerank. """ if self._edgelist is None: self.get_edgelist(download) @@ -237,20 +260,19 @@ def get_graph( "(or subclass) type or instance, got: " f"{type(create_using)}" ) - if len(self.metadata["col_names"]) > 2 and not (ignore_weights): G.from_cudf_edgelist( self._edgelist, - source="src", - destination="dst", - edge_attr="wgt", + source=self.metadata["col_names"][0], + destination=self.metadata["col_names"][1], + edge_attr=self.metadata["col_names"][2], store_transposed=store_transposed, ) else: G.from_cudf_edgelist( self._edgelist, - source="src", - destination="dst", + source=self.metadata["col_names"][0], + destination=self.metadata["col_names"][1], store_transposed=store_transposed, ) return G @@ -331,7 +353,7 @@ def download_all(force=False): def set_download_dir(path): """ - Set the download location fors datasets + Set the download location for datasets Parameters ---------- @@ -339,10 +361,10 @@ def set_download_dir(path): Location used to store datafiles """ if path is None: - default_download_dir.clear() + default_download_dir.reset() else: default_download_dir.path = path def get_download_dir(): - return default_download_dir.path.absolute() + return default_download_dir.path diff --git a/python/cugraph/cugraph/datasets/metadata/cit-patents.yaml b/python/cugraph/cugraph/datasets/metadata/cit-patents.yaml new file mode 100644 index 00000000000..d5c4cf195bd --- /dev/null +++ b/python/cugraph/cugraph/datasets/metadata/cit-patents.yaml @@ -0,0 +1,22 @@ +name: cit-Patents +file_type: .csv +description: A citation graph that includes all citations made by patents granted between 1975 and 1999, totaling 16,522,438 citations. +author: NBER +refs: + J. Leskovec, J. Kleinberg and C. Faloutsos. Graphs over Time Densification Laws, Shrinking Diameters and Possible Explanations. + ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD), 2005. +delim: " " +header: None +col_names: + - src + - dst +col_types: + - int32 + - int32 +has_loop: true +is_directed: true +is_multigraph: false +is_symmetric: false +number_of_edges: 16518948 +number_of_nodes: 3774768 +url: https://data.rapids.ai/cugraph/datasets/cit-Patents.csv \ No newline at end of file diff --git a/python/cugraph/cugraph/datasets/metadata/europe_osm.yaml b/python/cugraph/cugraph/datasets/metadata/europe_osm.yaml new file mode 100644 index 00000000000..fe0e42a4b86 --- /dev/null +++ b/python/cugraph/cugraph/datasets/metadata/europe_osm.yaml @@ -0,0 +1,21 @@ +name: europe_osm +file_type: .csv +description: A graph of OpenStreetMap data for Europe. +author: M. Kobitzsh / Geofabrik GmbH +refs: + Rossi, Ryan. Ahmed, Nesreen. The Network Data Respoistory with Interactive Graph Analytics and Visualization. +delim: " " +header: None +col_names: + - src + - dst +col_types: + - int32 + - int32 +has_loop: false +is_directed: false +is_multigraph: false +is_symmetric: true +number_of_edges: 54054660 +number_of_nodes: 50912018 +url: https://data.rapids.ai/cugraph/datasets/europe_osm.csv \ No newline at end of file diff --git a/python/cugraph/cugraph/datasets/metadata/hollywood.yaml b/python/cugraph/cugraph/datasets/metadata/hollywood.yaml new file mode 100644 index 00000000000..2f09cf7679b --- /dev/null +++ b/python/cugraph/cugraph/datasets/metadata/hollywood.yaml @@ -0,0 +1,26 @@ +name: hollywood +file_type: .csv +description: + A graph of movie actors where vertices are actors, and two actors are + joined by an edge whenever they appeared in a movie together. +author: Laboratory for Web Algorithmics (LAW) +refs: + The WebGraph Framework I Compression Techniques, Paolo Boldi + and Sebastiano Vigna, Proc. of the Thirteenth International + World Wide Web Conference (WWW 2004), 2004, Manhattan, USA, + pp. 595--601, ACM Press. +delim: " " +header: None +col_names: + - src + - dst +col_types: + - int32 + - int32 +has_loop: false +is_directed: false +is_multigraph: false +is_symmetric: true +number_of_edges: 57515616 +number_of_nodes: 1139905 +url: https://data.rapids.ai/cugraph/datasets/hollywood.csv \ No newline at end of file diff --git a/python/cugraph/cugraph/datasets/metadata/soc-livejournal1.yaml b/python/cugraph/cugraph/datasets/metadata/soc-livejournal1.yaml new file mode 100644 index 00000000000..fafc68acb9b --- /dev/null +++ b/python/cugraph/cugraph/datasets/metadata/soc-livejournal1.yaml @@ -0,0 +1,22 @@ +name: soc-LiveJournal1 +file_type: .csv +description: A graph of the LiveJournal social network. +author: L. Backstrom, D. Huttenlocher, J. Kleinberg, X. Lan +refs: + L. Backstrom, D. Huttenlocher, J. Kleinberg, X. Lan. Group Formation in + Large Social Networks Membership, Growth, and Evolution. KDD, 2006. +delim: " " +header: None +col_names: + - src + - dst +col_types: + - int32 + - int32 +has_loop: true +is_directed: true +is_multigraph: false +is_symmetric: false +number_of_edges: 68993773 +number_of_nodes: 4847571 +url: https://data.rapids.ai/cugraph/datasets/soc-LiveJournal1.csv \ No newline at end of file diff --git a/python/cugraph/cugraph/datasets/metadata/soc-twitter-2010.yaml b/python/cugraph/cugraph/datasets/metadata/soc-twitter-2010.yaml new file mode 100644 index 00000000000..df5df5735af --- /dev/null +++ b/python/cugraph/cugraph/datasets/metadata/soc-twitter-2010.yaml @@ -0,0 +1,22 @@ +name: soc-twitter-2010 +file_type: .csv +description: A network of follower relationships from a snapshot of Twitter in 2010, where an edge from i to j indicates that j is a follower of i. +author: H. Kwak, C. Lee, H. Park, S. Moon +refs: + J. Yang, J. Leskovec. Temporal Variation in Online Media. ACM Intl. + Conf. on Web Search and Data Mining (WSDM '11), 2011. +delim: " " +header: None +col_names: + - src + - dst +col_types: + - int32 + - int32 +has_loop: false +is_directed: false +is_multigraph: false +is_symmetric: false +number_of_edges: 530051354 +number_of_nodes: 21297772 +url: https://data.rapids.ai/cugraph/datasets/soc-twitter-2010.csv \ No newline at end of file diff --git a/python/cugraph/cugraph/experimental/datasets/__init__.py b/python/cugraph/cugraph/experimental/datasets/__init__.py deleted file mode 100644 index 18220243df1..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/__init__.py +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright (c) 2022-2023, NVIDIA CORPORATION. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -from cugraph.experimental.datasets.dataset import ( - Dataset, - load_all, - set_download_dir, - get_download_dir, - default_download_dir, -) -from cugraph.experimental.datasets import metadata -from pathlib import Path - -from cugraph.utilities.api_tools import promoted_experimental_warning_wrapper - - -Dataset = promoted_experimental_warning_wrapper(Dataset) -load_all = promoted_experimental_warning_wrapper(load_all) -set_download_dir = promoted_experimental_warning_wrapper(set_download_dir) -get_download_dir = promoted_experimental_warning_wrapper(get_download_dir) - -meta_path = Path(__file__).parent / "metadata" - - -# individual dataset objects -karate = Dataset(meta_path / "karate.yaml") -karate_data = Dataset(meta_path / "karate_data.yaml") -karate_undirected = Dataset(meta_path / "karate_undirected.yaml") -karate_asymmetric = Dataset(meta_path / "karate_asymmetric.yaml") -karate_disjoint = Dataset(meta_path / "karate-disjoint.yaml") -dolphins = Dataset(meta_path / "dolphins.yaml") -polbooks = Dataset(meta_path / "polbooks.yaml") -netscience = Dataset(meta_path / "netscience.yaml") -cyber = Dataset(meta_path / "cyber.yaml") -small_line = Dataset(meta_path / "small_line.yaml") -small_tree = Dataset(meta_path / "small_tree.yaml") -toy_graph = Dataset(meta_path / "toy_graph.yaml") -toy_graph_undirected = Dataset(meta_path / "toy_graph_undirected.yaml") -email_Eu_core = Dataset(meta_path / "email-Eu-core.yaml") -ktruss_polbooks = Dataset(meta_path / "ktruss_polbooks.yaml") - - -# batches of datasets -DATASETS_UNDIRECTED = [karate, dolphins] - -DATASETS_UNDIRECTED_WEIGHTS = [netscience] - -DATASETS_UNRENUMBERED = [karate_disjoint] - -DATASETS = [dolphins, netscience, karate_disjoint] - -DATASETS_SMALL = [karate, dolphins, polbooks] - -STRONGDATASETS = [dolphins, netscience, email_Eu_core] - -DATASETS_KTRUSS = [(polbooks, ktruss_polbooks)] - -MEDIUM_DATASETS = [polbooks] - -SMALL_DATASETS = [karate, dolphins, netscience] - -RLY_SMALL_DATASETS = [small_line, small_tree] - -ALL_DATASETS = [karate, dolphins, netscience, polbooks, small_line, small_tree] - -ALL_DATASETS_WGT = [karate, dolphins, netscience, polbooks, small_line, small_tree] - -TEST_GROUP = [dolphins, netscience] diff --git a/python/cugraph/cugraph/experimental/datasets/dataset.py b/python/cugraph/cugraph/experimental/datasets/dataset.py deleted file mode 100644 index 6b395d50fef..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/dataset.py +++ /dev/null @@ -1,312 +0,0 @@ -# Copyright (c) 2022-2023, NVIDIA CORPORATION. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import cudf -import yaml -import os -from pathlib import Path -from cugraph.structure.graph_classes import Graph - - -class DefaultDownloadDir: - """ - Maintains the path to the download directory used by Dataset instances. - Instances of this class are typically shared by several Dataset instances - in order to allow for the download directory to be defined and updated by - a single object. - """ - - def __init__(self): - self._path = Path( - os.environ.get("RAPIDS_DATASET_ROOT_DIR", Path.home() / ".cugraph/datasets") - ) - - @property - def path(self): - """ - If `path` is not set, set it to the environment variable - RAPIDS_DATASET_ROOT_DIR. If the variable is not set, default to the - user's home directory. - """ - if self._path is None: - self._path = Path( - os.environ.get( - "RAPIDS_DATASET_ROOT_DIR", Path.home() / ".cugraph/datasets" - ) - ) - return self._path - - @path.setter - def path(self, new): - self._path = Path(new) - - def clear(self): - self._path = None - - -default_download_dir = DefaultDownloadDir() - - -class Dataset: - """ - A Dataset Object, used to easily import edgelist data and cuGraph.Graph - instances. - - Parameters - ---------- - meta_data_file_name : yaml file - The metadata file for the specific graph dataset, which includes - information on the name, type, url link, data loading format, graph - properties - """ - - def __init__( - self, - metadata_yaml_file=None, - csv_file=None, - csv_header=None, - csv_delim=" ", - csv_col_names=None, - csv_col_dtypes=None, - ): - self._metadata_file = None - self._dl_path = default_download_dir - self._edgelist = None - self._path = None - - if metadata_yaml_file is not None and csv_file is not None: - raise ValueError("cannot specify both metadata_yaml_file and csv_file") - - elif metadata_yaml_file is not None: - with open(metadata_yaml_file, "r") as file: - self.metadata = yaml.safe_load(file) - self._metadata_file = Path(metadata_yaml_file) - - elif csv_file is not None: - if csv_col_names is None or csv_col_dtypes is None: - raise ValueError( - "csv_col_names and csv_col_dtypes must both be " - "not None when csv_file is specified." - ) - self._path = Path(csv_file) - if self._path.exists() is False: - raise FileNotFoundError(csv_file) - self.metadata = { - "name": self._path.with_suffix("").name, - "file_type": ".csv", - "url": None, - "header": csv_header, - "delim": csv_delim, - "col_names": csv_col_names, - "col_types": csv_col_dtypes, - } - - else: - raise ValueError("must specify either metadata_yaml_file or csv_file") - - def __str__(self): - """ - Use the basename of the meta_data_file the instance was constructed with, - without any extension, as the string repr. - """ - # The metadata file is likely to have a more descriptive file name, so - # use that one first if present. - # FIXME: this may need to provide a more unique or descriptive string repr - if self._metadata_file is not None: - return self._metadata_file.with_suffix("").name - else: - return self.get_path().with_suffix("").name - - def __download_csv(self, url): - """ - Downloads the .csv file from url to the current download path - (self._dl_path), updates self._path with the full path to the - downloaded file, and returns the latest value of self._path. - """ - self._dl_path.path.mkdir(parents=True, exist_ok=True) - - filename = self.metadata["name"] + self.metadata["file_type"] - if self._dl_path.path.is_dir(): - df = cudf.read_csv(url) - self._path = self._dl_path.path / filename - df.to_csv(self._path, index=False) - - else: - raise RuntimeError( - f"The directory {self._dl_path.path.absolute()}" "does not exist" - ) - return self._path - - def unload(self): - - """ - Remove all saved internal objects, forcing them to be re-created when - accessed. - - NOTE: This will cause calls to get_*() to re-read the dataset file from - disk. The caller should ensure the file on disk has not moved/been - deleted/changed. - """ - self._edgelist = None - - def get_edgelist(self, fetch=False): - """ - Return an Edgelist - - Parameters - ---------- - fetch : Boolean (default=False) - Automatically fetch for the dataset from the 'url' location within - the YAML file. - """ - if self._edgelist is None: - full_path = self.get_path() - if not full_path.is_file(): - if fetch: - full_path = self.__download_csv(self.metadata["url"]) - else: - raise RuntimeError( - f"The datafile {full_path} does not" - " exist. Try get_edgelist(fetch=True)" - " to download the datafile" - ) - header = None - if isinstance(self.metadata["header"], int): - header = self.metadata["header"] - self._edgelist = cudf.read_csv( - full_path, - delimiter=self.metadata["delim"], - names=self.metadata["col_names"], - dtype=self.metadata["col_types"], - header=header, - ) - - return self._edgelist - - def get_graph( - self, - fetch=False, - create_using=Graph, - ignore_weights=False, - store_transposed=False, - ): - """ - Return a Graph object. - - Parameters - ---------- - fetch : Boolean (default=False) - Downloads the dataset from the web. - - create_using: cugraph.Graph (instance or class), optional - (default=Graph) - Specify the type of Graph to create. Can pass in an instance to - create a Graph instance with specified 'directed' attribute. - - ignore_weights : Boolean (default=False) - Ignores weights in the dataset if True, resulting in an - unweighted Graph. If False (the default), weights from the - dataset -if present- will be applied to the Graph. If the - dataset does not contain weights, the Graph returned will - be unweighted regardless of ignore_weights. - """ - if self._edgelist is None: - self.get_edgelist(fetch) - - if create_using is None: - G = Graph() - elif isinstance(create_using, Graph): - # what about BFS if trnaposed is True - attrs = {"directed": create_using.is_directed()} - G = type(create_using)(**attrs) - elif type(create_using) is type: - G = create_using() - else: - raise TypeError( - "create_using must be a cugraph.Graph " - "(or subclass) type or instance, got: " - f"{type(create_using)}" - ) - - if len(self.metadata["col_names"]) > 2 and not (ignore_weights): - G.from_cudf_edgelist( - self._edgelist, - source="src", - destination="dst", - edge_attr="wgt", - store_transposed=store_transposed, - ) - else: - G.from_cudf_edgelist( - self._edgelist, - source="src", - destination="dst", - store_transposed=store_transposed, - ) - return G - - def get_path(self): - """ - Returns the location of the stored dataset file - """ - if self._path is None: - self._path = self._dl_path.path / ( - self.metadata["name"] + self.metadata["file_type"] - ) - - return self._path.absolute() - - -def load_all(force=False): - """ - Looks in `metadata` directory and fetches all datafiles from the the URLs - provided in each YAML file. - - Parameters - force : Boolean (default=False) - Overwrite any existing copies of datafiles. - """ - default_download_dir.path.mkdir(parents=True, exist_ok=True) - - meta_path = Path(__file__).parent.absolute() / "metadata" - for file in meta_path.iterdir(): - meta = None - if file.suffix == ".yaml": - with open(meta_path / file, "r") as metafile: - meta = yaml.safe_load(metafile) - - if "url" in meta: - filename = meta["name"] + meta["file_type"] - save_to = default_download_dir.path / filename - if not save_to.is_file() or force: - df = cudf.read_csv(meta["url"]) - df.to_csv(save_to, index=False) - - -def set_download_dir(path): - """ - Set the download directory for fetching datasets - - Parameters - ---------- - path : String - Location used to store datafiles - """ - if path is None: - default_download_dir.clear() - else: - default_download_dir.path = path - - -def get_download_dir(): - return default_download_dir.path.absolute() diff --git a/python/cugraph/cugraph/experimental/datasets/datasets_config.yaml b/python/cugraph/cugraph/experimental/datasets/datasets_config.yaml deleted file mode 100644 index 69a79db9cd9..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/datasets_config.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -fetch: "False" -force: "False" -# path where datasets will be downloaded to and stored -download_dir: "datasets" diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/__init__.py b/python/cugraph/cugraph/experimental/datasets/metadata/__init__.py deleted file mode 100644 index 081b2ae8260..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2022-2023, NVIDIA CORPORATION. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/cyber.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/cyber.yaml deleted file mode 100644 index 93ab5345442..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/cyber.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: cyber -file_type: .csv -author: N/A -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/cyber.csv -refs: N/A -col_names: - - idx - - srcip - - dstip -col_types: - - int32 - - str - - str -delim: "," -header: 0 -has_loop: true -is_directed: true -is_multigraph: false -is_symmetric: false -number_of_edges: 2546575 -number_of_nodes: 706529 -number_of_lines: 2546576 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/dolphins.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/dolphins.yaml deleted file mode 100644 index e4951375321..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/dolphins.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: dolphins -file_type: .csv -author: D. Lusseau -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/dolphins.csv -refs: - D. Lusseau, K. Schneider, O. J. Boisseau, P. Haase, E. Slooten, and S. M. Dawson, - The bottlenose dolphin community of Doubtful Sound features a large proportion of - long-lasting associations, Behavioral Ecology and Sociobiology 54, 396-405 (2003). -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -delim: " " -header: None -has_loop: false -is_directed: true -is_multigraph: false -is_symmetric: false -number_of_edges: 318 -number_of_nodes: 62 -number_of_lines: 318 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/email-Eu-core.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/email-Eu-core.yaml deleted file mode 100644 index 97d0dc82ee3..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/email-Eu-core.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: email-Eu-core -file_type: .csv -author: null -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/email-Eu-core.csv -refs: null -delim: " " -header: None -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -has_loop: false -is_directed: false -is_multigraph: false -is_symmetric: true -number_of_edges: 25571 -number_of_nodes: 1005 -number_of_lines: 25571 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/karate-disjoint.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/karate-disjoint.yaml deleted file mode 100644 index 0c0eaf78b63..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/karate-disjoint.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: karate-disjoint -file_type: .csv -author: null -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/karate-disjoint.csv -refs: null -delim: " " -header: None -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -has_loop: false -is_directed: True -is_multigraph: false -is_symmetric: true -number_of_edges: 312 -number_of_nodes: 68 -number_of_lines: 312 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/karate.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/karate.yaml deleted file mode 100644 index 273381ed368..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/karate.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: karate -file_type: .csv -author: Zachary W. -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/karate.csv -refs: - W. W. Zachary, An information flow model for conflict and fission in small groups, - Journal of Anthropological Research 33, 452-473 (1977). -delim: " " -header: None -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -has_loop: true -is_directed: true -is_multigraph: false -is_symmetric: true -number_of_edges: 156 -number_of_nodes: 34 -number_of_lines: 156 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/karate_asymmetric.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/karate_asymmetric.yaml deleted file mode 100644 index 3616b8fb3a5..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/karate_asymmetric.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: karate-asymmetric -file_type: .csv -author: Zachary W. -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/karate-asymmetric.csv -delim: " " -header: None -refs: - W. W. Zachary, An information flow model for conflict and fission in small groups, - Journal of Anthropological Research 33, 452-473 (1977). -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -has_loop: true -is_directed: false -is_multigraph: false -is_symmetric: false -number_of_edges: 78 -number_of_nodes: 34 -number_of_lines: 78 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/karate_data.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/karate_data.yaml deleted file mode 100644 index 9a8b27f21ae..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/karate_data.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: karate-data -file_type: .csv -author: Zachary W. -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/karate-data.csv -refs: - W. W. Zachary, An information flow model for conflict and fission in small groups, - Journal of Anthropological Research 33, 452-473 (1977). -delim: "\t" -header: None -col_names: - - src - - dst -col_types: - - int32 - - int32 -has_loop: true -is_directed: true -is_multigraph: false -is_symmetric: true -number_of_edges: 156 -number_of_nodes: 34 -number_of_lines: 156 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/karate_undirected.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/karate_undirected.yaml deleted file mode 100644 index 1b45f86caee..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/karate_undirected.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: karate_undirected -file_type: .csv -author: Zachary W. -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/karate_undirected.csv -refs: - W. W. Zachary, An information flow model for conflict and fission in small groups, - Journal of Anthropological Research 33, 452-473 (1977). -delim: "\t" -header: None -col_names: - - src - - dst -col_types: - - int32 - - int32 -has_loop: true -is_directed: false -is_multigraph: false -is_symmetric: true -number_of_edges: 78 -number_of_nodes: 34 -number_of_lines: 78 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/ktruss_polbooks.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/ktruss_polbooks.yaml deleted file mode 100644 index 1ef29b3917e..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/ktruss_polbooks.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: ktruss_polbooks -file_type: .csv -author: null -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/ref/ktruss/polbooks.csv -refs: null -delim: " " -header: None -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -has_loop: false -is_directed: true -is_multigraph: false -is_symmetric: false -number_of_edges: 233 -number_of_nodes: 58 -number_of_lines: 233 - diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/netscience.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/netscience.yaml deleted file mode 100644 index 2dca702df3d..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/netscience.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: netscience -file_type: .csv -author: Newman, Mark EJ -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/netscience.csv -refs: Finding community structure in networks using the eigenvectors of matrices. -delim: " " -header: None -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -has_loop: false -is_directed: true -is_multigraph: false -is_symmetric: true -number_of_edges: 2742 -number_of_nodes: 1461 -number_of_lines: 5484 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/polbooks.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/polbooks.yaml deleted file mode 100644 index 5816e5672fd..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/polbooks.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: polbooks -file_type: .csv -author: V. Krebs -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/polbooks.csv -refs: null -delim: " " -header: None -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -is_directed: true -has_loop: null -is_multigraph: null -is_symmetric: true -number_of_edges: 882 -number_of_nodes: 105 -number_of_lines: 882 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/small_line.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/small_line.yaml deleted file mode 100644 index 5b724ac99fd..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/small_line.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: small_line -file_type: .csv -author: null -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/small_line.csv -refs: null -delim: " " -header: None -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -has_loop: false -is_directed: false -is_multigraph: false -is_symmetric: true -number_of_edges: 9 -number_of_nodes: 10 -number_of_lines: 8 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/small_tree.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/small_tree.yaml deleted file mode 100644 index 8eeac346d2a..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/small_tree.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: small_tree -file_type: .csv -author: null -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/small_tree.csv -refs: null -delim: " " -header: None -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -has_loop: false -is_directed: true -is_multigraph: false -is_symmetric: true -number_of_edges: 11 -number_of_nodes: 9 -number_of_lines: 11 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/toy_graph.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/toy_graph.yaml deleted file mode 100644 index 819aad06f6a..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/toy_graph.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: toy_graph -file_type: .csv -author: null -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/toy_graph.csv -refs: null -delim: " " -header: None -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -has_loop: false -is_directed: false -is_multigraph: false -is_symmetric: true -number_of_edges: 16 -number_of_nodes: 6 -number_of_lines: 16 diff --git a/python/cugraph/cugraph/experimental/datasets/metadata/toy_graph_undirected.yaml b/python/cugraph/cugraph/experimental/datasets/metadata/toy_graph_undirected.yaml deleted file mode 100644 index c6e86bdf334..00000000000 --- a/python/cugraph/cugraph/experimental/datasets/metadata/toy_graph_undirected.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: toy_graph_undirected -file_type: .csv -author: null -url: https://raw.githubusercontent.com/rapidsai/cugraph/branch-22.08/datasets/toy_graph_undirected.csv -refs: null -delim: " " -header: None -col_names: - - src - - dst - - wgt -col_types: - - int32 - - int32 - - float32 -has_loop: false -is_directed: false -is_multigraph: false -is_symmetric: true -number_of_edges: 8 -number_of_nodes: 6 -number_of_lines: 8 diff --git a/python/cugraph/cugraph/testing/__init__.py b/python/cugraph/cugraph/testing/__init__.py index f5f0bcb06eb..2b4a4fd3ebf 100644 --- a/python/cugraph/cugraph/testing/__init__.py +++ b/python/cugraph/cugraph/testing/__init__.py @@ -19,7 +19,7 @@ Resultset, load_resultset, get_resultset, - results_dir_path, + default_resultset_download_dir, ) from cugraph.datasets import ( cyber, @@ -34,6 +34,11 @@ email_Eu_core, toy_graph, toy_graph_undirected, + soc_livejournal, + cit_patents, + europe_osm, + hollywood, + # twitter, ) # @@ -66,3 +71,4 @@ toy_graph_undirected, ] DEFAULT_DATASETS = [dolphins, netscience, karate_disjoint] +BENCHMARKING_DATASETS = [soc_livejournal, cit_patents, europe_osm, hollywood] diff --git a/python/cugraph/cugraph/testing/generate_resultsets.py b/python/cugraph/cugraph/testing/generate_resultsets.py index 9724aca32dc..2ae0f52d88b 100644 --- a/python/cugraph/cugraph/testing/generate_resultsets.py +++ b/python/cugraph/cugraph/testing/generate_resultsets.py @@ -20,8 +20,14 @@ import cudf import cugraph from cugraph.datasets import dolphins, netscience, karate_disjoint, karate -from cugraph.testing import utils, Resultset, SMALL_DATASETS, results_dir_path +# from cugraph.testing import utils, Resultset, SMALL_DATASETS, results_dir_path +from cugraph.testing import ( + utils, + Resultset, + SMALL_DATASETS, + default_resultset_download_dir, +) _resultsets = {} @@ -224,6 +230,7 @@ def add_resultset(result_data_dictionary, **kwargs): ] ) # Generating ALL results files + results_dir_path = default_resultset_download_dir.path if not results_dir_path.exists(): results_dir_path.mkdir(parents=True, exist_ok=True) diff --git a/python/cugraph/cugraph/testing/resultset.py b/python/cugraph/cugraph/testing/resultset.py index 490e3a7c4ff..9570d7f3e04 100644 --- a/python/cugraph/cugraph/testing/resultset.py +++ b/python/cugraph/cugraph/testing/resultset.py @@ -16,10 +16,12 @@ import urllib.request import cudf -from cugraph.testing import utils +from cugraph.datasets.dataset import ( + DefaultDownloadDir, + default_download_dir, +) - -results_dir_path = utils.RAPIDS_DATASET_ROOT_DIR_PATH / "tests" / "resultsets" +# results_dir_path = utils.RAPIDS_DATASET_ROOT_DIR_PATH / "tests" / "resultsets" class Resultset: @@ -48,6 +50,42 @@ def get_cudf_dataframe(self): _resultsets = {} +def get_resultset(resultset_name, **kwargs): + """ + Returns the golden results for a specific test. + + Parameters + ---------- + resultset_name : String + Name of the test's module (currently just 'traversal' is supported) + + kwargs : + All distinct test details regarding the choice of algorithm, dataset, + and graph + """ + arg_dict = dict(kwargs) + arg_dict["resultset_name"] = resultset_name + # Example: + # {'a': 1, 'z': 9, 'c': 5, 'b': 2} becomes 'a-1-b-2-c-5-z-9' + resultset_key = "-".join( + [ + str(val) + for arg_dict_pair in sorted(arg_dict.items()) + for val in arg_dict_pair + ] + ) + uuid = _resultsets.get(resultset_key) + if uuid is None: + raise KeyError(f"results for {arg_dict} not found") + + results_dir_path = default_resultset_download_dir.path + results_filename = results_dir_path / (uuid + ".csv") + return cudf.read_csv(results_filename) + + +default_resultset_download_dir = DefaultDownloadDir(subdir="tests/resultsets") + + def load_resultset(resultset_name, resultset_download_url): """ Read a mapping file (.csv) in the _results_dir and save the @@ -56,17 +94,21 @@ def load_resultset(resultset_name, resultset_download_url): _results_dir, use resultset_download_url to download a file to install/unpack/etc. to _results_dir first. """ - mapping_file_path = results_dir_path / (resultset_name + "_mappings.csv") + # curr_resultset_download_dir = get_resultset_download_dir() + curr_resultset_download_dir = default_resultset_download_dir.path + # curr_download_dir = path + curr_download_dir = default_download_dir.path + mapping_file_path = curr_resultset_download_dir / (resultset_name + "_mappings.csv") if not mapping_file_path.exists(): # Downloads a tar gz from s3 bucket, then unpacks the results files - compressed_file_dir = utils.RAPIDS_DATASET_ROOT_DIR_PATH / "tests" + compressed_file_dir = curr_download_dir / "tests" compressed_file_path = compressed_file_dir / "resultsets.tar.gz" - if not results_dir_path.exists(): - results_dir_path.mkdir(parents=True, exist_ok=True) + if not curr_resultset_download_dir.exists(): + curr_resultset_download_dir.mkdir(parents=True, exist_ok=True) if not compressed_file_path.exists(): urllib.request.urlretrieve(resultset_download_url, compressed_file_path) tar = tarfile.open(str(compressed_file_path), "r:gz") - tar.extractall(str(results_dir_path)) + tar.extractall(str(curr_resultset_download_dir)) tar.close() # FIXME: This assumes separator is " ", but should this be configurable? @@ -102,35 +144,3 @@ def load_resultset(resultset_name, resultset_download_url): ) _resultsets[resultset_key] = uuid - - -def get_resultset(resultset_name, **kwargs): - """ - Returns the golden results for a specific test. - - Parameters - ---------- - resultset_name : String - Name of the test's module (currently just 'traversal' is supported) - - kwargs : - All distinct test details regarding the choice of algorithm, dataset, - and graph - """ - arg_dict = dict(kwargs) - arg_dict["resultset_name"] = resultset_name - # Example: - # {'a': 1, 'z': 9, 'c': 5, 'b': 2} becomes 'a-1-b-2-c-5-z-9' - resultset_key = "-".join( - [ - str(val) - for arg_dict_pair in sorted(arg_dict.items()) - for val in arg_dict_pair - ] - ) - uuid = _resultsets.get(resultset_key) - if uuid is None: - raise KeyError(f"results for {arg_dict} not found") - - results_filename = results_dir_path / (uuid + ".csv") - return cudf.read_csv(results_filename) diff --git a/python/cugraph/cugraph/tests/centrality/test_edge_betweenness_centrality_mg.py b/python/cugraph/cugraph/tests/centrality/test_edge_betweenness_centrality_mg.py index 4277f94a396..478b7e655d5 100644 --- a/python/cugraph/cugraph/tests/centrality/test_edge_betweenness_centrality_mg.py +++ b/python/cugraph/cugraph/tests/centrality/test_edge_betweenness_centrality_mg.py @@ -16,7 +16,7 @@ import dask_cudf from pylibcugraph.testing.utils import gen_fixture_params_product -from cugraph.experimental.datasets import DATASETS_UNDIRECTED +from cugraph.datasets import karate, dolphins import cugraph import cugraph.dask as dcg @@ -41,7 +41,7 @@ def setup_function(): # email_Eu_core is too expensive to test -datasets = DATASETS_UNDIRECTED +datasets = [karate, dolphins] # ============================================================================= diff --git a/python/cugraph/cugraph/tests/nx/test_compat_pr.py b/python/cugraph/cugraph/tests/nx/test_compat_pr.py index 9be3912a33f..45cab7a5674 100644 --- a/python/cugraph/cugraph/tests/nx/test_compat_pr.py +++ b/python/cugraph/cugraph/tests/nx/test_compat_pr.py @@ -24,7 +24,7 @@ import numpy as np from cugraph.testing import utils -from cugraph.experimental.datasets import karate +from cugraph.datasets import karate from pylibcugraph.testing.utils import gen_fixture_params_product diff --git a/python/cugraph/cugraph/tests/utils/test_dataset.py b/python/cugraph/cugraph/tests/utils/test_dataset.py index c2a4f7c6072..60bc6dbb45a 100644 --- a/python/cugraph/cugraph/tests/utils/test_dataset.py +++ b/python/cugraph/cugraph/tests/utils/test_dataset.py @@ -13,11 +13,10 @@ import os import gc -import sys -import warnings from pathlib import Path from tempfile import TemporaryDirectory +import pandas import pytest import cudf @@ -27,6 +26,7 @@ ALL_DATASETS, WEIGHTED_DATASETS, SMALL_DATASETS, + BENCHMARKING_DATASETS, ) from cugraph import datasets @@ -74,27 +74,14 @@ def setup(tmpdir): gc.collect() -@pytest.fixture() -def setup_deprecation_warning_tests(): - """ - Fixture used to set warning filters to 'default' and reload - experimental.datasets module if it has been previously - imported. Tests that import this fixture are expected to - import cugraph.experimental.datasets - """ - warnings.filterwarnings("default") - - if "cugraph.experimental.datasets" in sys.modules: - del sys.modules["cugraph.experimental.datasets"] - - yield - - ############################################################################### # Helpers # check if there is a row where src == dst -def has_loop(df): +def has_selfloop(dataset): + if not dataset.metadata["is_directed"]: + return False + df = dataset.get_edgelist(download=True) df.rename(columns={df.columns[0]: "src", df.columns[1]: "dst"}, inplace=True) res = df.where(df["src"] == df["dst"]) @@ -109,7 +96,13 @@ def is_symmetric(dataset): else: df = dataset.get_edgelist(download=True) df_a = df.sort_values("src") - df_b = df_a[["dst", "src", "wgt"]] + + # create df with swapped src/dst columns + df_b = None + if "wgt" in df_a.columns: + df_b = df_a[["dst", "src", "wgt"]] + else: + df_b = df_a[["dst", "src"]] df_b.rename(columns={"dst": "src", "src": "dst"}, inplace=True) # created a df by appending the two res = cudf.concat([df_a, df_b]) @@ -157,6 +150,27 @@ def test_download(dataset): assert dataset.get_path().is_file() +@pytest.mark.parametrize("dataset", SMALL_DATASETS) +def test_reader(dataset): + # defaults to using cudf.read_csv + E = dataset.get_edgelist(download=True) + + assert E is not None + assert isinstance(E, cudf.core.dataframe.DataFrame) + dataset.unload() + + # using pandas + E_pd = dataset.get_edgelist(download=True, reader="pandas") + + assert E_pd is not None + assert isinstance(E_pd, pandas.core.frame.DataFrame) + dataset.unload() + + with pytest.raises(ValueError): + dataset.get_edgelist(reader="fail") + dataset.get_edgelist(reader=None) + + @pytest.mark.parametrize("dataset", ALL_DATASETS) def test_get_edgelist(dataset): E = dataset.get_edgelist(download=True) @@ -172,7 +186,6 @@ def test_get_graph(dataset): @pytest.mark.parametrize("dataset", ALL_DATASETS) def test_metadata(dataset): M = dataset.metadata - assert M is not None @@ -310,10 +323,8 @@ def test_is_directed(dataset): @pytest.mark.parametrize("dataset", ALL_DATASETS) -def test_has_loop(dataset): - df = dataset.get_edgelist(download=True) - - assert has_loop(df) == dataset.metadata["has_loop"] +def test_has_selfloop(dataset): + assert has_selfloop(dataset) == dataset.metadata["has_loop"] @pytest.mark.parametrize("dataset", ALL_DATASETS) @@ -328,6 +339,25 @@ def test_is_multigraph(dataset): assert G.is_multigraph() == dataset.metadata["is_multigraph"] +# The datasets used for benchmarks are in their own test, since downloading them +# repeatedly would increase testing overhead significantly +@pytest.mark.parametrize("dataset", BENCHMARKING_DATASETS) +def test_benchmarking_datasets(dataset): + dataset_is_directed = dataset.metadata["is_directed"] + G = dataset.get_graph( + download=True, create_using=Graph(directed=dataset_is_directed) + ) + + assert G.is_directed() == dataset.metadata["is_directed"] + assert G.number_of_nodes() == dataset.metadata["number_of_nodes"] + assert G.number_of_edges() == dataset.metadata["number_of_edges"] + assert has_selfloop(dataset) == dataset.metadata["has_loop"] + assert is_symmetric(dataset) == dataset.metadata["is_symmetric"] + assert G.is_multigraph() == dataset.metadata["is_multigraph"] + + dataset.unload() + + @pytest.mark.parametrize("dataset", ALL_DATASETS) def test_object_getters(dataset): assert dataset.is_directed() == dataset.metadata["is_directed"] @@ -336,32 +366,3 @@ def test_object_getters(dataset): assert dataset.number_of_nodes() == dataset.metadata["number_of_nodes"] assert dataset.number_of_vertices() == dataset.metadata["number_of_nodes"] assert dataset.number_of_edges() == dataset.metadata["number_of_edges"] - - -# -# Test experimental for DeprecationWarnings -# -def test_experimental_dataset_import(setup_deprecation_warning_tests): - with pytest.deprecated_call(): - from cugraph.experimental.datasets import karate - - # unload() is called to pass flake8 - karate.unload() - - -def test_experimental_method_warnings(setup_deprecation_warning_tests): - from cugraph.experimental.datasets import ( - load_all, - set_download_dir, - get_download_dir, - ) - - warnings.filterwarnings("default") - tmpd = TemporaryDirectory() - - with pytest.deprecated_call(): - set_download_dir(tmpd.name) - get_download_dir() - load_all() - - tmpd.cleanup() diff --git a/python/cugraph/cugraph/tests/utils/test_resultset.py b/python/cugraph/cugraph/tests/utils/test_resultset.py new file mode 100644 index 00000000000..5c2298bedb7 --- /dev/null +++ b/python/cugraph/cugraph/tests/utils/test_resultset.py @@ -0,0 +1,71 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os + +from pathlib import Path +from tempfile import TemporaryDirectory + +import cudf +from cugraph.datasets.dataset import ( + set_download_dir, + get_download_dir, +) +from cugraph.testing.resultset import load_resultset, default_resultset_download_dir + +############################################################################### + + +def test_load_resultset(): + with TemporaryDirectory() as tmpd: + + set_download_dir(Path(tmpd)) + default_resultset_download_dir.path = Path(tmpd) / "tests" / "resultsets" + default_resultset_download_dir.path.mkdir(parents=True, exist_ok=True) + + datasets_download_dir = get_download_dir() + resultsets_download_dir = default_resultset_download_dir.path + assert "tests" in os.listdir(datasets_download_dir) + assert "resultsets.tar.gz" not in os.listdir(datasets_download_dir / "tests") + assert "traversal_mappings.csv" not in os.listdir(resultsets_download_dir) + + load_resultset( + "traversal", "https://data.rapids.ai/cugraph/results/resultsets.tar.gz" + ) + + assert "resultsets.tar.gz" in os.listdir(datasets_download_dir / "tests") + assert "traversal_mappings.csv" in os.listdir(resultsets_download_dir) + + +def test_verify_resultset_load(): + # This test is more detailed than test_load_resultset, where for each module, + # we check that every single resultset file is included along with the + # corresponding mapping file. + with TemporaryDirectory() as tmpd: + set_download_dir(Path(tmpd)) + default_resultset_download_dir.path = Path(tmpd) / "tests" / "resultsets" + default_resultset_download_dir.path.mkdir(parents=True, exist_ok=True) + + resultsets_download_dir = default_resultset_download_dir.path + + load_resultset( + "traversal", "https://data.rapids.ai/cugraph/results/resultsets.tar.gz" + ) + + resultsets = os.listdir(resultsets_download_dir) + downloaded_results = cudf.read_csv( + resultsets_download_dir / "traversal_mappings.csv", sep=" " + ) + downloaded_uuids = downloaded_results["#UUID"].values + for resultset_uuid in downloaded_uuids: + assert str(resultset_uuid) + ".csv" in resultsets