From 58d23b22070b4e844b13a8dcfeebd74cf5688d54 Mon Sep 17 00:00:00 2001 From: Georg Wiese Date: Wed, 3 Jul 2024 17:15:26 +0200 Subject: [PATCH] Block machines: Skip complete identities --- executor/src/witgen/block_processor.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/executor/src/witgen/block_processor.rs b/executor/src/witgen/block_processor.rs index edbe9e4c3..15d8f0f39 100644 --- a/executor/src/witgen/block_processor.rs +++ b/executor/src/witgen/block_processor.rs @@ -67,17 +67,24 @@ impl<'a, 'b, 'c, T: FieldElement, Q: QueryCallback> BlockProcessor<'a, 'b, 'c ) -> Result, EvalError> { let mut outer_assignments = vec![]; + let mut is_identity_complete = + vec![vec![false; self.identities.len()]; self.processor.len()]; + while let Some(SequenceStep { row_delta, action }) = sequence_iterator.next() { let row_index = (1 + row_delta) as usize; let progress = match action { Action::InternalIdentity(identity_index) => { - self.processor - .process_identity( + if is_identity_complete[row_index][identity_index] { + false + } else { + let res = self.processor.process_identity( row_index, self.identities[identity_index], UnknownStrategy::Unknown, - )? - .progress + )?; + is_identity_complete[row_index][identity_index] = res.is_complete; + res.progress + } } Action::OuterQuery => { let (progress, new_outer_assignments) =