GPU-Initiated Networking (GIN)及其核心硬件基础 SCI

本文将系统性地详细介绍 GPU-Initiated Networking 及其核心硬件基础 SCI 。这两项技术共同代表了 NVIDIA 在超大规模计算领域迈向**「以 GPU 为中心」**架构的革命性一步。

1. 概述

------从「以 CPU 为中心」到「以 GPU 中心」的通信范式转移

在传统的高性能计算集群中,GPU 是强大的计算单元,但它们在网络通信中一直扮演着被动的角色。所有通信的发起、协调和管理都由 CPU 负责。这种「以 CPU 为中心」的模型带来了固有的性能瓶颈。

  1. 高延迟,GPU 必须等待 CPU 来发起通信,涉及内核退出、驱动调用、上下文切换等一系列开销。

  2. 粗粒度通信,通信通常以大的、批处理的形式进行(如在梯度同步时),无法与计算精细地交织。

  3. CPU 成为瓶颈,在极端规模下,管理成千上万个 GPU 的通信流会给 CPU 带来巨大负担。

GPU-Initiated Networking 的目标就是彻底颠覆这一模型,将通信的主动权直接赋予 GPU 本身。

2. GPU-Initiated Networking 详解

2.1. 核心定义

GPU-Initiated Networking 是一种硬件和软件架构,允许 正在执行计算的 GPU 内核线程 直接发起和完成网络操作,而无需退出内核、无需调用 CPU 驱动程序、也无需 CPU 的任何介入。

这意味着,一个 CUDA Kernel 中的线程可以像执行 LDG(加载)或 STG(存储)指令访问本地显存一样,直接执行诸如 SENDPUTGET 这样的操作来访问远程节点的内存

2.2. 工作原理与传统模式对比

我们通过一个具体的通信场景来对比两种模式:

场景:GPU-0 上的一个线程需要将一块数据发送到 GPU-1 的显存中。

传统模式 GPU-Initiated Networking 模式
1. 发起 GPU-0 计算内核结束,通过某种机制(如锁、标志位)通知 CPU。 GPU-0 的计算内核直接 在代码中调用通信原语(如 nvshmem_put_signal)。
2. 执行 CPU 接收到通知,调用 MPI/NCCL 库函数。库函数通过驱动程序与网卡交互,将命令提交给网卡。 GPU 线程通过专用硬件(SCI)将通信指令和参数直接提交给网卡。
3. 数据传输 网卡通过 GDR 从 GPU-0 显存读取数据,通过网络发送。 同上,网卡通过 GDR 直接读取数据并发送。
4. 完成通知 网卡通知 CPU 操作完成,CPU 再通知 GPU-0 可以继续下一个计算任务。 网卡可以直接通过信号或原子操作通知 GPU-0 的特定线程,该线程无需离开内核即可继续。

2.3. 关键特性与优势

  1. 极致的低延迟

    消除了所有 CPU 相关的软件栈开销(系统调用、驱动调度、进程上下文切换)。通信延迟从微秒级降低到纳秒级

  2. 真正的计算通信融合

    允许极细粒度的通信。单个线程可以在产生一小块数据后立刻将其发出,然后继续计算,实现了指令级的通信计算重叠。支持新的算法,如动态负载均衡、不规则通信模式(图计算、稀疏矩阵运算)。

  3. 简化编程模型

    通信逻辑可以直接写在 CUDA Kernel 内部,代码更紧凑、更直观,不再需要复杂的 CPU-GPU 同步和协调。

  4. 解放 CPU

    CPU 被彻底从通信管理任务中解放出来,可以专注于其他控制任务或运行自己的应用程序。

3. SCI (可扩展一致性接口)

SCI 是实现 GPU-Initiated Networking 的关键硬件基石。没有 SCI,上述所有设想都无法实现。

3.1. 核心定义

SCI 是集成在 NVIDIA GPU 内部的一个专用硬件处理单元。它的核心功能是管理与网络控制器之间的交互,并为 GPU 的数千个并发线程提供高效、一致的网络操作接口。

可以将 SCI 理解为 GPU 的 「网络协处理器」「通信前端」

3.2. SCI 的核心功能与挑战

GPU 发起网络通信面临几个巨大挑战:

大规模并行,意味着数万个线程可能同时想发起通信,如何管理妥当;

内存一致性,即,当 GPU 在计算的同时又直接操作网络,如何保证本地和远程内存状态的正确性;

原子操作,即,如何高效、正确地执行跨节点的原子读-修改-写操作;

SCI 专门设计用来解决这些挑战:

  1. 通信队列管理

    SCI 硬件管理着与网络控制器之间的命令队列。GPU 线程将通信指令(如 Put, Get, Atomic)提交到这些队列中。它处理了从数千个线程到有限数量网络队列的多路复用问题,确保了公平性和进度。

  2. 协议处理与卸载

    SCI 负责处理网络通信所需的部分底层协议,将这些复杂性从 GPU 计算核心中卸载掉。它与支持 NVLink-Network 的网卡(如 NVIDIA ConnectX-7 系列)紧密协同,实现高效的通信。

  3. 全局地址空间与原子性

    SCI 是实现 NVSHMEM 全局地址空间模型的关键硬件。它使得 GPU 线程能够使用一个统一的地址来访问本地或远程的显存。它直接在硬件层面支持跨节点的原子操作 (如 fetch-and-add, compare-and-swap),这对于许多并行算法至关重要。

  4. 信号与通知机制

    SCI 支持高效的完成通知机制。例如,一个 put 操作完成后,可以通过一个 signal 操作直接更新远程 GPU 的一个内存位置,远程 GPU 可以通过轮询该位置来感知数据到达。

NVLink-Network 是物理层的互联技术,提供了节点间的高速、低延迟数据传输通道。它是「路」。

SCI 是建立在 NVLink-Network 之上的控制和管理层。它是「交通控制系统」和「车辆」,使得 GPU 能够真正使用这条路。

两者结合,共同构成了支持 GPU-Initiated Networking 的完整硬件生态系统。

总结:技术意义与未来

GPU-Initiated Networking + SCI 的组合,其意义远不止于性能提升。它标志着超级计算的架构范式从「CPU 主导,GPU 协办」转向了 「GPU 主导,CPU 辅助」

对应用而言,它解锁了一整类之前因通信延迟和粒度问题而无法高效运行的算法,特别是在 AI、数据科学和模拟仿真领域。

对系统设计而言,它使得 GPU 成为真正的「一等公民」,能够自主地与集群中的任何资源进行交互,为构建更大规模、更高效率的 Exascale(百亿亿次)计算系统铺平了道路。

对编程而言,它使得像 NVSHMEM 这样的 PGAS(分区全局地址空间)编程模型能够以其最纯粹、最高效的形式实现,极大地简化了分布式 GPU 编程的复杂性。

这项技术目前主要应用于 NVIDIA 的高端计算平台(如 DGX SuperPOD with BaseCommand),但随着技术的成熟,它必将成为未来大规模 GPU 计算集群的标准配置。

相关推荐
web像素之境12 小时前
实时光线追踪加速硬件结构(详细版)
游戏·gpu·计算机图形学
wanzhong23333 天前
CUDA学习2-CPU和GPU的性能优化
深度学习·gpu·cuda·高性能计算
七宝大爷4 天前
GPU 发展简史:图形处理到通用计算的蜕变
gpu
HackerTom4 天前
vs code jupyter连gpu结点kernel
python·jupyter·gpu·vs code·远程
杰克逊的日记5 天前
大型 GPU 服务集群监控方案(>50 节点)
服务器·gpu·监控·算力
Baihai_IDP6 天前
面向 LLM 的 GPU 系统工程方法论
人工智能·面试·gpu
杰克逊的日记8 天前
GPU集群poc测试
gpu·算力·poc
博士僧小星9 天前
环境配置|GPUStack——为大模型而生的开源GPU集群管理器
开源·大模型·gpu·gpustack
I_belong_to_jesus16 天前
tiny-gpu入门4: ALU模块分析
gpu算力·gpu