Programming Model and Applications for Grace Hopper Superchip

Vishal Mehta, Mathias Wagner, Devtech Compute
GTC, March 2023

目录

  1. Grace Hopper Superchip 概述
  2. Grace Hopper 架构

    • Hopper 架构:H100 GPU 关键特性
    • H100 在 HPC 和 AI 领域的领导地位
    • GRACE 架构
    • NVIDIA Grace CPU 性能和效率
    • Grace Hopper Superchip 结构
    • Grace Hopper 平台
    • Grace Hopper 利用率:弹性计算
  3. Grace Hopper 应用与性能

    • 异构计算概述
    • 加速系统上的应用分类

      • 完全 GPU 加速
      • 部分 GPU 加速
    • 高带宽内存访问与自动数据迁移

      • GPU 访问 GPU 内存带宽
      • CPU 访问 CPU 内存带宽
      • GPU 访问 CPU 内存带宽
    • 应用案例分析

      • OpenFoam
      • NAMD Collective Variables
      • CP2K
      • Hash Joins TPC-H Query 4
    • 加速系统上的应用原则

  4. 内存一致性 (Coherent Memory)

    • 传统 X86 + GPU:独立的页表
    • Grace Hopper:地址转换服务 (ATS)
    • Grace Hopper:统一内存的自动迁移
    • Grace Hopper 中的缓存一致性
    • 多节点 Grace Hopper 访问路径
  5. Grace Hopper 编程模型与内存管理

    • 异构内存的直接访问 (cudaMalloc)
    • CUDA 托管内存的直接访问 (cudaMallocManaged)
    • 系统分配内存 (传统 vs. Grace Hopper)
    • 异构编程示例 (cudaMalloc)
    • 异步异构编程 (Grace Hopper 优势)
    • CUDA 统一内存或托管内存 (工作流)

      • 内存分配
      • CPU 写入数据
      • GPU 启动核函数
      • 数据预取
    • 系统分配内存 (深入探讨)

      • 系统分配器
      • CUDA 内存提示
  6. 具有 CPU/GPU 一致性的应用程序实例

    • cuCollections 哈希图基准测试
    • 通过优化内存访问增加性能
  7. Grace Hopper Superchip 总结


1. Grace Hopper Superchip 概述

Grace Hopper Superchip 专为巨型规模的 AI 和 HPC 而设计,具备以下关键特性:
* 最高加速性能:通过 Grace CPU 和 Hopper GPU 加速实现。
* GPU 可用内存接近 600GB:支持巨型 AI 模型进行训练和推理。
* 最高内存带宽 4 TB/s:采用 LPDDR5X 和 HBM3。
* 900GB/S 相干接口:通过 NVLink-C2C 连接 Grace 和 Hopper。
* 运行完整的 NVIDIA 计算栈:支持 HPC、AI 和 Omniverse 应用。

Grace Hopper Superchip Overview
Grace Hopper Superchip Overview

2. Grace Hopper 架构

Hopper 架构:H100 GPU 关键特性

Hopper 架构,特别是 H100 GPU,提供了多项创新,进一步提升了性能:
* 第二代多实例 GPU (Multi-Instance GPU)
* 机密计算 (Confidential Computing)
* PCIe Gen5
* 更大的 60 MB L2 缓存
* 96GB HBM3,带宽达到 4 TB/s
* 132 个流多处理器 (SMs)
* 第四代 Tensor 核心
* 线程块簇 (Thread Block Clusters)
* 第四代 NVLink,总带宽达到 900 GB/s

Hopper Architecture H100 GPU Key Features
Hopper Architecture H100 GPU Key Features

CUDA 编程模型和 Hopper 架构应用优化是后续的深入讨论点。

H100 在 HPC 和 AI 领域的领导地位

NVIDIA H100 在 HPC 和 AI 训练方面展现出显著的性能提升。

HPC GOLDEN SUITE 加速
与 2016 年的 Broadwell 双路处理器相比,H100 实现了 470x 的性能加速。

AI 训练
H100 在各种 AI 模型训练中相较于 A100 提供了更高的性能:
* Mask R-CNN
* GPT-3 (16B 参数)
* DLRM (14TB 嵌入)
* GPT-3 (175B 参数)
* MoE Switch-XXL (395B 参数)

H100 continues NVIDIA's leadership in HPC and AI
H100 continues NVIDIA's leadership in HPC and AI

GRACE 架构

GRACE 架构基于 ARM Neoverse V2 和 NVIDIA 可扩展相干性结构,提供了强大的 CPU 能力:
* 核心配置:72 个 Neoverse V2 核心,Armv9,SVE2 支持 4x128b。
* 缓存配置
* 每个核心 64KB i-cache 和 64KB d-cache。
* 每个核心 1 MB L2 缓存。
* 117 MB L3 SCF 缓存。

GRACE Architecture
GRACE Architecture

NVIDIA Grace CPU 性能和效率

Grace CPU 实现了数据中心吞吐量 2 倍的提升。
* CFD (计算流体动力学):1.9X 相对吞吐量。
* 大数据 (Big Data):2.0X 相对吞吐量。
* 微服务 (Microservices):2.3X 相对吞吐量。
这些性能均与下一代 x86 CPU 相比。

Nvidia Grace CPU Delivers Breakthrough Performance and Efficiency
Nvidia Grace CPU Delivers Breakthrough Performance and Efficiency

Grace Hopper Superchip 结构

Grace Hopper Superchip 使得 GPU 能够以 CPU 内存速度访问 CPU 内存,实现了硬件一致性。
* CPU 部分
* CPU LPDDR5X 240 GB。
* Grace CPU。
* 500 GB/s 内存带宽。

Grace Hopper Superchip
Grace Hopper Superchip

Grace Hopper 平台

Grace Hopper 平台通过 NVLink 和 InfiniBand 实现大规模扩展。

Grace Hopper Platform
Grace Hopper Platform

Grace Hopper 利用率:弹性计算

系统管理员可以组合 CPU 分区和 GPU 实例。NVLink C2C 可以通过 CPU 分区进行分区。
* 左侧图:展示了 NVLINK-C2C 的分区,分为 PARTID 0 和 PARTID 1,每个分区包含 LPDDR、SCC 和 CSN 块。
* 右侧图:展示了 GPU 的多实例 GPU (MIG) 分区,例如 MIG partition 0。

Grace Hopper Utilization
Grace Hopper Utilization

3. Grace Hopper 应用与性能

异构计算概述

异构计算结合了不同类型的处理器,每种处理器专精于不同类型的执行。一个应用程序可以同时利用多个处理器。
应用程序可分为三类:
* 完全 GPU 加速 (Fully GPU Accelerated)
* 部分 GPU 加速 (Partially GPU Accelerated)
* 相干 GPU 加速 (Coherently GPU Accelerated)

Heterogeneous Computing
Heterogeneous Computing

加速系统上的应用分类

完全 GPU 加速

在这类应用中,计算几乎完全在 GPU 上完成,数据也驻留在 GPU 内存中。CPU 和数据传输对性能的限制极小或没有限制。

Application on Accelerated Systems Fully GPU Accelerated
Application on Accelerated Systems Fully GPU Accelerated

部分 GPU 加速

随着 GPU 速度越来越快,应用程序越来越受非 GPU 因素的限制,例如:
* 主要受数据传输 (PCIe) 限制:CPU 和 GPU 之间频繁的数据传输成为瓶颈。
* 主要受 CPU 限制:GPU 可能等待 CPU 完成其任务或准备数据。

Application on Accelerated Systems Partially GPU Accelerated
Application on Accelerated Systems Partially GPU Accelerated

高带宽内存访问与自动数据迁移

Grace Hopper 架构通过 NVLink C2C 实现了 CPU 和 GPU 之间的高带宽内存访问和自动数据迁移。

GPU 访问 GPU 内存带宽

GPU 访问其自身的 HBM3 内存时,带宽表现如下:
- 峰值:4000 GB/sec
- 实际达到:3732 GB/sec
GPU访问GPU内存

CPU 访问 CPU 内存带宽

CPU 访问其自身的 LPDDR5X 内存时,带宽表现如下:
- 峰值:500 GB/sec
- 实际达到:475 GB/sec
CPU访问CPU内存

GPU 访问 CPU 内存带宽

GPU 通过 NVLink C2C 访问 CPU 的 LPDDR5X 内存时,带宽表现如下:
- 峰值:500 GB/sec
- 实际达到:486 GB/sec
这表明 GPU 能够以接近 CPU 访问自身内存的峰值带宽来访问 CPU 内存,彰显了 Grace Hopper 架构中内存访问的灵活性和高效率。
GPU访问CPU内存

应用案例分析

OpenFoam

OpenFoam 是一个由 OpenCFD 开发的计算流体动力学 (CFD) 工具箱,在汽车及其他工程领域广泛应用。它包含高度可配置的流体流动求解器,并利用 GPU 加速的 AMGX 线性求解器。OpenFoam 当前是部分 GPU 加速,但主要受限于 CPU 性能。

通过 Nsight Systems 对 OpenFoam 进行性能分析显示:

NAMD Collective Variables

NAMD 是一款分子动力学模拟软件,其 Collective Variables 功能由第三方 Colvars 模块提供(纯 CPU 实现)。此功能是流行的扩展,也用于 Gromacs、LAMMPS 等软件,并且当前只与 NAMD 的 GPU 卸载模式兼容。NAMD 当前是部分 GPU 加速,但主要受限于 CPU 性能。

CP2K

CP2K 是一款量子化学应用,实现了多种方法,但许多尚未 GPU 加速。内存容量限制常常要求将部分数据保留在系统内存中。CP2K 当前是部分 GPU 加速,但主要受限于数据传输。

通过 Nsight Systems 对 CP2K RPA 进行性能分析显示:

Hash Joins TPC-H Query 4

哈希连接 (Hash Joins) TPC-H Query 4 包含连接操作和分组聚合。该应用是部分 GPU 加速的,但主要受限于数据传输。

加速系统上的应用原则

加速系统上的应用应充分利用 GPU / CPU 的一致性,并利用所有可用的系统特性。在这些系统中,阶段之间不一定存在清晰的界限。
加速系统上的应用

4. 内存一致性 (Coherent Memory)

传统 X86 + GPU:独立的页表

在传统的 X86 + GPU 架构中,CPU 和 GPU 拥有独立的页表。

Grace Hopper:地址转换服务 (ATS)

Grace Hopper 引入了地址转换服务 (ATS)。
- CPU 物理内存 (LPDDR5X, Page A) 和 GPU 物理内存 (HBM3, Page B)。
- GRACE CPU 和 HOPPER GPU 通过 NVLINK C2C 连接。
- 系统页表 (将 CPU malloc() 转换为 CPU 或 GPU 地址) 统一管理内存。
- CPU 常驻访问 (PTE A) 指向 CPU 物理内存中的 Page A。
- 远程访问 (PTE B) 通过 NVLINK C2C 指向 GPU 物理内存中的 Page B。
- GPU 常驻访问直接指向 GPU 物理内存中的 Page B。
ATS 实现了 CPU 和 GPU 共享一个统一的系统页表,使得远程访问成为可能。
Grace Hopper 地址转换服务 (ATS)

Grace Hopper:统一内存的自动迁移

Grace Hopper 实现了统一内存的自动数据迁移。
- 初始时,数据页面 (Page A) 可能位于 CPU 物理内存。
- GRACE CPU 偶尔访问 Page A (Infrequent accesses)。
- 如果 HOPPER GPU 对 Page A 的访问变得频繁 (Frequent accesses),系统将检测到并自动将 Page A 从 CPU 物理内存迁移到 GPU 物理内存。
- 数据迁移能够提高性能。
Grace Hopper 统一内存的自动迁移

Grace Hopper 中的缓存一致性

Grace Hopper 通过 NVLink C2C 实现了缓存一致性访问。
- CPU 访问 GPU 内存
- GRACE CPU 核心通过 CPU L3 缓存 (GPU 缓存行) 访问 NVLINK C2C,进而访问 GPU HBM3。
- CPU 通过“签出缓存行”来访问 GPU 内存。

多节点 Grace Hopper 访问路径

本节介绍了多节点Grace Hopper与内存一致性NVLink的访问路径。

多节点Grace Hopper访问路径图
多节点Grace Hopper访问路径图

该图展示了两个Grace Hopper节点之间的连接和数据访问路径:

5. Grace Hopper 编程模型与内存管理

Grace Hopper超级芯片的内存模型旨在优化异构内存访问。

异构内存的直接访问 (cudaMalloc)

本节比较了PCIe H100和Grace Hopper在cudaMalloc内存模型下的表现。

Grace-Hopper内存模型 - cudaMalloc
Grace-Hopper内存模型 - cudaMalloc

CUDA 托管内存的直接访问 (cudaMallocManaged)

本节比较了PCIe H100和Grace Hopper在cudaMallocManaged内存模型下的表现。

Grace-Hopper内存模型 - cudaMallocManaged
Grace-Hopper内存模型 - cudaMallocManaged

系统分配内存 (传统 vs. Grace Hopper)

本节比较了PCIe H100和Grace Hopper在系统分配内存方面的处理。

Grace-Hopper内存模型 - 系统分配内存
Grace-Hopper内存模型 - 系统分配内存

异构编程示例 (cudaMalloc)

这是一个在x86平台和Grace Hopper上均可工作的异构编程示例,使用cudaMalloc

异构编程示例
异构编程示例

异步异构编程 (Grace Hopper 优势)

本节比较了x86 + Hopper与Grace Hopper在异步异构编程中使用cudaMallocHostcudaHostRegister的区别。

在x86 + Hopper平台上:
异步异构编程 - x86+Hopper

在Grace Hopper平台上:
异步异构编程 - Grace Hopper

CUDA 统一内存或托管内存 (工作流)

此内存模型通过移动内存页面,使得代码可以在x86和Grace Hopper之间移植。

内存分配

CUDA统一内存示例 - 分配
CUDA统一内存示例 - 分配

CPU 写入数据

CUDA统一内存示例 - CPU写入
CUDA统一内存示例 - CPU写入

GPU 启动核函数

CUDA统一内存示例 - GPU启动核函数
CUDA统一内存示例 - GPU启动核函数
CUDA统一内存示例 - GPU访问中
CUDA统一内存示例 - GPU访问中

数据预取

CUDA统一内存示例 - 数据预取
CUDA统一内存示例 - 数据预取

系统分配内存 (深入探讨)

系统分配器

CUDA 内存提示

6. 具有 CPU/GPU 一致性的应用程序实例

cuCollections 哈希图基准测试

通过优化内存访问增加性能

7. Grace Hopper Superchip 总结

Grace Hopper Superchip 的主要特点:

  1. 平衡且多功能的高性能系统:适用于所有现有工作负载。
    Grace Hopper Superchip - 平衡性
  2. 新应用的连贯架构:Grace CPU 和 Hopper GPU 紧密结合,提供一致性。
    Grace Hopper Superchip - 连贯架构
  3. 提升开发人员加速应用程序的速度:通过优化和统一的编程模型,提高开发效率。
    Grace Hopper Superchip - 开发效率