viable/strict/1788508216: [Inductor] Route AOTI device type through DeviceOpOverrides (#193904)
PyTorch 的 Inductor 组件将 AOTI/C++ 包装器的 ATen 设备类型映射路由到 DeviceOpOverrides,作为每个设备的权威契约。此更改移除了可变的全局 DEVICE_TO_ATEN 映射,并允许树内和树外后端通过现有的设备代码生成扩展点提供其 ATen 设备类型。更改包括添加 DeviceOpOverrides.aten_device_type(),在 CPU、CUDA、XPU 和 MPS 设备覆盖中实现映射,移除全局映射,将 meta 保留为显式特殊情况,并分离通用无操作覆盖行为与 CPU 特定设备身份。
Development
- First Reportviable/strict/1788508216: [Inductor] Route AOTI device type through DeviceOpOverrides (#193904)PyTorch Core
- Current Assessment此更改反映了 PyTorch 持续改进其代码生成基础设施,以更好地支持多样化的硬件后端。通过使设备类型映射可扩展,它可能降低将 PyTorch 适配到新硬件的门槛,从而促进更广泛的硬件生态系统。Agent Pulse · analysis
PyTorch 的 Inductor 组件将 AOTI/C++ 包装器的 ATen 设备类型映射路由到 DeviceOpOverrides,作为每个设备的权威契约。此更改移除了可变的全局 DEVICE_TO_ATEN 映射,并允许树内和树外后端通过现有的设备代码生成扩展点提供其 ATen 设备类型。更改包括添加 DeviceOpOverrides.aten_device_type(),在 CPU、CUDA、XPU 和 MPS 设备覆盖中实现映射,移除全局映射,将 meta 保留为显式特殊情况,并分离通用无操作覆盖行为与 CPU 特定设备身份。
此更改将设备类型映射从全局可变状态转移到每个设备的覆盖,这减少了代码生成中的隐式全局依赖,并可能提高可维护性。对于自定义后端,它提供了更清晰的扩展点,但需要实现 DeviceOpOverrides.aten_device_type()。
此更改反映了 PyTorch 持续改进其代码生成基础设施,以更好地支持多样化的硬件后端。通过使设备类型映射可扩展,它可能降低将 PyTorch 适配到新硬件的门槛,从而促进更广泛的硬件生态系统。
对于硬件公司和云提供商,此更改可能简化 PyTorch 的适配过程,从而加快新硬件的上市时间。对于依赖 PyTorch 的企业,它可能带来更稳定和可预测的代码生成行为。
未来,可以预期更多后端将采用 DeviceOpOverrides 模式,并且可能进一步重构代码生成以使用类似的覆盖机制。