From 7ba574b7f9fd548d9781601638e8dfdc6cd555c2 Mon Sep 17 00:00:00 2001 From: Julien Balian Date: Wed, 3 Jun 2026 14:58:10 +0200 Subject: [PATCH] core/ops/array: implement set_symbols on DynSlice and Topk --- core/src/ops/array/dyn_slice.rs | 13 +++++++++++++ core/src/ops/array/topk.rs | 17 +++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/core/src/ops/array/dyn_slice.rs b/core/src/ops/array/dyn_slice.rs index 2b1de3c5c1..050a62d1f4 100644 --- a/core/src/ops/array/dyn_slice.rs +++ b/core/src/ops/array/dyn_slice.rs @@ -114,5 +114,18 @@ impl TypedOp for DynSlice { )?)) } + fn set_symbols( + &self, + _source: &TypedModel, + node: &TypedNode, + target: &mut TypedModel, + mapping: &HashMap, + subs: &HashMap, + ) -> TractResult> { + let op = DynSlice { axis: self.axis, len: self.len.substitute_all(subs)? }; + let inputs = node.inputs.iter().map(|i| mapping[i]).collect::>(); + target.wire_node(&node.name, op, &inputs) + } + as_op!(); } diff --git a/core/src/ops/array/topk.rs b/core/src/ops/array/topk.rs index 024de8c8db..a98d36cf43 100644 --- a/core/src/ops/array/topk.rs +++ b/core/src/ops/array/topk.rs @@ -103,5 +103,22 @@ impl TypedOp for Topk { Ok(tvec!(fact_values, fact_indices)) } + fn set_symbols( + &self, + _source: &TypedModel, + node: &TypedNode, + target: &mut TypedModel, + mapping: &HashMap, + subs: &HashMap, + ) -> TractResult> { + let op = Topk { + axis: self.axis, + largest: self.largest, + fallback_k: self.fallback_k.substitute_all(subs)?, + }; + let inputs = node.inputs.iter().map(|i| mapping[i]).collect::>(); + target.wire_node(&node.name, op, &inputs) + } + as_op!(); }