docs: add measured operator support report (#101) Co-authored-by: Claude Opus 5 (1M context) noreply@anthropic.com
docs: add measured operator support report (#101)
Co-authored-by: Claude Opus 5 (1M context) noreply@anthropic.com
文档 · 安装 · 快速开始 · 兼容性 · English
FlagOS 软件栈的 PyTorch 设备插件。torch-fl 对外提供统一的 flagos 设备,并在可复用原生内核、可移植编译器内核、厂商原生实现和显式 CPU 回退之间路由算子。
flagos
不同加速器厂商提供的运行时、编译器栈和 PyTorch 集成方式各不相同。torch-fl 通过统一的运行时和算子路由层屏蔽这些差异,提供符合 PyTorch 使用习惯的设备接口。
用户只需使用标准 PyTorch API 和 flagos 设备。插件根据平台能力和配置为每个算子选择内核实现,无需将不同厂商暴露为不同设备名称,也无需在迁移加速器时修改工作负载。
torch-fl 遵循五项原则:
PyTorch 原生接口 — 标准 PyTorch API 无需修改;用户面向 flagos 设备编程,而不是使用厂商专用扩展。
统一逻辑设备 — 单一设备名称(flagos)抽象厂商差异,平台相关路由在算子层透明完成。
分层算子后端 — 每个操作可以分发到不同实现。路由决策以算子为粒度,而不是以设备或模型为粒度。
优先复用而非重写 — 在 dispatch 和 ABI 边界允许的情况下集成成熟内核与编译器栈,避免重复实现已有能力。
明确能力边界 — 对不支持的操作和 CPU 回退路径进行明确说明,不将其描述为完整原生覆盖;通过状态等级区分已验证支持与实验性集成。
torch-fl 主要支持三类算子执行策略:
厂商原生内核:直接调用厂商运行时和算子库(ACLNN、mudnn、topsaten),由插件生成对应厂商 C/C++ API 的绑定代码。
兼容性 boxing:当厂商栈提供可与 PrivateUse1 共存的独立 PyTorch dispatch key 时,以零拷贝方式转换张量元数据。CUDA boxing 通过外部 libtorch_cuda.so 复用 NVIDIA 内核。
libtorch_cuda.so
可移植编译器内核:使用 Triton 或兼容编译器后端生成的 FlagGems 内核,在多个加速器系列之间复用,无需逐平台重写。
同一平台可以组合多种执行路径。这些路径属于内部实现策略,而不是用户选择的产品等级。
PyTorch API | flagos 设备(PrivateUse1) | 设备运行时 + 按算子路由 | FlagGems/编译器内核 | 兼容性 boxing | 厂商原生内核 | CPU 回退 | 加速器运行时
上图为概念架构。组件设计、dispatch 内部机制、分布式集合通信、编译集成和 profiler 设计详见 docs/architecture/。
torch-fl 在项目层面提供以下能力:
torch.compile
ProcessGroupFlagOS
torch.profiler
各平台的能力可用性和验证状态并不相同。某项功能存在于 torch-fl 代码库中,并不代表每个平台都已实现或验证该功能。平台详情请参阅兼容性矩阵。
状态定义:
Eager 执行、训练、编译、分布式、profiler、FlagGems 等能力的详细拆分以及真实硬件验证结果,请参阅兼容性矩阵。
>=2.10,<2.11
torch-fl 根据 PyTorch 内部 ATen 算子注册表生成原生绑定。这些绑定对 C++ ABI 和算子 schema 变化敏感,因此项目固定使用一个 PyTorch 次版本线。当前固定版本线为 2.10.x。
使用其他 PyTorch 次版本(例如 2.11.x)会导致构建或运行时失败。同一次版本线内的补丁版本(例如 2.10.0 到 2.10.1)兼容。
厂商 SDK、CUDA toolkit 及其他平台特定版本要求记录在各平台安装指南中。
先在安装指南中选择平台,然后运行:
import torch import torch_fl # 在 flagos 设备上创建张量 x = torch.randn(4, 4, device="flagos:0") # 操作会路由到适合当前平台的内核 y = torch.relu(x @ x) # 将结果移回 CPU print(y.cpu())
算子具体路由到 FlagGems、厂商内核、兼容性 boxing 或 CPU 回退,由平台检测和运行时配置决定。以上代码在所有受支持加速器上保持不变。
设备查询、同步和多设备用法请参阅快速开始指南。
欢迎参与以下方向的贡献:
开发流程、代码生成、测试要求和 PR 规范详见 CONTRIBUTING.md。
所有 GitHub 对外文本必须使用英文,包括 PR 标题、PR 描述、commit message、issue 内容和 code review 评论。本仓库的代码、注释和历史记录均使用英文,PR 也由不阅读其他语言的贡献者审阅。
torch-fl 基于多个上游项目构建:
以上致谢不代表所列项目或厂商对 torch-fl 的认可或背书。
torch-fl 使用 Apache License 2.0 许可证。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
torch-fl
文档 · 安装 · 快速开始 · 兼容性 · English
FlagOS 软件栈的 PyTorch 设备插件。torch-fl 对外提供统一的
flagos设备,并在可复用原生内核、可移植编译器内核、厂商原生实现和显式 CPU 回退之间路由算子。概览
不同加速器厂商提供的运行时、编译器栈和 PyTorch 集成方式各不相同。torch-fl 通过统一的运行时和算子路由层屏蔽这些差异,提供符合 PyTorch 使用习惯的设备接口。
用户只需使用标准 PyTorch API 和
flagos设备。插件根据平台能力和配置为每个算子选择内核实现,无需将不同厂商暴露为不同设备名称,也无需在迁移加速器时修改工作负载。设计理念
torch-fl 遵循五项原则:
PyTorch 原生接口 — 标准 PyTorch API 无需修改;用户面向
flagos设备编程,而不是使用厂商专用扩展。统一逻辑设备 — 单一设备名称(
flagos)抽象厂商差异,平台相关路由在算子层透明完成。分层算子后端 — 每个操作可以分发到不同实现。路由决策以算子为粒度,而不是以设备或模型为粒度。
优先复用而非重写 — 在 dispatch 和 ABI 边界允许的情况下集成成熟内核与编译器栈,避免重复实现已有能力。
明确能力边界 — 对不支持的操作和 CPU 回退路径进行明确说明,不将其描述为完整原生覆盖;通过状态等级区分已验证支持与实验性集成。
执行路径
torch-fl 主要支持三类算子执行策略:
厂商原生内核:直接调用厂商运行时和算子库(ACLNN、mudnn、topsaten),由插件生成对应厂商 C/C++ API 的绑定代码。
兼容性 boxing:当厂商栈提供可与 PrivateUse1 共存的独立 PyTorch dispatch key 时,以零拷贝方式转换张量元数据。CUDA boxing 通过外部
libtorch_cuda.so复用 NVIDIA 内核。可移植编译器内核:使用 Triton 或兼容编译器后端生成的 FlagGems 内核,在多个加速器系列之间复用,无需逐平台重写。
同一平台可以组合多种执行路径。这些路径属于内部实现策略,而不是用户选择的产品等级。
架构
上图为概念架构。组件设计、dispatch 内部机制、分布式集合通信、编译集成和 profiler 设计详见 docs/architecture/。
能力
torch-fl 在项目层面提供以下能力:
torch.compile集成ProcessGroupFlagOS支持分布式集合通信和 DDPtorch.profiler集成各平台的能力可用性和验证状态并不相同。某项功能存在于 torch-fl 代码库中,并不代表每个平台都已实现或验证该功能。平台详情请参阅兼容性矩阵。
硬件支持
libtorch_cuda.so的 CUDA boxingtorch.compile图执行路径状态定义:
Eager 执行、训练、编译、分布式、profiler、FlagGems 等能力的详细拆分以及真实硬件验证结果,请参阅兼容性矩阵。
兼容性
>=2.10,<2.11)ATen 次版本绑定
torch-fl 根据 PyTorch 内部 ATen 算子注册表生成原生绑定。这些绑定对 C++ ABI 和算子 schema 变化敏感,因此项目固定使用一个 PyTorch 次版本线。当前固定版本线为 2.10.x。
使用其他 PyTorch 次版本(例如 2.11.x)会导致构建或运行时失败。同一次版本线内的补丁版本(例如 2.10.0 到 2.10.1)兼容。
厂商 SDK、CUDA toolkit 及其他平台特定版本要求记录在各平台安装指南中。
快速开始
先在安装指南中选择平台,然后运行:
算子具体路由到 FlagGems、厂商内核、兼容性 boxing 或 CPU 回退,由平台检测和运行时配置决定。以上代码在所有受支持加速器上保持不变。
设备查询、同步和多设备用法请参阅快速开始指南。
文档
入门
参考
架构
平台指南
参与贡献
欢迎参与以下方向的贡献:
开发流程、代码生成、测试要求和 PR 规范详见 CONTRIBUTING.md。
所有 GitHub 对外文本必须使用英文,包括 PR 标题、PR 描述、commit message、issue 内容和 code review 评论。本仓库的代码、注释和历史记录均使用英文,PR 也由不阅读其他语言的贡献者审阅。
致谢
torch-fl 基于多个上游项目构建:
以上致谢不代表所列项目或厂商对 torch-fl 的认可或背书。
许可证
torch-fl 使用 Apache License 2.0 许可证。