[Issue]: Intel Granite Rapids (GNR) are misdetected with lower UPI InterCpuBw

Open Beginner friendly
#2,107 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
72/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
cpp

Research direction

Start in src/graph/topo.cc at ncclTopoGetInterCpuBw and inspect how Intel CPU model IDs select the inter-socket bandwidth constants. Verify the Granite Rapids model IDs and the proposed 48.0 bandwidth, including whether model 0xAE applies. Done means GNR systems report SYS[48.0] instead of SYS[22.0] and the related all_reduce_perf busbw improves.

Written by the indexing model from the issue text.

Description

How is this issue impacting you?

Lower performance than expected

Share Your Debug Logs

Hello

Current version of ncclTopoGetInterCpuBw function has no support of GNR family of Intel Xeon CPUs
https://github.com/NVIDIA/nccl/blob/v2.30.3-1/src/graph/topo.cc#L73

  if (cpu->cpu.arch == NCCL_TOPO_CPU_ARCH_X86 && cpu->cpu.vendor == NCCL_TOPO_CPU_VENDOR_INTEL) {
    *bw =
      cpu->cpu.model == NCCL_TOPO_CPU_MODEL_INTEL_ERP ? ERP_QPI_BW :
      cpu->cpu.model == NCCL_TOPO_CPU_MODEL_INTEL_SRP ? SRP_QPI_BW :
      cpu->cpu.model == NCCL_TOPO_CPU_MODEL_INTEL_SKL ? SKL_QPI_BW :
      BDW_QPI_BW;
  }

I think that familyId == 6 && modelId == 0xAD will detect GNR Xeon chips, and they have UPI speed of 24 GT/s per channel (with multiple UPI links between sockets)
https://www.intel.com/content/www/us/en/products/sku/242668/intel-xeon-6507p-processor-48m-cache-3-50-ghz/specifications.html

I think for NCCL graph this will be GNR_QPI_BW equal to 48.0

Some sources also mention modelId 0xAE as GRANITERAPIDS D, but they are probably single socket only.

Current version may allocate less channels for 2 NUMA GNR machines with multiple PCIe-only GPUs without NVlink. I had 'SYS[22.0]' in NCCL_DEBUG with current code, and 'SYS[48.0]' after fixing, and busbw of all_reduce_perf improved after the fix.

Steps to Reproduce the Issue

No response

NCCL Version

2.30.3

Your platform details

No response

Error Message & Behavior

No response

Dominant language
C++
Stars
5.1k
Forks
1.4k
Avg merge
2h 3m
Merged PRs (30d)
2

Contributor guide

Open the contributing guide

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.

More from NVIDIA/nccl

All issues in NVIDIA/nccl

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.