Skip to content

feat(recipes): add l40-any accelerator overlay - #2366

Open
ntheanh201 wants to merge 4 commits into
NVIDIA:mainfrom
ntheanh201:feat/recipes-l40-any
Open

feat(recipes): add l40-any accelerator overlay#2366
ntheanh201 wants to merge 4 commits into
NVIDIA:mainfrom
ntheanh201:feat/recipes-l40-any

Conversation

@ntheanh201

Copy link
Copy Markdown

Summary

Adds the missing l40-any criteria-wildcard overlay. l40 is already a registered accelerator type, but no overlay provides it, so any query carrying accelerator=l40 fails to resolve.

Motivation / Context

The gap is reachable from a live cluster, not just from explicit flags. aicr snapshot on an L40 node detects accelerator: l40 from nodeTopology.label.nvidia.com/gpu.product, but the snapshot-driven aicr recipe --snapshot then fails:

[INVALID_REQUEST] no recipe provides accelerator 'l40' for criteria(accelerator=l40)

The accelerator type itself is valid — --accelerator foobar is rejected at parse time with invalid accelerator type, while --accelerator l40 parses and fails only at resolution. README.md also lists L40 under supported accelerators, so the catalog and the docs currently disagree.

Fixes: #TBD
Related: N/A

Type of Change

  • New feature (non-breaking change that adds functionality)

Component(s) Affected

  • Recipe engine / data (pkg/recipe)
  • Bundlers (pkg/bundler, pkg/component/*) — golden only, no code change
  • Other: recipes/overlays/

Implementation Notes

Mirrors l40s-any. L40 is the same Ada Lovelace generation as L40S and tracks the same gpu-operator support timeline, so it carries the same deployment-phase floor: the four standard checks plus Deployment.gpu-operator.version >= v24.6.0, matching the A100/H100/H200/L40S baseline. Concrete leaves can tighten it later.

Three goldens were regenerated deliberately with AICR_UPDATE_GOLDEN=1 — catalog parity, coverage matrix, and stock render. The change is purely additive: one new leaf, no existing leaf hash moved.

Consistent with its *-any peers, this leaf declares no conformance or performance checks (R:0 D:4 P:0 C:0).

Testing

go test ./pkg/recipe/... ./pkg/bundler/     # pass
make lint-yaml                              # pass
make license                                # pass

Also verified against real L40 hardware — a 2-node bare-metal cluster, K8s v1.35.3, NVIDIA L40, driver 580.173.02, gpu-operator v26.3.0:

readiness constraint passed: K8s.server.version  >= 1.25 vs v1.35.3
validator completed: operator-health        status=passed
validator completed: gpu-operator-version   status=passed   # >= v24.6.0 vs v26.3.0

Two deployment checks did not evaluate on that cluster, both for environmental reasons unrelated to this overlay:

  • check-nvidia-smiSkip: IsNodeGpuBusy reports the node busy because a resident production pod holds a GPU. The check requires a node with zero GPU-requesting pods.
  • expected-resources → timeout: the cluster has no AICR bundle deployed, so 7 of the recipe's 11 declared components are absent and the poll never converges.

As a control, the already-merged l40s-any recipe was run against the same cluster with the same flags and produced identical outcomes — operator-health passed, gpu-operator-version passed, check-nvidia-smi skipped, expected-resources timed out, with the same messages. Both non-passing checks are therefore properties of this environment, not of the new overlay.

Note: make qualify was not run in full — it needs the complete pinned toolchain (Docker, goreleaser, e2e). The targeted suites above cover the changed surface; the three golden tests are what gate a new leaf.

Risk Assessment

  • Low — Isolated change, well-tested, easy to revert

Rollout notes: Data-only. No code paths change. Queries that previously errored on accelerator=l40 now resolve; no existing recipe is affected.

Checklist

  • Tests pass locally (make test with -race) — ran go test ./pkg/recipe/... ./pkg/bundler/; full make qualify not run (see Testing)
  • Linter passes (make lint) — ran make lint-yaml and make license
  • I did not skip/disable tests to make CI green
  • I added/updated tests for new functionality — the catalog-parity, coverage-matrix, and stock-render goldens cover the new leaf automatically
  • I updated docs if user-facing behavior changed — docs/user/recipe-health.md is bot-regenerated and was intentionally left out; happy to include it if preferred
  • Changes follow existing patterns in the codebase
  • Commits are cryptographically signed (git commit -S)

`l40` is a registered accelerator type, but no overlay provides it, so any
query carrying `accelerator=l40` fails to resolve. This is reachable from a
live cluster: `aicr snapshot` on an L40 node detects `accelerator: l40` from
`nodeTopology.label.nvidia.com/gpu.product`, and the snapshot-driven
`aicr recipe --snapshot` then fails with
`no recipe provides accelerator 'l40'`.

Add the criteria-wildcard overlay, mirroring `l40s-any`. L40 is the same Ada
Lovelace generation as L40S and tracks the same gpu-operator support
timeline, so it carries the same deployment-phase floor: the four standard
checks plus a `gpu-operator >= v24.6.0` pin matching the
A100/H100/H200/L40S baseline.

Goldens regenerated deliberately with AICR_UPDATE_GOLDEN=1 (catalog parity,
coverage matrix, stock render). The change is additive: one new leaf, and no
existing leaf hash moved.

Signed-off-by: The Anh Nguyen <ntheanh201@gmail.com>
@ntheanh201
ntheanh201 requested review from a team as code owners August 25, 2026 01:13
@copy-pr-bot

copy-pr-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@github-actions

Copy link
Copy Markdown
Contributor

Welcome to AICR, @ntheanh201! Thanks for your first pull request.

Before review, please ensure:

  • All commits are signed off per the DCO
  • CI checks pass (tests, lint, security scan)
  • The PR description explains the why behind your changes

A maintainer will review this soon.

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 335f6521-d7e5-4b0c-a7a3-0a4437f977e3

📥 Commits

Reviewing files that changed from the base of the PR and between 3faf301 and a491204.

📒 Files selected for processing (4)
  • pkg/bundler/testdata/stock_render_golden.yaml
  • pkg/recipe/testdata/catalog_parity_golden.yaml
  • pkg/recipe/testdata/coverage_golden.yaml
  • recipes/overlays/l40-any.yaml

Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review.


📝 Walkthrough

Walkthrough

The change adds the l40-any wildcard recipe metadata overlay. It applies deployment checks, NVIDIA SMI validation, and a minimum GPU Operator version of v24.6.0. Generated golden files now include the overlay digest, catalog digest, and successful unconstrained L40 coverage entry.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to a4912

This localized additive change enables L40 recipe resolution without modifying existing recipes or code paths, and no actionable merge-blocking risk remains beyond normal checks and review.

Suggested reviewers: arangogutierrez

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely identifies the main change: adding the l40-any accelerator overlay.
Description check ✅ Passed The description directly explains the missing l40-any overlay, its behavior, implementation, testing, and rollout impact.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

Recipe evidence check

No leaf overlays affected by this PR.

This gate is warning-only and never blocks merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants