跳到主要内容

现有仿真框架深度分析

本文档分析了 4 个与交换机建模相关的仿真框架,评估其技术方案、优劣和可借鉴之处。


一、SimAI (阿里巴巴, NSDI 2025)

概述

SimAI 是阿里巴巴发表在 NSDI 2025 的全栈 AI 训练/推理仿真器。

架构

SimAI 由 4+1 个组件组成:

[AICB: 工作负载生成] --> workload.txt
|
[astra-sim-alibabacloud: 核心引擎] <--> [SimCCL: NCCL 分解]
|
sim_send() / sim_recv()
|
[ns-3-alibabacloud: 包级网络仿真]
|
[vidur-alibabacloud: 推理调度] (v1.5+)

AICB (AI Communication Benchmark): 工作负载生成层

  • 支持 LLaMA, GPT, Mistral MoE, DeepSeek, Qwen 等模型
  • 通过 AIOB 子模块 profile 真实 GPU kernel 执行时间
  • 输出格式: 每层的计算时间 (ns)、通信类型、数据量

SimCCL: 修改版 NCCL,将集合通信分解为点对点原语

  • 支持 Ring, Tree (Double Binary Tree), NVLS 算法
  • 支持 PXN (PCI x NVLink) 跨节点通信

astra-sim-alibabacloud: 基于 Georgia Tech ASTRA-sim 扩展的核心引擎

ns-3-alibabacloud: 基于 ns3-rdma/HPCC 的包级网络仿真

交换机模型 (关键)

SimAI 的交换机模型源自 Broadcom ASIC 风格,工作在缓冲/队列级别,不是微架构级别。

已建模内容:

  • SwitchMmu: 共享缓冲池 (默认 32 MB),入口/出口缓冲记账
  • ECN 标记: 概率标记 (KMIN/KMAX/PMAX 参数),带宽相关阈值
  • PFC 生成: 静态/动态阈值触发 PAUSE 帧
  • ECMP 转发: 5-tuple Hash 负载均衡
  • 监控: 队列深度、带宽、速率、CNP 监控

未建模内容:

  • 无 VOQ (Virtual Output Queues)
  • 无 Crossbar 结构和仲裁器 (iSLIP 等)
  • 无流水线阶段 (Parser, Match-Action 等)
  • 交换机内部视为瞬时转发
  • 无 SerDes/FEC 延迟

关键配置参数

BUFFER_SIZE            32              # 每交换机缓冲 (MB)
ENABLE_QCN 1 # 启用 ECN
USE_DYNAMIC_PFC_THRESHOLD 1 # 动态 PFC 阈值
PACKET_PAYLOAD_SIZE 9000 # Jumbo Frame
CC_MODE 1 # 1=DCQCN, 3=HPCC, 7=TIMELY

# ECN 阈值 (带宽相关)
KMAX_MAP 400Gbps:3200 (bytes)
KMIN_MAP 400Gbps:800 (bytes)
PMAX_MAP 400Gbps:0.2

# DCQCN 参数
RATE_AI 50 Mb/s # 加性增
RATE_HAI 100 Mb/s # 快速增
MIN_RATE 100 Mb/s # 最低速率
RP_TIMER 900 # 速率增加定时器

性能与局限

指标数值
验证精度98.1% (A100/H100)
NS-3 模式速度~2 小时 / 128 GPU / 1 iteration
多线程加速23x (lock-free)
分析模式速度秒级 (100-1000x 快于 NS-3)

局限:

  • 交换机模型缺乏微架构精度 (无 VOQ/Crossbar/调度器)
  • NS-3 模式对千卡规模不实际
  • 分析模式完全不建模网络拥塞
  • 强依赖 NVIDIA NCCL,通用性受限

可借鉴之处

  • SwitchMmu 缓冲管理: 动态阈值算法的参数配置方案
  • ECN 阈值映射: 带宽相关的 KMIN/KMAX 配置
  • DCQCN 参数: 真实集群验证过的拥塞控制参数
  • 多线程优化: lock-free 全局上下文共享

二、ASTRA-sim 2.0 (Georgia Tech/Meta/Intel, ISPASS 2023)

概述

ASTRA-sim 是分布式 AI 训练端到端仿真器,核心特点是三层架构和可插拔网络后端。

三层架构

+-------------------------------------------+
| Workload Layer (Chakra ET 格式) |
| - DAG 表示: 计算/通信/内存节点 |
| - 支持 TP, PP, DP, EP 并行策略 |
+-------------------------------------------+
| System Layer (AstraCCL) |
| - 集合通信算法: Ring, DoubleBinaryTree, |
| HalvingDoubling, AllToAll |
| - 分解为 sim_send() / sim_recv() |
+-------------------------------------------+
| Network Layer (可插拔后端) |
| - Analytical (快速, ~5% 误差) |
| - NS-3 (包级) |
| - Garnet (cycle-accurate NoC) |
| - htsim (Ultra Ethernet Consortium) |
+-------------------------------------------+

网络后端对比

后端精度速度适用场景
Analytical~5% 误差756x 快于 Garnet大规模设计空间探索
NS-3高 (包级)中等数据中心协议研究
Garnet极高 (cycle-accurate)NoC 微架构研究
htsim高 (包级)中等UEC 协议研究

Analytical 后端

使用多维拓扑构建块:

topologies-per-dim: ["Ring", "Switch"]     # 维度 0: Ring, 维度 1: Switch
units-count: [8, 4] # 每维度 NPU 数
link-latency: [500, 5000] # 延迟 (ns)
link-bandwidth: [50, 25] # 带宽 (GB/s)

交换机在 Analytical 后端中只是带宽/延迟抽象,无微架构建模。

Garnet 后端 (Cycle-Accurate)

Garnet 2.0 来自 gem5,提供 5 阶段路由器流水线:

阶段功能
BW (Buffer Write)接收 flit 写入 VC
RC (Route Compute)计算输出端口
SA (Switch Allocation)2-phase 分离式分配
VS (VC Selection)选择输出 VC
ST (Switch Traversal)穿越 Crossbar

但 Garnet 是 NoC 仿真器,不适用于数据中心交换机:

方面Garnet (NoC)数据中心交换机
规模片上 sub-mm机架/数据中心级
缓冲1-5 flit/VC (~0.1KB)MB 级共享缓冲
端口数4-8 (2D mesh)32-128
流控Credit/VCPFC, ECN, DCQCN
包大小16 bytes flit1500-9000 bytes MTU
多播不支持IGMP snooping

可借鉴之处

  • AstraNetworkAPI 接口设计: 干净的 sim_send()/sim_recv() + 回调模式
  • 多维拓扑概念: 维度化的拓扑构建 (类似 Tier6 的 c2c/b2b/r2r/p2p)
  • 集合通信分解: Ring, DoubleBinaryTree, HalvingDoubling 算法实现
  • 可插拔后端架构: 允许不同精度的网络模型互换

三、BookSim 2.0 (Stanford, ISPASS 2013)

概述

BookSim 是 Stanford 开发的 cycle-accurate NoC 仿真器,是学术界最广泛使用的互联网络仿真器。

路由器流水线

BookSim 的 IQ Router 实现 5 阶段流水线:

Stage 1: BW (Buffer Write)      -- flit 写入 VC 缓冲
Stage 2: RC (Route Compute) -- 计算输出端口
Stage 3: VA (VC Allocation) -- 分配虚拟通道 (iSLIP)
Stage 4: SA (Switch Allocation) -- 分配交换资源 (iSLIP)
Stage 5: ST (Switch Traversal) -- 穿越 Crossbar
+ LT (Link Traversal) -- 穿越物理链路 (下一 cycle)

iSLIP 实现细节

BookSim 中 iSLIP 是 VA 和 SA 的默认分配器 (src/allocators/islip.cpp):

指针更新规则 (关键):

  • Grant 指针仅在授权被接受时更新
  • 未被接受的授权不更新指针
  • 这创造了去同步化效应 -- 各输出仲裁器指针逐渐分散,大幅减少碰撞

吞吐量保证:

  • 均匀流量: 100% 吞吐 (可证明收敛到最大匹配)
  • 非均匀流量: 高吞吐 (竞争性接近 maximum-weight matching)
  • 公平性: Round-robin 防止饥饿

完整配置参数

路由器参数:

参数默认值说明
num_vcs16每物理通道的虚拟通道数
vc_buf_size8每 VC 缓冲深度 (flit)
internal_speedup1.0路由器内部加速比
routing_delay1RC 延迟 (cycles)
vc_alloc_delay1VA 延迟
sw_alloc_delay1SA 延迟
speculative0投机性 SA
hold_switch_for_packet0多 flit 包持有 switch

支持的拓扑: torus, mesh, cmesh, fly, fattree, flatfly, dragonfly, anynet, qtree, tree4

支持的分配器: islip, pim, max_size, loa, wavefront, separable_input_first, separable_output_first

支持的路由算法: 20+ (dor_mesh, xy_yx_mesh, adaptive, valiant, chaos, nca_fattree, ...)

对数据中心交换机建模的局限

方面BookSim (NoC)数据中心交换机需求
粒度Flit 级 (4-128 bits)Packet 级 (64B-9KB MTU)
缓冲8-64 flit/VC (~0.1-1 KB)12 MB 片上 SRAM 或 100+ MB
端口数4-8 (2D mesh radix)32-128
流控Wormhole / VCTStore-and-Forward / Cut-Through
协议Ethernet/IP/RDMA
QoSVC 优先级DSCP, PFC, WRED
拥塞控制VC 反压ECN, PFC, DCQCN

可借鉴之处

  • 模块化架构: Factory 模式的 Router/Allocator/Topology 设计
  • iSLIP 算法实现: 指针去同步化的精确实现
  • Credit-based 流控: flit 级 Credit 机制
  • 可配置流水线: routing_delay, vc_alloc_delay, sw_alloc_delay 独立可配
  • 大量分配器: 8 种分配器可对比研究

四、CNSim (清华大学, ATC 2024)

概述

CNSim 是清华大学发表在 USENIX ATC 2024 的 cycle-accurate 包并行仿真器,专为芯粒 (chiplet) 网络设计。

核心创新: 包中心仿真

传统方法 (BookSim 风格): 每个 cycle 遍历所有路由器和 VC,代价 O(routers x VCs)

CNSim 方法: 状态存储在 Packet 中,仿真遍历活跃包而非路由器

class Packet {
NodeID source_, destination_;
int length_; // Flit 数
vector<VCInfo> flit_trace_; // 每 flit 位置追踪
VCInfo next_vc_; // 下一分配的 VC
bool switch_allocated_; // SA 结果
int process_timer_; // 注入预处理延迟
int SA_timer_; // Switch allocation 延迟
int link_timer_; // 链路穿越延迟
int wait_timer_; // 排队延迟
int trans_timer_; // 总传输时间
};

优势: 空闲路由器零仿真开销,低中注入率下大幅减少计算量。

Atomic-Based 多线程

使用原子变量替代锁进行线程协调:

// 原子计数器分配工作
std::atomic<int> pkt_i;

// 每个工作线程:
while (true) {
int my_batch = pkt_i.fetch_add(issue_width);
if (my_batch >= packet_count) break;
for (int i = my_batch; i < min(my_batch + issue_width, packet_count); i++) {
system->update(*all_packets[i]);
}
}

// 缓冲竞争通过 atomic 解决:
class Buffer {
std::atomic_bool in_link_used_;
std::atomic_bool sw_link_used_;
std::atomic_int* vc_buffer_; // 每 VC 空闲空间 (atomic)
std::atomic<Packet*>* vc_head_packet;
};

可配置流水线

支持 1/2/3 阶段路由器:

模式阶段延迟
OneStageRC+VA+SA 合并1 cycle
TwoStageRC 分离, VA+SA 合并2 cycles
ThreeStageRC, VA, SA 各独立3 cycles

异构链路类型

通道类型宽度延迟用途
on_chip_channel1 flit/cycle1 cycle芯粒内 NoC
off_chip_parallel1 flit/cycle2 cyclesD2D 并行接口
off_chip_serial2 flits/cycle4 cyclesD2D 串行 (UCIe)
long_distance1 flit/cycle10 cycles跨封装/远程

性能数据

  • 仿真规模: 5000 亿 cycles, 200 亿包
  • 仿真时间: ~20 小时
  • 传统仿真器估计: 200+ 小时
  • 加速比: 11-14x

可借鉴之处

  • 包中心仿真范式: 将状态存储在 Packet 中而非路由器 -- 可直接用于数据中心交换机
  • Atomic 多线程: 无锁并发调度,first-come-first-served 竞争解决
  • 可配置流水线深度: 不同交换机可配置不同流水线复杂度
  • 异构链路: 不同带宽/延迟的链路混合建模

五、框架对比总结

综合对比

特性SimAIASTRA-simBookSimCNSim
目标场景AI 训练AI 训练NoCChiplet 网络
交换机精度缓冲/队列级无/NoCCycle-accurate NoCCycle-accurate
数据中心适用性高 (但交换机粗)中 (Garnet 不适用)低 (NoC 级)中 (需适配)
仿真速度中 (NS-3) / 快 (分析)快 (分析) / 慢 (Garnet)快 (11-14x)
多线程23x (lock-free)11-14x (atomic)
PFC/ECN完整
代码量~10K+ LOC大型~15K LOC~5K LOC
LicenseApache 2.0MITBSD未明确

对 Tier6 交换机建模的建议

基于以上分析,推荐的技术组合:

  1. 仿真范式: 采用 CNSim 的包中心仿真范式

    • 理由: Tier6 的 latency.py 已经是消息/包级别工作,自然匹配
    • 空闲交换机零开销,适合大规模拓扑
  2. 调度器: 采用 BookSim 的模块化分配器框架

    • 理由: iSLIP 的指针去同步化实现是学术标准
    • Factory 模式允许未来扩展其他分配器
  3. 缓冲管理: 采用 SimAI 的 SwitchMmu 参数方案

    • 理由: 经过真实集群验证 (98.1% 精度)
    • KMIN/KMAX/PMAX 带宽相关配置已有参考值
  4. 拥塞控制: 采用 SimAI 的 ECN/PFC/DCQCN 实现

    • 理由: 已验证的参数集和实现逻辑
    • 支持完整的 AI 网络无损语义
  5. 多线程: 如需加速,采用 CNSim 的 atomic-based 线程模型

    • 理由: 无锁设计适合包中心仿真
    • 在大规模场景下缓冲竞争稀少

参考论文

框架论文会议
SimAI"SimAI: Unifying Architecture Design and Performance Tunning for Large-Scale LLM Training with a Generalized Simulation Framework"NSDI 2025
ASTRA-sim 2.0"Modeling Hierarchical Networks and Disaggregated Systems for Large-model Training at Scale"ISPASS 2023
BookSim 2.0"A Detailed and Flexible Cycle-Accurate Network-on-Chip Simulator"ISPASS 2013
CNSim"Evaluating Chiplet-based Large-Scale Interconnection Networks via Cycle-Accurate Packet-Parallel Simulation"ATC 2024
iSLIP"The iSLIP Scheduling Algorithm for Input-Queued Switches"IEEE/ACM ToN 1999
HPCC"High Precision Congestion Control"SIGCOMM 2019
VOQ"Dynamically-allocated Multi-queue Buffers for VLSI Communication Switches"IEEE TC 1992

在线资源