Skip to content

Conversation

@nikita-kud
Copy link
Contributor

@nikita-kud nikita-kud commented Dec 30, 2025

Details:

Essentially the partitioning ignores ::intel_npu::NPUW_F16IC option for the irregular ov::Result consumer.

Tickets:

  • E-193955

@github-actions github-actions bot added category: NPU OpenVINO NPU plugin category: NPUW NPUW plugin labels Dec 30, 2025
@dmatveev dmatveev added this to the 2026.0 milestone Dec 30, 2025
Copy link
Contributor

@dmatveev dmatveev left a comment

Choose a reason for hiding this comment

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

A very promising start!

Copy link
Contributor Author

@nikita-kud nikita-kud left a comment

Choose a reason for hiding this comment

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

@dmatveev, @esmirno please take a look, thanks!

}

auto firstGroup = *(gset.begin());
for(auto output_layer: firstGroup->getOutputs()) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is why I added Group::getOutputs method


auto matches = m_layer_matches.at(reptag->id());

if(gset.size() <= 1) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Is it even possible to get empty or just one element set for the repeating tag?

Copy link
Contributor

Choose a reason for hiding this comment

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

In theory, yes, a single-element set is possible. E.g. the algorithm has found 32 repeating blocks A and 31 repeating blocks B, A+B merge would result in 31 AB blocks + 1 A leftover.

Those blocks are clean up later in the repeating blocks pipeline but may retain their reptags in the process (so it really depends on when this method is called).

return lrs.count(this_layer_name) > 0;
});

NPUW_ASSERT(layer_bank_iter != matches.end());
Copy link
Contributor Author

Choose a reason for hiding this comment

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

So I assume we will have at least one match if we have more than one group.

Copy link
Contributor

@dmatveev dmatveev left a comment

Choose a reason for hiding this comment

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

Well done, LGTM! Hope it still works!


auto matches = m_layer_matches.at(reptag->id());

if(gset.size() <= 1) {
Copy link
Contributor

Choose a reason for hiding this comment

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

In theory, yes, a single-element set is possible. E.g. the algorithm has found 32 repeating blocks A and 31 repeating blocks B, A+B merge would result in 31 AB blocks + 1 A leftover.

Those blocks are clean up later in the repeating blocks pipeline but may retain their reptags in the process (so it really depends on when this method is called).

@nikita-kud nikita-kud changed the title Disable NPUW_F16IC option when some groups have and additional ov::Re… Avoid inserting Convert operations for irregular ov::Result case Jan 8, 2026
@nikita-kud nikita-kud marked this pull request as ready for review January 8, 2026 12:02
@nikita-kud nikita-kud requested review from a team as code owners January 8, 2026 12:02
@nikita-kud nikita-kud force-pushed the fix_F16IC_handling branch 2 times, most recently from 51c805e to 05f47b7 Compare January 8, 2026 16:39
@nikita-kud nikita-kud requested a review from eshiryae January 8, 2026 16:40

pugi::xml_node node = doc.append_child("ensemble");
node.append_attribute("gflops") = std::to_string(ens.gflops).data();
node.append_attribute("irregular_results") = std::to_string(ens.irregular_results).data();
Copy link
Contributor Author

Choose a reason for hiding this comment

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

It looks like there are no tests for printing/parsing this structure, please let me know if I missed something


#include "model_generator.hpp"

#include "openvino/op/ops.hpp"
Copy link
Contributor Author

Choose a reason for hiding this comment

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

changes by clang format

@dmatveev dmatveev added this pull request to the merge queue Jan 9, 2026
Merged via the queue into openvinotoolkit:master with commit 5259a57 Jan 9, 2026
182 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category: NPU OpenVINO NPU plugin category: NPUW NPUW plugin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants