Skip to content

[Question]: Why does GIN require both crossNicSupported and !globalNicFused conditions? #1993

@yesho-top

Description

@yesho-top

Question

Question

I'm trying to understand the requirements for enabling GIN (GPU-Initiated Networking) support in NCCL and found the following conditions in init.cc:

comm->ginSupport = comm->sharedRes->ginState.ncclGin != nullptr 
                   && crossNicSupported 
                   && !globalNicFused;

Background
From the code analysis:

  • crossNicSupported checks if NCCL_CROSS_NIC != 0 (multi-NIC topology)
  • globalNicFused is set to true when any NIC has vProps.ndevs > 1 (fused/merged NICs)

Questions

  1. Why is crossNicSupported required for GIN?
  • Does GIN not provide benefits in single-NIC scenarios?
  • s the overhead of GIN not worthwhile without multi-rail networks?
  1. Why does !globalNicFused disable GIN?
  • What technical limitations prevent GIN from working with fused NICs?
  • Is this related to direct GPU-to-physical-NIC mapping requirements?
  1. Are there plans to support GIN with fused NICs in the future?
  • if use two-port, and it is not bonded, it will be considered as fused Nics, so gin cannot be used.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions