MCPcopy Create free account
hub / github.com/ROCm/AMDMIGraphX / update_op

Function update_op

src/insert_pad.cpp:37–71  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35inline namespace MIGRAPHX_INLINE_NS {
36
37static void update_op(const instruction_ref& input, const instruction_ref& ins, module& m)
38{
39 auto op = ins->get_operator();
40 auto val = op.to_value();
41 auto op_padding = val.at("padding").to_vector<size_t>();
42
43 // skip if shape is dynamic
44 if(input->get_shape().dynamic())
45 {
46 return;
47 }
48
49 auto kdims = input->get_shape().lens().size() - 2;
50 if(std::equal(op_padding.begin(),
51 op_padding.begin() + kdims,
52 op_padding.begin() + kdims,
53 op_padding.end()))
54 return;
55
56 std::vector<int64_t> padding(input->get_shape().lens().size() * 2, 0);
57 std::vector<size_t> pads_l(op_padding.begin(), op_padding.begin() + kdims);
58 std::vector<size_t> pads_r(op_padding.begin() + kdims, op_padding.end());
59 op_padding = std::vector<size_t>(kdims * 2, 0);
60 op.from_value({{"padding", op_padding}});
61
62 std::copy(pads_l.begin(), pads_l.end(), padding.begin() + 2);
63 std::copy(pads_r.begin(), pads_r.end(), padding.begin() + kdims + 2 + 2);
64
65 auto pad_op = m.insert_instruction(ins, op::pad{padding}, input);
66
67 auto new_inputs = ins->inputs();
68 new_inputs.front() = pad_op;
69
70 m.replace_instruction(ins, op, new_inputs);
71}
72
73static void update_pooling(const instruction_ref& input, const instruction_ref& ins, module& m)
74{

Callers 1

applyMethod · 0.70

Calls 15

atMethod · 0.80
dynamicMethod · 0.80
lensMethod · 0.80
insert_instructionMethod · 0.80
frontMethod · 0.80
replace_instructionMethod · 0.80
equalFunction · 0.50
copyFunction · 0.50
to_valueMethod · 0.45
get_shapeMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected