Autodesk/XLB
XLB: Accelerated Lattice Boltzmann (XLB) for Physics-based ML
XLB – 可微分格子波兹曼库 (Python)
简介 – XLB 是一个实现格子波兹曼方法 (LBM) 进行流体动力学模拟的 Python 库,并且使每一个步骤皆可微分。它通过三个后端在 CPU、单 GPU、多 GPU 和 TPU 硬件上运行:
- JAX – 利用 JAX 的 XLA 编译器,适用于 CPU、GPU 和 TPU。
- NVIDIA Warp – 用于顶尖单 GPU 性能的自定义 CUDA 内核框架。
- Neon – Autodesk 的多 GPU 编程模型,增加了网格细化 (多分辨率) 与多 GPU 扩展能力。
由于内核是可微分的,XLB 可以嵌入机器学习管线中 (例如:基于梯度的设计优化、物理信息神经网络,或基于伴随的形状优化)。
快速入门 (来自 README)
# 仅 CPU (无特殊硬件)
pip install xlb
# 使用 Warp 的单 GPU (最快的单 GPU 路径)
pip install "xlb[warp]"
# 在支持 CUDA 的 GPU 上使用 JAX
pip install "xlb[cuda]"
# 在 TPU 上使用 JAX
pip install "xlb[tpu]"
# 使用 Neon 进行多 GPU / 多分辨率 (需要 Linux 与 Python 3.11‑3.14)
git clone https://github.com/Autodesk/XLB.git
cd XLB
pip install -r requirements.txt
pip install '.[neon]'
请勿在同一环境中使用 Warp 与 Neon。
核心功能 (列于 README)
| 类别 | 功能 |
|---|---|
| 后端 | JAX, NVIDIA Warp, Neon (多 GPU, 网格细化) |
| LBM 模型 | BGK, KBC (在高雷诺数下稳定), Smagorinsky LES |
| 格子集 | D2Q9, D3Q19, D3Q27 (KBC 所需) |
| 边界条件 | 平衡, 全/半反弹, Zou/He, 正则化, 外推流出, 插值反弹, 混合等 |
| 可微分性 | 所有碰撞与流式内核皆与 JAX 兼容,支持针对初始场、几何形状或材料参数的梯度计算 |
| 扩展性 | 单 GPU (Warp), 多 GPU (Neon), 通过 JAX shard‑map 进行分布式多 GPU/TPU |
| 精度 | 混合精度 (存储与计算分离) |
| I/O 与可视化 | 通过 PyVista 进行 VTK (二进制/ASCII), 带 gzip 的 HDF5/XDMF, 使用 PhantomGaze 进行原位 GPU 渲染, 使用 Orbax 进行检查点存储, 图像切片, 通过 trimesh 进行体素化 |
| 机器学习集成 | 与 Flax, Haiku, Optax 等协作;提供可微分边界条件 |
| 路线图亮点 | 核心外模拟, 无损 GPU 压缩, 流体‑热耦合, 伴随形状优化, ML 加速求解器, 降阶模型 |
典型使用案例
- 基于物理的 ML 研究 – 将流体模拟器嵌入神经网络损失函数中,并透过模拟进行反向传播,以学习控制策略或反向设计。
- 基于梯度的设计优化 – 通过对几何形状的阻力/升力目标进行微分,来优化形状 (翼型、车体、建筑布局)。
- 高性能 CFD – 在单一 GPU (Warp) 或多个 GPU (Neon/JAX) 上运行大规模 LBM 模拟 (数亿个网格)。
- 多分辨率研究 – 使用 Neon 的网格细化功能,在需要的地方 (例如墙壁附近) 集中分辨率,同时保持整体内存占用在可控范围内。
- 教育 / 研究原型设计 – 纯 Python API 搭配 NumPy 风格语法,无需编写 CUDA 内核即可轻松进行实验。
深入了解
- 示例 – 仓库的
examples/文件夹包含风力涡轮机、NACA 翼型、DrivAer 车型、建筑气流、顶盖驱动空腔及可微分优化演示的即用型脚本。 - 论文 – XLB: A differentiable massively parallel lattice Boltzmann library in Python (Computer Physics Communications, 2024) 提供了基准测试数据与验证细节。
- 引用 – 若您发表使用 XLB 的研究,请引用主要论文;若使用网格细化功能,请同时引用 README 中列出的 Neon 相关会议论文。
许可
Apache 2.0 – 学术与商业用途皆免费。
总结 – XLB 是一个真正的生产级库,架起了高性能流体模拟与现代可微分编程之间的桥梁。它非常适合需要快速、可扩展 CFD,且需针对机器学习驱动的设计或优化任务进行微分的研究人员与工程师。
相关
- 项目
- 项目
- 项目
- 项目