"src/diffusers/pipelines/lumina2/pipeline_lumina2.py" did not exist on "7ef8a46523326b5ebafa5c8a588d128d195d2f25"
eliminate_identity.cpp 1.04 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <migraphx/eliminate_identity.hpp>
#include <migraphx/program.hpp>
#include <migraphx/instruction.hpp>
#include <migraphx/operators.hpp>
#include <migraphx/iterator_for.hpp>
#include <migraphx/ranges.hpp>
#include <migraphx/stringutils.hpp>
#include <utility>

namespace migraphx {
inline namespace MIGRAPHX_INLINE_NS {

void eliminate_identity::apply(program& p) const
{
    for(auto ins : iterator_for(p))
    {
        if(ins->get_operator().name() == "identity")
        {
            if(ins != p.end())
            {
                instruction_ref identity_input{ins->inputs().at(0)};
                auto next_ins = std::next(ins);
                std::vector<instruction_ref> next_ins_inputs{next_ins->inputs()};
Khalique's avatar
Khalique committed
24
                std::replace_if(next_ins_inputs.begin(), next_ins_inputs.end(), [&](instruction_ref& input) { return input == ins;}, identity_input);
25
26
27
28
29
30
31
32
                p.replace_instruction(next_ins, next_ins->get_operator(), next_ins_inputs);
            }
        }
    }
}

} // namespace MIGRAPHX_INLINE_NS
} // namespace migraphx