@@ -401,6 +401,7 @@ def parallel_xeb_workflow(
401
401
ax : Optional [plt .Axes ] = None ,
402
402
pairs : Optional [Sequence [tuple ['cirq.GridQubit' , 'cirq.GridQubit' ]]] = None ,
403
403
pool : Optional ['multiprocessing.pool.Pool' ] = None ,
404
+ batch_size : int = 9 ,
404
405
** plot_kwargs ,
405
406
) -> Tuple [pd .DataFrame , Sequence ['cirq.Circuit' ], pd .DataFrame ]:
406
407
"""A utility method that runs the full XEB workflow.
@@ -418,6 +419,9 @@ def parallel_xeb_workflow(
418
419
no plot is created.
419
420
pairs: Pairs to use. If not specified, use all pairs between adjacent qubits.
420
421
pool: An optional multiprocessing pool.
422
+ batch_size: We call `run_batch` on the sampler, which can speed up execution in certain
423
+ environments. The number of (circuit, cycle_depth) tasks to be run in each batch
424
+ is given by this number.
421
425
**plot_kwargs: Arguments to be passed to 'plt.Axes.plot'.
422
426
423
427
Returns:
@@ -462,6 +466,7 @@ def parallel_xeb_workflow(
462
466
combinations_by_layer = combs_by_layer ,
463
467
shuffle = rs ,
464
468
repetitions = n_repetitions ,
469
+ batch_size = batch_size ,
465
470
)
466
471
467
472
fids = benchmark_2q_xeb_fidelities (
@@ -482,6 +487,7 @@ def parallel_two_qubit_xeb(
482
487
random_state : 'cirq.RANDOM_STATE_OR_SEED_LIKE' = None ,
483
488
ax : Optional [plt .Axes ] = None ,
484
489
pairs : Optional [Sequence [tuple ['cirq.GridQubit' , 'cirq.GridQubit' ]]] = None ,
490
+ batch_size : int = 9 ,
485
491
** plot_kwargs ,
486
492
) -> TwoQubitXEBResult :
487
493
"""A convenience method that runs the full XEB workflow.
@@ -498,6 +504,9 @@ def parallel_two_qubit_xeb(
498
504
ax: the plt.Axes to plot the device layout on. If not given,
499
505
no plot is created.
500
506
pairs: Pairs to use. If not specified, use all pairs between adjacent qubits.
507
+ batch_size: We call `run_batch` on the sampler, which can speed up execution in certain
508
+ environments. The number of (circuit, cycle_depth) tasks to be run in each batch
509
+ is given by this number.
501
510
**plot_kwargs: Arguments to be passed to 'plt.Axes.plot'.
502
511
Returns:
503
512
A TwoQubitXEBResult object representing the results of the experiment.
@@ -515,6 +524,7 @@ def parallel_two_qubit_xeb(
515
524
cycle_depths = cycle_depths ,
516
525
random_state = random_state ,
517
526
ax = ax ,
527
+ batch_size = batch_size ,
518
528
** plot_kwargs ,
519
529
)
520
530
return TwoQubitXEBResult (fit_exponential_decays (fids ))
@@ -533,6 +543,7 @@ def run_rb_and_xeb(
533
543
xeb_combinations : int = 10 ,
534
544
random_state : 'cirq.RANDOM_STATE_OR_SEED_LIKE' = None ,
535
545
pairs : Optional [Sequence [tuple ['cirq.GridQubit' , 'cirq.GridQubit' ]]] = None ,
546
+ batch_size : int = 9 ,
536
547
) -> InferredXEBResult :
537
548
"""A convenience method that runs both RB and XEB workflows.
538
549
@@ -547,6 +558,9 @@ def run_rb_and_xeb(
547
558
xeb_combinations: The number of combinations to generate for XEB.
548
559
random_state: The random state to use.
549
560
pairs: Pairs to use. If not specified, use all pairs between adjacent qubits.
561
+ batch_size: We call `run_batch` on the sampler, which can speed up execution in certain
562
+ environments. The number of (circuit, cycle_depth) tasks to be run in each batch
563
+ is given by this number.
550
564
551
565
Returns:
552
566
An InferredXEBResult object representing the results of the experiment.
@@ -575,6 +589,7 @@ def run_rb_and_xeb(
575
589
cycle_depths = depths_xeb ,
576
590
n_combinations = xeb_combinations ,
577
591
random_state = random_state ,
592
+ batch_size = batch_size ,
578
593
)
579
594
580
595
return InferredXEBResult (rb , xeb )
0 commit comments