From ae2c12d175290cdf3d7673d9dffec8f87f8bc212 Mon Sep 17 00:00:00 2001 From: Xuejun Date: Sat, 9 May 2026 16:32:25 +0800 Subject: [PATCH 1/7] OpenVINO backend: enable get_rows with view --- ggml/src/ggml-openvino/ggml-openvino.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/ggml/src/ggml-openvino/ggml-openvino.cpp b/ggml/src/ggml-openvino/ggml-openvino.cpp index 6fffe3cd796..241a77a96ad 100644 --- a/ggml/src/ggml-openvino/ggml-openvino.cpp +++ b/ggml/src/ggml-openvino/ggml-openvino.cpp @@ -1021,7 +1021,6 @@ static bool ggml_backend_openvino_device_supports_op(ggml_backend_dev_t dev, con return false; } static std::set ops_not_support_view_input{ - GGML_OP_GET_ROWS, GGML_OP_RMS_NORM, GGML_OP_NORM, GGML_OP_L2_NORM, From b44bfbc602b250cc439a0a56c8568f92c5ecf9c6 Mon Sep 17 00:00:00 2001 From: Xuejun Date: Sat, 9 May 2026 23:42:35 +0800 Subject: [PATCH 2/7] OpenVINO backend: enable view + norm/rms_norm --- ggml/src/ggml-openvino/ggml-openvino.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/ggml/src/ggml-openvino/ggml-openvino.cpp b/ggml/src/ggml-openvino/ggml-openvino.cpp index 241a77a96ad..c12da243b8a 100644 --- a/ggml/src/ggml-openvino/ggml-openvino.cpp +++ b/ggml/src/ggml-openvino/ggml-openvino.cpp @@ -1021,8 +1021,6 @@ static bool ggml_backend_openvino_device_supports_op(ggml_backend_dev_t dev, con return false; } static std::set ops_not_support_view_input{ - GGML_OP_RMS_NORM, - GGML_OP_NORM, GGML_OP_L2_NORM, }; if (ops_not_support_view_input.find(op->op) != ops_not_support_view_input.end() && has_view_op_input(op)) { From 45a401c873f1116a62e1ca12c161831aa7fd2598 Mon Sep 17 00:00:00 2001 From: Xuejun Date: Sat, 9 May 2026 23:54:14 +0800 Subject: [PATCH 3/7] OpenVINO backend: concat op --- ggml/src/ggml-openvino/ggml-decoder.cpp | 1 + ggml/src/ggml-openvino/ggml-openvino.cpp | 1 + ggml/src/ggml-openvino/openvino/op/concat.cpp | 48 +++++++++++++++++++ ggml/src/ggml-openvino/openvino/op_table.cpp | 1 + ggml/src/ggml-openvino/openvino/op_table.h | 1 + 5 files changed, 52 insertions(+) create mode 100644 ggml/src/ggml-openvino/openvino/op/concat.cpp diff --git a/ggml/src/ggml-openvino/ggml-decoder.cpp b/ggml/src/ggml-openvino/ggml-decoder.cpp index e69c4e5cca0..caf2bcd3d5d 100644 --- a/ggml/src/ggml-openvino/ggml-decoder.cpp +++ b/ggml/src/ggml-openvino/ggml-decoder.cpp @@ -1246,6 +1246,7 @@ std::string GgmlOvDecoder::compute_op_type(const ggml_tensor * node) { {GGML_OP_ACC, "GGML_OP_ACC" }, {GGML_OP_ADD, "GGML_OP_ADD" }, {GGML_OP_ADD1, "GGML_OP_ADD1" }, + {GGML_OP_CONCAT, "GGML_OP_CONCAT" }, {GGML_OP_CONT, "GGML_OP_CONT" }, {GGML_OP_DIV, "GGML_OP_DIV" }, {GGML_OP_DUP, "GGML_OP_DUP" }, diff --git a/ggml/src/ggml-openvino/ggml-openvino.cpp b/ggml/src/ggml-openvino/ggml-openvino.cpp index c12da243b8a..7eaa72e3c31 100644 --- a/ggml/src/ggml-openvino/ggml-openvino.cpp +++ b/ggml/src/ggml-openvino/ggml-openvino.cpp @@ -953,6 +953,7 @@ static bool ggml_backend_openvino_device_supports_op(ggml_backend_dev_t dev, con static const std::set supported_ops{GGML_OP_NONE, GGML_OP_ADD, + GGML_OP_CONCAT, GGML_OP_MUL, GGML_OP_MUL_MAT, GGML_OP_VIEW, diff --git a/ggml/src/ggml-openvino/openvino/op/concat.cpp b/ggml/src/ggml-openvino/openvino/op/concat.cpp new file mode 100644 index 00000000000..c5502361c75 --- /dev/null +++ b/ggml/src/ggml-openvino/openvino/op/concat.cpp @@ -0,0 +1,48 @@ +#include "../node_context.h" +#include "../op_table.h" +#include "../utils.h" + +#include +#include +#include +#include + +namespace ov { +namespace frontend { +namespace ggml { +namespace op { + +OutputVector translate_concat(const NodeContext & context) { + num_inputs_check(context, 2, 2); + + const int32_t * op_params = context.get_output_op_params(); + FRONT_END_CHECK_IMPLEMENTED(op_params != nullptr, "CONCAT requires output op params"); + + const auto output_shape = context.get_output_shape(); + FRONT_END_CHECK_IMPLEMENTED(output_shape.rank().is_static(), "CONCAT requires static output rank"); + + const auto rank = output_shape.rank().get_length(); + const int32_t ggml_dim = op_params[0]; + FRONT_END_CHECK_IMPLEMENTED(ggml_dim >= 0 && ggml_dim < rank, "CONCAT axis is out of range"); + + auto input_0 = process_view_input_new(context, 0); + auto input_1 = process_view_input_new(context, 1); + const auto output_type = context.get_output_type(); + + if (input_0.get_element_type() != output_type) { + input_0 = std::make_shared(input_0, output_type); + } + if (input_1.get_element_type() != output_type) { + input_1 = std::make_shared(input_1, output_type); + } + + const auto axis = static_cast(rank - 1 - ggml_dim); + auto res = std::make_shared(OutputVector{input_0, input_1}, axis); + + return rename_outputs_with_suffix({res}, context.get_name()); +} + +} // namespace op +} // namespace ggml +} // namespace frontend +} // namespace ov \ No newline at end of file diff --git a/ggml/src/ggml-openvino/openvino/op_table.cpp b/ggml/src/ggml-openvino/openvino/op_table.cpp index c2c1917892c..6ec3bf23d04 100644 --- a/ggml/src/ggml-openvino/openvino/op_table.cpp +++ b/ggml/src/ggml-openvino/openvino/op_table.cpp @@ -20,6 +20,7 @@ std::unordered_map get_supported_ops() { return { {"GGML_OP_ADD", op::translate_1to1_match_2_inputs }, {"GGML_OP_ADD1", op::translate_1to1_match_2_inputs }, + {"GGML_OP_CONCAT", op::translate_concat }, {"GGML_OP_CONT", op::translate_cont }, {"GGML_OP_DIV", op::translate_1to1_match_2_inputs }, {"GGML_OP_GET_ROWS", op::translate_get_rows }, diff --git a/ggml/src/ggml-openvino/openvino/op_table.h b/ggml/src/ggml-openvino/openvino/op_table.h index b8d7bf63c3f..979e00d77e6 100644 --- a/ggml/src/ggml-openvino/openvino/op_table.h +++ b/ggml/src/ggml-openvino/openvino/op_table.h @@ -11,6 +11,7 @@ namespace op { #define GGML_OP_CONVERTER(op) OutputVector op(const NodeContext& context) GGML_OP_CONVERTER(translate_cont); +GGML_OP_CONVERTER(translate_concat); GGML_OP_CONVERTER(translate_get_rows); GGML_OP_CONVERTER(translate_mulmat); GGML_OP_CONVERTER(translate_permute); From 49b57ae111be7490dcc065f487adf0880eb2815b Mon Sep 17 00:00:00 2001 From: Xuejun Date: Sun, 10 May 2026 00:02:30 +0800 Subject: [PATCH 4/7] OpenVINO backend: argsort op --- ggml/src/ggml-openvino/ggml-decoder.cpp | 3 +- ggml/src/ggml-openvino/ggml-openvino.cpp | 3 +- .../src/ggml-openvino/openvino/op/argsort.cpp | 52 +++++++++++++++++++ ggml/src/ggml-openvino/openvino/op_table.cpp | 1 + ggml/src/ggml-openvino/openvino/op_table.h | 1 + 5 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 ggml/src/ggml-openvino/openvino/op/argsort.cpp diff --git a/ggml/src/ggml-openvino/ggml-decoder.cpp b/ggml/src/ggml-openvino/ggml-decoder.cpp index caf2bcd3d5d..d12c682d14b 100644 --- a/ggml/src/ggml-openvino/ggml-decoder.cpp +++ b/ggml/src/ggml-openvino/ggml-decoder.cpp @@ -1269,7 +1269,8 @@ std::string GgmlOvDecoder::compute_op_type(const ggml_tensor * node) { {GGML_OP_L2_NORM, "GGML_OP_L2_NORM" }, {GGML_OP_PAD, "GGML_OP_PAD" }, {GGML_OP_SSM_CONV, "GGML_OP_SSM_CONV" }, - {GGML_OP_GATED_DELTA_NET, "GGML_OP_GATED_DELTA_NET"} + {GGML_OP_GATED_DELTA_NET, "GGML_OP_GATED_DELTA_NET"}, + {GGML_OP_ARGSORT, "GGML_OP_ARGSORT" } }; static const std::map unary_ops = { {GGML_UNARY_OP_ABS, "GGML_UNARY_OP_ABS" }, diff --git a/ggml/src/ggml-openvino/ggml-openvino.cpp b/ggml/src/ggml-openvino/ggml-openvino.cpp index 7eaa72e3c31..e53f01df85b 100644 --- a/ggml/src/ggml-openvino/ggml-openvino.cpp +++ b/ggml/src/ggml-openvino/ggml-openvino.cpp @@ -973,7 +973,8 @@ static bool ggml_backend_openvino_device_supports_op(ggml_backend_dev_t dev, con GGML_OP_L2_NORM, GGML_OP_PAD, GGML_OP_SSM_CONV, - GGML_OP_GATED_DELTA_NET}; + GGML_OP_GATED_DELTA_NET, + GGML_OP_ARGSORT}; static const std::set supported_unary_ops{ GGML_UNARY_OP_GELU, GGML_UNARY_OP_SILU, diff --git a/ggml/src/ggml-openvino/openvino/op/argsort.cpp b/ggml/src/ggml-openvino/openvino/op/argsort.cpp new file mode 100644 index 00000000000..f3026e0f85f --- /dev/null +++ b/ggml/src/ggml-openvino/openvino/op/argsort.cpp @@ -0,0 +1,52 @@ +#include "../node_context.h" +#include "../op_table.h" +#include "../utils.h" +#include "ggml.h" + +#include +#include +#include +#include + +namespace ov { +namespace frontend { +namespace ggml { +namespace op { + +OutputVector translate_argsort(const NodeContext & context) { + num_inputs_check(context, 1, 1); + + auto input = process_view_input_new(context, 0); + + const int32_t order = context.get_output_op_params()[0]; + + ov::op::v11::TopK::Mode mode; + switch (order) { + case GGML_SORT_ORDER_ASC: + mode = ov::op::v11::TopK::Mode::MIN; + break; + case GGML_SORT_ORDER_DESC: + mode = ov::op::v11::TopK::Mode::MAX; + break; + default: + FRONT_END_OP_CONVERSION_CHECK(false, "Unsupported GGML_OP_ARGSORT order: ", order); + } + + auto k = std::make_shared(get_dimensions(input.get_node_shared_ptr(), {3}), + ov::op::v0::Constant::create(ov::element::i64, {1}, {0})); + + auto topk = std::make_shared(input, + k, + 3, + mode, + ov::op::v11::TopK::SortType::SORT_VALUES, + context.get_output_type(), + false); + + return rename_outputs_with_suffix({topk->output(1)}, context.get_name()); +} + +} // namespace op +} // namespace ggml +} // namespace frontend +} // namespace ov \ No newline at end of file diff --git a/ggml/src/ggml-openvino/openvino/op_table.cpp b/ggml/src/ggml-openvino/openvino/op_table.cpp index 6ec3bf23d04..e1aa9e90ede 100644 --- a/ggml/src/ggml-openvino/openvino/op_table.cpp +++ b/ggml/src/ggml-openvino/openvino/op_table.cpp @@ -34,6 +34,7 @@ std::unordered_map get_supported_ops() { {"GGML_OP_ROPE", op::translate_rope }, {"GGML_OP_SCALE", op::translate_scale }, {"GGML_OP_SOFT_MAX", op::translate_soft_max }, + {"GGML_OP_ARGSORT", op::translate_argsort }, {"GGML_OP_SUB", op::translate_1to1_match_2_inputs}, {"GGML_OP_TRANSPOSE", op::translate_transpose }, {"GGML_UNARY_OP_GELU", op::translate_1to1_match_1_input }, diff --git a/ggml/src/ggml-openvino/openvino/op_table.h b/ggml/src/ggml-openvino/openvino/op_table.h index 979e00d77e6..60ca4bff115 100644 --- a/ggml/src/ggml-openvino/openvino/op_table.h +++ b/ggml/src/ggml-openvino/openvino/op_table.h @@ -29,6 +29,7 @@ GGML_OP_CONVERTER(translate_glu_swiglu); GGML_OP_CONVERTER(translate_glu_geglu); GGML_OP_CONVERTER(translate_set_rows); GGML_OP_CONVERTER(translate_cpy); +GGML_OP_CONVERTER(translate_argsort); GGML_OP_CONVERTER(translate_flash_attn_ext); GGML_OP_CONVERTER(translate_pad); GGML_OP_CONVERTER(translate_ssm_conv); From c935097935326a2df09dcb91cc4fa49a9eddaf0c Mon Sep 17 00:00:00 2001 From: Xuejun Date: Mon, 11 May 2026 10:32:57 +0800 Subject: [PATCH 5/7] OpenVINO backend: enable unary + view & GGML_UNARY_OP_SOFTPLUS --- ggml/src/ggml-openvino/ggml-decoder.cpp | 1 + ggml/src/ggml-openvino/ggml-openvino.cpp | 6 +-- .../ggml-openvino/openvino/op/get_rows.cpp | 11 +----- .../ggml-openvino/openvino/op/unary_silu.cpp | 2 +- .../openvino/op/unary_softplus.cpp | 38 +++++++++++++++++++ ggml/src/ggml-openvino/openvino/op_table.cpp | 1 + ggml/src/ggml-openvino/openvino/op_table.h | 1 + ggml/src/ggml-openvino/openvino/utils.h | 3 +- 8 files changed, 47 insertions(+), 16 deletions(-) create mode 100644 ggml/src/ggml-openvino/openvino/op/unary_softplus.cpp diff --git a/ggml/src/ggml-openvino/ggml-decoder.cpp b/ggml/src/ggml-openvino/ggml-decoder.cpp index d12c682d14b..e24cea736f2 100644 --- a/ggml/src/ggml-openvino/ggml-decoder.cpp +++ b/ggml/src/ggml-openvino/ggml-decoder.cpp @@ -1284,6 +1284,7 @@ std::string GgmlOvDecoder::compute_op_type(const ggml_tensor * node) { {GGML_UNARY_OP_GELU, "GGML_UNARY_OP_GELU" }, {GGML_UNARY_OP_GELU_QUICK, "GGML_UNARY_OP_GELU_QUICK" }, {GGML_UNARY_OP_SILU, "GGML_UNARY_OP_SILU" }, + {GGML_UNARY_OP_SOFTPLUS, "GGML_UNARY_OP_SOFTPLUS" }, {GGML_UNARY_OP_HARDSWISH, "GGML_UNARY_OP_HARDSWISH" }, {GGML_UNARY_OP_HARDSIGMOID, "GGML_UNARY_OP_HARDSIGMOID"}, {GGML_UNARY_OP_EXP, "GGML_UNARY_OP_EXP" }, diff --git a/ggml/src/ggml-openvino/ggml-openvino.cpp b/ggml/src/ggml-openvino/ggml-openvino.cpp index e53f01df85b..75a984a702b 100644 --- a/ggml/src/ggml-openvino/ggml-openvino.cpp +++ b/ggml/src/ggml-openvino/ggml-openvino.cpp @@ -978,6 +978,7 @@ static bool ggml_backend_openvino_device_supports_op(ggml_backend_dev_t dev, con static const std::set supported_unary_ops{ GGML_UNARY_OP_GELU, GGML_UNARY_OP_SILU, + GGML_UNARY_OP_SOFTPLUS, GGML_UNARY_OP_TANH, }; static const std::set supported_glu_ops{ @@ -992,11 +993,6 @@ static bool ggml_backend_openvino_device_supports_op(ggml_backend_dev_t dev, con // GGML_LOG_WARN("OpenVINO backend does not support unary op %s\n", ggml_unary_op_name(ggml_get_unary_op(op))); return false; } - if (has_view_op_input(op)) { - // GGML_LOG_WARN("OpenVINO backend does not support unary op %s with view input\n", - // ggml_unary_op_name(ggml_get_unary_op(op))); - return false; - } break; } case GGML_OP_GLU: { diff --git a/ggml/src/ggml-openvino/openvino/op/get_rows.cpp b/ggml/src/ggml-openvino/openvino/op/get_rows.cpp index 49f51b7ca3f..380e70a72e0 100644 --- a/ggml/src/ggml-openvino/openvino/op/get_rows.cpp +++ b/ggml/src/ggml-openvino/openvino/op/get_rows.cpp @@ -18,16 +18,9 @@ namespace op { OutputVector translate_get_rows(const NodeContext & context) { num_inputs_check(context, 2, 2); - int op_case = context.get_op_case(); - Output res; - auto data = context.get_input(0); - auto indices = context.get_input(1); - - if (op_case == 2) { - // The input comes from a VIEW - indices = process_view_input(context, 1); - } + auto data = process_view_input_new(context, 0); + auto indices = process_view_input_new(context, 1); // data[1,b,x,y] ind[1,1,b,x'] test-backend-ops case // data[x,y] ind[1,1,1,x'] normal case diff --git a/ggml/src/ggml-openvino/openvino/op/unary_silu.cpp b/ggml/src/ggml-openvino/openvino/op/unary_silu.cpp index 037e0b94df1..48ee0431ff7 100644 --- a/ggml/src/ggml-openvino/openvino/op/unary_silu.cpp +++ b/ggml/src/ggml-openvino/openvino/op/unary_silu.cpp @@ -14,7 +14,7 @@ namespace op { OutputVector translate_unary_silu(const NodeContext & context) { num_inputs_check(context, 1, 1); - auto input = context.get_input(0); + auto input = process_view_input_new(context, 0); auto sigmoid = std::make_shared(input); auto res = std::make_shared(input, sigmoid); diff --git a/ggml/src/ggml-openvino/openvino/op/unary_softplus.cpp b/ggml/src/ggml-openvino/openvino/op/unary_softplus.cpp new file mode 100644 index 00000000000..68cb6ecbc84 --- /dev/null +++ b/ggml/src/ggml-openvino/openvino/op/unary_softplus.cpp @@ -0,0 +1,38 @@ +#include "../node_context.h" +#include "../op_table.h" +#include "../utils.h" + +#include +#include +#include +#include +#include +#include +#include + +namespace ov { +namespace frontend { +namespace ggml { +namespace op { + +OutputVector translate_unary_softplus(const NodeContext & context) { + num_inputs_check(context, 1, 1); + + auto input = process_view_input_new(context, 0); + const auto element_type = input.get_element_type(); + auto one = ov::op::v0::Constant::create(element_type, ov::Shape{}, {1.0f}); + + auto positive = std::make_shared(input); + auto abs = std::make_shared(input); + auto neg_abs = std::make_shared(abs); + auto exp_neg_abs = std::make_shared(neg_abs); + auto log_term = std::make_shared(std::make_shared(one, exp_neg_abs)); + auto res = std::make_shared(positive, log_term); + + return rename_outputs_with_suffix({res}, context.get_name()); +} + +} // namespace op +} // namespace ggml +} // namespace frontend +} // namespace ov \ No newline at end of file diff --git a/ggml/src/ggml-openvino/openvino/op_table.cpp b/ggml/src/ggml-openvino/openvino/op_table.cpp index e1aa9e90ede..56c25af882b 100644 --- a/ggml/src/ggml-openvino/openvino/op_table.cpp +++ b/ggml/src/ggml-openvino/openvino/op_table.cpp @@ -39,6 +39,7 @@ std::unordered_map get_supported_ops() { {"GGML_OP_TRANSPOSE", op::translate_transpose }, {"GGML_UNARY_OP_GELU", op::translate_1to1_match_1_input }, {"GGML_UNARY_OP_SILU", op::translate_unary_silu }, + {"GGML_UNARY_OP_SOFTPLUS", op::translate_unary_softplus }, {"GGML_UNARY_OP_TANH", op::translate_1to1_match_1_input }, {"GGML_OP_VIEW", op::translate_view }, {"GGML_GLU_OP_SWIGLU", op::translate_glu_swiglu }, diff --git a/ggml/src/ggml-openvino/openvino/op_table.h b/ggml/src/ggml-openvino/openvino/op_table.h index 60ca4bff115..9bb17efc10f 100644 --- a/ggml/src/ggml-openvino/openvino/op_table.h +++ b/ggml/src/ggml-openvino/openvino/op_table.h @@ -22,6 +22,7 @@ GGML_OP_CONVERTER(translate_l2_norm); GGML_OP_CONVERTER(translate_rope); GGML_OP_CONVERTER(translate_scale); GGML_OP_CONVERTER(translate_unary_silu); +GGML_OP_CONVERTER(translate_unary_softplus); GGML_OP_CONVERTER(translate_soft_max); GGML_OP_CONVERTER(translate_transpose); GGML_OP_CONVERTER(translate_view); diff --git a/ggml/src/ggml-openvino/openvino/utils.h b/ggml/src/ggml-openvino/openvino/utils.h index af04b7182e6..53f793b57d7 100644 --- a/ggml/src/ggml-openvino/openvino/utils.h +++ b/ggml/src/ggml-openvino/openvino/utils.h @@ -87,7 +87,8 @@ OutputVector translate_1to1_match_2_inputs(const NodeContext& context) { template OutputVector translate_1to1_match_1_input(const NodeContext& context) { num_inputs_check(context, 1, 1); - auto res = std::make_shared(context.get_input(0)); + auto input = process_view_input_new(context, 0); + auto res = std::make_shared(input); return rename_outputs_with_suffix({res}, context.get_name()); } } // namespace op From 514f868d92b33f1de2deece55a72b85acb686b9a Mon Sep 17 00:00:00 2001 From: Xuejun Date: Mon, 11 May 2026 10:41:10 +0800 Subject: [PATCH 6/7] Fix issue for test-backend-ops in TOPK_MOE, which compare VIEW ops result, VIEW node in OpenVINO no need compare, the whole graph result is correct --- ggml/src/ggml-backend.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ggml/src/ggml-backend.cpp b/ggml/src/ggml-backend.cpp index d9f8aaec52f..068b056af88 100644 --- a/ggml/src/ggml-backend.cpp +++ b/ggml/src/ggml-backend.cpp @@ -2174,6 +2174,13 @@ bool ggml_backend_compare_graph_backend(ggml_backend_t backend1, ggml_backend_t for (int i = 0; i < g1->n_nodes; i++) { for (size_t j = 0; j < num_test_nodes; ++j) { if (g1->nodes[i] == test_nodes[j]) { + // OpenVINO do not handle view ops directly, so skip the check for view ops when the backend is OpenVINO + if ((strcmp(ggml_backend_reg_name(ggml_backend_dev_backend_reg(ggml_backend_get_device(backend1))), + "OPENVINO") == 0) && + ggml_is_view_op(g1->nodes[i]->op)) { + verified = true; + continue; + } callback(i, g1->nodes[i], g2->nodes[i], user_data); verified = true; } From 3bcf7cd414da5df1b1aec93927f1dbd5f3c865a5 Mon Sep 17 00:00:00 2001 From: Xuejun Date: Wed, 13 May 2026 15:07:25 +0800 Subject: [PATCH 7/7] OpenVINO backend: Disable GGML_OP_ARGSORT, cause test_backend-ops failed --- ggml/src/ggml-backend.cpp | 7 ------- ggml/src/ggml-openvino/ggml-openvino.cpp | 3 +-- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/ggml/src/ggml-backend.cpp b/ggml/src/ggml-backend.cpp index 068b056af88..d9f8aaec52f 100644 --- a/ggml/src/ggml-backend.cpp +++ b/ggml/src/ggml-backend.cpp @@ -2174,13 +2174,6 @@ bool ggml_backend_compare_graph_backend(ggml_backend_t backend1, ggml_backend_t for (int i = 0; i < g1->n_nodes; i++) { for (size_t j = 0; j < num_test_nodes; ++j) { if (g1->nodes[i] == test_nodes[j]) { - // OpenVINO do not handle view ops directly, so skip the check for view ops when the backend is OpenVINO - if ((strcmp(ggml_backend_reg_name(ggml_backend_dev_backend_reg(ggml_backend_get_device(backend1))), - "OPENVINO") == 0) && - ggml_is_view_op(g1->nodes[i]->op)) { - verified = true; - continue; - } callback(i, g1->nodes[i], g2->nodes[i], user_data); verified = true; } diff --git a/ggml/src/ggml-openvino/ggml-openvino.cpp b/ggml/src/ggml-openvino/ggml-openvino.cpp index 2a11db00766..33d6c46e2ed 100644 --- a/ggml/src/ggml-openvino/ggml-openvino.cpp +++ b/ggml/src/ggml-openvino/ggml-openvino.cpp @@ -1044,8 +1044,7 @@ static bool ggml_backend_openvino_device_supports_op(ggml_backend_dev_t dev, con GGML_OP_CLAMP, GGML_OP_PAD, GGML_OP_SSM_CONV, - GGML_OP_GATED_DELTA_NET, - GGML_OP_ARGSORT}; + GGML_OP_GATED_DELTA_NET}; static const std::set supported_unary_ops{ GGML_UNARY_OP_GELU, GGML_UNARY_OP_SILU,