diff --git a/.devcontainer/cuda13.0-conda/devcontainer.json b/.devcontainer/cuda13.0-conda/devcontainer.json new file mode 100644 index 000000000..9d19d3910 --- /dev/null +++ b/.devcontainer/cuda13.0-conda/devcontainer.json @@ -0,0 +1,44 @@ +{ + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "13.0", + "PYTHON_PACKAGE_MANAGER": "conda", + "BASE": "rapidsai/devcontainers:25.10-cpp-mambaforge" + } + }, + "runArgs": [ + "--rm", + "--name", + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-25.10-cuda13.0-conda", + "--ulimit", + "nofile=500000" + ], + "hostRequirements": {"gpu": "optional"}, + "features": { + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:25.10": {} + }, + "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}-cuda13.0-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/nx-cugraph,type=bind,consistency=consistent", + "mounts": [ + "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}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent", + "source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda13.0-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent" + ], + "customizations": { + "vscode": { + "extensions": [ + "ms-python.flake8", + "nvidia.nsight-vscode-edition" + ] + } + } +} diff --git a/.devcontainer/cuda13.0-pip/devcontainer.json b/.devcontainer/cuda13.0-pip/devcontainer.json new file mode 100644 index 000000000..7ffbe1613 --- /dev/null +++ b/.devcontainer/cuda13.0-pip/devcontainer.json @@ -0,0 +1,51 @@ +{ + "build": { + "context": "${localWorkspaceFolder}/.devcontainer", + "dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile", + "args": { + "CUDA": "13.0", + "PYTHON_PACKAGE_MANAGER": "pip", + "BASE": "rapidsai/devcontainers:25.10-cpp-cuda13.0-ucx1.19.0-openmpi5.0.7" + } + }, + "runArgs": [ + "--rm", + "--name", + "${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-25.10-cuda13.0-pip", + "--ulimit", + "nofile=500000" + ], + "hostRequirements": {"gpu": "optional"}, + "features": { + "ghcr.io/rapidsai/devcontainers/features/cuda:25.10": { + "version": "13.0", + "installcuBLAS": true, + "installcuSOLVER": true, + "installcuRAND": true, + "installcuSPARSE": true + }, + "ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:25.10": {} + }, + "overrideFeatureInstallOrder": [ + "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}-cuda13.0-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/nx-cugraph,type=bind,consistency=consistent", + "mounts": [ + "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}-cuda13.0-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent" + ], + "customizations": { + "vscode": { + "extensions": [ + "ms-python.flake8", + "nvidia.nsight-vscode-edition" + ] + } + } +} diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 6a05ce26d..eae1e4567 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -34,7 +34,7 @@ concurrency: jobs: conda-python-build: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda13.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -44,7 +44,7 @@ jobs: upload-conda: needs: conda-python-build secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@cuda13.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -52,7 +52,7 @@ jobs: sha: ${{ inputs.sha }} wheel-build-nx-cugraph: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda13.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} @@ -67,7 +67,7 @@ jobs: wheel-publish-nx-cugraph: needs: wheel-build-nx-cugraph secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@cuda13.0 with: build_type: ${{ inputs.build_type || 'branch' }} branch: ${{ inputs.branch }} diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index bc25afb4f..0805b4875 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -20,13 +20,13 @@ jobs: - wheel-build-nx-cugraph - wheel-tests-nx-cugraph secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@cuda13.0 if: always() with: needs: ${{ toJSON(needs) }} changed-files: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/changed-files.yaml@cuda13.0 with: files_yaml: | test_notebooks: @@ -42,10 +42,10 @@ jobs: - '!notebooks/**' devcontainer: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@cuda13.0 with: arch: '["amd64", "arm64"]' - cuda: '["12.9"]' + cuda: '["13.0"]' node_type: "cpu8" rapids-aux-secret-1: GIST_REPO_READ_ORG_GITHUB_TOKEN env: | @@ -59,20 +59,20 @@ jobs: sccache --show-adv-stats | tee telemetry-artifacts/sccache-stats.txt; checks: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@cuda13.0 with: enable_check_generated_files: false conda-python-build: needs: [checks] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@cuda13.0 with: build_type: pull-request script: ci/build_python.sh conda-python-tests: needs: [conda-python-build, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda13.0 if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_python with: build_type: pull-request @@ -81,7 +81,7 @@ jobs: wheel-build-nx-cugraph: needs: [checks] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@cuda13.0 with: build_type: pull-request script: ci/build_wheel_nx-cugraph.sh @@ -93,7 +93,7 @@ jobs: wheel-tests-nx-cugraph: needs: [wheel-build-nx-cugraph, changed-files] secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda13.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 7b2d93050..8aa8db9e5 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -25,7 +25,7 @@ on: jobs: conda-python-tests: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@cuda13.0 with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} @@ -37,7 +37,7 @@ jobs: script: ci/test_python.sh wheel-tests-nx-cugraph: secrets: inherit - uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-25.10 + uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@cuda13.0 with: build_type: ${{ inputs.build_type }} branch: ${{ inputs.branch }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b1f3dc973..8da9e2df2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -55,8 +55,9 @@ cd nx-cugraph #### Create conda environment and install dependencies ```bash -# for CUDA 12 environments -conda env create --name nxcg-dev --file conda/environments/all_cuda-128_arch-x86_64.yaml +# for CUDA 13 environments +conda env create --name nxcg-dev --file conda/environments/all_cuda-130_arch-x86_64.yaml + # activate the environment conda activate nxcg-dev ``` diff --git a/README.md b/README.md index a7a8cdcdd..739511053 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ ## System Requirements * **GPU:** NVIDIA Volta architecture or later, with [compute capability](https://developer.nvidia.com/cuda-gpus) 7.0+ - * **CUDA Version:** 12.0 - 12.9 + * **CUDA Version:** 12.0 or higher * **Python Version:** 3.10 - 3.13 * **NetworkX Version:** minimum 3.2 (version 3.5 or higher recommended) @@ -34,22 +34,49 @@ nx-cugraph can be installed using either conda or pip with the following command ### conda nx-cugraph can be installed with conda (via [Miniforge](https://github.com/conda-forge/miniforge)) from the `rapidsai` channel. -``` -conda install -c rapidsai -c conda-forge -c nvidia nx-cugraph + +```shell +# CUDA 13 +conda install -c rapidsai -c conda-forge nx-cugraph cuda-version=13.0 + +# CUDA 12 +conda install -c rapidsai -c conda-forge nx-cugraph cuda-verison=12.9 ``` We also provide [nightly Conda packages](https://anaconda.org/rapidsai-nightly/nx-cugraph) built from the HEAD of our latest development branch. -``` -conda install -c rapidsai-nightly -c conda-forge -c nvidia nx-cugraph + +```shell +# CUDA 13 +conda install -c rapidsai-nightly -c conda-forge nx-cugraph cuda-version=13.0 + +# CUDA 12 +conda install -c rapidsai-nightly -c conda-forge nx-cugraph cuda-verison=12.9 ``` ### pip nx-cugraph can be installed via `pip` from the NVIDIA Python Package Index. +#### For CUDA 13.x: + +Latest nightly version + +``` +python -m pip install nx-cugraph-cu13 --extra-index-url https://pypi.anaconda.org/rapidsai-wheels-nightly/simple +``` + +Latest stable version +``` +python -m pip install nx-cugraph-cu13 --extra-index-url https://pypi.nvidia.com +``` + +Notes: + * Try out the [RAPIDS Install Selector Tool](https://docs.rapids.ai/install/#install-rapids) to install other RAPIDS packages. + #### For CUDA 12.x: Latest nightly version + ``` python -m pip install nx-cugraph-cu12 --extra-index-url https://pypi.anaconda.org/rapidsai-wheels-nightly/simple ``` @@ -58,6 +85,7 @@ Latest stable version ``` python -m pip install nx-cugraph-cu12 --extra-index-url https://pypi.nvidia.com ``` + Notes: * Try out the [RAPIDS Install Selector Tool](https://docs.rapids.ai/install/#install-rapids) to install other RAPIDS packages. diff --git a/conda/environments/all_cuda-129_arch-aarch64.yaml b/conda/environments/all_cuda-129_arch-aarch64.yaml index fbc22066e..1c4061ab0 100644 --- a/conda/environments/all_cuda-129_arch-aarch64.yaml +++ b/conda/environments/all_cuda-129_arch-aarch64.yaml @@ -7,7 +7,7 @@ channels: dependencies: - cuda-version=12.9 - cudf==25.10.*,>=0.0.0a0 -- cupy>=12.0.0 +- cupy>=13.6.0 - networkx>=3.2 - numpy>=1.23,<3.0a0 - pandas diff --git a/conda/environments/all_cuda-129_arch-x86_64.yaml b/conda/environments/all_cuda-129_arch-x86_64.yaml index 618a94a9d..70296cac7 100644 --- a/conda/environments/all_cuda-129_arch-x86_64.yaml +++ b/conda/environments/all_cuda-129_arch-x86_64.yaml @@ -7,7 +7,7 @@ channels: dependencies: - cuda-version=12.9 - cudf==25.10.*,>=0.0.0a0 -- cupy>=12.0.0 +- cupy>=13.6.0 - networkx>=3.2 - numpy>=1.23,<3.0a0 - pandas diff --git a/conda/environments/all_cuda-130_arch-aarch64.yaml b/conda/environments/all_cuda-130_arch-aarch64.yaml new file mode 100644 index 000000000..1ee23b4f2 --- /dev/null +++ b/conda/environments/all_cuda-130_arch-aarch64.yaml @@ -0,0 +1,25 @@ +# This file is generated by `rapids-dependency-file-generator`. +# To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. +channels: +- rapidsai +- rapidsai-nightly +- conda-forge +dependencies: +- cuda-version=13.0 +- cudf==25.10.*,>=0.0.0a0 +- cupy>=13.6.0 +- networkx>=3.2 +- numpy>=1.23,<3.0a0 +- pandas +- pre-commit +- pylibcugraph==25.10.*,>=0.0.0a0 +- pytest +- pytest-benchmark +- pytest-cov +- pytest-mpl +- pytest-xdist +- rapids-build-backend>=0.4.0,<0.5.0.dev0 +- scipy +- setuptools>=61.0.0 +- wheel +name: all_cuda-130_arch-aarch64 diff --git a/conda/environments/all_cuda-130_arch-x86_64.yaml b/conda/environments/all_cuda-130_arch-x86_64.yaml new file mode 100644 index 000000000..63cd3e1f3 --- /dev/null +++ b/conda/environments/all_cuda-130_arch-x86_64.yaml @@ -0,0 +1,25 @@ +# This file is generated by `rapids-dependency-file-generator`. +# To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. +channels: +- rapidsai +- rapidsai-nightly +- conda-forge +dependencies: +- cuda-version=13.0 +- cudf==25.10.*,>=0.0.0a0 +- cupy>=13.6.0 +- networkx>=3.2 +- numpy>=1.23,<3.0a0 +- pandas +- pre-commit +- pylibcugraph==25.10.*,>=0.0.0a0 +- pytest +- pytest-benchmark +- pytest-cov +- pytest-mpl +- pytest-xdist +- rapids-build-backend>=0.4.0,<0.5.0.dev0 +- scipy +- setuptools>=61.0.0 +- wheel +name: all_cuda-130_arch-x86_64 diff --git a/conda/recipes/nx-cugraph/recipe.yaml b/conda/recipes/nx-cugraph/recipe.yaml index 6420ff135..24ddd1855 100644 --- a/conda/recipes/nx-cugraph/recipe.yaml +++ b/conda/recipes/nx-cugraph/recipe.yaml @@ -30,7 +30,7 @@ requirements: - rapids-build-backend >=0.4.0,<0.5.0.dev0 - setuptools run: - - cupy >=12.0.0 + - cupy >=13.6.0 - networkx >=3.2 - pylibcugraph =${{ minor_version }} - python diff --git a/dependencies.yaml b/dependencies.yaml index 500f1227e..d5b71af2e 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -3,7 +3,7 @@ files: all: output: [conda] matrix: - cuda: ["12.9"] + cuda: ["12.9", "13.0"] arch: [x86_64, aarch64] includes: - checks @@ -97,6 +97,10 @@ dependencies: cuda: "12.9" packages: - cuda-version=12.9 + - matrix: + cuda: "13.0" + packages: + - cuda-version=13.0 depends_on_nx_cugraph: common: - output_types: conda @@ -168,16 +172,21 @@ dependencies: common: - output_types: conda packages: - - cupy>=12.0.0 + - cupy>=13.6.0 # NOTE: This is intentionally not broken into groups by a 'cuda_suffixed' selector like # other packages with -cu{nn}x suffixes in this file. # All RAPIDS wheel builds (including in devcontainers) expect cupy to be suffixed. specific: - output_types: [pyproject, requirements] matrices: - - matrix: # All CUDA 12 versions + - matrix: + cuda: "12.*" + packages: + - cupy-cuda12x>=13.6.0 + # fallback to CUDA 13 versions if 'cuda' is '13.*' or not provided + - matrix: packages: - - cupy-cuda12x>=12.0.0 + - cupy-cuda13x>=13.6.0 depends_on_cudf: common: - output_types: conda @@ -196,6 +205,11 @@ dependencies: cuda_suffixed: "true" packages: - cudf-cu12==25.10.*,>=0.0.0a0 + - matrix: + cuda: "13.*" + cuda_suffixed: "true" + packages: + - cudf-cu13==25.10.*,>=0.0.0a0 - {matrix: null, packages: [*cudf_unsuffixed]} depends_on_pylibcugraph: common: @@ -215,4 +229,9 @@ dependencies: cuda_suffixed: "true" packages: - pylibcugraph-cu12==25.10.*,>=0.0.0a0 + - matrix: + cuda: "13.*" + cuda_suffixed: "true" + packages: + - pylibcugraph-cu13==25.10.*,>=0.0.0a0 - {matrix: null, packages: [*pylibcugraph_unsuffixed]} diff --git a/pyproject.toml b/pyproject.toml index d3c35f49e..dfc3f399b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ classifiers = [ "Topic :: Software Development :: Libraries :: Python Modules", ] dependencies = [ - "cupy-cuda12x>=12.0.0", + "cupy-cuda13x>=13.6.0", "networkx>=3.2", "numpy>=1.23,<3.0a0", "pylibcugraph==25.10.*,>=0.0.0a0",