openclaw / openclaw/openclaw-windows-node

Qualify NVIDIA GPUs by per-device CUDA compute capability

Open
#1,195 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

clawsweeper:needs-maintainer-review clawsweeper:needs-product-decision clawsweeper:no-new-fix-pr clawsweeper:source-repro impact:other issue-rating: 🦞 diamond lobster P2 stale
Dominant language
C#
Stars
2.1k
Forks
295
Avg merge
1d 6h
Merged PRs (30d)
99

Description

Problem

The NVIDIA hardware probe records the global CUDA driver API version from nvmlSystemGetCudaDriverVersion_v2 and copies its major version onto every detected GPU as CudaMajorVersion.

https://github.com/openclaw/openclaw-windows-node/blob/31dffdb0dbd9eebc8b98ce35cf13ab60762410a9/src/OpenClaw.Shared/Inference/NvmlHostHardwareProbe.cs#L174-L207

Eligibility then compares that global driver value with the runtime CUDA version and reports CudaCapabilityTooLow:

https://github.com/openclaw/openclaw-windows-node/blob/31dffdb0dbd9eebc8b98ce35cf13ab60762410a9/src/OpenClaw.Shared/Inference/Catalog/LocalInferenceEligibility.cs#L121-L138

The CUDA driver API version and a GPU's compute capability are different facts. The current code does not call the per-device nvmlDeviceGetCudaComputeCapability API and therefore does not prove that each selected GPU architecture is supported by the pinned llama-server CUDA build.

NVIDIA documents the per-device query here:

https://docs.nvidia.com/deploy/nvml-api/group__nvmlDeviceQueries.html

Impact

A sufficiently new installed driver can satisfy the global CUDA-version check without establishing that a particular GPU is compatible with the architecture set supported by the pinned runtime artifacts. On mixed-generation systems, eligibility can select a device without explicit per-device compatibility evidence and discover the incompatibility only after downloading and launching the runtime.

Expected behavior

  • Record the CUDA driver API version separately and name it accordingly.
  • Probe compute-capability major and minor for every NVML device.
  • Define the minimum or supported compute capabilities for each pinned runtime variant.
  • Require both a compatible driver and compatible selected device.
  • Fail closed when required per-device capability evidence is unavailable.
  • Keep selection and launch pinned to the same stable GPU UUID.

Tests

Add coverage for:

  • Compatible driver and compatible GPU
  • Compatible driver but unsupported GPU compute capability
  • Mixed-generation multiple-GPU selection
  • Missing or unsupported NVML compute-capability query
  • Clear separation of driver-version and device-capability failure reasons

Tracking requested by @joelagnel.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with src/OpenClaw.Shared/Inference/NvmlHostHardwareProbe.cs and LocalInferenceEligibility.cs to trace how driver versions and selected GPU UUIDs are used. Add coverage for the five listed compatibility and failure cases, then verify that driver and per-device capability checks remain separate and selection fails closed when capability evidence is unavailable.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
ai, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.