Conference

Distributed Affine Body Dynamics with Adaptive Consensus

Jiafeng Liu, Wenhui Zhou, Xinming Pei, Yifan Peng, Huamin Wang, Yin Yang, Lei Lan, Weiwei Xu

Zhejiang University; The University of Hong Kong; Style3D Research; University of Utah

一句话总结

把 IPC 框架下的仿射体动力学(ABD)拆到多台 GPU / 计算节点上并行求解,用带自适应共识的 ADMM 把跨分区共享物体的状态”对齐”,在保证无穿透的前提下实现大规模接触仿真的近线性加速。

研究背景

  • 领域现状:IPC(增量势接触)用障碍能量 + CCD 线搜索,能在稠密动态接触下严格保证无穿透;其中 ABD 用 12 个仿射自由度表示近刚体,顶点轨迹随时间线性变化,简化了连续碰撞检测(CCD),在鲁棒性和效率间取得平衡。
  • 核心痛点:IPC 的障碍约束是全局强耦合的。当场景规模增大,自由度快速膨胀,单机组装和求解大耦合系统变得低效;稠密接触又能产生上千万乃至上亿的候选碰撞对。想把 ABD 铺到多设备上并行,天真的区域分解 + 局部求解会因为接触的全局耦合而失效。
  • 本文 idea:把分布式 ABD 建模成一个共识优化问题——每个节点解自己的局部 ABD 子问题,再通过全局共识步强制跨分区共享物体状态一致。用 ADMM 分解求解,并针对 ADMM 对惩罚参数 \(\rho\) 敏感这一老问题,提出质量感知初始化 + 残差驱动的自适应共识,同时用一个”可行性保持”的共识更新保证合并后仍然无穿透。

方法

整体框架:把整个场景按空间划分给 \(N\) 个 worker,相邻 worker 之间设一个重叠的”共享区”,落在共享区的物体被复制到多个 worker 上,成为需要协调的接口变量。每个时间步内,各 worker 反复执行”局部 Newton 求解 → 共识对齐 → 对偶更新”,直到全局收敛,最后把共享物体替换成共识状态完成合并。

flowchart LR
  A["场景空间分区 + 共享区复制"] --> B["各 worker 局部 ABD 求解 q_i"]
  B --> C["共识步:聚合邻居副本得到 z_b"]
  C --> D["对偶更新 u 与残差驱动的 rho 自适应"]
  D --> E["CCD 检查合并目标"]
  E -->|"全 worker TOI=1"| F["合并共享状态,结束帧"]
  E -->|"未通过"| B

关键设计:

  1. 共识 ADMM 求解器。每步要解的全局优化被拆成各 worker 的局部目标 \(F_i(q_i)\)。为避免共享物体和跨分区接触对被重复计数,用副本数 \(\kappa_b\)(物体 \(b\) 被几个 worker 持有)和 \(\kappa_c\)(接触对被几个 worker 包含)做归一化,保证每个能量项在全局目标里恰好贡献一次。约束是共享物体的局部块 \(q_{i,b}\) 要等于共识变量 \(z_b\)。用缩放形式的增广拉格朗日交替执行:局部解把 \(q_{i,b}\) 软约束到当前共识;共识步对每个共享物体聚合各 worker 的 \(q_{i,b}+u_{i,b}\);对偶步按原始残差更新乘子。关键是 \(z\) 的更新无需中心节点——持有同一物体的 worker 之间交换少量数据就能各自算出相同的 \(z_b\)。

  2. 无穿透共识更新。每个局部解出的 \(q_i\) 都是无穿透的,但共识变量 \(z\) 可能相互穿插,因此即使 ADMM 收敛,直接把 \(z\) 赋给共享物体仍可能引入穿透。作者在收敛判据里额外加一道 CCD 检查:构造把共享物体替换成 \(z\) 后的候选合并态 \(\hat{q}_i\),沿 \(q_i \to \hat{q}_i\) 做 CCD,只有所有 worker 都报 TOI = 1(无碰撞)才接受收敛并合并。对于障碍物挡住合并路径的极端情形(需要约 586 倍自重的力才能构造出来),配合自适应减小时间步即可让副本绕过障碍最终合并。

  3. 质量感知的惩罚参数自适应。\(\rho\) 太小则共识约束太弱、跨分区一致性收敛慢;太大则二次惩罚压过局部目标。作者初始化取 \(\rho_{i,b}=\beta m_b\)(默认 \(\beta=1\))。之所以只用惯性块 \(M_{i,b}\) 而不做完整 Hessian 的特征分析:ARAP 的最大特征值主要来自三个缩放模态、在高杨氏模量下可达 \(10^8\);IPC 对数障碍在两体靠近时曲率极大且随迭代频繁激活/失活,二者都会严重高估有效刚度。由于 \(\lambda_{\max}(M_{i,b}) \le m_b\),直接用质量 \(m_b\) 作刚度代理。迭代中再按 Boyd 的残差驱动规则更新:原始残差 \(\lVert r_b^k \rVert_\infty\) 远大于对偶残差就乘以 \(\tau\)、反之除以 \(\tau\),并把 \(\rho_b\) 夹在 \([\sigma_{\min}\rho_0,\ \sigma_{\max}\rho_0]\) 内(默认 \(\tau=2,\ \mu=5,\ \sigma_{\min}=0.001,\ \sigma_{\max}=1000\))。

  4. 系统与负载均衡。采用单控制器 + 多 worker 架构:控制器按帧编排仿真循环、聚合各 worker 上报的停止指标并广播控制信号;worker 是带 GPU 的节点,只与控制器和邻居通信。为缓解负载不均,用一个轻量的离散时间 PD 控制器,根据每帧计时反馈把分区边界平面沿法向平移,重新分配相邻 worker 之间的工作量。

实验结果

主实验是一组大规模接触仿真,覆盖多种场景、不同 worker 数与几何规模。核心结论:在保持全程无穿透的前提下,相对单机取得可观加速;碰撞检测常常是主导开销。

场景 Worker 数 物体数 三角形 峰值接触对 帧耗时(s) 相对单机加速
“Pokémon” 漏斗 2 5.2K 5.7M 40.1K 44.06 1.7×
食物掉落 6 26.1K 16.1M 222.6K 58.64 5.2×
转鼓与外壳 2 2.3K 4.0M 20.0K 26.34 1.5×
零件与机械臂 4 7.1K 13.0M 338.4K 92.76 单机装不下
刚-流耦合 4 1M 粒子 + 8 219.6K 133.6K 1.09

其余实验用文字补充:多 worker 扩展性上,用 29,760 个球落入容器的固定场景,2/4 worker 近线性加速,8 worker 因更细分区带来更强跨分区耦合,加速回落到约 6×。质量感知初始化在 10 到 100,000 kg/m³ 五档密度下都稳健,\(\beta=1.0\) 给出最低或接近最低的迭代数;残差驱动自适应相比固定 \(\rho\) 把迭代数降低 22%–80%。在质量与刚度高度异质(三组 \((m,E)\) 跨多个数量级)的场景,分布式求解器约需 2× 的 ADMM 迭代和 2.5× 的 Newton 迭代,但同样的增幅在单机上也出现,说明这主要来自底层 ABD 问题本身变难,而非分布式 ADMM 方案。

亮点与局限

  • 亮点:
    • 把 IPC-ABD 的强全局耦合接触问题干净地转写成共识优化,用去中心化的 ADMM 让每个共享物体的共识值可在邻居间本地算出,无需中央聚合节点。
    • “局部无穿透 + 合并时 CCD 认证”的组合,把 IPC 级别的严格无穿透保证延续到了分布式合并这一步,堵住了天真同步会引入穿透的漏洞。
    • 质量感知的 \(\rho\) 初始化有清晰的动机(ARAP/IPC 特征值会高估刚度)和简单可用的谱界,配合残差驱动自适应显著加速收敛。
  • 局限:
    • 通信是阻塞式的,没有把数据传输与本地计算重叠,通信延迟直接计入总耗时。
    • 分区越细,ADMM 迭代数越多,可能抵消负载均衡带来的收益。
    • ADMM 在追求高精度时收敛慢、存在明显的”长尾”。

延伸思考

作者已点名的方向很自然:异步通信 + 延迟隐藏来摊薄阻塞通信的代价;分区感知的初始化或更好的 warm-start 来抑制细分区下迭代数上涨;引入 Anderson 加速等技术缓解 ADMM 收敛长尾。更进一步,共享区宽度 \(w=\max(\alpha v_{\max} dt, w_{\min})\) 与 PD 负载均衡都还是相对朴素的启发式,如何在高速、强非凸几何、频繁跨 worker 接触下自适应地选分区与共享区,是把这套系统推向更大集群时的关键。它与 P-cloth、MPM halo 交换、aura-based 刚体迁移等分布式仿真工作同属”分区 + 跨界协调”的思路,但把重点放在了严格无穿透的高精度接触响应上,这也是它区别于以往 split-and-merge 方法的地方。