NVCA creates one shared ComputeDomain instead of one per NVLink domain index
@estroz is already working on this.
Since Sep 4, 2026.
- Dominant language
- Go
- Stars
- 218
- Forks
- 72
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 417
Description
Describe the bug
When NVCA allocates a ComputeDomain for a function's Pods on an
NVLink-optimized cluster, it creates a single, fixed-name ComputeDomain
(and backing channel ResourceClaimTemplate) for the whole function,
regardless of how many distinct
dra.nvcf.nvidia.io/required-nvlink-domain-index values are present
across that function's Pods.
A ComputeDomain represents a single IMEX domain. Pods that set
different required-nvlink-domain-index values are, by definition,
meant to be scheduled into different, independent NVLink domains (this
is exactly what the annotation's existing pod-affinity behavior already
enforces). Pointing every index group at the same shared ComputeDomain
object is inconsistent with that intent.
Steps or code to reproduce bug
- Enable the
NVLinkOptimizedcluster attribute. - Deploy a Helm function whose Pods set two or more distinct
dra.nvcf.nvidia.io/required-nvlink-domain-indexvalues (for example,
"0"and"1") to form separate logical NVLink domain groups. - Observe that NVCA creates only one
ComputeDomainobject for the
function, shared by both index groups, instead of oneComputeDomain
per distinct index.
Expected behavior
NVCA should create one ComputeDomain per distinct
required-nvlink-domain-index value present in a function's Pods, and
each Pod's channel resource claim should reference the ComputeDomain
that corresponds to its own index value.
Additional context
This is a corollary of the ComputeDomain over-allocation issue
(#1572): fixing over-allocation naturally requires deciding how many
ComputeDomain objects a function needs, and "one shared domain" was
never correct once a function can declare more than one logical NVLink
domain group.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.