Skip to content

Enable Vulkan inference on NVIDIA runner images - #22

Merged
ndizazzo merged 2 commits into
mainfrom
scama/vulkan-runner
Sep 10, 2026
Merged

ndizazzo merged 2 commits into
mainfrom
scama/vulkan-runner

Conversation

@i386

@i386 i386 commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

The shared NVIDIA runner image lacked the Vulkan loader, tools, graphics capability, and a live device check, so the new product integration Vulkan smoke could not run on the existing gpu-nvidia scale set.

This adds Vulkan support to the CUDA and Vulkan image profiles while retaining CUDA, and introduces verify-vulkan-device to prove the NVIDIA GPU is visible through both NVML and Vulkan. The verifier checks nvidia-smi, vulkaninfo --summary, and vendor ID 0x10de; build-time validation checks the loader, tools, helper, and declared driver capabilities without assuming a GPU is present during image construction.

Validation:

  • all 8 tests/*.test.sh suites
  • ShellCheck for scripts and tests
  • Actionlint
  • git diff --check

Deployment acceptance still requires building and promoting the image, updating the gpu-nvidia scale-set digest, retaining runtimeClassName: nvidia and nvidia.com/gpu: 1, and running verify-vulkan-device on the physical runner.

Summary by CodeRabbit

  • New Features

    • Added Vulkan device verification for NVIDIA-backed Vulkan and CUDA runners.
    • CUDA and Vulkan images now include Vulkan diagnostics and required graphics capabilities, enabling both CUDA and Vulkan inference.
    • Added checks for NVIDIA drivers, Vulkan availability, and physical GPU devices.
  • Documentation

    • Documented Vulkan/CUDA image contents and runner verification requirements.
  • Tests

    • Added coverage for successful and failed Vulkan runner checks, package profiles, image configuration, and validation planning.

@coderabbitai

coderabbitai Bot commented Sep 6, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

Warning

Review limit reached

Next included review available in 18 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: b8d6ec5d-af29-41d7-92c8-ab2ef9d54a9f

📥 Commits

Reviewing files that changed from the base of the PR and between f73c2a9 and 8b82897.

📒 Files selected for processing (10)
  • Dockerfile
  • README.md
  • docs/AUDIT.md
  • profiles/backends/cuda.yml
  • profiles/backends/vulkan.yml
  • scripts/plan-pr-families.sh
  • scripts/verify-runner-image.sh
  • scripts/verify-vulkan-device.sh
  • tests/vulkan-runner.test.sh
  • tests/workflow-matrix.test.sh

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 8053ec65-2708-4710-a347-f7ecd2a175f1

📥 Commits

Reviewing files that changed from the base of the PR and between f73c2a9 and 8b82897.

📒 Files selected for processing (10)
  • Dockerfile
  • README.md
  • docs/AUDIT.md
  • profiles/backends/cuda.yml
  • profiles/backends/vulkan.yml
  • scripts/plan-pr-families.sh
  • scripts/verify-runner-image.sh
  • scripts/verify-vulkan-device.sh
  • tests/vulkan-runner.test.sh
  • tests/workflow-matrix.test.sh

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The change adds Vulkan runtime packages and verification to Vulkan and CUDA images. It validates NVIDIA Vulkan devices, integrates image contract checks, narrows affected backend planning, and adds tests and documentation.

Changes

Vulkan runner support

Layer / File(s) Summary
Image and package configuration
Dockerfile, profiles/backends/*.yml
Vulkan and CUDA images install Vulkan runtime tools, include verify-vulkan-device, and set NVIDIA compute, utility, and graphics capabilities.
Runtime device verification
scripts/verify-vulkan-device.sh, scripts/verify-runner-image.sh
The scripts validate required capabilities, tools, NVIDIA device enumeration, Vulkan physical-device availability, and NVIDIA vendor identification.
Validation and workflow support
tests/vulkan-runner.test.sh, tests/workflow-matrix.test.sh, scripts/plan-pr-families.sh, README.md, docs/AUDIT.md
Tests cover successful and failing verification paths, package and image contracts, and targeted family planning. Documentation records the Vulkan runtime requirements and verification command.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to 8b828

CUDA and Vulkan runner images now include Vulkan diagnostics and validate that an NVIDIA Vulkan device is available before inference. The implementation includes matching image-contract and verifier coverage, with no concrete current-head merge-blocking risk identified.

Sequence Diagram(s)

sequenceDiagram
  participant RunnerImage
  participant verify-vulkan-device
  participant nvidia-smi
  participant vulkaninfo
  RunnerImage->>verify-vulkan-device: Start verification
  verify-vulkan-device->>nvidia-smi: Enumerate NVIDIA devices
  nvidia-smi-->>verify-vulkan-device: Return GPU list
  verify-vulkan-device->>vulkaninfo: Collect Vulkan summary
  vulkaninfo-->>verify-vulkan-device: Return device and vendor data
  verify-vulkan-device-->>RunnerImage: Report success or diagnostics
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 5 files. (5 skipped: 5 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: enabling Vulkan inference on NVIDIA runner images.
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.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 5 files. (5 skipped: 5 unsupported.)

✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch scama/vulkan-runner

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@i386
i386 marked this pull request as ready for review September 6, 2026 04:40
@ndizazzo
ndizazzo self-requested a review September 9, 2026 23:08
i386 and others added 2 commits September 9, 2026 19:09
nvidia-smi -L exits zero on some driver builds even when it lists no
device, so the exit status alone did not establish that NVML saw a GPU.
Assert the enumerated output instead and cover the empty-enumeration
case in the Vulkan runner suite.
@ndizazzo
ndizazzo force-pushed the scama/vulkan-runner branch from 22ccfe6 to 8b82897 Compare September 9, 2026 23:13
@ndizazzo

ndizazzo commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.


Your included review limit is currently reached under our Fair Usage Limits Policy. This review may still proceed through usage-based billing if eligible. Your next included review will be available in 18 minutes.

@ndizazzo
ndizazzo merged commit 17085b9 into main Sep 10, 2026
46 checks passed
@ndizazzo
ndizazzo deleted the scama/vulkan-runner branch September 10, 2026 05:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants