Decoding SpeedΒΆ
[1]:
# This cell is tagged `parameters` and will be override by `papermill`
decoder: str = "mwpm"
json_filename: str = "speed-rsc-mwpm.json" # where to save the result, must be provided
rounds: int = 200
kwargs = dict(
min_time = 60,
min_shots = 50,
min_init_time = 0.1,
min_init_shots = 1,
)
max_per_round_time: float = 0.1 # if each round takes more than 100ms to decode, then do not run the next `d`, since it is not meaningful anymore
[2]:
# Parameters
decoder = "mwpf(c=1000)"
json_filename = "speed-rsc-mwpf-c1000.json"
[3]:
%load_ext autoreload
%autoreload 2
[4]:
# import psutil
# psutil.Process().nice(0)# if on *ux
# psutil.Process().nice(psutil.IDLE_PRIORITY_CLASS)# if on win
[5]:
from qec_lego_bench.cli.decoding_speed import decoding_speed, DecodingSpeedResult
from qec_lego_bench.hpc.job_store import Job, JobStore
from qec_lego_bench.hpc.plotter.logical_error_rate_plotter import *
[6]:
def generate_d_vec(ratio: float = 1.18, max_d: int = 51) -> list[int]:
d = 3
d_vec = [d]
while d <= max_d:
int_d = 2 * round(d / 2) + 1
if int_d != d_vec[-1]:
d_vec.append(int_d)
d *= ratio
return d_vec
d_vec = generate_d_vec()
print("d_vec:", d_vec)
p_vec = [0.00001, 0.0001, 0.001, 0.003, 0.01]
def evaluation_function(d: int, p: float, rounds: int, verbose: bool = True) -> DecodingSpeedResult:
if verbose:
print(f"d: {d}, p: {p}")
return decoding_speed(decoder=decoder, code=f"rsc(d={d},p={p})", **kwargs, no_print=not verbose)
jobs = [Job(d=d, p=p, rounds=rounds) for p in p_vec for d in d_vec[:1]] # only add the smallest d and dynamically add others
# evaluation_function(min(d_vec), min(p_vec), rounds)
d_vec: [3, 5, 7, 9, 11, 13, 15, 17, 19, 23, 27, 31, 37, 43, 51]
Define the plot functionality
[7]:
from decoding_time_plotter import DecodingTimePlotter
plotter = DecodingTimePlotter(p_vec=p_vec, d_vec=d_vec, rounds=rounds, max_per_round_time=max_per_round_time)
[8]:
job_store = JobStore(evaluation_function, jobs, result_type=DecodingSpeedResult, filename=json_filename)
job_store.execute(loop_callback=plotter)
d: 3, p: 1e-05
Evaluating initialization of 64 shots, elapsed: 0.133466s, average: 2.085e-03s per shot
initialization time: 2.085e-03s
Evaluating decoding of 3677926 shots, elapsed: 67.376447s, average: 1.832e-05s per shot
decoding time: 1.832e-05s
d: 3, p: 0.0001
Evaluating initialization of 64 shots, elapsed: 0.134230s, average: 2.097e-03s per shot
initialization time: 2.097e-03s
Evaluating decoding of 3196382 shots, elapsed: 60.855347s, average: 1.904e-05s per shot
decoding time: 1.904e-05s
d: 3, p: 0.001
Evaluating initialization of 64 shots, elapsed: 0.171974s, average: 2.687e-03s per shot
initialization time: 2.687e-03s
Evaluating decoding of 1993696 shots, elapsed: 73.304025s, average: 3.677e-05s per shot
decoding time: 3.677e-05s
d: 3, p: 0.003
Evaluating initialization of 64 shots, elapsed: 0.135051s, average: 2.110e-03s per shot
initialization time: 2.110e-03s
Evaluating decoding of 550163 shots, elapsed: 66.953696s, average: 1.217e-04s per shot
decoding time: 1.217e-04s
d: 3, p: 0.01
Evaluating initialization of 64 shots, elapsed: 0.224047s, average: 3.501e-03s per shot
initialization time: 3.501e-03s
Evaluating decoding of 71036 shots, elapsed: 62.124816s, average: 8.746e-04s per shot
decoding time: 8.746e-04s
d: 5, p: 1e-05
Evaluating initialization of 8 shots, elapsed: 0.109163s, average: 1.365e-02s per shot
initialization time: 1.365e-02s
Evaluating decoding of 1421540 shots, elapsed: 66.835168s, average: 4.702e-05s per shot
decoding time: 4.702e-05s
d: 5, p: 0.0001
Evaluating initialization of 8 shots, elapsed: 0.154602s, average: 1.933e-02s per shot
initialization time: 1.933e-02s
Evaluating decoding of 1231413 shots, elapsed: 71.823886s, average: 5.833e-05s per shot
decoding time: 5.833e-05s
d: 5, p: 0.001
Evaluating initialization of 8 shots, elapsed: 0.164735s, average: 2.059e-02s per shot
initialization time: 2.059e-02s
Evaluating decoding of 800 shots, elapsed: 128.873790s, average: 1.611e-01s per shot
decoding time: 1.611e-01s
d: 5, p: 0.003
Evaluating initialization of 8 shots, elapsed: 1.025797s, average: 1.282e-01s per shot
initialization time: 1.282e-01s
Evaluating decoding of 6435 shots, elapsed: 852.743554s, average: 1.325e-01s per shot
decoding time: 1.325e-01s
d: 5, p: 0.01
Evaluating initialization of 4 shots, elapsed: 0.147873s, average: 3.697e-02s per shot
initialization time: 3.697e-02s
Evaluating decoding of 50 shots, elapsed: 246.632270s, average: 4.933e+00s per shot
decoding time: 4.933e+00s
d: 7, p: 1e-05
Evaluating initialization of 1 shots, elapsed: 0.145479s, average: 1.455e-01s per shot
initialization time: 1.455e-01s
Evaluating decoding of 579656 shots, elapsed: 69.254497s, average: 1.195e-04s per shot
decoding time: 1.195e-04s
d: 7, p: 0.0001
Evaluating initialization of 4 shots, elapsed: 0.238411s, average: 5.960e-02s per shot
initialization time: 5.960e-02s
Evaluating decoding of 466301 shots, elapsed: 78.170155s, average: 1.676e-04s per shot
decoding time: 1.676e-04s
d: 7, p: 0.001
Evaluating initialization of 1 shots, elapsed: 0.100871s, average: 1.009e-01s per shot
initialization time: 1.009e-01s
Evaluating decoding of 51118 shots, elapsed: 1329.344346s, average: 2.601e-02s per shot
decoding time: 2.601e-02s
d: 7, p: 0.003
Evaluating initialization of 1 shots, elapsed: 0.206374s, average: 2.064e-01s per shot
initialization time: 2.064e-01s
Evaluating decoding of 50 shots, elapsed: 312.823355s, average: 6.256e+00s per shot
decoding time: 6.256e+00s
d: 7, p: 0.01
Evaluating initialization of 1 shots, elapsed: 0.978369s, average: 9.784e-01s per shot
[ ]: