From 2f16c372b7142a3ae35920e77ff036ddc83189c6 Mon Sep 17 00:00:00 2001 From: James Lamb Date: Thu, 23 Jan 2025 22:27:14 -0600 Subject: [PATCH 1/4] update pip devcontainers to UCX 1.18 (#112) Contributes to https://github.com/rapidsai/build-planning/issues/138 Updates to using UCX 1.18 in pip devcontainers here. Authors: - James Lamb (https://github.com/jameslamb) Approvers: - https://github.com/jakirkham URL: https://github.com/rapidsai/cugraph-gnn/pull/112 --- .devcontainer/cuda11.8-pip/devcontainer.json | 2 +- .devcontainer/cuda12.5-pip/devcontainer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/cuda11.8-pip/devcontainer.json b/.devcontainer/cuda11.8-pip/devcontainer.json index 1fd71325..7ef81d08 100644 --- a/.devcontainer/cuda11.8-pip/devcontainer.json +++ b/.devcontainer/cuda11.8-pip/devcontainer.json @@ -5,7 +5,7 @@ "args": { "CUDA": "11.8", "PYTHON_PACKAGE_MANAGER": "pip", - "BASE": "rapidsai/devcontainers:25.02-cpp-cuda11.8-ucx1.17.0-openmpi-ubuntu22.04" + "BASE": "rapidsai/devcontainers:25.02-cpp-cuda11.8-ucx1.18.0-openmpi-ubuntu22.04" } }, "runArgs": [ diff --git a/.devcontainer/cuda12.5-pip/devcontainer.json b/.devcontainer/cuda12.5-pip/devcontainer.json index e4c9ec8a..73929410 100644 --- a/.devcontainer/cuda12.5-pip/devcontainer.json +++ b/.devcontainer/cuda12.5-pip/devcontainer.json @@ -5,7 +5,7 @@ "args": { "CUDA": "12.5", "PYTHON_PACKAGE_MANAGER": "pip", - "BASE": "rapidsai/devcontainers:25.02-cpp-cuda12.5-ucx1.17.0-openmpi-ubuntu22.04" + "BASE": "rapidsai/devcontainers:25.02-cpp-cuda12.5-ucx1.18.0-openmpi-ubuntu22.04" } }, "runArgs": [ From 0e882809a5aa31f55db02ef5f9a4d25eb6430fc5 Mon Sep 17 00:00:00 2001 From: Alex Barghi <105237337+alexbarghi-nv@users.noreply.github.com> Date: Mon, 27 Jan 2025 11:58:24 -0800 Subject: [PATCH 2/4] Support PyG 2.6 in cuGraph-PyG (#114) Adds support for PyG 2.6 in cuGraph-PyG. The primary change is updating the examples so they fully specify all tensors, since partial specification is no longer allowed. Authors: - Alex Barghi (https://github.com/alexbarghi-nv) Approvers: - Jake Awe (https://github.com/AyodeAwe) - Tingyu Wang (https://github.com/tingyu66) URL: https://github.com/rapidsai/cugraph-gnn/pull/114 --- .../all_cuda-118_arch-x86_64.yaml | 2 +- .../all_cuda-121_arch-x86_64.yaml | 2 +- .../all_cuda-124_arch-x86_64.yaml | 2 +- conda/recipes/cugraph-pyg/meta.yaml | 2 +- dependencies.yaml | 4 +- .../conda/cugraph_pyg_dev_cuda-118.yaml | 2 +- .../cugraph_pyg/examples/gcn_dist_mnmg.py | 4 +- .../cugraph_pyg/examples/gcn_dist_sg.py | 4 +- .../cugraph_pyg/examples/gcn_dist_snmg.py | 4 +- .../examples/rgcn_link_class_mnmg.py | 24 +++++---- .../examples/rgcn_link_class_sg.py | 8 +-- .../examples/rgcn_link_class_snmg.py | 12 +++-- .../tests/data/test_feature_store.py | 10 ++-- .../tests/data/test_feature_store_mg.py | 16 +++--- .../tests/data/test_graph_store.py | 8 ++- .../tests/data/test_graph_store_mg.py | 8 ++- .../tests/loader/test_neighbor_loader.py | 50 ++++++++++++++----- .../tests/loader/test_neighbor_loader_mg.py | 26 +++++----- python/cugraph-pyg/pyproject.toml | 4 +- 19 files changed, 119 insertions(+), 73 deletions(-) diff --git a/conda/environments/all_cuda-118_arch-x86_64.yaml b/conda/environments/all_cuda-118_arch-x86_64.yaml index 4ae272c6..6f35f931 100644 --- a/conda/environments/all_cuda-118_arch-x86_64.yaml +++ b/conda/environments/all_cuda-118_arch-x86_64.yaml @@ -39,7 +39,7 @@ dependencies: - pytest-forked - pytest-xdist - pytorch>=2.3 -- pytorch_geometric>=2.5,<2.6 +- pytorch_geometric>=2.5,<2.7 - rapids-build-backend>=0.3.0,<0.4.0.dev0 - rmm==25.2.*,>=0.0.0a0 - scikit-build-core>=0.10.0 diff --git a/conda/environments/all_cuda-121_arch-x86_64.yaml b/conda/environments/all_cuda-121_arch-x86_64.yaml index b3b58d5e..51efa1cd 100644 --- a/conda/environments/all_cuda-121_arch-x86_64.yaml +++ b/conda/environments/all_cuda-121_arch-x86_64.yaml @@ -45,7 +45,7 @@ dependencies: - pytest-forked - pytest-xdist - pytorch>=2.3 -- pytorch_geometric>=2.5,<2.6 +- pytorch_geometric>=2.5,<2.7 - rapids-build-backend>=0.3.0,<0.4.0.dev0 - rmm==25.2.*,>=0.0.0a0 - scikit-build-core>=0.10.0 diff --git a/conda/environments/all_cuda-124_arch-x86_64.yaml b/conda/environments/all_cuda-124_arch-x86_64.yaml index e4d3b265..3a306e48 100644 --- a/conda/environments/all_cuda-124_arch-x86_64.yaml +++ b/conda/environments/all_cuda-124_arch-x86_64.yaml @@ -45,7 +45,7 @@ dependencies: - pytest-forked - pytest-xdist - pytorch>=2.3 -- pytorch_geometric>=2.5,<2.6 +- pytorch_geometric>=2.5,<2.7 - rapids-build-backend>=0.3.0,<0.4.0.dev0 - rmm==25.2.*,>=0.0.0a0 - scikit-build-core>=0.10.0 diff --git a/conda/recipes/cugraph-pyg/meta.yaml b/conda/recipes/cugraph-pyg/meta.yaml index 1b29c8ea..ff5f4930 100644 --- a/conda/recipes/cugraph-pyg/meta.yaml +++ b/conda/recipes/cugraph-pyg/meta.yaml @@ -36,7 +36,7 @@ requirements: - cupy >=12.0.0 - cugraph ={{ minor_version }} - tensordict >=0.1.2 - - pytorch_geometric >=2.5,<2.6 + - pytorch_geometric >=2.5,<2.7 tests: imports: diff --git a/dependencies.yaml b/dependencies.yaml index aa3097bc..962f8f76 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -440,10 +440,10 @@ dependencies: common: - output_types: [conda] packages: - - pytorch_geometric>=2.5,<2.6 + - pytorch_geometric>=2.5,<2.7 - output_types: [pyproject, requirements] packages: - - torch-geometric>=2.5,<2.6 + - torch-geometric>=2.5,<2.7 depends_on_pylibwholegraph: 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 47505033..f8e140ac 100644 --- a/python/cugraph-pyg/conda/cugraph_pyg_dev_cuda-118.yaml +++ b/python/cugraph-pyg/conda/cugraph_pyg_dev_cuda-118.yaml @@ -15,7 +15,7 @@ dependencies: - pytest-cov - pytest-xdist - pytorch>=2.3 -- pytorch_geometric>=2.5,<2.6 +- pytorch_geometric>=2.5,<2.7 - tensordict>=0.1.2 - torchdata name: cugraph_pyg_dev_cuda-118 diff --git a/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_mnmg.py b/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_mnmg.py index 304c360e..113e332a 100644 --- a/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_mnmg.py +++ b/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_mnmg.py @@ -150,10 +150,10 @@ def load_partitioned_data( ) # Load features - feature_store["node", "x"] = torch.load( + feature_store["node", "x", None] = torch.load( os.path.join(feature_path, f"rank={rank}_x.pt") ) - feature_store["node", "y"] = torch.load( + feature_store["node", "y", None] = torch.load( os.path.join(feature_path, f"rank={rank}_y.pt") ) diff --git a/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_sg.py b/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_sg.py index 736dede1..0f42707e 100644 --- a/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_sg.py +++ b/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_sg.py @@ -128,8 +128,8 @@ def load_data( ] = data.edge_index feature_store = cugraph_pyg.data.TensorDictFeatureStore() - feature_store["node", "x"] = data.x - feature_store["node", "y"] = data.y + feature_store["node", "x", None] = data.x + feature_store["node", "y", None] = data.y return ( (feature_store, graph_store), diff --git a/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_snmg.py b/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_snmg.py index db335dab..dc5ea587 100644 --- a/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_snmg.py +++ b/python/cugraph-pyg/cugraph_pyg/examples/gcn_dist_snmg.py @@ -108,8 +108,8 @@ def run_train( ] = ixr feature_store = TensorDictFeatureStore() - feature_store["node", "x"] = data.x - feature_store["node", "y"] = data.y + feature_store["node", "x", None] = data.x + feature_store["node", "y", None] = data.y dist.barrier() diff --git a/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_mnmg.py b/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_mnmg.py index 8566ad71..24bb7d62 100644 --- a/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_mnmg.py +++ b/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_mnmg.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024, NVIDIA CORPORATION. +# Copyright (c) 2024-2025, 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 @@ -93,7 +93,11 @@ def train(epoch, model, optimizer, train_loader, edge_feature_store, num_steps=N optimizer.zero_grad() for i, batch in enumerate(train_loader): - r = edge_feature_store[("n", "e", "n"), "rel"][batch.e_id].flatten().cuda() + r = ( + edge_feature_store[("n", "e", "n"), "rel", None][batch.e_id] + .flatten() + .cuda() + ) z = model.encode(batch.edge_index, r) loss = model.recon_loss(z, batch.edge_index) @@ -301,13 +305,18 @@ def load_partitioned_data(rank, edge_path, rel_path, pos_path, neg_path, meta_pa feature_store = TensorDictFeatureStore() edge_feature_store = WholeFeatureStore() + with open(meta_path, "r") as f: + meta = json.load(f) + + print("num nodes:", meta["num_nodes"]) + # Load edge index - graph_store[("n", "e", "n"), "coo"] = torch.load( - os.path.join(edge_path, f"rank={rank}.pt") - ) + graph_store[ + ("n", "e", "n"), "coo", False, (meta["num_nodes"], meta["num_nodes"]) + ] = torch.load(os.path.join(edge_path, f"rank={rank}.pt")) # Load edge rel type - edge_feature_store[("n", "e", "n"), "rel"] = torch.load( + edge_feature_store[("n", "e", "n"), "rel", None] = torch.load( os.path.join(rel_path, f"rank={rank}.pt") ) @@ -333,9 +342,6 @@ def load_partitioned_data(rank, edge_path, rel_path, pos_path, neg_path, meta_pa splits[stage]["tail_neg"] = tail_neg splits[stage]["relation"] = relation - with open(meta_path, "r") as f: - meta = json.load(f) - return (feature_store, graph_store), edge_feature_store, splits, meta diff --git a/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_sg.py b/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_sg.py index 6823fe72..6188ba5f 100644 --- a/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_sg.py +++ b/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_sg.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024, NVIDIA CORPORATION. +# Copyright (c) 2024-2025, 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 @@ -90,8 +90,10 @@ def load_data( edge_feature_store = TensorDictFeatureStore() meta = {} - graph_store[("n", "e", "n"), "coo"] = dataset.edge_index - edge_feature_store[("n", "e", "n"), "rel"] = dataset.edge_reltype.pin_memory() + graph_store[ + ("n", "e", "n"), "coo", False, (dataset.num_nodes, dataset.num_nodes) + ] = dataset.edge_index + edge_feature_store[("n", "e", "n"), "rel", None] = dataset.edge_reltype.pin_memory() meta["num_nodes"] = dataset.num_nodes meta["num_rels"] = dataset.edge_reltype.max() + 1 diff --git a/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_snmg.py b/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_snmg.py index 131dfeab..5eb419db 100644 --- a/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_snmg.py +++ b/python/cugraph-pyg/cugraph_pyg/examples/rgcn_link_class_snmg.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024, NVIDIA CORPORATION. +# Copyright (c) 2024-2025, 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 @@ -111,11 +111,13 @@ def load_data( feature_store = TensorDictFeatureStore() # empty fs required by PyG edge_feature_store = WholeFeatureStore() - graph_store[("n", "e", "n"), "coo"] = torch.tensor_split( - data.edge_index.cuda(), world_size, dim=1 - )[rank] + print("num nodes:", data.num_nodes) + + graph_store[ + ("n", "e", "n"), "coo", False, (data.num_nodes, data.num_nodes) + ] = torch.tensor_split(data.edge_index.cuda(), world_size, dim=1)[rank] - edge_feature_store[("n", "e", "n"), "rel"] = torch.tensor_split( + edge_feature_store[("n", "e", "n"), "rel", None] = torch.tensor_split( data.edge_reltype.cuda(), world_size, )[rank] diff --git a/python/cugraph-pyg/cugraph_pyg/tests/data/test_feature_store.py b/python/cugraph-pyg/cugraph_pyg/tests/data/test_feature_store.py index ab5f1e21..9cfb2466 100644 --- a/python/cugraph-pyg/cugraph_pyg/tests/data/test_feature_store.py +++ b/python/cugraph-pyg/cugraph_pyg/tests/data/test_feature_store.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024, NVIDIA CORPORATION. +# Copyright (c) 2024-2025, 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 @@ -30,9 +30,9 @@ def test_tensordict_feature_store_basic_api(): other_features = torch.randint(1024, (10, 5)) - feature_store["node", "feat0"] = node_features_0 - feature_store["node", "feat1"] = node_features_1 - feature_store["other", "feat"] = other_features + feature_store["node", "feat0", None] = node_features_0 + feature_store["node", "feat1", None] = node_features_1 + feature_store["other", "feat", None] = other_features assert (feature_store["node"]["feat0"][:] == node_features_0).all() assert (feature_store["node"]["feat1"][:] == node_features_1).all() @@ -40,5 +40,5 @@ def test_tensordict_feature_store_basic_api(): assert len(feature_store.get_all_tensor_attrs()) == 3 - del feature_store["node", "feat0"] + del feature_store["node", "feat0", None] assert len(feature_store.get_all_tensor_attrs()) == 2 diff --git a/python/cugraph-pyg/cugraph_pyg/tests/data/test_feature_store_mg.py b/python/cugraph-pyg/cugraph_pyg/tests/data/test_feature_store_mg.py index f1f51456..f8b645f4 100644 --- a/python/cugraph-pyg/cugraph_pyg/tests/data/test_feature_store_mg.py +++ b/python/cugraph-pyg/cugraph_pyg/tests/data/test_feature_store_mg.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024, NVIDIA CORPORATION. +# Copyright (c) 2024-2025, 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 @@ -46,22 +46,24 @@ def run_test_wholegraph_feature_store_basic_api(rank, world_size, dtype): features = features.reshape((features.numel() // 100, 100)).to(torch_dtype) tensordict_store = TensorDictFeatureStore() - tensordict_store["node", "fea"] = features + tensordict_store["node", "fea", None] = features whole_store = WholeFeatureStore() - whole_store["node", "fea"] = torch.tensor_split(features, world_size)[rank] + whole_store["node", "fea", None] = torch.tensor_split(features, world_size)[rank] ix = torch.arange(features.shape[0]) assert ( - whole_store["node", "fea"][ix].cpu() == tensordict_store["node", "fea"][ix] + whole_store["node", "fea", None][ix].cpu() + == tensordict_store["node", "fea", None][ix] ).all() label = torch.arange(0, features.shape[0]).reshape((features.shape[0], 1)) - tensordict_store["node", "label"] = label - whole_store["node", "label"] = torch.tensor_split(label, world_size)[rank] + tensordict_store["node", "label", None] = label + whole_store["node", "label", None] = torch.tensor_split(label, world_size)[rank] assert ( - whole_store["node", "fea"][ix].cpu() == tensordict_store["node", "fea"][ix] + whole_store["node", "fea", None][ix].cpu() + == tensordict_store["node", "fea", None][ix] ).all() pylibwholegraph.torch.initialize.finalize() diff --git a/python/cugraph-pyg/cugraph_pyg/tests/data/test_graph_store.py b/python/cugraph-pyg/cugraph_pyg/tests/data/test_graph_store.py index a8b93665..cb078081 100644 --- a/python/cugraph-pyg/cugraph_pyg/tests/data/test_graph_store.py +++ b/python/cugraph-pyg/cugraph_pyg/tests/data/test_graph_store.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024, NVIDIA CORPORATION. +# Copyright (c) 2024-2025, 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 @@ -30,8 +30,12 @@ def test_graph_store_basic_api(): ei = torch.stack([dst, src]) + num_nodes = karate.number_of_nodes() + graph_store = GraphStore() - graph_store.put_edge_index(ei, ("person", "knows", "person"), "coo") + graph_store.put_edge_index( + ei, ("person", "knows", "person"), "coo", False, (num_nodes, num_nodes) + ) rei = graph_store.get_edge_index(("person", "knows", "person"), "coo") diff --git a/python/cugraph-pyg/cugraph_pyg/tests/data/test_graph_store_mg.py b/python/cugraph-pyg/cugraph_pyg/tests/data/test_graph_store_mg.py index 14540b7e..d13cb084 100644 --- a/python/cugraph-pyg/cugraph_pyg/tests/data/test_graph_store_mg.py +++ b/python/cugraph-pyg/cugraph_pyg/tests/data/test_graph_store_mg.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024, NVIDIA CORPORATION. +# Copyright (c) 2024-2025, 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 @@ -30,8 +30,12 @@ def test_graph_store_basic_api_mg(): ei = torch.stack([dst, src]) + num_nodes = karate.number_of_nodes() + graph_store = GraphStore(is_multi_gpu=True) - graph_store.put_edge_index(ei, ("person", "knows", "person"), "coo") + graph_store.put_edge_index( + ei, ("person", "knows", "person"), "coo", False, (num_nodes, num_nodes) + ) rei = graph_store.get_edge_index(("person", "knows", "person"), "coo") diff --git a/python/cugraph-pyg/cugraph_pyg/tests/loader/test_neighbor_loader.py b/python/cugraph-pyg/cugraph_pyg/tests/loader/test_neighbor_loader.py index 7938e6f1..fb11588e 100644 --- a/python/cugraph-pyg/cugraph_pyg/tests/loader/test_neighbor_loader.py +++ b/python/cugraph-pyg/cugraph_pyg/tests/loader/test_neighbor_loader.py @@ -37,11 +37,15 @@ def test_neighbor_loader(): ei = torch.stack([dst, src]) + num_nodes = karate.number_of_nodes() + graph_store = GraphStore() - graph_store.put_edge_index(ei, ("person", "knows", "person"), "coo") + graph_store.put_edge_index( + ei, ("person", "knows", "person"), "coo", False, (num_nodes, num_nodes) + ) feature_store = TensorDictFeatureStore() - feature_store["person", "feat"] = torch.randint(128, (34, 16)) + feature_store["person", "feat", None] = torch.randint(128, (34, 16)) loader = NeighborLoader( (feature_store, graph_store), @@ -51,7 +55,7 @@ def test_neighbor_loader(): for batch in loader: assert isinstance(batch, torch_geometric.data.Data) - assert (feature_store["person", "feat"][batch.n_id] == batch.feat).all() + assert (feature_store["person", "feat", None][batch.n_id] == batch.feat).all() @pytest.mark.skipif(isinstance(torch, MissingModule), reason="torch not available") @@ -64,12 +68,16 @@ def test_neighbor_loader_biased(): ] ) + num_nodes = 6 + graph_store = GraphStore() - graph_store.put_edge_index(eix, ("person", "knows", "person"), "coo") + graph_store.put_edge_index( + eix, ("person", "knows", "person"), "coo", False, (num_nodes, num_nodes) + ) feature_store = TensorDictFeatureStore() - feature_store["person", "feat"] = torch.randint(128, (6, 12)) - feature_store[("person", "knows", "person"), "bias"] = torch.tensor( + feature_store["person", "feat", None] = torch.randint(128, (6, 12)) + feature_store[("person", "knows", "person"), "bias", None] = torch.tensor( [0, 12, 14], dtype=torch.float32 ) @@ -104,7 +112,7 @@ def test_link_neighbor_loader_basic( feature_store = TensorDictFeatureStore() eix = torch.randperm(num_edges)[:select_edges] - graph_store[("n", "e", "n"), "coo"] = torch.stack( + graph_store[("n", "e", "n"), "coo", False, (num_nodes, num_nodes)] = torch.stack( [ torch.randint(0, num_nodes, (num_edges,)), torch.randint(0, num_nodes, (num_edges,)), @@ -140,7 +148,7 @@ def test_link_neighbor_loader_negative_sampling_basic(batch_size): feature_store = TensorDictFeatureStore() eix = torch.randperm(num_edges)[:select_edges] - graph_store[("n", "e", "n"), "coo"] = torch.stack( + graph_store[("n", "e", "n"), "coo", False, (num_nodes, num_nodes)] = torch.stack( [ torch.randint(0, num_nodes, (num_edges,)), torch.randint(0, num_nodes, (num_edges,)), @@ -174,7 +182,7 @@ def test_link_neighbor_loader_negative_sampling_uneven(batch_size): feature_store = TensorDictFeatureStore() eix = torch.randperm(num_edges)[:select_edges] - graph_store[("n", "e", "n"), "coo"] = torch.stack( + graph_store[("n", "e", "n"), "coo", False, (num_nodes, num_nodes)] = torch.stack( [ torch.randint(0, num_nodes, (num_edges,)), torch.randint(0, num_nodes, (num_edges,)), @@ -205,11 +213,19 @@ def test_neighbor_loader_hetero_basic(): asrc = torch.tensor([0, 1, 2, 3, 3, 0]) # author adst = torch.tensor([0, 1, 2, 3, 4, 5]) # paper + num_authors = 4 + num_papers = 6 + graph_store = GraphStore() feature_store = TensorDictFeatureStore() - graph_store[("paper", "cites", "paper"), "coo"] = [src, dst] - graph_store[("author", "writes", "paper"), "coo"] = [asrc, adst] + graph_store[("paper", "cites", "paper"), "coo", False, (num_papers, num_papers)] = [ + src, + dst, + ] + graph_store[ + ("author", "writes", "paper"), "coo", False, (num_authors, num_papers) + ] = [asrc, adst] from cugraph_pyg.loader import NeighborLoader @@ -235,11 +251,19 @@ def test_neighbor_loader_hetero_single_etype(): asrc = torch.tensor([0, 1, 2, 3, 3, 0]) # author adst = torch.tensor([0, 1, 2, 3, 4, 5]) # paper + num_authors = 4 + num_papers = 6 + graph_store = GraphStore() feature_store = TensorDictFeatureStore() - graph_store[("paper", "cites", "paper"), "coo"] = [src, dst] - graph_store[("author", "writes", "paper"), "coo"] = [asrc, adst] + graph_store[("paper", "cites", "paper"), "coo", False, (num_papers, num_papers)] = [ + src, + dst, + ] + graph_store[ + ("author", "writes", "paper"), "coo", False, (num_authors, num_papers) + ] = [asrc, adst] from cugraph_pyg.loader import NeighborLoader diff --git a/python/cugraph-pyg/cugraph_pyg/tests/loader/test_neighbor_loader_mg.py b/python/cugraph-pyg/cugraph_pyg/tests/loader/test_neighbor_loader_mg.py index 8d13ec4f..831ee0d6 100644 --- a/python/cugraph-pyg/cugraph_pyg/tests/loader/test_neighbor_loader_mg.py +++ b/python/cugraph-pyg/cugraph_pyg/tests/loader/test_neighbor_loader_mg.py @@ -1,4 +1,4 @@ -# Copyright (c) 2024, NVIDIA CORPORATION. +# Copyright (c) 2024-2025, 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 @@ -79,7 +79,7 @@ def run_test_neighbor_loader_mg(rank, uid, world_size, specify_size): graph_store.put_edge_index(ei, ("person", "knows", "person"), "coo", False, sz) feature_store = TensorDictFeatureStore() - feature_store["person", "feat"] = torch.randint(128, (34, 16)) + feature_store["person", "feat", None] = torch.randint(128, (34, 16)) ix_train = torch.tensor_split(torch.arange(34), world_size, axis=0)[rank] @@ -91,7 +91,7 @@ def run_test_neighbor_loader_mg(rank, uid, world_size, specify_size): for batch in loader: assert isinstance(batch, torch_geometric.data.Data) - assert (feature_store["person", "feat"][batch.n_id] == batch.feat).all() + assert (feature_store["person", "feat", None][batch.n_id] == batch.feat).all() cugraph_comms_shutdown() @@ -134,8 +134,8 @@ def run_test_neighbor_loader_biased_mg(rank, uid, world_size): graph_store.put_edge_index(eix, ("person", "knows", "person"), "coo") feature_store = TensorDictFeatureStore() - feature_store["person", "feat"] = torch.randint(128, (6 * world_size, 12)) - feature_store[("person", "knows", "person"), "bias"] = torch.concat( + feature_store["person", "feat", None] = torch.randint(128, (6 * world_size, 12)) + feature_store[("person", "knows", "person"), "bias", None] = torch.concat( [torch.tensor([0, 1, 1], dtype=torch.float32) for _ in range(world_size)] ) @@ -199,7 +199,7 @@ def run_test_link_neighbor_loader_basic_mg( feature_store = TensorDictFeatureStore() eix = torch.randperm(num_edges)[:select_edges] - graph_store[("n", "e", "n"), "coo"] = torch.stack( + graph_store[("n", "e", "n"), "coo", False, (num_nodes, num_nodes)] = torch.stack( [ torch.randint(0, num_nodes, (num_edges,)), torch.randint(0, num_nodes, (num_edges,)), @@ -225,7 +225,6 @@ def run_test_link_neighbor_loader_basic_mg( cugraph_comms_shutdown() -@pytest.mark.skip(reason="deleteme") @pytest.mark.skipif(isinstance(torch, MissingModule), reason="torch not available") @pytest.mark.mg @pytest.mark.parametrize("select_edges", [64, 128]) @@ -255,16 +254,18 @@ def test_link_neighbor_loader_basic_mg(select_edges, batch_size, depth): ) -def run_test_link_neighbor_loader_uneven_mg(rank, uid, world_size, edge_index): +def run_test_link_neighbor_loader_uneven_mg( + rank, uid, world_size, edge_index, num_nodes +): init_pytorch_worker(rank, world_size, uid) graph_store = GraphStore(is_multi_gpu=True) feature_store = TensorDictFeatureStore() batch_size = 1 - graph_store[("n", "e", "n"), "coo"] = torch.tensor_split( - edge_index, world_size, dim=-1 - )[rank] + graph_store[ + ("n", "e", "n"), "coo", False, (num_nodes, num_nodes) + ] = torch.tensor_split(edge_index, world_size, dim=-1)[rank] elx = graph_store[("n", "e", "n"), "coo"] # select all edges on each worker loader = LinkNeighborLoader( @@ -285,7 +286,7 @@ def run_test_link_neighbor_loader_uneven_mg(rank, uid, world_size, edge_index): cugraph_comms_shutdown() -@pytest.mark.skip(reason="deleteme") +@pytest.mark.skip(reason="broken") @pytest.mark.skipif(isinstance(torch, MissingModule), reason="torch not available") @pytest.mark.mg def test_link_neighbor_loader_uneven_mg(): @@ -305,6 +306,7 @@ def test_link_neighbor_loader_uneven_mg(): uid, world_size, edge_index, + 13, ), nprocs=world_size, ) diff --git a/python/cugraph-pyg/pyproject.toml b/python/cugraph-pyg/pyproject.toml index 5b55fe09..0608cb75 100644 --- a/python/cugraph-pyg/pyproject.toml +++ b/python/cugraph-pyg/pyproject.toml @@ -34,7 +34,7 @@ dependencies = [ "numba>=0.57", "numpy>=1.23,<3.0a0", "pandas", - "torch-geometric>=2.5,<2.6", + "torch-geometric>=2.5,<2.7", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. [project.urls] @@ -50,7 +50,7 @@ test = [ "pytest-cov", "pytest-xdist", "tensordict>=0.1.2", - "torch-geometric>=2.5,<2.6", + "torch-geometric>=2.5,<2.7", "torch>=2.3", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. From 9498eb5b9c60d5723b843f8632698a79c76ee55d Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Wed, 29 Jan 2025 00:26:07 -0600 Subject: [PATCH 3/4] Build and test with CUDA 12.8.0 (#115) This PR uses CUDA 12.8.0 to build and test. xref: https://github.com/rapidsai/build-planning/issues/139 Authors: - Bradley Dice (https://github.com/bdice) Approvers: - James Lamb (https://github.com/jameslamb) URL: https://github.com/rapidsai/cugraph-gnn/pull/115 --- .../devcontainer.json | 8 ++--- .../devcontainer.json | 12 +++---- .github/workflows/build.yaml | 20 +++++------ .github/workflows/pr.yaml | 34 +++++++++---------- .github/workflows/test.yaml | 12 +++---- .../trigger-breaking-change-alert.yaml | 2 +- dependencies.yaml | 4 +++ python/pylibwholegraph/pyproject.toml | 2 +- 8 files changed, 49 insertions(+), 45 deletions(-) rename .devcontainer/{cuda12.5-conda => cuda12.8-conda}/devcontainer.json (91%) rename .devcontainer/{cuda12.5-pip => cuda12.8-pip}/devcontainer.json (88%) diff --git a/.devcontainer/cuda12.5-conda/devcontainer.json b/.devcontainer/cuda12.8-conda/devcontainer.json similarity index 91% rename from .devcontainer/cuda12.5-conda/devcontainer.json rename to .devcontainer/cuda12.8-conda/devcontainer.json index e4aa1874..ce4fec3a 100644 --- a/.devcontainer/cuda12.5-conda/devcontainer.json +++ b/.devcontainer/cuda12.8-conda/devcontainer.json @@ -3,7 +3,7 @@ "context": "${localWorkspaceFolder}/.devcontainer", "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { - "CUDA": "12.5", + "CUDA": "12.8", "PYTHON_PACKAGE_MANAGER": "conda", "BASE": "rapidsai/devcontainers:25.02-cpp-mambaforge-ubuntu22.04" } @@ -11,7 +11,7 @@ "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-25.02-cuda12.5-conda" + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-25.02-cuda12.8-conda" ], "hostRequirements": {"gpu": "optional"}, "features": { @@ -20,7 +20,7 @@ "overrideFeatureInstallOrder": [ "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda12.5-envs}"], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda12.8-envs}"], "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"], "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cugraph-gnn,type=bind,consistency=consistent", @@ -29,7 +29,7 @@ "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda12.5-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent" + "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda12.8-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent" ], "customizations": { "vscode": { diff --git a/.devcontainer/cuda12.5-pip/devcontainer.json b/.devcontainer/cuda12.8-pip/devcontainer.json similarity index 88% rename from .devcontainer/cuda12.5-pip/devcontainer.json rename to .devcontainer/cuda12.8-pip/devcontainer.json index 73929410..5f6e2b70 100644 --- a/.devcontainer/cuda12.5-pip/devcontainer.json +++ b/.devcontainer/cuda12.8-pip/devcontainer.json @@ -3,20 +3,20 @@ "context": "${localWorkspaceFolder}/.devcontainer", "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", "args": { - "CUDA": "12.5", + "CUDA": "12.8", "PYTHON_PACKAGE_MANAGER": "pip", - "BASE": "rapidsai/devcontainers:25.02-cpp-cuda12.5-ucx1.18.0-openmpi-ubuntu22.04" + "BASE": "rapidsai/devcontainers:25.02-cpp-cuda12.8-ucx1.18.0-openmpi-ubuntu22.04" } }, "runArgs": [ "--rm", "--name", - "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-25.02-cuda12.5-pip" + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-25.02-cuda12.8-pip" ], "hostRequirements": {"gpu": "optional"}, "features": { "ghcr.io/rapidsai/devcontainers/features/cuda:25.2": { - "version": "12.5", + "version": "12.8", "installcuBLAS": true, "installcuSOLVER": true, "installcuRAND": true, @@ -28,7 +28,7 @@ "ghcr.io/rapidsai/devcontainers/features/cuda", "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils" ], - "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda12.5-venvs}"], + "initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda12.8-venvs}"], "postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"], "workspaceFolder": "/home/coder", "workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cugraph-gnn,type=bind,consistency=consistent", @@ -36,7 +36,7 @@ "source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent", "source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent", - "source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda12.5-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent" + "source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda12.8-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent" ], "customizations": { "vscode": { diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f84b19d2..4089f78d 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -28,7 +28,7 @@ concurrency: jobs: cpp-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@cuda-12.8.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -37,7 +37,7 @@ jobs: python-build: needs: [cpp-build] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda-12.8.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -46,7 +46,7 @@ jobs: docs-build: needs: cpp-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-12.8.0 with: arch: "amd64" branch: ${{ inputs.branch }} @@ -58,7 +58,7 @@ jobs: upload-conda: needs: [cpp-build, python-build] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@cuda-12.8.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -66,7 +66,7 @@ jobs: sha: ${{ inputs.sha }} wheel-build-cugraph-dgl: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -76,7 +76,7 @@ jobs: wheel-publish-cugraph-dgl: needs: wheel-build-cugraph-dgl secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-12.8.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -86,7 +86,7 @@ jobs: package-type: python wheel-build-cugraph-pyg: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -96,7 +96,7 @@ jobs: wheel-publish-cugraph-pyg: needs: wheel-build-cugraph-pyg secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-12.8.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -106,7 +106,7 @@ jobs: package-type: python wheel-build-pylibwholegraph: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -116,7 +116,7 @@ jobs: wheel-publish-pylibwholegraph: needs: wheel-build-pylibwholegraph secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-12.8.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 8e15b929..64de81e2 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -29,7 +29,7 @@ jobs: - wheel-build-cugraph-pyg - wheel-tests-cugraph-pyg secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@cuda-12.8.0 if: always() with: needs: ${{ toJSON(needs) }} @@ -47,7 +47,7 @@ jobs: repo: cugraph-gnn changed-files: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@cuda-12.8.0 with: files_yaml: | test_cpp: @@ -76,42 +76,42 @@ jobs: - '!readme_pages/**' devcontainer: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@cuda-12.8.0 with: arch: '["amd64"]' - cuda: '["12.5"]' + cuda: '["12.8"]' build_command: | sccache -z; build-all --verbose -j$(nproc --ignore=1); sccache -s; checks: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@cuda-12.8.0 with: enable_check_generated_files: false conda-cpp-build: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@cuda-12.8.0 with: build_type: pull-request conda-cpp-tests: needs: [conda-cpp-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@cuda-12.8.0 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp with: build_type: pull-request conda-python-build: needs: conda-cpp-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda-12.8.0 with: build_type: pull-request conda-notebook-tests: needs: [conda-python-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-12.8.0 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_notebooks with: build_type: pull-request @@ -122,7 +122,7 @@ jobs: conda-python-tests: needs: [conda-python-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda-12.8.0 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request @@ -130,7 +130,7 @@ jobs: docs-build: needs: conda-cpp-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-12.8.0 with: arch: "amd64" build_type: pull-request @@ -139,14 +139,14 @@ jobs: wheel-build-pylibwholegraph: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 with: build_type: pull-request script: ci/build_wheel_pylibwholegraph.sh wheel-tests-pylibwholegraph: needs: [wheel-build-pylibwholegraph, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request @@ -155,14 +155,14 @@ jobs: wheel-build-cugraph-dgl: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 with: build_type: pull-request script: ci/build_wheel_cugraph-dgl.sh wheel-tests-cugraph-dgl: needs: [wheel-build-pylibwholegraph, wheel-build-cugraph-dgl, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request @@ -171,14 +171,14 @@ jobs: wheel-build-cugraph-pyg: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 with: build_type: pull-request script: ci/build_wheel_cugraph-pyg.sh wheel-tests-cugraph-pyg: needs: [wheel-build-pylibwholegraph, wheel-build-cugraph-pyg, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index c6bbf331..a3090ec2 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -16,7 +16,7 @@ on: jobs: conda-cpp-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@cuda-12.8.0 with: build_type: nightly branch: ${{ inputs.branch }} @@ -24,7 +24,7 @@ jobs: sha: ${{ inputs.sha }} conda-notebook-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-12.8.0 with: build_type: nightly branch: ${{ inputs.branch }} @@ -36,7 +36,7 @@ jobs: run_script: "ci/test_notebooks.sh" conda-python-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda-12.8.0 with: build_type: nightly branch: ${{ inputs.branch }} @@ -45,7 +45,7 @@ jobs: matrix_filter: map(select((.ARCH == "amd64") and (.CUDA_VER | startswith("11.4") | not))) wheel-tests-pylibwholegraph: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 with: build_type: nightly branch: ${{ inputs.branch }} @@ -55,7 +55,7 @@ jobs: matrix_filter: map(select((.ARCH == "amd64") and (.CUDA_VER | startswith("11.4") | not))) wheel-tests-cugraph-dgl: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 with: build_type: nightly branch: ${{ inputs.branch }} @@ -65,7 +65,7 @@ jobs: matrix_filter: map(select((.ARCH == "amd64") and (.CUDA_VER | startswith("11.4") | not) and (.LINUX_VER != "rockylinux8"))) wheel-tests-cugraph-pyg: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 with: build_type: nightly branch: ${{ inputs.branch }} diff --git a/.github/workflows/trigger-breaking-change-alert.yaml b/.github/workflows/trigger-breaking-change-alert.yaml index 01dd2436..07f0f83c 100644 --- a/.github/workflows/trigger-breaking-change-alert.yaml +++ b/.github/workflows/trigger-breaking-change-alert.yaml @@ -12,7 +12,7 @@ jobs: trigger-notifier: if: contains(github.event.pull_request.labels.*.name, 'breaking') secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@branch-25.02 + uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@cuda-12.8.0 with: sender_login: ${{ github.event.sender.login }} sender_avatar: ${{ github.event.sender.avatar_url }} diff --git a/dependencies.yaml b/dependencies.yaml index 962f8f76..66419b15 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -229,6 +229,10 @@ dependencies: cuda: "12.5" packages: - cuda-version=12.5 + - matrix: + cuda: "12.8" + packages: + - cuda-version=12.8 cuda: specific: - output_types: [conda] diff --git a/python/pylibwholegraph/pyproject.toml b/python/pylibwholegraph/pyproject.toml index 0ec3a9f8..91188670 100644 --- a/python/pylibwholegraph/pyproject.toml +++ b/python/pylibwholegraph/pyproject.toml @@ -82,4 +82,4 @@ select = [ ] # detect when package size grows significantly -max_allowed_size_compressed = '350M' +max_allowed_size_compressed = '400M' From 35462176c4300e5af6b31e159c8b615273069670 Mon Sep 17 00:00:00 2001 From: Vyas Ramasubramani Date: Fri, 31 Jan 2025 06:23:25 -0800 Subject: [PATCH 4/4] Revert CUDA 12.8 shared workflow branch changes (#121) This PR points the shared workflow branches back to the default 25.02 branches. xref: https://github.com/rapidsai/build-planning/issues/139 --- .github/workflows/build.yaml | 20 ++++++------ .github/workflows/pr.yaml | 32 +++++++++---------- .github/workflows/test.yaml | 12 +++---- .../trigger-breaking-change-alert.yaml | 2 +- 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4089f78d..f84b19d2 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -28,7 +28,7 @@ concurrency: jobs: cpp-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-25.02 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -37,7 +37,7 @@ jobs: python-build: needs: [cpp-build] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.02 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -46,7 +46,7 @@ jobs: docs-build: needs: cpp-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.02 with: arch: "amd64" branch: ${{ inputs.branch }} @@ -58,7 +58,7 @@ jobs: upload-conda: needs: [cpp-build, python-build] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-25.02 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -66,7 +66,7 @@ jobs: sha: ${{ inputs.sha }} wheel-build-cugraph-dgl: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -76,7 +76,7 @@ jobs: wheel-publish-cugraph-dgl: needs: wheel-build-cugraph-dgl secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.02 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -86,7 +86,7 @@ jobs: package-type: python wheel-build-cugraph-pyg: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -96,7 +96,7 @@ jobs: wheel-publish-cugraph-pyg: needs: wheel-build-cugraph-pyg secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.02 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -106,7 +106,7 @@ jobs: package-type: python wheel-build-pylibwholegraph: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -116,7 +116,7 @@ jobs: wheel-publish-pylibwholegraph: needs: wheel-build-pylibwholegraph secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.02 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 64de81e2..b29a632e 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -29,7 +29,7 @@ jobs: - wheel-build-cugraph-pyg - wheel-tests-cugraph-pyg secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-25.02 if: always() with: needs: ${{ toJSON(needs) }} @@ -47,7 +47,7 @@ jobs: repo: cugraph-gnn changed-files: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@branch-25.02 with: files_yaml: | test_cpp: @@ -76,7 +76,7 @@ jobs: - '!readme_pages/**' devcontainer: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@branch-25.02 with: arch: '["amd64"]' cuda: '["12.8"]' @@ -86,32 +86,32 @@ jobs: sccache -s; checks: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-25.02 with: enable_check_generated_files: false conda-cpp-build: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-25.02 with: build_type: pull-request conda-cpp-tests: needs: [conda-cpp-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@branch-25.02 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp with: build_type: pull-request conda-python-build: needs: conda-cpp-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.02 with: build_type: pull-request conda-notebook-tests: needs: [conda-python-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.02 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_notebooks with: build_type: pull-request @@ -122,7 +122,7 @@ jobs: conda-python-tests: needs: [conda-python-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.02 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request @@ -130,7 +130,7 @@ jobs: docs-build: needs: conda-cpp-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.02 with: arch: "amd64" build_type: pull-request @@ -139,14 +139,14 @@ jobs: wheel-build-pylibwholegraph: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 with: build_type: pull-request script: ci/build_wheel_pylibwholegraph.sh wheel-tests-pylibwholegraph: needs: [wheel-build-pylibwholegraph, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request @@ -155,14 +155,14 @@ jobs: wheel-build-cugraph-dgl: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 with: build_type: pull-request script: ci/build_wheel_cugraph-dgl.sh wheel-tests-cugraph-dgl: needs: [wheel-build-pylibwholegraph, wheel-build-cugraph-dgl, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request @@ -171,14 +171,14 @@ jobs: wheel-build-cugraph-pyg: needs: checks secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.02 with: build_type: pull-request script: ci/build_wheel_cugraph-pyg.sh wheel-tests-cugraph-pyg: needs: [wheel-build-pylibwholegraph, wheel-build-cugraph-pyg, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index a3090ec2..c6bbf331 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -16,7 +16,7 @@ on: jobs: conda-cpp-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@branch-25.02 with: build_type: nightly branch: ${{ inputs.branch }} @@ -24,7 +24,7 @@ jobs: sha: ${{ inputs.sha }} conda-notebook-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-25.02 with: build_type: nightly branch: ${{ inputs.branch }} @@ -36,7 +36,7 @@ jobs: run_script: "ci/test_notebooks.sh" conda-python-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.02 with: build_type: nightly branch: ${{ inputs.branch }} @@ -45,7 +45,7 @@ jobs: matrix_filter: map(select((.ARCH == "amd64") and (.CUDA_VER | startswith("11.4") | not))) wheel-tests-pylibwholegraph: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 with: build_type: nightly branch: ${{ inputs.branch }} @@ -55,7 +55,7 @@ jobs: matrix_filter: map(select((.ARCH == "amd64") and (.CUDA_VER | startswith("11.4") | not))) wheel-tests-cugraph-dgl: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 with: build_type: nightly branch: ${{ inputs.branch }} @@ -65,7 +65,7 @@ jobs: matrix_filter: map(select((.ARCH == "amd64") and (.CUDA_VER | startswith("11.4") | not) and (.LINUX_VER != "rockylinux8"))) wheel-tests-cugraph-pyg: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.02 with: build_type: nightly branch: ${{ inputs.branch }} diff --git a/.github/workflows/trigger-breaking-change-alert.yaml b/.github/workflows/trigger-breaking-change-alert.yaml index 07f0f83c..01dd2436 100644 --- a/.github/workflows/trigger-breaking-change-alert.yaml +++ b/.github/workflows/trigger-breaking-change-alert.yaml @@ -12,7 +12,7 @@ jobs: trigger-notifier: if: contains(github.event.pull_request.labels.*.name, 'breaking') secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@cuda-12.8.0 + uses: rapidsai/shared-workflows/.github/workflows/breaking-change-alert.yaml@branch-25.02 with: sender_login: ${{ github.event.sender.login }} sender_avatar: ${{ github.event.sender.avatar_url }}