Proto data dependent symbolics#5077
Conversation
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
| auto type = inputs.at(0).type(); | ||
| auto k_val = std::get<int64_t>(k); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| auto type = inputs.at(0).type(); | |
| auto k_val = std::get<int64_t>(k); | |
| auto type = inputs.at(0).type(); | |
| auto k_val = std::get<int64_t>(k); |
| const shape k_shape{shape::int64_type, {1}}; | ||
| auto k_lit = info.add_literal(literal{k_shape, {k}}); | ||
| auto topk_ret = info.add_instruction( | ||
| make_op("topk", {{"k", k}, {"axis", axis}, {"largest", largest}}), args.at(0), k_lit); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| make_op("topk", {{"k", k}, {"axis", axis}, {"largest", largest}}), args.at(0), k_lit); | |
| make_op("topk", {{"k", k}, {"axis", axis}, {"largest", largest}}), | |
| args.at(0), | |
| k_lit); |
| auto ret_val = info.add_instruction(make_op("get_tuple_elem", {{"index", 0}}), topk_ret); | ||
| auto ret_ind = info.add_instruction(make_op("get_tuple_elem", {{"index", 1}}), topk_ret); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| auto ret_val = info.add_instruction(make_op("get_tuple_elem", {{"index", 0}}), topk_ret); | |
| auto ret_ind = info.add_instruction(make_op("get_tuple_elem", {{"index", 1}}), topk_ret); | |
| auto ret_val = | |
| info.add_instruction(make_op("get_tuple_elem", {{"index", 0}}), topk_ret); | |
| auto ret_ind = | |
| info.add_instruction(make_op("get_tuple_elem", {{"index", 1}}), topk_ret); |
| // Constant `k`: use its value for the attribute; topk output is already the exact size. | ||
| int64_t k = arg_k.at<int>(); | ||
| auto topk_ret = info.add_instruction( | ||
| make_op("topk", {{"k", k}, {"axis", axis}, {"largest", largest}}), args.at(0), args.at(1)); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| make_op("topk", {{"k", k}, {"axis", axis}, {"largest", largest}}), args.at(0), args.at(1)); | |
| make_op("topk", {{"k", k}, {"axis", axis}, {"largest", largest}}), | |
| args.at(0), | |
| args.at(1)); |
| auto ret_val = info.add_instruction(make_op("get_tuple_elem", {{"index", 0}}), topk_ret); | ||
| auto ret_ind = info.add_instruction(make_op("get_tuple_elem", {{"index", 1}}), topk_ret); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| auto ret_val = info.add_instruction(make_op("get_tuple_elem", {{"index", 0}}), topk_ret); | |
| auto ret_ind = info.add_instruction(make_op("get_tuple_elem", {{"index", 1}}), topk_ret); | |
| auto ret_val = | |
| info.add_instruction(make_op("get_tuple_elem", {{"index", 0}}), topk_ret); | |
| auto ret_ind = | |
| info.add_instruction(make_op("get_tuple_elem", {{"index", 1}}), topk_ret); |
| auto kk = mm->add_literal( | ||
| migraphx::literal{migraphx::shape{migraphx::shape::int64_type, {1}}, {5}}); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| auto kk = mm->add_literal( | |
| migraphx::literal{migraphx::shape{migraphx::shape::int64_type, {1}}, {5}}); | |
| auto kk = | |
| mm->add_literal(migraphx::literal{migraphx::shape{migraphx::shape::int64_type, {1}}, {5}}); |
| auto r = mm->add_instruction(migraphx::make_op("topk", {{"axis", 1}, {"k", 5}, {"largest", 0}}), | ||
| data); | ||
| data, kk); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| auto r = mm->add_instruction(migraphx::make_op("topk", {{"axis", 1}, {"k", 5}, {"largest", 0}}), | |
| data); | |
| data, kk); | |
| auto r = mm->add_instruction( | |
| migraphx::make_op("topk", {{"axis", 1}, {"k", 5}, {"largest", 0}}), data, kk); |
| auto r2 = m2.add_instruction( | ||
| migraphx::make_op("topk", {{"k", 8}, {"axis", 0}}), valuer, k, idxr); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| auto r2 = m2.add_instruction( | |
| migraphx::make_op("topk", {{"k", 8}, {"axis", 0}}), valuer, k, idxr); | |
| auto r2 = | |
| m2.add_instruction(migraphx::make_op("topk", {{"k", 8}, {"axis", 0}}), valuer, k, idxr); |
| auto r2 = m2.add_instruction( | ||
| migraphx::make_op("topk", {{"k", 8}, {"axis", 1}}), valuer, k, idxr); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| auto r2 = m2.add_instruction( | |
| migraphx::make_op("topk", {{"k", 8}, {"axis", 1}}), valuer, k, idxr); | |
| auto r2 = | |
| m2.add_instruction(migraphx::make_op("topk", {{"k", 8}, {"axis", 1}}), valuer, k, idxr); |
| auto r2 = m2.add_instruction( | ||
| migraphx::make_op("topk", {{"k", 8}, {"axis", 0}}), valuer, k, idxr); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| auto r2 = m2.add_instruction( | |
| migraphx::make_op("topk", {{"k", 8}, {"axis", 0}}), valuer, k, idxr); | |
| auto r2 = | |
| m2.add_instruction(migraphx::make_op("topk", {{"k", 8}, {"axis", 0}}), valuer, k, idxr); |
| } | ||
|
|
||
| template <class E, MIGRAPHX_REQUIRES(is_bit_flag<E>{})> | ||
| constexpr E& operator|=(E& lhs, E rhs) |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| constexpr E& operator|=(E& lhs, E rhs) | |
| constexpr E& operator|=(E & lhs, E rhs) |
| } | ||
|
|
||
| template <class E, MIGRAPHX_REQUIRES(is_bit_flag<E>{})> | ||
| constexpr E& operator&=(E& lhs, E rhs) |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| constexpr E& operator&=(E& lhs, E rhs) | |
| constexpr E& operator&=(E & lhs, E rhs) |
| } | ||
|
|
||
| template <class E, MIGRAPHX_REQUIRES(is_bit_flag<E>{})> | ||
| constexpr E& operator^=(E& lhs, E rhs) |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| constexpr E& operator^=(E& lhs, E rhs) | |
| constexpr E& operator^=(E & lhs, E rhs) |
|
|
||
| op::slice::slice_mode get_slice_mode(slice_input_flags slice_flags) | ||
| { | ||
| switch (slice_flags) |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| switch (slice_flags) | |
| switch(slice_flags) |
| case slice_input_flags::none: | ||
| return op::slice::slice_mode::one_input; | ||
| case slice_input_flags::starts_input: | ||
| return op::slice::slice_mode::starts_input; | ||
| case slice_input_flags::ends_input: | ||
| return op::slice::slice_mode::ends_input; | ||
| case slice_input_flags::axes_input: | ||
| return op::slice::slice_mode::axes_input; | ||
| case (slice_input_flags::starts_input | slice_input_flags::ends_input): | ||
| return op::slice::slice_mode::starts_ends_input; | ||
| case (slice_input_flags::starts_input | slice_input_flags::axes_input): | ||
| return op::slice::slice_mode::starts_axes_input; | ||
| case (slice_input_flags::ends_input | slice_input_flags::axes_input): | ||
| return op::slice::slice_mode::ends_axes_input; | ||
| case (slice_input_flags::starts_input | slice_input_flags::ends_input | slice_input_flags::axes_input): | ||
| return op::slice::slice_mode::starts_ends_axes_input; | ||
| default: | ||
| MIGRAPHX_THROW("PARSE_SLICE: invalid slice_mode"); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| case slice_input_flags::none: | |
| return op::slice::slice_mode::one_input; | |
| case slice_input_flags::starts_input: | |
| return op::slice::slice_mode::starts_input; | |
| case slice_input_flags::ends_input: | |
| return op::slice::slice_mode::ends_input; | |
| case slice_input_flags::axes_input: | |
| return op::slice::slice_mode::axes_input; | |
| case (slice_input_flags::starts_input | slice_input_flags::ends_input): | |
| return op::slice::slice_mode::starts_ends_input; | |
| case (slice_input_flags::starts_input | slice_input_flags::axes_input): | |
| return op::slice::slice_mode::starts_axes_input; | |
| case (slice_input_flags::ends_input | slice_input_flags::axes_input): | |
| return op::slice::slice_mode::ends_axes_input; | |
| case (slice_input_flags::starts_input | slice_input_flags::ends_input | slice_input_flags::axes_input): | |
| return op::slice::slice_mode::starts_ends_axes_input; | |
| default: | |
| MIGRAPHX_THROW("PARSE_SLICE: invalid slice_mode"); | |
| case slice_input_flags::none: return op::slice::slice_mode::one_input; | |
| case slice_input_flags::starts_input: return op::slice::slice_mode::starts_input; | |
| case slice_input_flags::ends_input: return op::slice::slice_mode::ends_input; | |
| case slice_input_flags::axes_input: return op::slice::slice_mode::axes_input; | |
| case(slice_input_flags::starts_input | slice_input_flags::ends_input): | |
| return op::slice::slice_mode::starts_ends_input; | |
| case(slice_input_flags::starts_input | slice_input_flags::axes_input): | |
| return op::slice::slice_mode::starts_axes_input; | |
| case(slice_input_flags::ends_input | slice_input_flags::axes_input): | |
| return op::slice::slice_mode::ends_axes_input; | |
| case(slice_input_flags::starts_input | slice_input_flags::ends_input | | |
| slice_input_flags::axes_input): | |
| return op::slice::slice_mode::starts_ends_axes_input; | |
| default: MIGRAPHX_THROW("PARSE_SLICE: invalid slice_mode"); |
| op::slice create_slice_operator() | ||
| { | ||
| op::slice slice_op; | ||
| slice_op.axes = axes; |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| slice_op.axes = axes; | |
| slice_op.axes = axes; |
| slice_op.ends = ends; | ||
| slice_op.mode = get_slice_mode(flags); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| slice_op.ends = ends; | |
| slice_op.mode = get_slice_mode(flags); | |
| slice_op.ends = ends; | |
| slice_op.mode = get_slice_mode(flags); |
There was a problem hiding this comment.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
format.py
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/op_shape_test.cpp
Lines 5226 to 5230 in 9a224a2
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/ref/slice.cpp
Lines 90 to 94 in 9a224a2
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/ref/slice.cpp
Lines 120 to 124 in 9a224a2
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/ref/slice.cpp
Lines 262 to 266 in 9a224a2
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/ref/slice.cpp
Lines 327 to 331 in 9a224a2
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/ref/slice.cpp
Lines 359 to 363 in 9a224a2
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/simplify_dyn_ops_test.cpp
Lines 537 to 542 in 9a224a2
| if(inputs.size() == 1) | ||
| { | ||
| if(any_sym(starts) or any_sym(ends)) | ||
| MIGRAPHX_THROW("SLICE: Invalid attributes: symbolic in attribute for 1 input slice"); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| MIGRAPHX_THROW("SLICE: Invalid attributes: symbolic in attribute for 1 input slice"); | |
| MIGRAPHX_THROW( | |
| "SLICE: Invalid attributes: symbolic in attribute for 1 input slice"); |
| if(inputs.size() == 2) | ||
| { | ||
| if(set_attributes == ends_axes) | ||
| std::vector<slice_mode> two_input_modes_not_axes = {slice_mode::starts_input, slice_mode::ends_input}; |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| std::vector<slice_mode> two_input_modes_not_axes = {slice_mode::starts_input, slice_mode::ends_input}; | |
| std::vector<slice_mode> two_input_modes_not_axes = {slice_mode::starts_input, | |
| slice_mode::ends_input}; |
| dds.at(axis) = {0, dds.at(axis).get_interval().max}; | ||
| }); | ||
| if(inputs[1].lens()[0] != axes.size()) | ||
| MIGRAPHX_THROW("SLICE: input length (" + migraphx::to_string(inputs[1].lens()[0]) + ") does not match attribute length (" + migraphx::to_string(axes.size()) + ")"); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| MIGRAPHX_THROW("SLICE: input length (" + migraphx::to_string(inputs[1].lens()[0]) + ") does not match attribute length (" + migraphx::to_string(axes.size()) + ")"); | |
| MIGRAPHX_THROW("SLICE: input length (" + | |
| migraphx::to_string(inputs[1].lens()[0]) + | |
| ") does not match attribute length (" + | |
| migraphx::to_string(axes.size()) + ")"); |
| return shape::dynamic_dimension{0, dd.get_interval().max}; | ||
| }); | ||
| if(inputs[1].lens()[0] != starts.size()) | ||
| MIGRAPHX_THROW("SLICE: input length (" + migraphx::to_string(inputs[1].lens()[0]) + ") does not match attribute length (" + migraphx::to_string(starts.size()) + ")"); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| MIGRAPHX_THROW("SLICE: input length (" + migraphx::to_string(inputs[1].lens()[0]) + ") does not match attribute length (" + migraphx::to_string(starts.size()) + ")"); | |
| MIGRAPHX_THROW("SLICE: input length (" + | |
| migraphx::to_string(inputs[1].lens()[0]) + | |
| ") does not match attribute length (" + | |
| migraphx::to_string(starts.size()) + ")"); |
| dds.at(axis) = {0, dds.at(axis).get_interval().max}; | ||
| }); | ||
| if(inputs[1].lens()[0] != axes.size()) | ||
| MIGRAPHX_THROW("SLICE: input length (" + migraphx::to_string(inputs[1].lens()[0]) + ") does not match attribute length (" + migraphx::to_string(axes.size()) + ")"); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| MIGRAPHX_THROW("SLICE: input length (" + migraphx::to_string(inputs[1].lens()[0]) + ") does not match attribute length (" + migraphx::to_string(axes.size()) + ")"); | |
| MIGRAPHX_THROW("SLICE: input length (" + | |
| migraphx::to_string(inputs[1].lens()[0]) + | |
| ") does not match attribute length (" + | |
| migraphx::to_string(axes.size()) + ")"); |
| throws_shape( | ||
| migraphx::make_op("slice", | ||
| {{"ends", {2, 3, 4}}, {"axes", {0, 1, 2}}, {"mode", "starts_input"}}), | ||
| input, | ||
| starts); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| throws_shape( | |
| migraphx::make_op("slice", | |
| {{"ends", {2, 3, 4}}, {"axes", {0, 1, 2}}, {"mode", "starts_input"}}), | |
| input, | |
| starts); | |
| throws_shape(migraphx::make_op( | |
| "slice", {{"ends", {2, 3, 4}}, {"axes", {0, 1, 2}}, {"mode", "starts_input"}}), | |
| input, | |
| starts); |
| throws_shape( | ||
| migraphx::make_op("slice", | ||
| {{"starts", {0, 1, 2}}, {"axes", {0, 1, 2}}, {"mode", "ends_input"}}), | ||
| input, | ||
| ends); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| throws_shape( | |
| migraphx::make_op("slice", | |
| {{"starts", {0, 1, 2}}, {"axes", {0, 1, 2}}, {"mode", "ends_input"}}), | |
| input, | |
| ends); | |
| throws_shape(migraphx::make_op( | |
| "slice", {{"starts", {0, 1, 2}}, {"axes", {0, 1, 2}}, {"mode", "ends_input"}}), | |
| input, | |
| ends); |
| throws_shape( | ||
| migraphx::make_op("slice", | ||
| {{"starts", {0, 1, 2}}, {"ends", {3, 4, 4}}, {"mode", "axes_input"}}), | ||
| input, | ||
| axes); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| throws_shape( | |
| migraphx::make_op("slice", | |
| {{"starts", {0, 1, 2}}, {"ends", {3, 4, 4}}, {"mode", "axes_input"}}), | |
| input, | |
| axes); | |
| throws_shape(migraphx::make_op( | |
| "slice", {{"starts", {0, 1, 2}}, {"ends", {3, 4, 4}}, {"mode", "axes_input"}}), | |
| input, | |
| axes); |
| throws_shape( | ||
| migraphx::make_op("slice", {{"axes", {0, 1, 2}}, {"mode", "starts_ends_input"}}), | ||
| input, | ||
| starts, | ||
| ends); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| throws_shape( | |
| migraphx::make_op("slice", {{"axes", {0, 1, 2}}, {"mode", "starts_ends_input"}}), | |
| input, | |
| starts, | |
| ends); | |
| throws_shape(migraphx::make_op("slice", {{"axes", {0, 1, 2}}, {"mode", "starts_ends_input"}}), | |
| input, | |
| starts, | |
| ends); |
| throws_shape( | ||
| migraphx::make_op("slice", {{"ends", {3, 3, 3}}, {"mode", "starts_axes_input"}}), | ||
| input, | ||
| starts, | ||
| axes); |
There was a problem hiding this comment.
[format.py] reported by reviewdog 🐶
| throws_shape( | |
| migraphx::make_op("slice", {{"ends", {3, 3, 3}}, {"mode", "starts_axes_input"}}), | |
| input, | |
| starts, | |
| axes); | |
| throws_shape(migraphx::make_op("slice", {{"ends", {3, 3, 3}}, {"mode", "starts_axes_input"}}), | |
| input, | |
| starts, | |
| axes); |
Regressions detected 🔴 * No develop baseline was found for this PR's branch point; compared against the latest available develop run instead. |
|
Motivation
Technical Details
Changelog Category
Add a
CHANGELOG.mdentry for any option other thanNot ApplicableFollow the LLVM AI Tool Use Policy for contributions using AI.