From d3c39812d15be145d4b1d0f999823ee81ba12bf7 Mon Sep 17 00:00:00 2001 From: Agustin Borgna Date: Fri, 10 Nov 2023 16:35:26 +0000 Subject: [PATCH 1/2] test: Add small parallel badger test --- tket2/src/optimiser/badger.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tket2/src/optimiser/badger.rs b/tket2/src/optimiser/badger.rs index a7a3c6b8..5bf9c255 100644 --- a/tket2/src/optimiser/badger.rs +++ b/tket2/src/optimiser/badger.rs @@ -466,7 +466,7 @@ mod tests { #[rstest] fn rz_rz_cancellation(rz_rz: Hugr, badger_opt: DefaultBadgerOptimiser) { - let opt_rz = badger_opt.optimise(&rz_rz, None, 1.try_into().unwrap(), false, 100); + let opt_rz = badger_opt.optimise(&rz_rz, None, 1.try_into().unwrap(), false, 4); let cmds = opt_rz .commands() .map(|cmd| { @@ -480,4 +480,21 @@ mod tests { let exp_cmds = vec![(T2Op::AngleAdd, 2, 1), (T2Op::RzF64, 2, 1)]; assert_eq!(cmds, exp_cmds); } + + #[rstest] + fn rz_rz_cancellation_parallel(rz_rz: Hugr, badger_opt: DefaultBadgerOptimiser) { + let opt_rz = badger_opt.optimise(&rz_rz, Some(0), 2.try_into().unwrap(), false, 4); + let cmds = opt_rz + .commands() + .map(|cmd| { + ( + cmd.optype().try_into().unwrap(), + cmd.inputs().count(), + cmd.outputs().count(), + ) + }) + .collect::>(); + let exp_cmds = vec![(T2Op::RzF64, 2, 1), (T2Op::RzF64, 2, 1)]; + assert_eq!(cmds, exp_cmds); + } } From 4d62919166c986f1203934b6894f36ed737f6a92 Mon Sep 17 00:00:00 2001 From: Agustin Borgna Date: Fri, 10 Nov 2023 17:05:48 +0000 Subject: [PATCH 2/2] Move test logic to aux fn --- tket2/src/optimiser/badger.rs | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/tket2/src/optimiser/badger.rs b/tket2/src/optimiser/badger.rs index 5bf9c255..516726fa 100644 --- a/tket2/src/optimiser/badger.rs +++ b/tket2/src/optimiser/badger.rs @@ -440,6 +440,13 @@ mod tests { use super::{BadgerOptimiser, DefaultBadgerOptimiser}; + /// Simplified description of the circuit's commands. + fn gates(circ: &Hugr) -> Vec { + circ.commands() + .map(|cmd| cmd.optype().try_into().unwrap()) + .collect() + } + #[fixture] fn rz_rz() -> Hugr { let input_t = vec![QB_T, FLOAT64_TYPE, FLOAT64_TYPE]; @@ -467,34 +474,14 @@ mod tests { #[rstest] fn rz_rz_cancellation(rz_rz: Hugr, badger_opt: DefaultBadgerOptimiser) { let opt_rz = badger_opt.optimise(&rz_rz, None, 1.try_into().unwrap(), false, 4); - let cmds = opt_rz - .commands() - .map(|cmd| { - ( - cmd.optype().try_into().unwrap(), - cmd.inputs().count(), - cmd.outputs().count(), - ) - }) - .collect::>(); - let exp_cmds = vec![(T2Op::AngleAdd, 2, 1), (T2Op::RzF64, 2, 1)]; - assert_eq!(cmds, exp_cmds); + // Rzs combined into a single one. + assert_eq!(gates(&opt_rz), vec![T2Op::AngleAdd, T2Op::RzF64]); } #[rstest] fn rz_rz_cancellation_parallel(rz_rz: Hugr, badger_opt: DefaultBadgerOptimiser) { let opt_rz = badger_opt.optimise(&rz_rz, Some(0), 2.try_into().unwrap(), false, 4); - let cmds = opt_rz - .commands() - .map(|cmd| { - ( - cmd.optype().try_into().unwrap(), - cmd.inputs().count(), - cmd.outputs().count(), - ) - }) - .collect::>(); - let exp_cmds = vec![(T2Op::RzF64, 2, 1), (T2Op::RzF64, 2, 1)]; - assert_eq!(cmds, exp_cmds); + // No optimization done due to the zero timeout. + assert_eq!(gates(&opt_rz), vec![T2Op::RzF64, T2Op::RzF64]); } }