跳到主要内容

DOR

Torus/Mesh 上按维度顺序转发如何保证无死锁

核心要点

  • 按固定维度顺序 X→Y→Z 逐维转发,每维独立完成
  • Mesh 天然无死锁;Torus 需 dateline 虚通道打破环绕依赖
  • 路径唯一、无路由表、转发开销极低(坐标减法)
  • 集合通信按维度分解时与 DOR 完美对齐(Google TPU v4/v5 实战)

DOR(Dimension-Order Routing)是 Torus / Mesh 上的确定性静态路由策略:报文按固定维度顺序逐维转发,到达目标维度坐标后转入下一维度。维度顺序全网一致,这是无死锁保证的基础。

DOR 如何把多维路由问题降为一维问题?

核心问题:在 3D Torus 上从 $(x_s, y_s, z_s)$$(x_d, y_d, z_d)$,DOR 怎么避免维度间的耦合?

坐标寻址与维度分解

$d$ 维 Torus 或 Mesh 拓扑中,每个节点的地址表示为 $d$ 维坐标 $(x_0, x_1, \ldots, x_{d-1})$。DOR 将端到端路由问题分解为 $d$ 个独立的一维路由问题——依次在每个维度上移动,直到该维度坐标与目标一致,然后进入下一维度。

以 3D Torus 中从源 $(x_s, y_s, z_s)$ 到目标 $(x_d, y_d, z_d)$ 为例:

Phase 1: 沿 X 维度移动,直到 x == x_d
Phase 2: 沿 Y 维度移动,直到 y == y_d
Phase 3: 沿 Z 维度移动,直到 z == z_d

维度顺序固定且全网一致——所有交换机都按相同的维度顺序转发,这是 DOR 无死锁保证的基础。

Torus 上的方向选择

Torus 的每个维度首尾相连形成环(大小为 $N_k$),在维度 $k$ 内存在两条路径(顺时针和逆时针)。DOR 选择跳数较少的方向:

$$\begin{equation} \text{direction}_k = \begin{cases} +1 & \text{if } (x_d^{(k)} - x_s^{(k)} + N_k) \bmod N_k \le N_k/2 \\ -1 & \text{otherwise} \end{cases} \label{eq:route-dor-torus-direction} \end{equation}$$

维度 $k$ 上的跳数为:

$$\begin{equation} h_k = \min\left((x_d^{(k)} - x_s^{(k)} + N_k) \bmod N_k,\; (x_s^{(k)} - x_d^{(k)} + N_k) \bmod N_k\right) \label{eq:route-dor-dim-hops} \end{equation}$$

总路径长度等于各维度跳数之和:

$$\begin{equation} H = \sum_{k=0}^{d-1} h_k \label{eq:route-dor-total-hops} \end{equation}$$

在 Mesh 中,每个维度没有环绕链路,方向唯一(从 $x_s^{(k)}$ 直接走向 $x_d^{(k)}$),跳数为 $|x_d^{(k)} - x_s^{(k)}|$

转发流程是怎样的?

完整决策流程

报文到达交换机,当前坐标 (c0, c1, ..., c_{d-1}),目标坐标 (d0, d1, ..., d_{d-1})
|
v
从维度 k=0 开始检查
|
v
c_k == d_k ?
|
+-- 是 --> k = k+1,检查下一维度
| (若 k == d,报文到达目的地,交付本地)
|
+-- 否 --> 计算维度 k 上的方向(公式 eq:route-dor-torus-direction)
沿该方向转发到下一跳
(报文头中携带目标坐标,无需修改)

整个过程是无状态的——交换机仅根据报文头中的目标坐标和自身坐标做减法比较,不需要路由表查找,也不需要感知网络拥塞状态。

数值示例

场景:4x4x4 Torus,从 $(0, 0, 0)$$(2, 3, 1)$

$\eqref{eq:route-dor-dim-hops}$ 计算各维度跳数:

  • X 维度:正向 $(2-0) \bmod 4 = 2$,反向 $(0-2+4) \bmod 4 = 2$,取 $\min(2, 2) = 2$
  • Y 维度:正向 $(3-0) \bmod 4 = 3$,反向 $(0-3+4) \bmod 4 = 1$,取 $\min(3, 1) = 1$ 跳(反向更短
  • Z 维度:正向 $(1-0) \bmod 4 = 1$,反向 $(0-1+4) \bmod 4 = 3$,取 $\min(1, 3) = 1$

$\eqref{eq:route-dor-total-hops}$ 总路径长度 = $2 + 1 + 1 = 4$ 跳。

逐跳路径

(0,0,0) --X--> (1,0,0) --X--> (2,0,0)         [X 维度完成]
--Y--> (2,0,0) --Y--> (2,3,0) [Y 维度: 反向1跳, 从0经环绕到3]
--Z--> (2,3,0) --Z--> (2,3,1) [Z 维度完成]

注意 Y 维度选择反向(从 0 经环绕链路到 3),仅需 1 跳而非正向的 3 跳。

平均路径长度

$d$ 维 Torus 中(每维大小 $N$),两个随机节点在维度 $k$ 上的期望跳数为:

$$\begin{equation} \mathbb{E}[h_k] = \begin{cases} N/4 & \text{(Torus, } N \text{ 为偶数)} \\ (N^2-1)/(4N) & \text{(Torus, } N \text{ 为奇数)} \\ (N^2-1)/(3N) & \text{(Mesh)} \end{cases} \label{eq:route-dor-avg-hops} \end{equation}$$

$d$ 维总期望路径长度 $\mathbb{E}[H] = d \cdot \mathbb{E}[h_k]$。例如 4x4x4 Torus 的平均路径长度 = $3 \times 4/4 = 3$ 跳。

DOR 为什么不会死锁?

DOR 的无死锁性质依赖拓扑类型

Mesh 上:天然无死锁

Mesh 各维度无环绕链路,维度顺序约束可消除所有循环等待:

  • 所有报文先在维度 0 移动,再在维度 1 移动,...
  • 不存在"A 等待 B 释放 X 方向资源,B 等待 A 释放 Y 方向资源"的场景

证明思路:为每条链路分配一个全序标号——维度 $k$ 的所有链路的标号大于维度 $k-1$ 的所有链路。DOR 保证报文只沿标号递增方向申请资源,因此不可能形成循环等待(Coffman 条件的"循环等待"被打破)。

Torus 上:需要 Dateline 虚通道

Torus 每个维度首尾环绕,环绕链路引入新的通道依赖环路,单纯 DOR 在 Torus 上不保证无死锁

问题:在维度 $k$ 的环上,报文可能沿环绕方向从节点 $N-1$ 回到节点 $0$,形成资源申请的环路:节点 0 等待节点 1 的缓冲 -> 节点 1 等待节点 2 -> ... -> 节点 $N-1$ 等待节点 0(通过环绕链路)。

Dateline 机制

  1. 每个维度在坐标 0 处的环绕链路设置一条 dateline
  2. 每个维度配置 2 条虚通道(VC0、VC1)
  3. 报文初始使用 VC0;当经过 dateline 时强制切换到 VC1,此后不再返回 VC0
  4. VC0 和 VC1 各自内部无环路(dateline 切断了环绕依赖),两层 VC 之间单向依赖(VC0 -> VC1),不构成循环

虚通道开销$d$ 维 Torus 需要每维 2 条虚通道,总共 $2d$ 条 VC。3D Torus 需要 6 条 VC——这是可接受的硬件开销[1]

死锁避免的一般理论

DOR + dateline VC 只是死锁避免技术的一个特例。互联网络死锁避免有更广泛的理论框架,理解这些理论有助于设计非 DOR 路由(如 Torus 上的自适应路由、不规则拓扑的路由)。

1. Coffman 条件:网络死锁的必要条件(与操作系统死锁条件一致):

  • 互斥(mutual exclusion):缓冲区一次只能被一个 packet 占用
  • 持有并等待(hold and wait):packet 占用缓冲的同时申请下一跳缓冲
  • 不可抢占(no preemption):缓冲不会被强制释放
  • 循环等待(circular wait):存在缓冲依赖的环路

打破任一条件即可避免死锁。互联网络中通常打破"循环等待"——这正是 DOR 的策略(按维度有序申请)。

2. Turn Model(Glass & Ni, 1992)[2]

通过禁止特定的"转弯"(turn)打破循环依赖。以 2D Mesh 为例,4 个方向产生 8 种可能转弯,每个 cycle 需要至少 4 个转弯,因此只需要禁止其中 1 个就能打破所有 cycle。代表算法:

模型禁止的转弯路径自由度
XY routing所有 Y→X 转弯退化为 DOR
West-First仅禁止 N→W 和 S→W高(仅去西方向有约束)
North-Last仅禁止 N→E 和 N→W
Negative-First仅禁止往负向的转弯

@tbl-route-dor-turn-models Turn Model 变体

West-First 等"部分约束"模型保留了远多于 XY routing 的路径多样性,同时不需要虚通道——这是 Mesh 上无 VC 自适应路由的基础。

3. Duato 协议(Duato, 1993)[3]

Duato 给出了最小化 VC 数量的自适应路由死锁避免充分条件:

给定路由函数 $\mathcal{R}$ 使用的虚通道集合,若存在该集合的子集 $\mathcal{R}_{\text{esc}}$(escape channels)满足"任意 packet 都能在 $\mathcal{R}_{\text{esc}}$ 内找到到达目标的路径",且 $\mathcal{R}_{\text{esc}}$ 自身无循环依赖,则整个路由系统无死锁。

直观含义:允许大部分流量走自适应通道(甚至产生循环依赖),但保留一组"逃生通道"作为后备——packet 在自适应通道堵塞时可以 fall back 到逃生通道,从而打破死锁。

应用:Torus 自适应路由(如 Cray T3D/T3E)按此原理设计——大部分时间走自适应通道获得均衡,少部分时间走 DOR escape channel 避免死锁。比单纯 DOR 多 1 条 VC(escape channel),换来路径多样性大幅提升。

4. Bubble Flow Control(Carrión et al., 1997)[4]

针对 Torus 的另一种思路:在每个环上保留至少 1 个空闲缓冲("bubble"),保证任意 packet 都能继续前进。不需要虚通道,仅靠流控规则就避免死锁。代价:缓冲利用率上限略低(少 1 个 slot 可用)。

应用:BlueGene/L 的 Torus 网络采用 bubble flow control。

选型比较

技术VC 数路径多样性工程复杂度适用拓扑
DOR(XY/Dimension-Order)1 + dateline(Torus 2)Torus / Mesh
Turn Model1(多数变体)中-高Mesh(无环绕)
Duato + Escape VC自适应 + 1 escape中-高任意(Torus / Dragonfly / 不规则)
Bubble FC0Torus

@tbl-route-dor-deadlock-techniques 死锁避免技术对比

DOR 是"最简单 + 路径多样性最低"的端,Duato + Escape VC 是"复杂度可接受 + 路径多样性最高"的端,工程选择依工作负载特性而定。

DOR 如何配合集合通信的维度分解?

DOR 为集合通信按维度分解提供了天然基础。以 3D Torus 上的 AllReduce 为例:

  1. X 维度 AllReduce:每行节点做 Ring AllReduce,所有行并行
  2. Y 维度 AllReduce:每列节点做 Ring AllReduce,所有列并行
  3. Z 维度 AllReduce:每纵列节点做 Ring AllReduce,所有纵列并行

每轮只在单维度通信,避免跨维度竞争——维度 $k$ 的 Ring 通信不占用维度 $k' \neq k$ 的链路。

这是 Google TPU 集群在 3D Torus 上高效执行 AllReduce 的核心机制:XLA 编译器将 TP/DP/PP 分配到对应 Torus 维度,路由在编译时完全确定,无运行时开销。

维度分解的通信量等价性:将 $d$ 维 AllReduce($N^d$ 个节点)分解为 $d$ 轮单维度 Ring AllReduce(每轮 $N$ 个节点),总通信量与直接在 $N^d$ 个节点上执行等价,但避免了跨维度链路竞争,实际吞吐显著更高。

DOR 的性能特性如何?

指标
路径确定性完全确定(相同源/目的对,路径唯一)
死锁风险无(Mesh 天然无死锁;Torus 需 dateline VC)
有效带宽利用率85-92%(通信模式与维度对齐时)
延迟可预测性最高(路径长度由坐标差唯一确定)
路径多样性低(每个源-目的对只有一条路径)
转发开销极低(坐标减法,无需路由表查找)

@tbl-route-dor-01 性能特性:指标、值

何时该用 DOR,何时不该?

适用场景

  • Torus / Mesh 多维拓扑,特别是 2D/3D Torus
  • 需要确定性延迟的工作负载
  • 集合通信 pattern 能够与拓扑维度对齐的场景
  • 代表系统:Google TPU v4/v5/v6/Ironwood(3D Torus + DOR)[5]

局限

  • 路径多样性低:每个源-目的对只有一条路径,网络利用率受单条路径带宽限制
  • 维度竞争:若工作负载的通信模式不与维度对齐(如跨维度的 AllToAll),会在某个维度产生热点
  • 故障容错弱:绕过故障节点需要修改维度路由逻辑,不如 ECMP 灵活
  • 不适合非规则拓扑:DOR 依赖拓扑的规则维度结构,Fat-tree、Dragonfly 等无法使用

选型建议

  • 拥有 Torus 拓扑且工作负载与维度对齐:DOR 是最优选择
  • 拓扑不规则或需要高路径多样性:使用 ECMP 或自适应路由
  • 需要在 Torus 上最大化带宽:可结合 OCS 动态重配拓扑,使 Twisted Torus 的 bisection bandwidth 提升 70%

Takeaway

知识点核心结论
DOR 选路按固定维度顺序逐维转发;Torus 每维取 $\min$(正向,反向) 跳数
Mesh 无死锁维度全序约束打破循环等待(Coffman 条件)
Torus 死锁规避dateline + 2 VC,过 dateline 切换 VC,阻断环绕依赖
替代死锁理论Turn Model / Duato Escape VC / Bubble FC 给更高路径多样性
集合通信对齐$d$ 维 AllReduce 分解为 $d$ 轮单维 Ring,避免跨维度链路竞争
主要局限路径唯一、路径多样性低;通信模式不对齐时维度热点
代表系统Google TPU v4/v5/v6/Ironwood(3D Torus + DOR)

参考资料

  1. Dally & Seitz, Deadlock-Free Message Routing in Multiprocessor Interconnection Networks, IEEE TC, 1987. https://doi.org/10.1109/TC.1987.1676929
  2. Glass & Ni, The Turn Model for Adaptive Routing, ISCA 1992.
  3. Duato, A New Theory of Deadlock-Free Adaptive Routing in Wormhole Networks, IEEE TPDS, 1993.
  4. Carrión et al., A Flow Control Mechanism to Avoid Message Deadlock in k-ary n-cube Networks, HiPC 1997.
  5. Jouppi et al., TPU v4: An Optically Reconfigurable Supercomputer, ISCA 2023. https://arxiv.org/abs/2304.01433

延伸阅读