Skip to content

Commit

Permalink
feat: Expose advanced timeout options to tket2-py
Browse files Browse the repository at this point in the history
  • Loading branch information
lmondada committed Jul 24, 2024
1 parent 32a9885 commit e9c3275
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
16 changes: 13 additions & 3 deletions tket2-py/src/passes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,18 +102,27 @@ fn lower_to_pytket<'py>(circ: &Bound<'py, PyAny>) -> PyResult<Bound<'py, PyAny>>
/// optimising. This can be deactivated by setting `rebase` to `false`, in which
/// case the circuit is expected to be in the Nam gate set.
///
/// Will use at most `max_threads` threads (plus a constant) and take at most
/// `timeout` seconds (plus a constant). Default to the number of cpus and
/// 15min respectively.
/// Will use at most `max_threads` threads (plus a constant). Defaults to the
/// number of CPUs available.
///
/// The optimisation will terminate at the first of the following timeout
/// criteria, if set:
/// - `timeout` seconds (default: 15min) have elapsed since the start of the
/// optimisation
/// - `progress_timeout` (default: None) seconds have elapsed since progress
/// in the cost function was last made
/// - `max_circuit_cnt` (default: None) circuits have been explored.
///
/// Log files will be written to the directory `log_dir` if specified.
#[pyfunction]
#[allow(clippy::too_many_arguments)]
fn badger_optimise<'py>(
circ: &Bound<'py, PyAny>,
optimiser: &PyBadgerOptimiser,
max_threads: Option<NonZeroUsize>,
timeout: Option<u64>,
progress_timeout: Option<u64>,
max_circuit_cnt: Option<usize>,
log_dir: Option<PathBuf>,
rebase: Option<bool>,
) -> PyResult<Bound<'py, PyAny>> {
Expand Down Expand Up @@ -165,6 +174,7 @@ fn badger_optimise<'py>(
progress_timeout,
n_threads: n_threads.try_into().unwrap(),
split_circuit: true,
max_circuit_cnt,
..Default::default()
};
circ = optimiser.optimise(circ, log_file, options);
Expand Down
6 changes: 4 additions & 2 deletions tket2-py/tket2/passes.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ def badger_pass(
max_threads: Optional[int] = None,
timeout: Optional[int] = None,
progress_timeout: Optional[int] = None,
max_circuit_cnt: Optional[int] = None,
log_dir: Optional[Path] = None,
rebase: bool = False,
) -> BasePass:
Expand All @@ -44,8 +45,9 @@ def badger_pass(
`compile-rewriter <https://github.com/CQCL/tket2/tree/main/badger-optimiser>`_
utility. If `rewriter` is not specified, a default one will be used.
The arguments `max_threads`, `timeout`, `log_dir` and `rebase` are optional
and will be passed on to the Badger optimiser if provided."""
The arguments `max_threads`, `timeout`, `progress_timeout`, `max_circuit_cnt`,
`log_dir` and `rebase` are optional and will be passed on to the Badger
optimiser if provided."""
if rewriter is None:
with resources.as_file(
resources.files("tket2").joinpath("data/nam_6_3.rwr")
Expand Down

0 comments on commit e9c3275

Please sign in to comment.