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 计算集群的标准配置。

相关推荐
Smoothcloud_润云9 天前
Hermes Agent 的上下文记忆机制:一个开源 Agent 是怎么"记住"你的
人工智能·agent·gpu
RainbowC014 天前
CUDA软件实现跨线程块同步
gpu
劈星斩月17 天前
从“画图”到“算数”:GPU如何站上AI时代的C位
人工智能·gpu
逻极18 天前
Windows 平台 Ollama AMD GPU 一键编译指南:基于 ROCm 7.1 的自动化实战
人工智能·windows·stm32·自动化·gpu·amd·ollama
Luchang-Li20 天前
GPU传输带宽等信息监控nvidia-smi
人工智能·gpu·监控·性能·带宽
插件开发21 天前
CUDA11-VS2015安装-工具链测试-Helloworld程序
c++·gpu·cuda
DigitalOcean22 天前
微调后的 LLM 如何部署到生产环境?从GPU 推理端点的搭建、测试与上线全流程
llm·gpu
ALINX技术博客23 天前
【黑金云课堂】FPGA技术教程Linux开发:摄像头GPU渲染显示/Qt OpenGLES使用
linux·qt·fpga开发·gpu
模型时代1 个月前
GPU之外,立讯精密想吃下AI数据中心的“连接生意“
gpu·数据中心·立讯精密
IC修真院1 个月前
高赞问题:NPU可不可以代替GPU?
gpu·ic设计·芯片·微电子·数字ic·npu