From 743fd97fa2524fa31d56d9afd7ca30c9ca5f3eee Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 Aug 2025 02:57:18 +0000 Subject: [PATCH 01/27] Initial plan From c11942239b213ade8bade37469a42dc8e8a81260 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 Aug 2025 03:02:49 +0000 Subject: [PATCH 02/27] Add CI infrastructure overview section to CONTRIBUTING.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added cuda-pathfinder component to the component guidelines list - Added footnote explaining cuda.bindings follows cuda-python contributing guide - Added comprehensive CI infrastructure overview section with: - Visual flowchart diagram showing build → test → release pipeline - Platform and runner details (self-hosted vs GitHub-hosted) - Artifact storage and propagation (GitHub Artifacts vs Cache) - Branch-specific workflows (main, backport, pull-request) - Key infrastructure details Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 109 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 108 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aac13021866..c80de33b00f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,110 @@ Thank you for your interest in contributing to CUDA Python! Based on the type of 2. You want to implement a feature, improvement, or bug fix: - Please refer to each component's guideline: - [`cuda.core`](https://nvidia.github.io/cuda-python/cuda-core/latest/contribute.html) - - [`cuda.bindings`](https://nvidia.github.io/cuda-python/cuda-bindings/latest/contribute.html) + - [`cuda.bindings`](https://nvidia.github.io/cuda-python/cuda-bindings/latest/contribute.html)¹ + - [`cuda.pathfinder`](https://nvidia.github.io/cuda-python/cuda-pathfinder/latest/contribute.html) + + +## CI infrastructure overview + +The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and releases multiple components across different platforms. This section provides a visual overview of our CI infrastructure to help contributors understand the build and release process. + +### CI Pipeline Flow + +``` +┌─────────────────────────────────────────────────────────────────────────────────────┐ +│ TRIGGER EVENTS │ +│ • Push to main branch • Pull request │ +│ • Push to pull-request/* branches • Manual workflow dispatch │ +└─────────────────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────────────────┐ +│ BUILD STAGE │ +│ │ +│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ +│ │ linux-64 │ │ linux-aarch64 │ │ win-64 │ │ +│ │ Self-hosted │ │ Self-hosted │ │ GitHub-hosted │ │ +│ │ linux-amd64-cpu8│ │ linux-arm64-cpu8│ │ windows-2022 │ │ +│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ +│ │ +│ • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 │ +│ • CUDA version: 13.0.0 (build-time) │ +│ • Components: cuda-core, cuda-bindings, cuda-pathfinder, cuda-python │ +└─────────────────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────────────────┐ +│ ARTIFACT STORAGE │ +│ │ +│ ┌──────────────────────────┐ ┌──────────────────────────┐ │ +│ │ GitHub Artifacts │ │ GitHub Cache │ │ +│ │ • Wheel files (.whl) │ │ • Build dependencies │ │ +│ │ • Test artifacts │ │ • Compiled binaries │ │ +│ │ • Documentation │ │ • Python environments │ │ +│ │ (30-day retention) │ │ • Package caches │ │ +│ └──────────────────────────┘ └──────────────────────────┘ │ +└─────────────────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────────────────┐ +│ TEST STAGE │ +│ │ +│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ +│ │ linux-64 │ │ linux-aarch64 │ │ win-64 │ │ +│ │ Self-hosted │ │ Self-hosted │ │ GitHub-hosted │ │ +│ │ GPU runners │ │ GPU runners │ │ GPU runners │ │ +│ │ (L4/A100) │ │ (A100) │ │ │ │ +│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ +│ │ +│ • Download wheels from artifacts │ +│ • Test against multiple CUDA runtime versions │ +│ • Run Python unit tests, Cython tests, examples │ +└─────────────────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────────────────┐ +│ RELEASE PIPELINE │ +│ │ +│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ +│ │ Validation │────▶│ Publishing │────▶│ Documentation │ │ +│ │ • Artifact │ │ • PyPI/TestPyPI │ │ • GitHub Pages │ │ +│ │ integrity │ │ • Component or │ │ • API docs │ │ +│ │ • Git tag │ │ all releases │ │ • Release notes │ │ +│ │ verification │ │ │ │ │ │ +│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ +│ │ +│ • Manual workflow dispatch with run ID │ +│ • Supports individual component or full releases │ +└─────────────────────────────────────────────────────────────────────────────────────┘ +``` + +### Branch-specific Artifact Flow + +#### Main Branch +- **Build** → **Test** → **Documentation** → **Potential Release** +- Artifacts stored as `{component}-python{version}-{platform}-{sha}` +- Full test coverage across all platforms and CUDA versions + +#### Backport Branches +- **Build** → **Test** → **Backport PR Creation** +- Artifacts used for validation before creating backport pull requests +- Maintains compatibility with older CUDA versions + +#### Pull Request Branches (`pull-request/*`) +- **Build** → **Test** → **Status Check** +- Artifacts used for CI validation only +- Prevents untrusted code execution through signed commits requirement + +### Key Infrastructure Details + +- **Self-hosted runners**: Used for Linux builds and GPU testing (more resources, faster builds) +- **GitHub-hosted runners**: Used for Windows builds and general tasks +- **Artifact retention**: 30 days for GitHub Artifacts (wheels, docs, tests) +- **Cache retention**: GitHub Cache for build dependencies and environments +- **Security**: All commits must be signed, untrusted code blocked +- **Parallel execution**: Matrix builds across Python versions and platforms +- **Component isolation**: Each component (core, bindings, pathfinder, python) can be built/released independently ## Pre-commit @@ -78,3 +181,7 @@ By making a contribution to this project, I certify that: maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ``` + +--- + +¹ `cuda.bindings` follows the contributing guidelines from this repository (`cuda-python`). From 281680950703bc0767533d061dfcff95d9e30cca Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 Aug 2025 03:19:53 +0000 Subject: [PATCH 03/27] Address CI infrastructure feedback: update flowchart, fix footnotes, add SVG diagram Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 23 ++++++---- ci-pipeline.svg | 118 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 8 deletions(-) create mode 100644 ci-pipeline.svg diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c80de33b00f..534cea157f8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,7 @@ Thank you for your interest in contributing to CUDA Python! Based on the type of 2. You want to implement a feature, improvement, or bug fix: - Please refer to each component's guideline: - [`cuda.core`](https://nvidia.github.io/cuda-python/cuda-core/latest/contribute.html) - - [`cuda.bindings`](https://nvidia.github.io/cuda-python/cuda-bindings/latest/contribute.html)¹ + - [`cuda.bindings`](https://nvidia.github.io/cuda-python/cuda-bindings/latest/contribute.html)[1](#footnote1) - [`cuda.pathfinder`](https://nvidia.github.io/cuda-python/cuda-pathfinder/latest/contribute.html) @@ -21,6 +21,10 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and ### CI Pipeline Flow +#### Visual Diagram (SVG) +![CUDA Python CI Pipeline Flow](ci-pipeline.svg) + +#### Text-based Diagram (ASCII) ``` ┌─────────────────────────────────────────────────────────────────────────────────────┐ │ TRIGGER EVENTS │ @@ -35,7 +39,7 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ linux-64 │ │ linux-aarch64 │ │ win-64 │ │ │ │ Self-hosted │ │ Self-hosted │ │ GitHub-hosted │ │ -│ │ linux-amd64-cpu8│ │ linux-arm64-cpu8│ │ windows-2022 │ │ +│ │ (runners) │ │ (runners) │ │ (runners) │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ │ • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 │ @@ -49,10 +53,10 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and │ │ │ ┌──────────────────────────┐ ┌──────────────────────────┐ │ │ │ GitHub Artifacts │ │ GitHub Cache │ │ -│ │ • Wheel files (.whl) │ │ • Build dependencies │ │ -│ │ • Test artifacts │ │ • Compiled binaries │ │ -│ │ • Documentation │ │ • Python environments │ │ -│ │ (30-day retention) │ │ • Package caches │ │ +│ │ • Wheel files (.whl) │ │ • Mini CTK cache │ │ +│ │ • Test artifacts │ │ │ │ +│ │ • Documentation │ │ │ │ +│ │ (30-day retention) │ │ │ │ │ └──────────────────────────┘ └──────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────────────────┘ │ @@ -64,7 +68,7 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and │ │ linux-64 │ │ linux-aarch64 │ │ win-64 │ │ │ │ Self-hosted │ │ Self-hosted │ │ GitHub-hosted │ │ │ │ GPU runners │ │ GPU runners │ │ GPU runners │ │ -│ │ (L4/A100) │ │ (A100) │ │ │ │ +│ │ │ │ │ │ │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ │ • Download wheels from artifacts │ @@ -95,11 +99,14 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and - **Build** → **Test** → **Documentation** → **Potential Release** - Artifacts stored as `{component}-python{version}-{platform}-{sha}` - Full test coverage across all platforms and CUDA versions +- **Artifact flow out**: `cuda-pathfinder` artifacts → backport branches #### Backport Branches - **Build** → **Test** → **Backport PR Creation** - Artifacts used for validation before creating backport pull requests - Maintains compatibility with older CUDA versions +- **Artifact flow in**: `cuda-pathfinder` artifacts ← main branch +- **Artifact flow out**: older `cuda-bindings` artifacts → main branch #### Pull Request Branches (`pull-request/*`) - **Build** → **Test** → **Status Check** @@ -184,4 +191,4 @@ By making a contribution to this project, I certify that: --- -¹ `cuda.bindings` follows the contributing guidelines from this repository (`cuda-python`). +1: `cuda.bindings` follows the contributing guidelines from this repository (`cuda-python`). diff --git a/ci-pipeline.svg b/ci-pipeline.svg new file mode 100644 index 00000000000..f3fbf0f884a --- /dev/null +++ b/ci-pipeline.svg @@ -0,0 +1,118 @@ + + + + CUDA Python CI Pipeline Flow + + + + TRIGGER EVENTS + • Push to main branch + • Pull request + • Manual workflow dispatch + + + + + + + BUILD STAGE + + + + linux-64 + Self-hosted + (runners) + + + linux-aarch64 + Self-hosted + (runners) + + + win-64 + GitHub-hosted + (runners) + + + Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 • CUDA: 13.0.0 + + + + + + + ARTIFACT STORAGE + + + + GitHub Artifacts + • Wheel files (.whl) + (30-day retention) + + + GitHub Cache + • Mini CTK cache + + + Artifact Flows: + cuda-pathfinder: main → backport + older cuda-bindings: backport → main + + + + + + + TEST STAGE + + + + linux-64 + Self-hosted + GPU runners + + + linux-aarch64 + Self-hosted + GPU runners + + + win-64 + GitHub-hosted + GPU runners + + + + + + + RELEASE PIPELINE + + + + Validation + Artifact integrity + Git tag verification + + + + + Publishing + PyPI/TestPyPI + Component releases + + + + + Documentation + GitHub Pages + API docs + + + + + + + + \ No newline at end of file From 730b872d7b7a2d64cc22f1a3942d50f7887412d8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 Aug 2025 03:37:51 +0000 Subject: [PATCH 04/27] Update SVG diagram with requested changes and move to ci/ directory Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 72 +------------------------- ci-pipeline.svg | 118 ------------------------------------------- ci/ci-pipeline.svg | 123 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 124 insertions(+), 189 deletions(-) delete mode 100644 ci-pipeline.svg create mode 100644 ci/ci-pipeline.svg diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 534cea157f8..8f66f90a11d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,77 +21,7 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and ### CI Pipeline Flow -#### Visual Diagram (SVG) -![CUDA Python CI Pipeline Flow](ci-pipeline.svg) - -#### Text-based Diagram (ASCII) -``` -┌─────────────────────────────────────────────────────────────────────────────────────┐ -│ TRIGGER EVENTS │ -│ • Push to main branch • Pull request │ -│ • Push to pull-request/* branches • Manual workflow dispatch │ -└─────────────────────────────────────────────────────────────────────────────────────┘ - │ - ▼ -┌─────────────────────────────────────────────────────────────────────────────────────┐ -│ BUILD STAGE │ -│ │ -│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ -│ │ linux-64 │ │ linux-aarch64 │ │ win-64 │ │ -│ │ Self-hosted │ │ Self-hosted │ │ GitHub-hosted │ │ -│ │ (runners) │ │ (runners) │ │ (runners) │ │ -│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ -│ │ -│ • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 │ -│ • CUDA version: 13.0.0 (build-time) │ -│ • Components: cuda-core, cuda-bindings, cuda-pathfinder, cuda-python │ -└─────────────────────────────────────────────────────────────────────────────────────┘ - │ - ▼ -┌─────────────────────────────────────────────────────────────────────────────────────┐ -│ ARTIFACT STORAGE │ -│ │ -│ ┌──────────────────────────┐ ┌──────────────────────────┐ │ -│ │ GitHub Artifacts │ │ GitHub Cache │ │ -│ │ • Wheel files (.whl) │ │ • Mini CTK cache │ │ -│ │ • Test artifacts │ │ │ │ -│ │ • Documentation │ │ │ │ -│ │ (30-day retention) │ │ │ │ -│ └──────────────────────────┘ └──────────────────────────┘ │ -└─────────────────────────────────────────────────────────────────────────────────────┘ - │ - ▼ -┌─────────────────────────────────────────────────────────────────────────────────────┐ -│ TEST STAGE │ -│ │ -│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ -│ │ linux-64 │ │ linux-aarch64 │ │ win-64 │ │ -│ │ Self-hosted │ │ Self-hosted │ │ GitHub-hosted │ │ -│ │ GPU runners │ │ GPU runners │ │ GPU runners │ │ -│ │ │ │ │ │ │ │ -│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ -│ │ -│ • Download wheels from artifacts │ -│ • Test against multiple CUDA runtime versions │ -│ • Run Python unit tests, Cython tests, examples │ -└─────────────────────────────────────────────────────────────────────────────────────┘ - │ - ▼ -┌─────────────────────────────────────────────────────────────────────────────────────┐ -│ RELEASE PIPELINE │ -│ │ -│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ -│ │ Validation │────▶│ Publishing │────▶│ Documentation │ │ -│ │ • Artifact │ │ • PyPI/TestPyPI │ │ • GitHub Pages │ │ -│ │ integrity │ │ • Component or │ │ • API docs │ │ -│ │ • Git tag │ │ all releases │ │ • Release notes │ │ -│ │ verification │ │ │ │ │ │ -│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ -│ │ -│ • Manual workflow dispatch with run ID │ -│ • Supports individual component or full releases │ -└─────────────────────────────────────────────────────────────────────────────────────┘ -``` +![CUDA Python CI Pipeline Flow](ci/ci-pipeline.svg) ### Branch-specific Artifact Flow diff --git a/ci-pipeline.svg b/ci-pipeline.svg deleted file mode 100644 index f3fbf0f884a..00000000000 --- a/ci-pipeline.svg +++ /dev/null @@ -1,118 +0,0 @@ - - - - CUDA Python CI Pipeline Flow - - - - TRIGGER EVENTS - • Push to main branch - • Pull request - • Manual workflow dispatch - - - - - - - BUILD STAGE - - - - linux-64 - Self-hosted - (runners) - - - linux-aarch64 - Self-hosted - (runners) - - - win-64 - GitHub-hosted - (runners) - - - Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 • CUDA: 13.0.0 - - - - - - - ARTIFACT STORAGE - - - - GitHub Artifacts - • Wheel files (.whl) - (30-day retention) - - - GitHub Cache - • Mini CTK cache - - - Artifact Flows: - cuda-pathfinder: main → backport - older cuda-bindings: backport → main - - - - - - - TEST STAGE - - - - linux-64 - Self-hosted - GPU runners - - - linux-aarch64 - Self-hosted - GPU runners - - - win-64 - GitHub-hosted - GPU runners - - - - - - - RELEASE PIPELINE - - - - Validation - Artifact integrity - Git tag verification - - - - - Publishing - PyPI/TestPyPI - Component releases - - - - - Documentation - GitHub Pages - API docs - - - - - - - - \ No newline at end of file diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg new file mode 100644 index 00000000000..77d430354cc --- /dev/null +++ b/ci/ci-pipeline.svg @@ -0,0 +1,123 @@ + + + + CUDA Python CI Pipeline Flow + + + + TRIGGER EVENTS + • Push to main branch + • Pull request + • Push to pull-request/* branches + • Manual workflow dispatch + + + + + + + BUILD STAGE + + + + linux-64 + Self-hosted + + + linux-aarch64 + Self-hosted + + + win-64 + GitHub-hosted + + + • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 + • CUDA version: 13.0.0 (build-time) + • Components: cuda-core, cuda-bindings, + cuda-pathfinder, cuda-python + + + + + + + ARTIFACT STORAGE + + + + GitHub Artifacts + • Wheel files (.whl) + • Test artifacts + • Documentation + (30-day retention) + + + GitHub Cache + • Mini CTK cache + + + + + + + TEST STAGE + + + + linux-64 + Self-hosted + + + linux-aarch64 + Self-hosted + + + win-64 + GitHub-hosted + + + • Download wheels from artifacts + • Test against multiple CUDA runtime versions + • Run Python unit tests, Cython tests, examples + Artifact Flows: cuda-pathfinder main→backport, cuda-bindings backport→main + + + + + + + RELEASE PIPELINE + + + + Validation + • Artifact integrity + • Git tag verification + + + + + Publishing + • PyPI/TestPyPI + • Component or all releases + + + + + Documentation + • GitHub Pages + • Release notes + + + • Manual workflow dispatch with run ID + • Supports individual component or full releases + + + + + + + + \ No newline at end of file From dcc83bd586524f116354e6e747054021f6979153 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 Aug 2025 03:46:40 +0000 Subject: [PATCH 05/27] Remove nv-gha-runners implementation detail and improve SVG diagram layout Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 1 - ci/ci-pipeline.svg | 144 +++++++++++++++++++++++---------------------- 2 files changed, 73 insertions(+), 72 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8f66f90a11d..0051de21a3c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -41,7 +41,6 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and #### Pull Request Branches (`pull-request/*`) - **Build** → **Test** → **Status Check** - Artifacts used for CI validation only -- Prevents untrusted code execution through signed commits requirement ### Key Infrastructure Details diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index 77d430354cc..18c086dd8bd 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -1,117 +1,119 @@ - + - CUDA Python CI Pipeline Flow + CUDA Python CI Pipeline Flow - - TRIGGER EVENTS - • Push to main branch - • Pull request - • Push to pull-request/* branches - • Manual workflow dispatch + + TRIGGER EVENTS + • Push to main branch + • Pull request + • Push to pull-request/* branches + • Manual workflow dispatch - + - - BUILD STAGE + + BUILD STAGE - - linux-64 - Self-hosted + + linux-64 + Self-hosted - - linux-aarch64 - Self-hosted + + linux-aarch64 + Self-hosted - - win-64 - GitHub-hosted + + win-64 + GitHub-hosted - • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 - • CUDA version: 13.0.0 (build-time) - • Components: cuda-core, cuda-bindings, - cuda-pathfinder, cuda-python + • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 + • CUDA version: 13.0.0 (build-time) + • Components: cuda-core, cuda-bindings, + cuda-pathfinder, cuda-python - + - - ARTIFACT STORAGE + + ARTIFACT STORAGE - - GitHub Artifacts - • Wheel files (.whl) - • Test artifacts - • Documentation - (30-day retention) + + GitHub Artifacts + • Wheel files (.whl) + • Test artifacts + • Documentation + (30-day retention) - - GitHub Cache - • Mini CTK cache + + GitHub Cache + • Mini CTK cache - + - - TEST STAGE + + TEST STAGE - - linux-64 - Self-hosted + + linux-64 + Self-hosted - - linux-aarch64 - Self-hosted + + linux-aarch64 + Self-hosted - - win-64 - GitHub-hosted + + win-64 + GitHub-hosted - • Download wheels from artifacts - • Test against multiple CUDA runtime versions - • Run Python unit tests, Cython tests, examples - Artifact Flows: cuda-pathfinder main→backport, cuda-bindings backport→main + • Download wheels from artifacts + • Test against multiple CUDA runtime versions + • Run Python unit tests, Cython tests, examples + Artifact Flows: + • cuda-pathfinder: main → backport + • cuda-bindings: backport → main - + - - RELEASE PIPELINE + + RELEASE PIPELINE - - Validation - • Artifact integrity - • Git tag verification + + Validation + • Artifact integrity + • Git tag verification - + - - Publishing - • PyPI/TestPyPI - • Component or all releases + + Publishing + • PyPI/TestPyPI + • Component or all releases - + - - Documentation - • GitHub Pages - • Release notes + + Documentation + • GitHub Pages + • Release notes - • Manual workflow dispatch with run ID - • Supports individual component or full releases + • Manual workflow dispatch with run ID + • Supports individual component or full releases From ec0cd1ec9f8cb1a8696373e9ae94701cc5fb3b65 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 Aug 2025 04:31:08 +0000 Subject: [PATCH 06/27] Convert SVG diagram to hand-drawn Excalidraw-like style Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- ci/ci-pipeline.svg | 249 ++++++++++++++++++++++++--------------------- 1 file changed, 134 insertions(+), 115 deletions(-) diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index 18c086dd8bd..4e6237b1017 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -1,125 +1,144 @@ - - CUDA Python CI Pipeline Flow - - - - TRIGGER EVENTS - • Push to main branch - • Pull request - • Push to pull-request/* branches - • Manual workflow dispatch - - - - - - - BUILD STAGE - - - - linux-64 - Self-hosted - - - linux-aarch64 - Self-hosted + + + + + + + - - win-64 - GitHub-hosted + + CUDA Python CI Pipeline Flow + + + + TRIGGER EVENTS + • Push to main branch + • Pull request + • Push to pull-request/* branches + • Manual workflow dispatch + + + + + + + BUILD STAGE + + + + linux-64 + Self-hosted + + + linux-aarch64 + Self-hosted + + + win-64 + GitHub-hosted - • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 - • CUDA version: 13.0.0 (build-time) - • Components: cuda-core, cuda-bindings, - cuda-pathfinder, cuda-python - - - - - - - ARTIFACT STORAGE - - - - GitHub Artifacts - • Wheel files (.whl) - • Test artifacts - • Documentation - (30-day retention) - - - GitHub Cache - • Mini CTK cache - - - - - - - TEST STAGE - - - - linux-64 - Self-hosted - - - linux-aarch64 - Self-hosted - - - win-64 - GitHub-hosted + • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 + • CUDA version: 13.0.0 (build-time) + • Components: cuda-core, cuda-bindings, + cuda-pathfinder, cuda-python + + + + + + + ARTIFACT STORAGE + + + + GitHub Artifacts + • Wheel files (.whl) + • Test artifacts + • Documentation + (30-day retention) + + + GitHub Cache + • Mini CTK cache + + + + + + + TEST STAGE + + + + linux-64 + Self-hosted + + + linux-aarch64 + Self-hosted + + + win-64 + GitHub-hosted - • Download wheels from artifacts - • Test against multiple CUDA runtime versions - • Run Python unit tests, Cython tests, examples - Artifact Flows: - • cuda-pathfinder: main → backport - • cuda-bindings: backport → main - - - - - - - RELEASE PIPELINE - - - - Validation - • Artifact integrity - • Git tag verification - - - - - Publishing - • PyPI/TestPyPI - • Component or all releases - - - - - Documentation - • GitHub Pages - • Release notes + • Download wheels from artifacts + • Test against multiple CUDA runtime versions + • Run Python unit tests, Cython tests, examples + Artifact Flows: + • cuda-pathfinder: main → backport + • cuda-bindings: backport → main + + + + + + + RELEASE PIPELINE + + + + Validation + • Artifact integrity + • Git tag verification + + + + + + Publishing + • PyPI/TestPyPI + • Component or all releases + + + + + + Documentation + • GitHub Pages + • Release notes - • Manual workflow dispatch with run ID - • Supports individual component or full releases - - - - - - - + • Manual workflow dispatch with run ID + • Supports individual component or full releases \ No newline at end of file From b748d3aa6d8baa56f0717e5a2be8b2743d879372 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 Aug 2025 04:34:21 +0000 Subject: [PATCH 07/27] Remove pull-request/* branches section from CONTRIBUTING.md Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0051de21a3c..feba247f350 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -38,10 +38,6 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and - **Artifact flow in**: `cuda-pathfinder` artifacts ← main branch - **Artifact flow out**: older `cuda-bindings` artifacts → main branch -#### Pull Request Branches (`pull-request/*`) -- **Build** → **Test** → **Status Check** -- Artifacts used for CI validation only - ### Key Infrastructure Details - **Self-hosted runners**: Used for Linux builds and GPU testing (more resources, faster builds) From 144e722768a387aaa26d9664467085a0e6b90acc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 28 Aug 2025 04:42:32 +0000 Subject: [PATCH 08/27] Add artifact flow arrows and regeneration reference file Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- ci/.ci-pipeline-regen.txt | 69 +++++++++++++++++++++++++++++++++++++++ ci/ci-pipeline.svg | 13 +++++++- 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 ci/.ci-pipeline-regen.txt diff --git a/ci/.ci-pipeline-regen.txt b/ci/.ci-pipeline-regen.txt new file mode 100644 index 00000000000..55827130135 --- /dev/null +++ b/ci/.ci-pipeline-regen.txt @@ -0,0 +1,69 @@ +CUDA Python CI Pipeline SVG Regeneration Instructions +==================================================== + +This file contains the prompt and requirements for regenerating ci-pipeline.svg with the same styling and content. + +## Styling Requirements +- Hand-drawn Excalidraw-style design with rough, sketchy borders +- Comic Sans MS font family for all text +- Imperfect lines and curves that mimic hand-drawn aesthetics +- Canvas size: 900x800 pixels +- Color scheme: + - Trigger Events: #e8f4fd background, #2196F3 border, #1976D2 text + - Build Stage: #f3e5f5 background, #9C27B0 border, #7B1FA2 text + - Artifact Storage: #fff3e0 background, #FF9800 border, #F57C00 text + - Test Stage: #e8f5e8 background, #4CAF50 border, #388E3C text + - Release Pipeline: #ffebee background, #f44336 border, #D32F2F text + +## Content Structure +1. **Title**: "CUDA Python CI Pipeline Flow" + +2. **Trigger Events** (top blue box): + - Push to main branch + - Pull request + - Push to pull-request/* branches + - Manual workflow dispatch + +3. **Build Stage** (purple box): + - Three platform boxes: linux-64 (Self-hosted), linux-aarch64 (Self-hosted), win-64 (GitHub-hosted) + - Details: Python versions 3.9-3.13, CUDA 13.0.0 (build-time) + - Components: cuda-core, cuda-bindings, cuda-pathfinder, cuda-python + +4. **Artifact Storage** (orange box): + - GitHub Artifacts box: Wheel files (.whl), Test artifacts, Documentation (30-day retention) + - GitHub Cache box: Mini CTK cache + +5. **Test Stage** (green box): + - Three platform boxes: linux-64 (Self-hosted), linux-aarch64 (Self-hosted), win-64 (GitHub-hosted) + - Details: Download wheels from artifacts, Test against multiple CUDA runtime versions, Run Python unit tests, Cython tests, examples + - Artifact Flows (in red text): + • cuda-pathfinder: main → backport + • cuda-bindings: backport → main + +6. **Release Pipeline** (red box): + - Three sequential boxes: Validation → Publishing → Documentation + - Validation: Artifact integrity, Git tag verification + - Publishing: PyPI/TestPyPI, Component or all releases + - Documentation: GitHub Pages, Release notes + - Details: Manual workflow dispatch with run ID, Supports individual component or full releases + +## Arrow Requirements +- Main flow arrows: Trigger → Build → Artifact → Test → Release +- Additional artifact flow arrows (dashed, orange #FF9800): + - From GitHub Cache (mini CTK) back to Build Stage with "mini CTK reuse" label + - From GitHub Artifacts (wheels) to Release Pipeline with "wheel fetch" label +- Arrow marker definition with hand-drawn style +- Use stroke-dasharray="5,3" for artifact flow arrows + +## Key Features +- All boxes use rough, hand-drawn paths (not perfect rectangles) +- Text should be properly sized and positioned within boxes +- Platform boxes within each stage should be clearly separated +- Maintain consistent spacing and alignment +- Use appropriate font sizes: 16pt title, 14pt stage headers, 12pt platform names, 11pt details, 9-10pt smaller text + +## Text Positioning +- Use text-anchor="middle" for centered headers +- Use text-anchor="start" for left-aligned bullet points +- Ensure all text fits within their enclosing boxes +- Use transforms for angled text labels on artifact flow arrows \ No newline at end of file diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index 4e6237b1017..96ae713a856 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -73,9 +73,20 @@ GitHub Cache • Mini CTK cache - + + + + + mini CTK reuse + + + + wheel fetch + From c0b6476d08210179ed2d06b641591b0f0eeaef29 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Sep 2025 07:25:04 +0000 Subject: [PATCH 09/27] Fix SVG arrow styling and add parallel execution documentation Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 6 ++++++ ci/ci-pipeline.svg | 13 +++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index feba247f350..d8cf6532a91 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,6 +23,12 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and ![CUDA Python CI Pipeline Flow](ci/ci-pipeline.svg) +### Pipeline Execution Details + +**Parallel Execution**: The CI pipeline leverages parallel execution to optimize build and test times: +- **Build Stage**: Different architectures/operating systems (linux-64, linux-aarch64, win-64) are built in parallel across their respective runners +- **Test Stage**: Different architectures/operating systems/CUDA versions are tested in parallel; documentation preview is also built in parallel with testing + ### Branch-specific Artifact Flow #### Main Branch diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index 96ae713a856..e984638f185 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -7,6 +7,11 @@ refX="11" refY="5" orient="auto"> + + + + @@ -79,13 +84,13 @@ - mini CTK reuse + stroke="#FF9800" stroke-width="2.5" fill="none" stroke-linejoin="round" marker-end="url(#blackarrow)" stroke-dasharray="5,3"/> + mini CTK reuse - wheel fetch + stroke="#FF9800" stroke-width="2.5" fill="none" stroke-linejoin="round" marker-end="url(#blackarrow)" stroke-dasharray="5,3"/> + wheel fetch Date: Sun, 7 Sep 2025 07:42:07 +0000 Subject: [PATCH 10/27] Fix SVG arrow styling and restructure CONTRIBUTING.md Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 83 +++++++++++++++++++++++++--------------------- ci/ci-pipeline.svg | 14 ++++---- 2 files changed, 52 insertions(+), 45 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8cf6532a91..0a0550285ef 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,45 +14,12 @@ Thank you for your interest in contributing to CUDA Python! Based on the type of - [`cuda.bindings`](https://nvidia.github.io/cuda-python/cuda-bindings/latest/contribute.html)[1](#footnote1) - [`cuda.pathfinder`](https://nvidia.github.io/cuda-python/cuda-pathfinder/latest/contribute.html) +## Table of Contents -## CI infrastructure overview - -The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and releases multiple components across different platforms. This section provides a visual overview of our CI infrastructure to help contributors understand the build and release process. - -### CI Pipeline Flow - -![CUDA Python CI Pipeline Flow](ci/ci-pipeline.svg) - -### Pipeline Execution Details - -**Parallel Execution**: The CI pipeline leverages parallel execution to optimize build and test times: -- **Build Stage**: Different architectures/operating systems (linux-64, linux-aarch64, win-64) are built in parallel across their respective runners -- **Test Stage**: Different architectures/operating systems/CUDA versions are tested in parallel; documentation preview is also built in parallel with testing - -### Branch-specific Artifact Flow - -#### Main Branch -- **Build** → **Test** → **Documentation** → **Potential Release** -- Artifacts stored as `{component}-python{version}-{platform}-{sha}` -- Full test coverage across all platforms and CUDA versions -- **Artifact flow out**: `cuda-pathfinder` artifacts → backport branches - -#### Backport Branches -- **Build** → **Test** → **Backport PR Creation** -- Artifacts used for validation before creating backport pull requests -- Maintains compatibility with older CUDA versions -- **Artifact flow in**: `cuda-pathfinder` artifacts ← main branch -- **Artifact flow out**: older `cuda-bindings` artifacts → main branch - -### Key Infrastructure Details - -- **Self-hosted runners**: Used for Linux builds and GPU testing (more resources, faster builds) -- **GitHub-hosted runners**: Used for Windows builds and general tasks -- **Artifact retention**: 30 days for GitHub Artifacts (wheels, docs, tests) -- **Cache retention**: GitHub Cache for build dependencies and environments -- **Security**: All commits must be signed, untrusted code blocked -- **Parallel execution**: Matrix builds across Python versions and platforms -- **Component isolation**: Each component (core, bindings, pathfinder, python) can be built/released independently +- [Pre-commit](#pre-commit) +- [Code signing](#code-signing) +- [Developer Certificate of Origin (DCO)](#developer-certificate-of-origin-dco) +- [CI infrastructure overview](#ci-infrastructure-overview) ## Pre-commit @@ -123,3 +90,43 @@ By making a contribution to this project, I certify that: --- 1: `cuda.bindings` follows the contributing guidelines from this repository (`cuda-python`). + + +## CI infrastructure overview + +The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and releases multiple components across different platforms. This section provides a visual overview of our CI infrastructure to help contributors understand the build and release process. + +### CI Pipeline Flow + +![CUDA Python CI Pipeline Flow](ci/ci-pipeline.svg) + +### Pipeline Execution Details + +**Parallel Execution**: The CI pipeline leverages parallel execution to optimize build and test times: +- **Build Stage**: Different architectures/operating systems (linux-64, linux-aarch64, win-64) are built in parallel across their respective runners +- **Test Stage**: Different architectures/operating systems/CUDA versions are tested in parallel; documentation preview is also built in parallel with testing + +### Branch-specific Artifact Flow + +#### Main Branch +- **Build** → **Test** → **Documentation** → **Potential Release** +- Artifacts stored as `{component}-python{version}-{platform}-{sha}` +- Full test coverage across all platforms and CUDA versions +- **Artifact flow out**: `cuda-pathfinder` artifacts → backport branches + +#### Backport Branches +- **Build** → **Test** → **Backport PR Creation** +- Artifacts used for validation before creating backport pull requests +- Maintains compatibility with older CUDA versions +- **Artifact flow in**: `cuda-pathfinder` artifacts ← main branch +- **Artifact flow out**: older `cuda-bindings` artifacts → main branch + +### Key Infrastructure Details + +- **Self-hosted runners**: Used for Linux builds and GPU testing (more resources, faster builds) +- **GitHub-hosted runners**: Used for Windows builds and general tasks +- **Artifact retention**: 30 days for GitHub Artifacts (wheels, docs, tests) +- **Cache retention**: GitHub Cache for build dependencies and environments +- **Security**: All commits must be signed, untrusted code blocked +- **Parallel execution**: Matrix builds across Python versions and platforms +- **Component isolation**: Each component (core, bindings, pathfinder, python) can be built/released independently diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index e984638f185..746f13afc1f 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -7,10 +7,10 @@ refX="11" refY="5" orient="auto"> - - + - + @@ -84,13 +84,13 @@ - mini CTK reuse + stroke="#FF9800" stroke-width="2.5" fill="none" stroke-linejoin="round" marker-end="url(#orangearrow)" stroke-dasharray="5,3"/> + mini CTK reuse - wheel fetch + stroke="#FF9800" stroke-width="2.5" fill="none" stroke-linejoin="round" marker-end="url(#orangearrow)" stroke-dasharray="5,3"/> + wheel fetch Date: Sun, 7 Sep 2025 07:56:58 +0000 Subject: [PATCH 11/27] Fix SVG arrow styling, move footnote to bottom, and add Mermaid diagram Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 86 ++++++++++++++++++++++++++++++++++++++++++++-- ci/ci-pipeline.mmd | 76 ++++++++++++++++++++++++++++++++++++++++ ci/ci-pipeline.svg | 6 ++-- 3 files changed, 162 insertions(+), 6 deletions(-) create mode 100644 ci/ci-pipeline.mmd diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0a0550285ef..d7e74fc880b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -89,9 +89,6 @@ By making a contribution to this project, I certify that: --- -1: `cuda.bindings` follows the contributing guidelines from this repository (`cuda-python`). - - ## CI infrastructure overview The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and releases multiple components across different platforms. This section provides a visual overview of our CI infrastructure to help contributors understand the build and release process. @@ -100,6 +97,85 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and ![CUDA Python CI Pipeline Flow](ci/ci-pipeline.svg) +Alternative Mermaid diagram representation: + +```mermaid +flowchart TD + %% Trigger Events + subgraph TRIGGER["🔄 TRIGGER EVENTS"] + T1["• Push to main branch
• Push to pull-request/* branches"] + T2["• Pull request
• Manual workflow dispatch"] + T1 --- T2 + end + + %% Build Stage + subgraph BUILD["🔨 BUILD STAGE"] + subgraph BUILD_PLATFORMS["Parallel Platform Builds"] + B1["linux-64
(Self-hosted)"] + B2["linux-aarch64
(Self-hosted)"] + B3["win-64
(GitHub-hosted)"] + end + BUILD_DETAILS["• Python versions: 3.9, 3.10, 3.11, 3.12, 3.13
• CUDA version: 13.0.0 (build-time)
• Components: cuda-core, cuda-bindings,
cuda-pathfinder, cuda-python"] + end + + %% Artifact Storage + subgraph ARTIFACTS["📦 ARTIFACT STORAGE"] + subgraph GITHUB_ARTIFACTS["GitHub Artifacts"] + GA1["• Wheel files (.whl)
• Test artifacts
• Documentation
(30-day retention)"] + end + subgraph GITHUB_CACHE["GitHub Cache"] + GC1["• Mini CTK cache"] + end + end + + %% Test Stage + subgraph TEST["🧪 TEST STAGE"] + subgraph TEST_PLATFORMS["Parallel Platform Tests"] + TS1["linux-64
(Self-hosted)"] + TS2["linux-aarch64
(Self-hosted)"] + TS3["win-64
(GitHub-hosted)"] + end + TEST_DETAILS["• Download wheels from artifacts
• Test against multiple CUDA runtime versions
• Run Python unit tests, Cython tests, examples"] + ARTIFACT_FLOWS["Artifact Flows:
• cuda-pathfinder: main → backport
• cuda-bindings: backport → main"] + end + + %% Release Pipeline + subgraph RELEASE["🚀 RELEASE PIPELINE"] + subgraph RELEASE_STAGES["Sequential Release Steps"] + R1["Validation
• Artifact integrity
• Git tag verification"] + R2["Publishing
• PyPI/TestPyPI
• Component or all releases"] + R3["Documentation
• GitHub Pages
• Release notes"] + R1 --> R2 --> R3 + end + RELEASE_DETAILS["• Manual workflow dispatch with run ID
• Supports individual component or full releases"] + end + + %% Main Flow + TRIGGER --> BUILD + BUILD --> ARTIFACTS + ARTIFACTS --> TEST + TEST --> RELEASE + + %% Artifact Flow Arrows (Cache Reuse) + GITHUB_CACHE -.->|"mini CTK reuse"| BUILD + + %% Artifact Flow Arrows (Wheel Fetch) + GITHUB_ARTIFACTS -.->|"wheel fetch"| RELEASE + + %% Styling + classDef triggerStyle fill:#e8f4fd,stroke:#2196F3,stroke-width:2px,color:#1976D2 + classDef buildStyle fill:#f3e5f5,stroke:#9C27B0,stroke-width:2px,color:#7B1FA2 + classDef artifactStyle fill:#fff3e0,stroke:#FF9800,stroke-width:2px,color:#F57C00 + classDef testStyle fill:#e8f5e8,stroke:#4CAF50,stroke-width:2px,color:#388E3C + classDef releaseStyle fill:#ffebee,stroke:#f44336,stroke-width:2px,color:#D32F2F + + class TRIGGER,T1,T2 triggerStyle + class BUILD,BUILD_PLATFORMS,B1,B2,B3,BUILD_DETAILS buildStyle + class ARTIFACTS,GITHUB_ARTIFACTS,GITHUB_CACHE,GA1,GC1 artifactStyle + class TEST,TEST_PLATFORMS,TS1,TS2,TS3,TEST_DETAILS,ARTIFACT_FLOWS testStyle + class RELEASE,RELEASE_STAGES,R1,R2,R3,RELEASE_DETAILS releaseStyle +``` + ### Pipeline Execution Details **Parallel Execution**: The CI pipeline leverages parallel execution to optimize build and test times: @@ -130,3 +206,7 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and - **Security**: All commits must be signed, untrusted code blocked - **Parallel execution**: Matrix builds across Python versions and platforms - **Component isolation**: Each component (core, bindings, pathfinder, python) can be built/released independently + +--- + +1: `cuda.bindings` follows the contributing guidelines from this repository (`cuda-python`). diff --git a/ci/ci-pipeline.mmd b/ci/ci-pipeline.mmd new file mode 100644 index 00000000000..79dc95343bf --- /dev/null +++ b/ci/ci-pipeline.mmd @@ -0,0 +1,76 @@ +```mermaid +flowchart TD + %% Trigger Events + subgraph TRIGGER["🔄 TRIGGER EVENTS"] + T1["• Push to main branch
• Push to pull-request/* branches"] + T2["• Pull request
• Manual workflow dispatch"] + T1 --- T2 + end + + %% Build Stage + subgraph BUILD["🔨 BUILD STAGE"] + subgraph BUILD_PLATFORMS["Parallel Platform Builds"] + B1["linux-64
(Self-hosted)"] + B2["linux-aarch64
(Self-hosted)"] + B3["win-64
(GitHub-hosted)"] + end + BUILD_DETAILS["• Python versions: 3.9, 3.10, 3.11, 3.12, 3.13
• CUDA version: 13.0.0 (build-time)
• Components: cuda-core, cuda-bindings,
cuda-pathfinder, cuda-python"] + end + + %% Artifact Storage + subgraph ARTIFACTS["📦 ARTIFACT STORAGE"] + subgraph GITHUB_ARTIFACTS["GitHub Artifacts"] + GA1["• Wheel files (.whl)
• Test artifacts
• Documentation
(30-day retention)"] + end + subgraph GITHUB_CACHE["GitHub Cache"] + GC1["• Mini CTK cache"] + end + end + + %% Test Stage + subgraph TEST["🧪 TEST STAGE"] + subgraph TEST_PLATFORMS["Parallel Platform Tests"] + TS1["linux-64
(Self-hosted)"] + TS2["linux-aarch64
(Self-hosted)"] + TS3["win-64
(GitHub-hosted)"] + end + TEST_DETAILS["• Download wheels from artifacts
• Test against multiple CUDA runtime versions
• Run Python unit tests, Cython tests, examples"] + ARTIFACT_FLOWS["Artifact Flows:
• cuda-pathfinder: main → backport
• cuda-bindings: backport → main"] + end + + %% Release Pipeline + subgraph RELEASE["🚀 RELEASE PIPELINE"] + subgraph RELEASE_STAGES["Sequential Release Steps"] + R1["Validation
• Artifact integrity
• Git tag verification"] + R2["Publishing
• PyPI/TestPyPI
• Component or all releases"] + R3["Documentation
• GitHub Pages
• Release notes"] + R1 --> R2 --> R3 + end + RELEASE_DETAILS["• Manual workflow dispatch with run ID
• Supports individual component or full releases"] + end + + %% Main Flow + TRIGGER --> BUILD + BUILD --> ARTIFACTS + ARTIFACTS --> TEST + TEST --> RELEASE + + %% Artifact Flow Arrows (Cache Reuse) + GITHUB_CACHE -.->|"mini CTK reuse"| BUILD + + %% Artifact Flow Arrows (Wheel Fetch) + GITHUB_ARTIFACTS -.->|"wheel fetch"| RELEASE + + %% Styling + classDef triggerStyle fill:#e8f4fd,stroke:#2196F3,stroke-width:2px,color:#1976D2 + classDef buildStyle fill:#f3e5f5,stroke:#9C27B0,stroke-width:2px,color:#7B1FA2 + classDef artifactStyle fill:#fff3e0,stroke:#FF9800,stroke-width:2px,color:#F57C00 + classDef testStyle fill:#e8f5e8,stroke:#4CAF50,stroke-width:2px,color:#388E3C + classDef releaseStyle fill:#ffebee,stroke:#f44336,stroke-width:2px,color:#D32F2F + + class TRIGGER,T1,T2 triggerStyle + class BUILD,BUILD_PLATFORMS,B1,B2,B3,BUILD_DETAILS buildStyle + class ARTIFACTS,GITHUB_ARTIFACTS,GITHUB_CACHE,GA1,GC1 artifactStyle + class TEST,TEST_PLATFORMS,TS1,TS2,TS3,TEST_DETAILS,ARTIFACT_FLOWS testStyle + class RELEASE,RELEASE_STAGES,R1,R2,R3,RELEASE_DETAILS releaseStyle +``` \ No newline at end of file diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index 746f13afc1f..d51142035a5 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -85,12 +85,12 @@ - mini CTK reuse + mini CTK reuse - - wheel fetch + wheel fetch Date: Sun, 7 Sep 2025 08:15:56 +0000 Subject: [PATCH 12/27] Fix SVG arrow positioning to prevent overlap with boxes and remove unnecessary markdown separator Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 2 -- ci/ci-pipeline.svg | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d7e74fc880b..dffb6af4d40 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -87,8 +87,6 @@ By making a contribution to this project, I certify that: this project or the open source license(s) involved. ``` ---- - ## CI infrastructure overview The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and releases multiple components across different platforms. This section provides a visual overview of our CI infrastructure to help contributors understand the build and release process. diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index d51142035a5..4655a9a015e 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -83,14 +83,14 @@ - - mini CTK reuse + mini CTK reuse - - wheel fetch + wheel fetch Date: Sun, 7 Sep 2025 04:30:19 -0400 Subject: [PATCH 13/27] Manually adjust SVG marker sizes and text positions --- ci/ci-pipeline.svg | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index 4655a9a015e..a35879169a1 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -8,7 +8,7 @@ - @@ -83,14 +83,14 @@ - - mini CTK reuse + mini CTK reuse - - wheel fetch + wheel fetch • Manual workflow dispatch with run ID • Supports individual component or full releases - \ No newline at end of file + From 7e1d094aa774c8d9a9ab7c8484fa35fc528e49cf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Sep 2025 08:39:07 +0000 Subject: [PATCH 14/27] Replace duplicated Mermaid content with file reference and update regeneration instructions Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 79 +-------------------------------------- ci/.ci-pipeline-regen.txt | 35 +++++++++++++++-- 2 files changed, 33 insertions(+), 81 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dffb6af4d40..2a352461715 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -95,84 +95,7 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and ![CUDA Python CI Pipeline Flow](ci/ci-pipeline.svg) -Alternative Mermaid diagram representation: - -```mermaid -flowchart TD - %% Trigger Events - subgraph TRIGGER["🔄 TRIGGER EVENTS"] - T1["• Push to main branch
• Push to pull-request/* branches"] - T2["• Pull request
• Manual workflow dispatch"] - T1 --- T2 - end - - %% Build Stage - subgraph BUILD["🔨 BUILD STAGE"] - subgraph BUILD_PLATFORMS["Parallel Platform Builds"] - B1["linux-64
(Self-hosted)"] - B2["linux-aarch64
(Self-hosted)"] - B3["win-64
(GitHub-hosted)"] - end - BUILD_DETAILS["• Python versions: 3.9, 3.10, 3.11, 3.12, 3.13
• CUDA version: 13.0.0 (build-time)
• Components: cuda-core, cuda-bindings,
cuda-pathfinder, cuda-python"] - end - - %% Artifact Storage - subgraph ARTIFACTS["📦 ARTIFACT STORAGE"] - subgraph GITHUB_ARTIFACTS["GitHub Artifacts"] - GA1["• Wheel files (.whl)
• Test artifacts
• Documentation
(30-day retention)"] - end - subgraph GITHUB_CACHE["GitHub Cache"] - GC1["• Mini CTK cache"] - end - end - - %% Test Stage - subgraph TEST["🧪 TEST STAGE"] - subgraph TEST_PLATFORMS["Parallel Platform Tests"] - TS1["linux-64
(Self-hosted)"] - TS2["linux-aarch64
(Self-hosted)"] - TS3["win-64
(GitHub-hosted)"] - end - TEST_DETAILS["• Download wheels from artifacts
• Test against multiple CUDA runtime versions
• Run Python unit tests, Cython tests, examples"] - ARTIFACT_FLOWS["Artifact Flows:
• cuda-pathfinder: main → backport
• cuda-bindings: backport → main"] - end - - %% Release Pipeline - subgraph RELEASE["🚀 RELEASE PIPELINE"] - subgraph RELEASE_STAGES["Sequential Release Steps"] - R1["Validation
• Artifact integrity
• Git tag verification"] - R2["Publishing
• PyPI/TestPyPI
• Component or all releases"] - R3["Documentation
• GitHub Pages
• Release notes"] - R1 --> R2 --> R3 - end - RELEASE_DETAILS["• Manual workflow dispatch with run ID
• Supports individual component or full releases"] - end - - %% Main Flow - TRIGGER --> BUILD - BUILD --> ARTIFACTS - ARTIFACTS --> TEST - TEST --> RELEASE - - %% Artifact Flow Arrows (Cache Reuse) - GITHUB_CACHE -.->|"mini CTK reuse"| BUILD - - %% Artifact Flow Arrows (Wheel Fetch) - GITHUB_ARTIFACTS -.->|"wheel fetch"| RELEASE - - %% Styling - classDef triggerStyle fill:#e8f4fd,stroke:#2196F3,stroke-width:2px,color:#1976D2 - classDef buildStyle fill:#f3e5f5,stroke:#9C27B0,stroke-width:2px,color:#7B1FA2 - classDef artifactStyle fill:#fff3e0,stroke:#FF9800,stroke-width:2px,color:#F57C00 - classDef testStyle fill:#e8f5e8,stroke:#4CAF50,stroke-width:2px,color:#388E3C - classDef releaseStyle fill:#ffebee,stroke:#f44336,stroke-width:2px,color:#D32F2F - - class TRIGGER,T1,T2 triggerStyle - class BUILD,BUILD_PLATFORMS,B1,B2,B3,BUILD_DETAILS buildStyle - class ARTIFACTS,GITHUB_ARTIFACTS,GITHUB_CACHE,GA1,GC1 artifactStyle - class TEST,TEST_PLATFORMS,TS1,TS2,TS3,TEST_DETAILS,ARTIFACT_FLOWS testStyle - class RELEASE,RELEASE_STAGES,R1,R2,R3,RELEASE_DETAILS releaseStyle -``` +Alternative Mermaid diagram representation ([ci/ci-pipeline.mmd](ci/ci-pipeline.mmd)): ### Pipeline Execution Details diff --git a/ci/.ci-pipeline-regen.txt b/ci/.ci-pipeline-regen.txt index 55827130135..91c78aebeb4 100644 --- a/ci/.ci-pipeline-regen.txt +++ b/ci/.ci-pipeline-regen.txt @@ -52,18 +52,47 @@ This file contains the prompt and requirements for regenerating ci-pipeline.svg - Additional artifact flow arrows (dashed, orange #FF9800): - From GitHub Cache (mini CTK) back to Build Stage with "mini CTK reuse" label - From GitHub Artifacts (wheels) to Release Pipeline with "wheel fetch" label -- Arrow marker definition with hand-drawn style +- Arrow marker definition with hand-drawn style (orange arrow heads, not black) - Use stroke-dasharray="5,3" for artifact flow arrows +## Critical Arrow Positioning Requirements (UPDATED) +**IMPORTANT**: Arrows must NOT overlap with stage boxes. Ensure proper clearance: + +1. **Mini CTK reuse arrow** (GitHub Cache → Build Stage): + - Arrow endpoint Y coordinate must be BELOW the Build Stage box edge (y=292) + - Use y=295 or greater for the endpoint to ensure no overlap + - Position "mini CTK reuse" text to the RIGHT of the arrow (not left) for less visual clutter + - Text color should be orange (#FF9800) to match arrow + +2. **Wheel fetch arrow** (GitHub Artifacts → Release Pipeline): + - Arrow endpoint Y coordinate must be ABOVE the Release Pipeline box edge (y=652) + - Use y=645 or smaller for the endpoint to provide proper margin + - Position "wheel fetch" text between Test Stage and Release Pipeline boxes + - Text should be to the LEFT of the arrow for better spacing + +## Font Size Requirements (UPDATED) +- ALL text labels must use consistent 12pt font size for readability +- No 9pt text - this is too small and hard to read +- Title: 16pt, Stage headers: 14pt, All other text: 12pt + ## Key Features - All boxes use rough, hand-drawn paths (not perfect rectangles) - Text should be properly sized and positioned within boxes - Platform boxes within each stage should be clearly separated - Maintain consistent spacing and alignment -- Use appropriate font sizes: 16pt title, 14pt stage headers, 12pt platform names, 11pt details, 9-10pt smaller text +- Orange arrow heads must match the orange arrow color ## Text Positioning - Use text-anchor="middle" for centered headers - Use text-anchor="start" for left-aligned bullet points - Ensure all text fits within their enclosing boxes -- Use transforms for angled text labels on artifact flow arrows \ No newline at end of file +- Use transforms for angled text labels on artifact flow arrows +- Artifact flow arrow text positioning is critical - follow positioning requirements above + +## Recent Manual Adjustments Applied +- Fixed arrow endpoint positioning to prevent overlap with stage boxes +- Moved mini CTK reuse arrow endpoint from y=285 to y=295 +- Moved wheel fetch arrow endpoint from y=650 to y=645 +- Repositioned text labels for better visual separation +- Standardized all text to 12pt font size for consistency +- Changed arrow heads from black to orange to match arrow color \ No newline at end of file From dbda9100a0fda0622f49165cbf36f6c6993dcb61 Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Sun, 7 Sep 2025 15:13:10 -0400 Subject: [PATCH 15/27] Rename ci-pipeline.mmd to ci-pipeline.md --- ci/{ci-pipeline.mmd => ci-pipeline.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename ci/{ci-pipeline.mmd => ci-pipeline.md} (99%) diff --git a/ci/ci-pipeline.mmd b/ci/ci-pipeline.md similarity index 99% rename from ci/ci-pipeline.mmd rename to ci/ci-pipeline.md index 79dc95343bf..0f68373a21e 100644 --- a/ci/ci-pipeline.mmd +++ b/ci/ci-pipeline.md @@ -73,4 +73,4 @@ flowchart TD class ARTIFACTS,GITHUB_ARTIFACTS,GITHUB_CACHE,GA1,GC1 artifactStyle class TEST,TEST_PLATFORMS,TS1,TS2,TS3,TEST_DETAILS,ARTIFACT_FLOWS testStyle class RELEASE,RELEASE_STAGES,R1,R2,R3,RELEASE_DETAILS releaseStyle -``` \ No newline at end of file +``` From 9a2f1aff2f69589297f59faef468b60d2a10b1f3 Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Sun, 7 Sep 2025 15:15:21 -0400 Subject: [PATCH 16/27] try this Updated the CI pipeline representation with a new image format. --- CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2a352461715..c8d5ee60bae 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -95,7 +95,9 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and ![CUDA Python CI Pipeline Flow](ci/ci-pipeline.svg) -Alternative Mermaid diagram representation ([ci/ci-pipeline.mmd](ci/ci-pipeline.mmd)): +Alternative Mermaid diagram representation: + +![ci-pipeline](ci/ci-pipeline.md) ### Pipeline Execution Details From 019027226ee8917024b81724aba365df442648ca Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Sep 2025 19:23:14 +0000 Subject: [PATCH 17/27] Inline Mermaid diagram in CONTRIBUTING.md instead of file reference Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 77 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c8d5ee60bae..dffb6af4d40 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -97,7 +97,82 @@ The CUDA Python project uses a comprehensive CI pipeline that builds, tests, and Alternative Mermaid diagram representation: -![ci-pipeline](ci/ci-pipeline.md) +```mermaid +flowchart TD + %% Trigger Events + subgraph TRIGGER["🔄 TRIGGER EVENTS"] + T1["• Push to main branch
• Push to pull-request/* branches"] + T2["• Pull request
• Manual workflow dispatch"] + T1 --- T2 + end + + %% Build Stage + subgraph BUILD["🔨 BUILD STAGE"] + subgraph BUILD_PLATFORMS["Parallel Platform Builds"] + B1["linux-64
(Self-hosted)"] + B2["linux-aarch64
(Self-hosted)"] + B3["win-64
(GitHub-hosted)"] + end + BUILD_DETAILS["• Python versions: 3.9, 3.10, 3.11, 3.12, 3.13
• CUDA version: 13.0.0 (build-time)
• Components: cuda-core, cuda-bindings,
cuda-pathfinder, cuda-python"] + end + + %% Artifact Storage + subgraph ARTIFACTS["📦 ARTIFACT STORAGE"] + subgraph GITHUB_ARTIFACTS["GitHub Artifacts"] + GA1["• Wheel files (.whl)
• Test artifacts
• Documentation
(30-day retention)"] + end + subgraph GITHUB_CACHE["GitHub Cache"] + GC1["• Mini CTK cache"] + end + end + + %% Test Stage + subgraph TEST["🧪 TEST STAGE"] + subgraph TEST_PLATFORMS["Parallel Platform Tests"] + TS1["linux-64
(Self-hosted)"] + TS2["linux-aarch64
(Self-hosted)"] + TS3["win-64
(GitHub-hosted)"] + end + TEST_DETAILS["• Download wheels from artifacts
• Test against multiple CUDA runtime versions
• Run Python unit tests, Cython tests, examples"] + ARTIFACT_FLOWS["Artifact Flows:
• cuda-pathfinder: main → backport
• cuda-bindings: backport → main"] + end + + %% Release Pipeline + subgraph RELEASE["🚀 RELEASE PIPELINE"] + subgraph RELEASE_STAGES["Sequential Release Steps"] + R1["Validation
• Artifact integrity
• Git tag verification"] + R2["Publishing
• PyPI/TestPyPI
• Component or all releases"] + R3["Documentation
• GitHub Pages
• Release notes"] + R1 --> R2 --> R3 + end + RELEASE_DETAILS["• Manual workflow dispatch with run ID
• Supports individual component or full releases"] + end + + %% Main Flow + TRIGGER --> BUILD + BUILD --> ARTIFACTS + ARTIFACTS --> TEST + TEST --> RELEASE + + %% Artifact Flow Arrows (Cache Reuse) + GITHUB_CACHE -.->|"mini CTK reuse"| BUILD + + %% Artifact Flow Arrows (Wheel Fetch) + GITHUB_ARTIFACTS -.->|"wheel fetch"| RELEASE + + %% Styling + classDef triggerStyle fill:#e8f4fd,stroke:#2196F3,stroke-width:2px,color:#1976D2 + classDef buildStyle fill:#f3e5f5,stroke:#9C27B0,stroke-width:2px,color:#7B1FA2 + classDef artifactStyle fill:#fff3e0,stroke:#FF9800,stroke-width:2px,color:#F57C00 + classDef testStyle fill:#e8f5e8,stroke:#4CAF50,stroke-width:2px,color:#388E3C + classDef releaseStyle fill:#ffebee,stroke:#f44336,stroke-width:2px,color:#D32F2F + + class TRIGGER,T1,T2 triggerStyle + class BUILD,BUILD_PLATFORMS,B1,B2,B3,BUILD_DETAILS buildStyle + class ARTIFACTS,GITHUB_ARTIFACTS,GITHUB_CACHE,GA1,GC1 artifactStyle + class TEST,TEST_PLATFORMS,TS1,TS2,TS3,TEST_DETAILS,ARTIFACT_FLOWS testStyle + class RELEASE,RELEASE_STAGES,R1,R2,R3,RELEASE_DETAILS releaseStyle +``` ### Pipeline Execution Details From 2334bcf374f947493de3a7f034ab7da431e46ea2 Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Sun, 7 Sep 2025 15:26:45 -0400 Subject: [PATCH 18/27] Delete ci/ci-pipeline.md --- ci/ci-pipeline.md | 76 ----------------------------------------------- 1 file changed, 76 deletions(-) delete mode 100644 ci/ci-pipeline.md diff --git a/ci/ci-pipeline.md b/ci/ci-pipeline.md deleted file mode 100644 index 0f68373a21e..00000000000 --- a/ci/ci-pipeline.md +++ /dev/null @@ -1,76 +0,0 @@ -```mermaid -flowchart TD - %% Trigger Events - subgraph TRIGGER["🔄 TRIGGER EVENTS"] - T1["• Push to main branch
• Push to pull-request/* branches"] - T2["• Pull request
• Manual workflow dispatch"] - T1 --- T2 - end - - %% Build Stage - subgraph BUILD["🔨 BUILD STAGE"] - subgraph BUILD_PLATFORMS["Parallel Platform Builds"] - B1["linux-64
(Self-hosted)"] - B2["linux-aarch64
(Self-hosted)"] - B3["win-64
(GitHub-hosted)"] - end - BUILD_DETAILS["• Python versions: 3.9, 3.10, 3.11, 3.12, 3.13
• CUDA version: 13.0.0 (build-time)
• Components: cuda-core, cuda-bindings,
cuda-pathfinder, cuda-python"] - end - - %% Artifact Storage - subgraph ARTIFACTS["📦 ARTIFACT STORAGE"] - subgraph GITHUB_ARTIFACTS["GitHub Artifacts"] - GA1["• Wheel files (.whl)
• Test artifacts
• Documentation
(30-day retention)"] - end - subgraph GITHUB_CACHE["GitHub Cache"] - GC1["• Mini CTK cache"] - end - end - - %% Test Stage - subgraph TEST["🧪 TEST STAGE"] - subgraph TEST_PLATFORMS["Parallel Platform Tests"] - TS1["linux-64
(Self-hosted)"] - TS2["linux-aarch64
(Self-hosted)"] - TS3["win-64
(GitHub-hosted)"] - end - TEST_DETAILS["• Download wheels from artifacts
• Test against multiple CUDA runtime versions
• Run Python unit tests, Cython tests, examples"] - ARTIFACT_FLOWS["Artifact Flows:
• cuda-pathfinder: main → backport
• cuda-bindings: backport → main"] - end - - %% Release Pipeline - subgraph RELEASE["🚀 RELEASE PIPELINE"] - subgraph RELEASE_STAGES["Sequential Release Steps"] - R1["Validation
• Artifact integrity
• Git tag verification"] - R2["Publishing
• PyPI/TestPyPI
• Component or all releases"] - R3["Documentation
• GitHub Pages
• Release notes"] - R1 --> R2 --> R3 - end - RELEASE_DETAILS["• Manual workflow dispatch with run ID
• Supports individual component or full releases"] - end - - %% Main Flow - TRIGGER --> BUILD - BUILD --> ARTIFACTS - ARTIFACTS --> TEST - TEST --> RELEASE - - %% Artifact Flow Arrows (Cache Reuse) - GITHUB_CACHE -.->|"mini CTK reuse"| BUILD - - %% Artifact Flow Arrows (Wheel Fetch) - GITHUB_ARTIFACTS -.->|"wheel fetch"| RELEASE - - %% Styling - classDef triggerStyle fill:#e8f4fd,stroke:#2196F3,stroke-width:2px,color:#1976D2 - classDef buildStyle fill:#f3e5f5,stroke:#9C27B0,stroke-width:2px,color:#7B1FA2 - classDef artifactStyle fill:#fff3e0,stroke:#FF9800,stroke-width:2px,color:#F57C00 - classDef testStyle fill:#e8f5e8,stroke:#4CAF50,stroke-width:2px,color:#388E3C - classDef releaseStyle fill:#ffebee,stroke:#f44336,stroke-width:2px,color:#D32F2F - - class TRIGGER,T1,T2 triggerStyle - class BUILD,BUILD_PLATFORMS,B1,B2,B3,BUILD_DETAILS buildStyle - class ARTIFACTS,GITHUB_ARTIFACTS,GITHUB_CACHE,GA1,GC1 artifactStyle - class TEST,TEST_PLATFORMS,TS1,TS2,TS3,TEST_DETAILS,ARTIFACT_FLOWS testStyle - class RELEASE,RELEASE_STAGES,R1,R2,R3,RELEASE_DETAILS releaseStyle -``` From 376f571e9b096612f2d9b4e181768f7f1f1d95f2 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 7 Sep 2025 19:28:00 +0000 Subject: [PATCH 19/27] [pre-commit.ci] auto code formatting --- CONTRIBUTING.md | 6 +-- ci/.ci-pipeline-regen.txt | 4 +- ci/ci-pipeline.svg | 96 +++++++++++++++++++-------------------- 3 files changed, 53 insertions(+), 53 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dffb6af4d40..91d73f53445 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -110,7 +110,7 @@ flowchart TD subgraph BUILD["🔨 BUILD STAGE"] subgraph BUILD_PLATFORMS["Parallel Platform Builds"] B1["linux-64
(Self-hosted)"] - B2["linux-aarch64
(Self-hosted)"] + B2["linux-aarch64
(Self-hosted)"] B3["win-64
(GitHub-hosted)"] end BUILD_DETAILS["• Python versions: 3.9, 3.10, 3.11, 3.12, 3.13
• CUDA version: 13.0.0 (build-time)
• Components: cuda-core, cuda-bindings,
cuda-pathfinder, cuda-python"] @@ -156,7 +156,7 @@ flowchart TD %% Artifact Flow Arrows (Cache Reuse) GITHUB_CACHE -.->|"mini CTK reuse"| BUILD - + %% Artifact Flow Arrows (Wheel Fetch) GITHUB_ARTIFACTS -.->|"wheel fetch"| RELEASE @@ -188,7 +188,7 @@ flowchart TD - Full test coverage across all platforms and CUDA versions - **Artifact flow out**: `cuda-pathfinder` artifacts → backport branches -#### Backport Branches +#### Backport Branches - **Build** → **Test** → **Backport PR Creation** - Artifacts used for validation before creating backport pull requests - Maintains compatibility with older CUDA versions diff --git a/ci/.ci-pipeline-regen.txt b/ci/.ci-pipeline-regen.txt index 91c78aebeb4..1fb06b72e55 100644 --- a/ci/.ci-pipeline-regen.txt +++ b/ci/.ci-pipeline-regen.txt @@ -92,7 +92,7 @@ This file contains the prompt and requirements for regenerating ci-pipeline.svg ## Recent Manual Adjustments Applied - Fixed arrow endpoint positioning to prevent overlap with stage boxes - Moved mini CTK reuse arrow endpoint from y=285 to y=295 -- Moved wheel fetch arrow endpoint from y=650 to y=645 +- Moved wheel fetch arrow endpoint from y=650 to y=645 - Repositioned text labels for better visual separation - Standardized all text to 12pt font size for consistency -- Changed arrow heads from black to orange to match arrow color \ No newline at end of file +- Changed arrow heads from black to orange to match arrow color diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index a35879169a1..e276c2f3435 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -3,116 +3,116 @@ - - - + CUDA Python CI Pipeline Flow - + - TRIGGER EVENTS • Push to main branch • Pull request • Push to pull-request/* branches • Manual workflow dispatch - + - + - BUILD STAGE - + - linux-64 Self-hosted - - linux-aarch64 Self-hosted - - win-64 GitHub-hosted - + • Python versions: 3.9, 3.10, 3.11, 3.12, 3.13 • CUDA version: 13.0.0 (build-time) • Components: cuda-core, cuda-bindings, cuda-pathfinder, cuda-python - + - + - ARTIFACT STORAGE - + - GitHub Artifacts • Wheel files (.whl) • Test artifacts • Documentation (30-day retention) - - GitHub Cache • Mini CTK cache - + - + - mini CTK reuse - + - wheel fetch - + - TEST STAGE - + - linux-64 Self-hosted - - linux-aarch64 Self-hosted - - win-64 GitHub-hosted - + • Download wheels from artifacts • Test against multiple CUDA runtime versions @@ -120,40 +120,40 @@ Artifact Flows: • cuda-pathfinder: main → backport • cuda-bindings: backport → main - + - + - RELEASE PIPELINE - + - Validation • Artifact integrity • Git tag verification - + - - Publishing • PyPI/TestPyPI • Component or all releases - + - - Documentation • GitHub Pages • Release notes - + • Manual workflow dispatch with run ID • Supports individual component or full releases From d02a546377247af27239e9271fa9ff5dddd156fc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Sep 2025 19:35:12 +0000 Subject: [PATCH 20/27] Add SPDX headers to CI pipeline files Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- ci/.ci-pipeline-regen.txt | 3 +++ ci/ci-pipeline.svg | 2 ++ 2 files changed, 5 insertions(+) diff --git a/ci/.ci-pipeline-regen.txt b/ci/.ci-pipeline-regen.txt index 1fb06b72e55..5d069cc56c3 100644 --- a/ci/.ci-pipeline-regen.txt +++ b/ci/.ci-pipeline-regen.txt @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + CUDA Python CI Pipeline SVG Regeneration Instructions ==================================================== diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index e276c2f3435..bba2220805f 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -1,4 +1,6 @@ + + From b72d10b1ea1660b7a7fcf6fb36f1aea0d4f685ef Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Sep 2025 19:46:23 +0000 Subject: [PATCH 21/27] Fix footnote formatting and convert .txt to .md for pipeline regeneration docs Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 2 +- ...i-pipeline-regen.txt => .ci-pipeline-regen.md} | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) rename ci/{.ci-pipeline-regen.txt => .ci-pipeline-regen.md} (95%) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 91d73f53445..40315821eb3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -207,4 +207,4 @@ flowchart TD --- -1: `cuda.bindings` follows the contributing guidelines from this repository (`cuda-python`). +1: The `cuda-python` meta package shares the same license and the contributing guidelines as those of `cuda-bindings`. diff --git a/ci/.ci-pipeline-regen.txt b/ci/.ci-pipeline-regen.md similarity index 95% rename from ci/.ci-pipeline-regen.txt rename to ci/.ci-pipeline-regen.md index 5d069cc56c3..c73fda1a1a4 100644 --- a/ci/.ci-pipeline-regen.txt +++ b/ci/.ci-pipeline-regen.md @@ -1,12 +1,12 @@ # SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 -CUDA Python CI Pipeline SVG Regeneration Instructions -==================================================== +# CUDA Python CI Pipeline SVG Regeneration Instructions -This file contains the prompt and requirements for regenerating ci-pipeline.svg with the same styling and content. +This file contains the prompt and requirements for regenerating `ci-pipeline.svg` with the same styling and content. ## Styling Requirements + - Hand-drawn Excalidraw-style design with rough, sketchy borders - Comic Sans MS font family for all text - Imperfect lines and curves that mimic hand-drawn aesthetics @@ -19,6 +19,7 @@ This file contains the prompt and requirements for regenerating ci-pipeline.svg - Release Pipeline: #ffebee background, #f44336 border, #D32F2F text ## Content Structure + 1. **Title**: "CUDA Python CI Pipeline Flow" 2. **Trigger Events** (top blue box): @@ -51,6 +52,7 @@ This file contains the prompt and requirements for regenerating ci-pipeline.svg - Details: Manual workflow dispatch with run ID, Supports individual component or full releases ## Arrow Requirements + - Main flow arrows: Trigger → Build → Artifact → Test → Release - Additional artifact flow arrows (dashed, orange #FF9800): - From GitHub Cache (mini CTK) back to Build Stage with "mini CTK reuse" label @@ -59,6 +61,7 @@ This file contains the prompt and requirements for regenerating ci-pipeline.svg - Use stroke-dasharray="5,3" for artifact flow arrows ## Critical Arrow Positioning Requirements (UPDATED) + **IMPORTANT**: Arrows must NOT overlap with stage boxes. Ensure proper clearance: 1. **Mini CTK reuse arrow** (GitHub Cache → Build Stage): @@ -74,11 +77,13 @@ This file contains the prompt and requirements for regenerating ci-pipeline.svg - Text should be to the LEFT of the arrow for better spacing ## Font Size Requirements (UPDATED) + - ALL text labels must use consistent 12pt font size for readability - No 9pt text - this is too small and hard to read - Title: 16pt, Stage headers: 14pt, All other text: 12pt ## Key Features + - All boxes use rough, hand-drawn paths (not perfect rectangles) - Text should be properly sized and positioned within boxes - Platform boxes within each stage should be clearly separated @@ -86,6 +91,7 @@ This file contains the prompt and requirements for regenerating ci-pipeline.svg - Orange arrow heads must match the orange arrow color ## Text Positioning + - Use text-anchor="middle" for centered headers - Use text-anchor="start" for left-aligned bullet points - Ensure all text fits within their enclosing boxes @@ -93,9 +99,10 @@ This file contains the prompt and requirements for regenerating ci-pipeline.svg - Artifact flow arrow text positioning is critical - follow positioning requirements above ## Recent Manual Adjustments Applied + - Fixed arrow endpoint positioning to prevent overlap with stage boxes - Moved mini CTK reuse arrow endpoint from y=285 to y=295 - Moved wheel fetch arrow endpoint from y=650 to y=645 - Repositioned text labels for better visual separation - Standardized all text to 12pt font size for consistency -- Changed arrow heads from black to orange to match arrow color +- Changed arrow heads from black to orange to match arrow color \ No newline at end of file From 91724fe080280f44d0e540dd078a6b838768d77d Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Sun, 7 Sep 2025 15:50:44 -0400 Subject: [PATCH 22/27] md files don't need spdx --- ci/.ci-pipeline-regen.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ci/.ci-pipeline-regen.md b/ci/.ci-pipeline-regen.md index c73fda1a1a4..7a8a5dd58aa 100644 --- a/ci/.ci-pipeline-regen.md +++ b/ci/.ci-pipeline-regen.md @@ -1,6 +1,3 @@ -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 - # CUDA Python CI Pipeline SVG Regeneration Instructions This file contains the prompt and requirements for regenerating `ci-pipeline.svg` with the same styling and content. @@ -105,4 +102,4 @@ This file contains the prompt and requirements for regenerating `ci-pipeline.svg - Moved wheel fetch arrow endpoint from y=650 to y=645 - Repositioned text labels for better visual separation - Standardized all text to 12pt font size for consistency -- Changed arrow heads from black to orange to match arrow color \ No newline at end of file +- Changed arrow heads from black to orange to match arrow color From 9ce239a25638c17c6e40722c584e99c9a5d49d54 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Sep 2025 00:36:35 +0000 Subject: [PATCH 23/27] Remove pull-request/* branches trigger event references from CI documentation Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 2 +- ci/.ci-pipeline-regen.md | 1 - ci/ci-pipeline.svg | 3 +-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 40315821eb3..6a0d4c37a73 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -101,7 +101,7 @@ Alternative Mermaid diagram representation: flowchart TD %% Trigger Events subgraph TRIGGER["🔄 TRIGGER EVENTS"] - T1["• Push to main branch
• Push to pull-request/* branches"] + T1["• Push to main branch"] T2["• Pull request
• Manual workflow dispatch"] T1 --- T2 end diff --git a/ci/.ci-pipeline-regen.md b/ci/.ci-pipeline-regen.md index 7a8a5dd58aa..90aa4acd78c 100644 --- a/ci/.ci-pipeline-regen.md +++ b/ci/.ci-pipeline-regen.md @@ -22,7 +22,6 @@ This file contains the prompt and requirements for regenerating `ci-pipeline.svg 2. **Trigger Events** (top blue box): - Push to main branch - Pull request - - Push to pull-request/* branches - Manual workflow dispatch 3. **Build Stage** (purple box): diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index bba2220805f..f65a2389b4f 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -25,8 +25,7 @@ TRIGGER EVENTS • Push to main branch • Pull request - • Push to pull-request/* branches - • Manual workflow dispatch + • Manual workflow dispatch From 9b86fb65a206e217fa2f8db599862c388df0de73 Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Sun, 7 Sep 2025 20:41:30 -0400 Subject: [PATCH 24/27] Update ci/ci-pipeline.svg --- ci/ci-pipeline.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index f65a2389b4f..1f0f559f1a3 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -25,7 +25,7 @@ TRIGGER EVENTS • Push to main branch • Pull request - • Manual workflow dispatch + • Manual workflow dispatch From 456444fa8906dc1eeff9e060eececca0aac482fa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Sep 2025 18:55:19 +0000 Subject: [PATCH 25/27] Add artifact flow arrows to TEST STAGE and remove empty line from SVG Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 4 +++- ci/.ci-pipeline-regen.md | 2 ++ ci/ci-pipeline.svg | 12 +++++++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6a0d4c37a73..07ffaf45c1c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -106,7 +106,7 @@ flowchart TD T1 --- T2 end - %% Build Stage + %% Build Stage subgraph BUILD["🔨 BUILD STAGE"] subgraph BUILD_PLATFORMS["Parallel Platform Builds"] B1["linux-64
(Self-hosted)"] @@ -156,8 +156,10 @@ flowchart TD %% Artifact Flow Arrows (Cache Reuse) GITHUB_CACHE -.->|"mini CTK reuse"| BUILD + GITHUB_CACHE -.->|"mini CTK reuse"| TEST %% Artifact Flow Arrows (Wheel Fetch) + GITHUB_ARTIFACTS -.->|"wheel fetch"| TEST GITHUB_ARTIFACTS -.->|"wheel fetch"| RELEASE %% Styling diff --git a/ci/.ci-pipeline-regen.md b/ci/.ci-pipeline-regen.md index 90aa4acd78c..7ddf9b970d5 100644 --- a/ci/.ci-pipeline-regen.md +++ b/ci/.ci-pipeline-regen.md @@ -53,6 +53,8 @@ This file contains the prompt and requirements for regenerating `ci-pipeline.svg - Additional artifact flow arrows (dashed, orange #FF9800): - From GitHub Cache (mini CTK) back to Build Stage with "mini CTK reuse" label - From GitHub Artifacts (wheels) to Release Pipeline with "wheel fetch" label + - **NEW**: From GitHub Cache (mini CTK) to Test Stage with "mini CTK reuse" label + - **NEW**: From GitHub Artifacts (wheels) to Test Stage with "wheel fetch" label - Arrow marker definition with hand-drawn style (orange arrow heads, not black) - Use stroke-dasharray="5,3" for artifact flow arrows diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index 1f0f559f1a3..e88a81b52ac 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -26,7 +26,6 @@ • Push to main branch • Pull request • Manual workflow dispatch - @@ -93,6 +92,17 @@ stroke="#FF9800" stroke-width="2.5" fill="none" stroke-linejoin="round" marker-end="url(#orangearrow)" stroke-dasharray="5,3"/> wheel fetch + + + + mini CTK reuse + + + + wheel fetch + From d2b397a43f0216aa1ef905395135c7b4d2560f98 Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Mon, 8 Sep 2025 15:05:14 -0400 Subject: [PATCH 26/27] Apply suggestions from code review --- CONTRIBUTING.md | 2 +- ci/ci-pipeline.svg | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 07ffaf45c1c..64c2e9a400a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -106,7 +106,7 @@ flowchart TD T1 --- T2 end - %% Build Stage + %% Build Stage subgraph BUILD["🔨 BUILD STAGE"] subgraph BUILD_PLATFORMS["Parallel Platform Builds"] B1["linux-64
(Self-hosted)"] diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index e88a81b52ac..b108d7ff3a9 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -94,12 +94,12 @@ - mini CTK reuse - wheel fetch From dc001e69076281cf9145817d90f7b2aaf5836ddc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Sep 2025 19:45:08 +0000 Subject: [PATCH 27/27] Fix SVG artifact flow arrows and add wheel upload label Co-authored-by: leofang <5534781+leofang@users.noreply.github.com> --- CONTRIBUTING.md | 4 ++-- ci/ci-pipeline.svg | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 64c2e9a400a..183d215865b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -150,8 +150,8 @@ flowchart TD %% Main Flow TRIGGER --> BUILD - BUILD --> ARTIFACTS - ARTIFACTS --> TEST + BUILD -.->|"wheel upload"| ARTIFACTS + ARTIFACTS -.-> TEST TEST --> RELEASE %% Artifact Flow Arrows (Cache Reuse) diff --git a/ci/ci-pipeline.svg b/ci/ci-pipeline.svg index b108d7ff3a9..eeff4c69fd1 100644 --- a/ci/ci-pipeline.svg +++ b/ci/ci-pipeline.svg @@ -57,7 +57,8 @@ cuda-pathfinder, cuda-python - + + wheel upload • Mini CTK cache - +