Control the splitting of experiment circuits into jobs¶
Problem¶
You want to manually control how an experiment is split into jobs when running on a backend.
Solution¶
There are two experiment options relevant to custom job splitting.
You can set the max_circuits
option manually when running an experiment:
exp = Experiment((0,))
exp.set_experiment_options(max_circuits=100)
The experiment class will split its circuits into jobs such that no job has more than
max_circuits
number of jobs.
Furthermore, the BatchExperiment
class has the experiment option
separate_jobs
which will run circuits of different sub-experiments in different
jobs:
batch_exp = BatchExperiment([exp, exp])
batch_exp.set_experiment_options(separate_jobs=True)
Note that this option is only available to BatchExperiment
objects. To manage
job splitting when using ParallelExperiment
, you can make a nested batch
experiment of parallel experiments.
Discussion¶
Qiskit Experiments will automatically split circuits across jobs for you for backends
that have a maximum circuit number per job, which is given by the max_experiments
property of configuration()
for V1 backends and
the max_circuits
attribute for V2 backends. This should
work automatically in most cases, but there may be some backends where other limits
exist. When the max_circuits
experiment option is provided, the experiment class
will split the experiment circuits as dictated by the smaller of the backend property
and the experiment option.