Commit c94a436d authored by Paul's avatar Paul
Browse files

Reduce number of identiy ops added

parent d2198a2a
...@@ -256,15 +256,13 @@ void schedule::apply(program& p) const ...@@ -256,15 +256,13 @@ void schedule::apply(program& p) const
return; return;
for(auto ins1 : split.second[i]) for(auto ins1 : split.second[i])
{ {
auto idx1 = std::distance(split.first, ins1); auto args = split.second[j];
for(auto ins2 : split.second[j]) args.push_back(ins1);
{
if(ins1 == ins2) auto point = std::max_element(args.begin(), args.end(), [&](auto x, auto y) {
continue; return std::distance(split.first, x) < std::distance(split.first, y);
auto idx2 = std::distance(split.first, ins2); });
auto point = idx1 > idx2 ? ins1 : ins2; p.insert_instruction(std::next(*point), op::identity{}, args);
p.insert_instruction(std::next(point), op::identity{}, ins1, ins2);
}
} }
}); });
} }
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include <migraphx/generate.hpp> #include <migraphx/generate.hpp>
#include <migraphx/instruction.hpp> #include <migraphx/instruction.hpp>
#include <migraphx/iterator_for.hpp> #include <migraphx/iterator_for.hpp>
#include <migraphx/ranges.hpp>
#include <migraphx/dfor.hpp> #include <migraphx/dfor.hpp>
#include <basic_ops.hpp> #include <basic_ops.hpp>
#include <test.hpp> #include <test.hpp>
...@@ -110,12 +111,11 @@ bool check_conflicts(migraphx::program& p, migraphx::instruction_ref x, migraphx ...@@ -110,12 +111,11 @@ bool check_conflicts(migraphx::program& p, migraphx::instruction_ref x, migraphx
{ {
if(ins->name() != "identity") if(ins->name() != "identity")
continue; continue;
if(ins->inputs().size() != 2) if (not migraphx::contains(ins->inputs(), x))
continue; continue;
if(ins->inputs() == std::vector<migraphx::instruction_ref>{x, y}) if (not migraphx::contains(ins->inputs(), y))
return true; continue;
if(ins->inputs() == std::vector<migraphx::instruction_ref>{y, x}) return true;
return true;
} }
return false; return false;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment