Skip to content

[PDPD] Fix FastRCNN unsupported-operation crash on expand_2.tmp_0 (dynamic-rank Broadcast)#36890

Merged
yuxu42 merged 1 commit into
openvinotoolkit:masterfrom
liubo-intel:liubo/Fix_PDPD_FastRCNN_crash_issue
Jul 17, 2026
Merged

[PDPD] Fix FastRCNN unsupported-operation crash on expand_2.tmp_0 (dynamic-rank Broadcast)#36890
yuxu42 merged 1 commit into
openvinotoolkit:masterfrom
liubo-intel:liubo/Fix_PDPD_FastRCNN_crash_issue

Conversation

@liubo-intel

Copy link
Copy Markdown
Contributor

Details:

  • The Paddle expand_v2 translator can emit an opset Broadcast whose target-shape
    vector has a dynamic length
    , producing a dynamic-rank output. When such an
    expand_v2 sits inside a control-flow body (e.g. PaddleDetection faster_rcnn_r50_1x_coco),
    CPU plugin compilation will crash.
    this pr pins the Broadcast target-shape length to the statically-known expand output
    rank, keeping the Broadcast output rank static.

Tickets:

@liubo-intel
liubo-intel requested a review from a team as a code owner July 15, 2026 05:39
@github-actions github-actions Bot added the category: PDPD FE OpenVINO PaddlePaddle FrontEnd label Jul 15, 2026
@liubo-intel

Copy link
Copy Markdown
Contributor Author

new added testcase passed:
new_add_testcase_pass

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses a Paddle frontend edge case where expand_v2 conversion can produce an OpenVINO Broadcast whose target-shape tensor has dynamic length, leading to a dynamic-rank Broadcast output and a CPU plugin compilation crash (notably in FastRCNN-like control-flow bodies).

Changes:

  • In the Paddle expand_v2 translator, pin the Broadcast target-shape vector length to the statically known output rank (using Gather with constant indices).
  • Add a new Paddle model generator case intended to exercise expand_v2 inside control flow.
  • Register the new model in the Paddle frontend “fuzzy op” CPU-execution test set.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
src/frontends/paddle/src/op/expand_v2.cpp Pins Broadcast target-shape length to static output rank via Gather to avoid dynamic-rank Broadcast outputs.
src/frontends/paddle/tests/test_models/gen_scripts/generate_expand_v2.py Adds a control-flow model generator case for expand_v2 and reformats existing code.
src/frontends/paddle/tests/op_fuzzy.cpp Includes the newly generated control-flow model in the CPU-backed fuzzy execution suite.

@yuxu42
yuxu42 requested a review from azhai219 July 15, 2026 08:59
@yuxu42

yuxu42 commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Hi @azhai219 could you review the PR?

@azhai219

Copy link
Copy Markdown
Contributor

Hi @azhai219 could you review the PR?

ok

@yuxu42
yuxu42 added this pull request to the merge queue Jul 17, 2026
@github-actions

Copy link
Copy Markdown
Contributor

CI Doctor — Merge Queue failure on this PR

Pipeline: Linux (Ubuntu 22.04, ARM64 cross-compilation, Python 3.11)
Failure: smoke_ConvertCPULayerTest - Value of: primTypeCheck(primType) is unexpected
Automatic restart: ❌ Not triggered — please retry the merge queue manually (the failure is unrelated to this PR's changes)

Possible remedy

  1. Re-queue this PR in the merge queue — the failure is a pre-existing ARM64/ACL issue unrelated to the Paddle frontend changes in this PR.
  2. If the failure recurs, report it to the CPU plugin team so they can investigate the ACL primitive type registration for i8/u8 conversion.
  3. The CPU plugin team can add the specific test variant to the expected-failures list as a short-term workaround.

What happened

The ARM64 functional test smoke_ConvertCPULayerTest_4D_Dynamic (i8→u8, nchw, primitive=acl) failed at cpu_test_utils.cpp:248 with primType is unexpected : unknown_i8 Expected : ref_i8. This same test class has failed on at least 3 other unrelated PRs in the past 9 days (with f32, i32, and now i8 precisions), confirming it is a pre-existing flaky issue in the ARM64 ACL backend — not caused by this PR.

Generated by CI Failure Doctor — Merge Queue · 135.3 AIC · ⌖ 6.47 AIC · ⊞ 20K ·

Merged via the queue into openvinotoolkit:master with commit bd62c46 Jul 17, 2026
198 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category: PDPD FE OpenVINO PaddlePaddle FrontEnd

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants