[ez][release blocker fix] Insert `linalg_vector_norm` into decomp table used for Edge export (#9938)
Summary:
## Context
Addresses this [release
blocker](https://github.com/orgs/pytorch/projects/99/views/1?pane=issue&itemId=104088363&issue=pytorch%7Cpytorch%7C150207)
issue. Some models cannot export because they use `linalg_vector_norm`
which is not currently an ATen operator.
I initially tried adding the op to the core decomp table, but the decomp
is not passing pytorch correctness tests. Please see
https://github.com/pytorch/pytorch/pull/150241 for more details.
## Changes
Since we currently cannot include the op in PyTorch's decomp table,
instead we can insert the op into the edge decomp table directly.
This PR is a simple change to add `linalg_vector_norm` directly to the
edge decomp table.
Test Plan:
Tested exporting and running a model with the `linalg_vector_norm` op
via the following script.
```
import torch
from executorch.exir import to_edge_transform_and_lower, EdgeCompileConfig
from torch.export import Dim, export
from executorch.extension.pybindings.portable_lib import ( # @manual
_load_for_executorch_from_buffer,
)
class Model(torch.nn.Module):
def __init__(self):
super().__init__()
def forward(self, x):
return torch.linalg.vector_norm(x, 2)
model = Model()
inputs = (torch.randn(1,1,16,16),)
dynamic_shapes = {
"x": {
2: Dim("h", min=16, max=1024),
3: Dim("w", min=16, max=1024),
}
}
exported_program = export(model, inputs, dynamic_shapes=dynamic_shapes)
executorch_program = to_edge_transform_and_lower(
exported_program,
compile_config=EdgeCompileConfig(_check_ir_validity=False),
).to_executorch()
executorch_module = _load_for_executorch_from_buffer(
executorch_program.buffer
)
model_output = executorch_module.run_method(
"forward", tuple(inputs)
)
print(model_output)
``` S
Sicheng Stephen Jia committed
c2e3e17af3945a756aaee023f2e9d55d4baab637
Parent: f28b5db
Committed by GitHub <noreply@github.com>
on 4/9/2025, 5:48:40 PM