CRNN model decomposition Error with ARM Ethos-U backend
@zingo is already working on this.
Since Jul 8, 2025.
- Dominant language
- Python
- Stars
- 5k
- Forks
- 1.2k
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 581
Description
🐛 Describe the bug
I want to convert and run my CRNN model with Resnet backend on ARM FVP 300 but facing errors in lowering method when using either EthosUPartitioner or TOSAPartitioner. Mind that there is no such issue with pure EdgeDialect (no partitioner).
edge = to_edge_transform_and_lower(
exported_program,
partitioner=[partitioner],
compile_config=EdgeCompileConfig(
_check_ir_validity=False,
),
)
Node aten_linear_default_2 with op <EdgeOpOverload: aten.linear.default>: schema = aten::linear(Tensor input, Tensor weight, Tensor? bias=None) -> Tensor was not decomposed or delegated.
This op was registered by the partitioner EthosUPartitioner to not be decomposed.
The following ops: {<OpOverload(op='aten.linear', overload='default')>, <OpOverload(op='aten.eye', overload='default')>, <OpOverload(op='aten.hardsigmoid', overload='default')>, <OpOverload(op='aten.upsample_nearest2d', overload='vec')>, <OpOverload(op='aten.upsample_bilinear2d', overload='vec')>, <OpOverload(op='aten.hardswish', overload='default')>, <OpOverload(op='aten.linspace', overload='default')>} were specified to not be decomposed in forward.
As I am quite new to ExecuTorch can you please explain me or point the right direction for the following questions:
- Does the graph in EdgeDialect should be fully delegated or is it possible to have only some ops accelerated by backend? My point is: Is this error a critical one?
- I don't see e.g. hardsigmoid to be part of Core ATen operations but I can see that arm backend has some code regarding that function. Can you exaplin why I am seeing an error like above?
- What should be the right approach if I encounter similar errors in the futurte? Change architecture, add ops implementation, user passes? I can see that problem is (probably) that one of my Attention layers is nn.Linear without bias so it is converted to
torch.ops.aten.linear.defaultwithout 3rd argument.
Thank you folks for your outstanding work.
Versions
[pip3] executorch==0.8.0a0+f858e0d
[pip3] numpy==2.3.1
[pip3] nvidia-cublas-cu12==12.6.4.1
[pip3] nvidia-cuda-cupti-cu12==12.6.80
[pip3] nvidia-cuda-nvrtc-cu12==12.6.77
[pip3] nvidia-cuda-runtime-cu12==12.6.77
[pip3] nvidia-cudnn-cu12==9.5.1.17
[pip3] nvidia-cufft-cu12==11.3.0.4
[pip3] nvidia-curand-cu12==10.3.7.77
[pip3] nvidia-cusolver-cu12==11.7.1.2
[pip3] nvidia-cusparse-cu12==12.5.4.2
[pip3] nvidia-cusparselt-cu12==0.6.3
[pip3] nvidia-nccl-cu12==2.26.2
[pip3] nvidia-nvjitlink-cu12==12.6.85
[pip3] nvidia-nvtx-cu12==12.6.77
[pip3] pytorch_tokenizers==0.1.0
[pip3] torch==2.8.0.dev20250625+cpu
[pip3] torchao==0.12.0+gitbc68b11f
[pip3] torchaudio==2.8.0.dev20250625+cpu
[pip3] torchdata==0.11.0
[pip3] torchsr==1.0.4
[pip3] torchtune==0.6.1
[pip3] torchvision==0.23.0.dev20250625+cpu
[pip3] triton==3.3.1
[conda] Could not collect
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.