Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding classical Bose–Chaudhuri–Hocquenghem code to ECC module #263

Merged
merged 39 commits into from
May 12, 2024

Conversation

Fe-r-oz
Copy link
Contributor

@Fe-r-oz Fe-r-oz commented Apr 19, 2024

  • Adding classical Bose–Chaudhuri–Hocquenghem code to ECC module

Copy link
Contributor

github-actions bot commented Apr 19, 2024

Benchmark Result

Judge result

Benchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jl

Job Properties

  • Time of benchmarks:
  • Target: 19 Apr 2024 - 18:44
  • Baseline: 19 Apr 2024 - 18:52
  • Package commits:
  • Target: d91f31
  • Baseline: 3cdf46
  • Julia commits:
  • Target: 2f9096
  • Baseline: 2f9096
  • Julia command flags:
  • Target: None
  • Baseline: None
  • Environment variables:
  • Target: None
  • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["circuitsim", "pftrajectories", "q1001_r1"] 1.09 (5%) ❌ 1.00 (1%)
["circuitsim", "pftrajectories", "q101_r1"] 1.09 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot250_on_dense500_destab"] 0.94 (5%) ✅ 1.00 (1%)
["clifford", "dense", "dense500_on_dense500_destab"] 0.94 (5%) ✅ 1.00 (1%)
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 0.59 (5%) ✅ 0.99 (1%) ✅
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 1.06 (5%) ❌ 1.00 (1%)
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 0.99 (5%) 0.98 (1%) ✅
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 0.94 (5%) ✅ 0.98 (1%) ✅
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 1.18 (5%) ❌ 1.00 (1%)
["stabilizer", "canon", "diag_cano500"] 0.94 (5%) ✅ 1.00 (1%)
["stabilizer", "canon", "md_rref500"] 1.05 (5%) ❌ 1.00 (1%)
["stabilizer", "tensor", "diag_pow5_20"] 1.07 (5%) ❌ 1.00 (1%)
["stabilizer", "trace", "destabilizer"] 1.11 (5%) ❌ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["circuitsim", "mctrajectories"]
  • ["circuitsim", "mctrajectories_sumtype"]
  • ["circuitsim", "mctrajectories_union"]
  • ["circuitsim", "pftrajectories"]
  • ["circuitsim", "pftrajectories_sumtype"]
  • ["circuitsim", "pftrajectories_union"]
  • ["clifford", "dense"]
  • ["clifford", "symbolic"]
  • ["ecc", "evaluate_decoder"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Target

Julia Version 1.12.0-DEV.369
Commit 2f9096218bf (2024-04-19 12:25 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2320 s 0 s 376 s 6801 s 0 s
 #2 0 MHz 2635 s 0 s 348 s 6534 s 0 s
 #3 0 MHz 2641 s 0 s 372 s 6477 s 0 s
 #4 0 MHz 3051 s 0 s 312 s 6152 s 0 s
 Memory: 15.606494903564453 GB (13346.88671875 MB free)
 Uptime: 956.45 sec
 Load Avg: 1.01 1.16 0.86
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.12.0-DEV.369
Commit 2f9096218bf (2024-04-19 12:25 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 3694 s 0 s 515 s 9714 s 0 s
 #2 0 MHz 3769 s 0 s 456 s 9722 s 0 s
 #3 0 MHz 4016 s 0 s 480 s 9422 s 0 s
 #4 0 MHz 4052 s 0 s 431 s 9463 s 0 s
 Memory: 15.606494903564453 GB (13236.4296875 MB free)
 Uptime: 1400.88 sec
 Load Avg: 1.01 1.2 1.02
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

Benchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jl

Job Properties

  • Time of benchmark: 19 Apr 2024 - 18:44
  • Package commit: d91f31
  • Julia commit: 2f9096
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["circuitsim", "mctrajectories", "q1001_r1"] 15.053 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 167.182 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 13.544 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 117.208 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 13.465 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 116.126 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 66.855 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 182.831 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.152 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.722 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 40.485 μs (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 156.452 μs (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.128 ms (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.870 ms (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.138 μs (5%) 9.47 KiB (1%) 202
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.311 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 136.464 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.100 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.314 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.606 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.852 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.121 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 560.606 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 50.895 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.164 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.319 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.265 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.613 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.851 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 979.858 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 560.596 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.451 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 688.023 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.159 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 570.013 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 4.749 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.294 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 4.658 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.304 μs (5%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 1.851 ms (5%) 1.76 MiB (1%) 42483
["ecc", "evaluate_decoder", "shor_bp_naivesyn"] 13.245 ms (5%) 6.34 MiB (1%) 103456
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 13.753 ms (5%) 6.43 MiB (1%) 104654
["ecc", "evaluate_decoder", "shor_pybp_comm"] 26.090 ms (5%) 3.97 MiB (1%) 116082
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 61.955 ms (5%) 10.68 MiB (1%) 249324
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 62.589 ms (5%) 10.78 MiB (1%) 250578
["ecc", "evaluate_decoder", "shor_table_comm"] 258.723 μs (5%) 241.42 KiB (1%) 4593
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 8.823 ms (5%) 3.04 MiB (1%) 26346
["ecc", "evaluate_decoder", "shor_table_shorsyn"] 8.959 ms (5%) 3.14 MiB (1%) 27600
["ecc", "evaluate_decoder", "toric8_bp_comm"] 700.443 ms (5%) 15.410 ms 173.17 MiB (1%) 1038206
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.642 s (5%) 34.342 ms 403.55 MiB (1%) 2546796
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.614 s (5%) 31.640 ms 402.03 MiB (1%) 2561715
["ecc", "evaluate_decoder", "toric8_pybp_comm"] 394.585 ms (5%) 7.31 MiB (1%) 135571
["ecc", "evaluate_decoder", "toric8_pybp_naivesyn"] 1.083 s (5%) 68.53 MiB (1%) 722072
["ecc", "evaluate_decoder", "toric8_pybp_shorsyn"] 1.047 s (5%) 71.23 MiB (1%) 761842
["ecc", "evaluate_decoder", "toric8_pymatch_comm"] 4.240 ms (5%) 1.95 MiB (1%) 23176
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 190.782 ms (5%) 57.66 MiB (1%) 497289
["ecc", "evaluate_decoder", "toric8_pymatch_shorsyn"] 205.086 ms (5%) 6.040 ms 60.36 MiB (1%) 537059
["ecc", "evaluate_decoder", "toric8_table_comm"] 2.652 ms (5%) 1.64 MiB (1%) 23082
["ecc", "evaluate_decoder", "toric8_table_naivesyn"] 178.582 ms (5%) 57.01 MiB (1%) 497094
["ecc", "evaluate_decoder", "toric8_table_shorsyn"] 192.765 ms (5%) 59.71 MiB (1%) 536864
["pauli", "mul", "100"] 14.878 ns (5%)
["pauli", "mul", "1000"] 17.897 ns (5%)
["pauli", "mul", "100000"] 724.915 ns (5%)
["pauli", "mul", "20000000"] 188.291 μs (5%)
["stabilizer", "canon", "cano500"] 3.078 ms (5%)
["stabilizer", "canon", "diag_cano500"] 709.092 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.187 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 627.300 μs (5%)
["stabilizer", "canon", "gott500"] 6.635 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.571 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.631 ms (5%)
["stabilizer", "canon", "rref500"] 3.102 ms (5%)
["stabilizer", "project", "destabilizer"] 18.264 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 8.967 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.267 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.846 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 34.394 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.844 μs (5%) 112 bytes (1%) 3

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["circuitsim", "mctrajectories"]
  • ["circuitsim", "mctrajectories_sumtype"]
  • ["circuitsim", "mctrajectories_union"]
  • ["circuitsim", "pftrajectories"]
  • ["circuitsim", "pftrajectories_sumtype"]
  • ["circuitsim", "pftrajectories_union"]
  • ["clifford", "dense"]
  • ["clifford", "symbolic"]
  • ["ecc", "evaluate_decoder"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Julia Version 1.12.0-DEV.369
Commit 2f9096218bf (2024-04-19 12:25 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2320 s 0 s 376 s 6801 s 0 s
 #2 0 MHz 2635 s 0 s 348 s 6534 s 0 s
 #3 0 MHz 2641 s 0 s 372 s 6477 s 0 s
 #4 0 MHz 3051 s 0 s 312 s 6152 s 0 s
 Memory: 15.606494903564453 GB (13346.88671875 MB free)
 Uptime: 956.45 sec
 Load Avg: 1.01 1.16 0.86
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

Benchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jl

Job Properties

  • Time of benchmark: 19 Apr 2024 - 18:52
  • Package commit: 3cdf46
  • Julia commit: 2f9096
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["circuitsim", "mctrajectories", "q1001_r1"] 15.111 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 169.336 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 13.169 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 118.521 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 12.969 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 117.209 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 61.535 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 176.550 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.100 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.152 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 41.858 μs (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 153.977 μs (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.084 ms (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.816 ms (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.218 μs (5%) 9.47 KiB (1%) 202
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.603 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 132.326 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.054 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.344 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 12.294 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.831 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.123 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 560.516 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 50.474 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.153 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.619 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.154 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 12.290 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.815 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 980.298 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 560.525 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.440 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 685.879 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.161 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 568.409 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 4.738 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.304 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 4.659 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.294 μs (5%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 1.903 ms (5%) 1.77 MiB (1%) 42539
["ecc", "evaluate_decoder", "shor_bp_naivesyn"] 13.438 ms (5%) 6.33 MiB (1%) 103317
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 23.390 ms (5%) 6.51 MiB (1%) 106503
["ecc", "evaluate_decoder", "shor_pybp_comm"] 25.738 ms (5%) 3.97 MiB (1%) 116082
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 63.341 ms (5%) 10.68 MiB (1%) 249324
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 64.361 ms (5%) 10.78 MiB (1%) 250578
["ecc", "evaluate_decoder", "shor_table_comm"] 259.313 μs (5%) 241.42 KiB (1%) 4593
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 8.306 ms (5%) 3.04 MiB (1%) 26346
["ecc", "evaluate_decoder", "shor_table_shorsyn"] 8.741 ms (5%) 3.14 MiB (1%) 27600
["ecc", "evaluate_decoder", "toric8_bp_comm"] 703.554 ms (5%) 15.712 ms 174.07 MiB (1%) 1043540
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.657 s (5%) 28.154 ms 410.79 MiB (1%) 2589349
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.709 s (5%) 31.760 ms 408.68 MiB (1%) 2600846
["ecc", "evaluate_decoder", "toric8_pybp_comm"] 391.611 ms (5%) 7.31 MiB (1%) 135571
["ecc", "evaluate_decoder", "toric8_pybp_naivesyn"] 1.066 s (5%) 68.53 MiB (1%) 722072
["ecc", "evaluate_decoder", "toric8_pybp_shorsyn"] 1.059 s (5%) 71.23 MiB (1%) 761842
["ecc", "evaluate_decoder", "toric8_pymatch_comm"] 4.204 ms (5%) 1.95 MiB (1%) 23176
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 161.343 ms (5%) 3.826 ms 57.66 MiB (1%) 497289
["ecc", "evaluate_decoder", "toric8_pymatch_shorsyn"] 198.437 ms (5%) 60.36 MiB (1%) 537059
["ecc", "evaluate_decoder", "toric8_table_comm"] 2.645 ms (5%) 1.64 MiB (1%) 23082
["ecc", "evaluate_decoder", "toric8_table_naivesyn"] 184.926 ms (5%) 57.01 MiB (1%) 497094
["ecc", "evaluate_decoder", "toric8_table_shorsyn"] 200.569 ms (5%) 4.738 ms 59.71 MiB (1%) 536864
["pauli", "mul", "100"] 14.456 ns (5%)
["pauli", "mul", "1000"] 17.907 ns (5%)
["pauli", "mul", "100000"] 711.868 ns (5%)
["pauli", "mul", "20000000"] 184.705 μs (5%)
["stabilizer", "canon", "cano500"] 3.087 ms (5%)
["stabilizer", "canon", "diag_cano500"] 752.795 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.099 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 627.120 μs (5%)
["stabilizer", "canon", "gott500"] 6.485 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.537 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.553 ms (5%)
["stabilizer", "canon", "rref500"] 3.104 ms (5%)
["stabilizer", "project", "destabilizer"] 18.565 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 9.157 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.180 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.849 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.018 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 24.235 μs (5%) 112 bytes (1%) 3

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["circuitsim", "mctrajectories"]
  • ["circuitsim", "mctrajectories_sumtype"]
  • ["circuitsim", "mctrajectories_union"]
  • ["circuitsim", "pftrajectories"]
  • ["circuitsim", "pftrajectories_sumtype"]
  • ["circuitsim", "pftrajectories_union"]
  • ["clifford", "dense"]
  • ["clifford", "symbolic"]
  • ["ecc", "evaluate_decoder"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Julia Version 1.12.0-DEV.369
Commit 2f9096218bf (2024-04-19 12:25 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 3694 s 0 s 515 s 9714 s 0 s
 #2 0 MHz 3769 s 0 s 456 s 9722 s 0 s
 #3 0 MHz 4016 s 0 s 480 s 9422 s 0 s
 #4 0 MHz 4052 s 0 s 431 s 9463 s 0 s
 Memory: 15.606494903564453 GB (13236.4296875 MB free)
 Uptime: 1400.88 sec
 Load Avg: 1.01 1.2 1.02
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() lbt
Sys.CPU_THREADS 4

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: AuthenticAMD
Model name: AMD EPYC 7763 64-Core Processor
CPU family: 25
Model: 1
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4890.85
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext invpcid_single vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization: AMD-V
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 1 MiB (2 instances)
L3 cache: 32 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected

Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft
Benchmark Result

Judge result

Benchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jl

Job Properties

  • Time of benchmarks:
  • Target: 21 Apr 2024 - 15:11
  • Baseline: 21 Apr 2024 - 15:19
  • Package commits:
  • Target: d98e8d
  • Baseline: d6018f
  • Julia commits:
  • Target: aad724
  • Baseline: aad724
  • Julia command flags:
  • Target: None
  • Baseline: None
  • Environment variables:
  • Target: None
  • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["circuitsim", "pftrajectories", "q1001_r1"] 0.94 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories", "q101_r1"] 0.94 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot_on_dense500_stab"] 0.94 (5%) ✅ 1.00 (1%)
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 0.91 (5%) ✅ 0.98 (1%) ✅
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 0.96 (5%) 0.97 (1%) ✅
["pauli", "mul", "1000"] 0.95 (5%) ✅ 1.00 (1%)
["stabilizer", "canon", "diag_rref500"] 1.10 (5%) ❌ 1.00 (1%)
["stabilizer", "tensor", "diag_pow5_20"] 0.78 (5%) ✅ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["circuitsim", "compactification"]
  • ["circuitsim", "mctrajectories"]
  • ["circuitsim", "mctrajectories_sumtype"]
  • ["circuitsim", "mctrajectories_union"]
  • ["circuitsim", "pftrajectories"]
  • ["circuitsim", "pftrajectories_sumtype"]
  • ["circuitsim", "pftrajectories_union"]
  • ["clifford", "dense"]
  • ["clifford", "symbolic"]
  • ["ecc", "evaluate_decoder"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Target

Julia Version 1.12.0-DEV.379
Commit aad72458539 (2024-04-20 23:40 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2580 s 0 s 168 s 6610 s 0 s
 #2 0 MHz 2144 s 0 s 176 s 7044 s 0 s
 #3 0 MHz 2212 s 0 s 186 s 6946 s 0 s
 #4 0 MHz 2376 s 0 s 173 s 6797 s 0 s
 Memory: 15.606487274169922 GB (13348.95703125 MB free)
 Uptime: 939.89 sec
 Load Avg: 1.04 1.02 0.72
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.12.0-DEV.379
Commit aad72458539 (2024-04-20 23:40 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 4059 s 0 s 223 s 9576 s 0 s
 #2 0 MHz 3765 s 0 s 225 s 9875 s 0 s
 #3 0 MHz 3075 s 0 s 232 s 10537 s 0 s
 #4 0 MHz 2906 s 0 s 222 s 10716 s 0 s
 Memory: 15.606487274169922 GB (13327.953125 MB free)
 Uptime: 1390.7 sec
 Load Avg: 1.0 1.0 0.85
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

Benchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jl

Job Properties

  • Time of benchmark: 21 Apr 2024 - 15:11
  • Package commit: d98e8d
  • Julia commit: aad724
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["circuitsim", "compactification", "compact"] 6.978 ms (5%)
["circuitsim", "compactification", "no_compact"] 7.278 ms (5%) 281.25 KiB (1%) 6000
["circuitsim", "mctrajectories", "q1001_r1"] 15.234 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 171.850 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 13.237 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 118.460 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 13.302 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 117.108 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 60.072 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 171.829 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.096 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 5.991 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 41.988 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 151.893 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.083 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.817 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.278 μs (5%)
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.612 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 134.110 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.054 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.334 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.653 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.760 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.122 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 561.596 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 50.885 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.173 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.189 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.354 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.703 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.779 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 979.784 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 561.668 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.450 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 685.747 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.158 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 568.659 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 4.758 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.294 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 4.678 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.294 μs (5%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 1.823 ms (5%) 1.77 MiB (1%) 42581
["ecc", "evaluate_decoder", "shor_bp_naivesyn"] 4.241 ms (5%) 3.65 MiB (1%) 82343
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 4.690 ms (5%) 3.73 MiB (1%) 83313
["ecc", "evaluate_decoder", "shor_pybp_comm"] 24.312 ms (5%) 3.97 MiB (1%) 116082
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 50.116 ms (5%) 7.99 MiB (1%) 228127
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 50.236 ms (5%) 8.07 MiB (1%) 229125
["ecc", "evaluate_decoder", "shor_table_comm"] 255.837 μs (5%) 241.42 KiB (1%) 4593
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 1.088 ms (5%) 350.69 KiB (1%) 5149
["ecc", "evaluate_decoder", "shor_table_shorsyn"] 1.488 ms (5%) 440.03 KiB (1%) 6147
["ecc", "evaluate_decoder", "toric8_bp_comm"] 684.777 ms (5%) 14.394 ms 171.65 MiB (1%) 1029274
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.357 s (5%) 28.438 ms 343.46 MiB (1%) 2092568
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.444 s (5%) 25.500 ms 358.48 MiB (1%) 2200278
["ecc", "evaluate_decoder", "toric8_pybp_comm"] 391.324 ms (5%) 7.31 MiB (1%) 135571
["ecc", "evaluate_decoder", "toric8_pybp_naivesyn"] 816.912 ms (5%) 16.90 MiB (1%) 317594
["ecc", "evaluate_decoder", "toric8_pybp_shorsyn"] 820.040 ms (5%) 19.37 MiB (1%) 351510
["ecc", "evaluate_decoder", "toric8_pymatch_comm"] 4.207 ms (5%) 1.95 MiB (1%) 23176
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 16.996 ms (5%) 6.03 MiB (1%) 92811
["ecc", "evaluate_decoder", "toric8_pymatch_shorsyn"] 25.628 ms (5%) 8.50 MiB (1%) 126727
["ecc", "evaluate_decoder", "toric8_table_comm"] 2.632 ms (5%) 1.64 MiB (1%) 23082
["ecc", "evaluate_decoder", "toric8_table_naivesyn"] 14.638 ms (5%) 5.38 MiB (1%) 92616
["ecc", "evaluate_decoder", "toric8_table_shorsyn"] 23.259 ms (5%) 7.85 MiB (1%) 126532
["pauli", "mul", "100"] 14.214 ns (5%)
["pauli", "mul", "1000"] 17.899 ns (5%)
["pauli", "mul", "100000"] 716.603 ns (5%)
["pauli", "mul", "20000000"] 178.362 μs (5%)
["stabilizer", "canon", "cano500"] 3.044 ms (5%)
["stabilizer", "canon", "diag_cano500"] 708.720 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.024 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 704.051 μs (5%)
["stabilizer", "canon", "gott500"] 6.438 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.532 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.551 ms (5%)
["stabilizer", "canon", "rref500"] 3.088 ms (5%)
["stabilizer", "project", "destabilizer"] 17.943 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 8.997 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.119 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.793 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.128 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.844 μs (5%) 112 bytes (1%) 3

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["circuitsim", "compactification"]
  • ["circuitsim", "mctrajectories"]
  • ["circuitsim", "mctrajectories_sumtype"]
  • ["circuitsim", "mctrajectories_union"]
  • ["circuitsim", "pftrajectories"]
  • ["circuitsim", "pftrajectories_sumtype"]
  • ["circuitsim", "pftrajectories_union"]
  • ["clifford", "dense"]
  • ["clifford", "symbolic"]
  • ["ecc", "evaluate_decoder"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Julia Version 1.12.0-DEV.379
Commit aad72458539 (2024-04-20 23:40 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2580 s 0 s 168 s 6610 s 0 s
 #2 0 MHz 2144 s 0 s 176 s 7044 s 0 s
 #3 0 MHz 2212 s 0 s 186 s 6946 s 0 s
 #4 0 MHz 2376 s 0 s 173 s 6797 s 0 s
 Memory: 15.606487274169922 GB (13348.95703125 MB free)
 Uptime: 939.89 sec
 Load Avg: 1.04 1.02 0.72
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

Benchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jl

Job Properties

  • Time of benchmark: 21 Apr 2024 - 15:19
  • Package commit: d6018f
  • Julia commit: aad724
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["circuitsim", "compactification", "compact"] 7.324 ms (5%)
["circuitsim", "compactification", "no_compact"] 7.567 ms (5%) 281.25 KiB (1%) 6000
["circuitsim", "mctrajectories", "q1001_r1"] 15.514 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 170.848 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 13.611 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 118.571 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 13.236 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 117.348 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 63.899 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 175.396 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.103 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.402 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 42.609 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 151.162 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.079 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.858 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.257 μs (5%)
["circuitsim", "pftrajectories_union", "q1001_r1"] 23.523 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 133.028 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.053 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.424 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.618 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.809 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.123 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 561.785 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 49.883 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 24.546 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.420 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.736 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.676 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.810 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 981.016 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 561.775 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.433 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 686.469 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.160 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 569.760 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 4.758 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.304 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 4.688 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.294 μs (5%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 1.850 ms (5%) 1.78 MiB (1%) 42735
["ecc", "evaluate_decoder", "shor_bp_naivesyn"] 4.368 ms (5%) 3.64 MiB (1%) 82203
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 5.174 ms (5%) 3.80 MiB (1%) 84937
["ecc", "evaluate_decoder", "shor_pybp_comm"] 25.267 ms (5%) 3.97 MiB (1%) 116082
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 50.692 ms (5%) 7.99 MiB (1%) 228127
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 51.703 ms (5%) 8.07 MiB (1%) 229125
["ecc", "evaluate_decoder", "shor_table_comm"] 257.389 μs (5%) 241.42 KiB (1%) 4593
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 1.093 ms (5%) 350.69 KiB (1%) 5149
["ecc", "evaluate_decoder", "shor_table_shorsyn"] 1.492 ms (5%) 440.03 KiB (1%) 6147
["ecc", "evaluate_decoder", "toric8_bp_comm"] 704.287 ms (5%) 15.275 ms 172.26 MiB (1%) 1032886
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.407 s (5%) 29.698 ms 355.70 MiB (1%) 2164514
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.437 s (5%) 35.235 ms 358.64 MiB (1%) 2201188
["ecc", "evaluate_decoder", "toric8_pybp_comm"] 402.037 ms (5%) 7.31 MiB (1%) 135571
["ecc", "evaluate_decoder", "toric8_pybp_naivesyn"] 845.462 ms (5%) 16.90 MiB (1%) 317594
["ecc", "evaluate_decoder", "toric8_pybp_shorsyn"] 844.200 ms (5%) 19.37 MiB (1%) 351510
["ecc", "evaluate_decoder", "toric8_pymatch_comm"] 4.236 ms (5%) 1.95 MiB (1%) 23176
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 17.265 ms (5%) 6.03 MiB (1%) 92811
["ecc", "evaluate_decoder", "toric8_pymatch_shorsyn"] 25.854 ms (5%) 8.50 MiB (1%) 126727
["ecc", "evaluate_decoder", "toric8_table_comm"] 2.675 ms (5%) 1.64 MiB (1%) 23082
["ecc", "evaluate_decoder", "toric8_table_naivesyn"] 14.998 ms (5%) 5.38 MiB (1%) 92616
["ecc", "evaluate_decoder", "toric8_table_shorsyn"] 23.708 ms (5%) 7.85 MiB (1%) 126532
["pauli", "mul", "100"] 14.767 ns (5%)
["pauli", "mul", "1000"] 18.843 ns (5%)
["pauli", "mul", "100000"] 730.214 ns (5%)
["pauli", "mul", "20000000"] 175.787 μs (5%)
["stabilizer", "canon", "cano500"] 3.081 ms (5%)
["stabilizer", "canon", "diag_cano500"] 709.120 μs (5%)
["stabilizer", "canon", "diag_gott500"] 3.999 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 637.557 μs (5%)
["stabilizer", "canon", "gott500"] 6.434 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.551 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.562 ms (5%)
["stabilizer", "canon", "rref500"] 3.142 ms (5%)
["stabilizer", "project", "destabilizer"] 18.705 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 8.947 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.432 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.814 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.329 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 24.255 μs (5%) 112 bytes (1%) 3

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["circuitsim", "compactification"]
  • ["circuitsim", "mctrajectories"]
  • ["circuitsim", "mctrajectories_sumtype"]
  • ["circuitsim", "mctrajectories_union"]
  • ["circuitsim", "pftrajectories"]
  • ["circuitsim", "pftrajectories_sumtype"]
  • ["circuitsim", "pftrajectories_union"]
  • ["clifford", "dense"]
  • ["clifford", "symbolic"]
  • ["ecc", "evaluate_decoder"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Julia Version 1.12.0-DEV.379
Commit aad72458539 (2024-04-20 23:40 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 4059 s 0 s 223 s 9576 s 0 s
 #2 0 MHz 3765 s 0 s 225 s 9875 s 0 s
 #3 0 MHz 3075 s 0 s 232 s 10537 s 0 s
 #4 0 MHz 2906 s 0 s 222 s 10716 s 0 s
 Memory: 15.606487274169922 GB (13327.953125 MB free)
 Uptime: 1390.7 sec
 Load Avg: 1.0 1.0 0.85
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() lbt
Sys.CPU_THREADS 4

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: AuthenticAMD
Model name: AMD EPYC 7763 64-Core Processor
CPU family: 25
Model: 1
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4890.85
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext invpcid_single vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization: AMD-V
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 1 MiB (2 instances)
L3 cache: 32 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected

Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft
Benchmark Result

Judge result

Benchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jl

Job Properties

  • Time of benchmarks:
  • Target: 22 Apr 2024 - 02:40
  • Baseline: 22 Apr 2024 - 02:47
  • Package commits:
  • Target: 8f7ab3
  • Baseline: d6018f
  • Julia commits:
  • Target: e57a7e
  • Baseline: e57a7e
  • Julia command flags:
  • Target: None
  • Baseline: None
  • Environment variables:
  • Target: None
  • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 0.94 (5%) ✅ 1.00 (1%)
["clifford", "dense", "dense500_on_diag500_destab"] 0.87 (5%) ✅ 1.00 (1%)
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 0.90 (5%) ✅ 0.99 (1%)
["ecc", "evaluate_decoder", "toric8_bp_comm"] 1.03 (5%) 1.02 (1%) ❌
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.04 (5%) 1.03 (1%) ❌
["pauli", "mul", "1000"] 1.06 (5%) ❌ 1.00 (1%)
["pauli", "mul", "20000000"] 1.06 (5%) ❌ 1.00 (1%)
["stabilizer", "canon", "diag_cano500"] 1.06 (5%) ❌ 1.00 (1%)
["stabilizer", "canon", "diag_rref500"] 1.06 (5%) ❌ 1.00 (1%)
["stabilizer", "tensor", "diag_pow5_20"] 0.83 (5%) ✅ 1.00 (1%)
["stabilizer", "trace", "destabilizer"] 0.91 (5%) ✅ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["circuitsim", "compactification"]
  • ["circuitsim", "mctrajectories"]
  • ["circuitsim", "mctrajectories_sumtype"]
  • ["circuitsim", "mctrajectories_union"]
  • ["circuitsim", "pftrajectories"]
  • ["circuitsim", "pftrajectories_sumtype"]
  • ["circuitsim", "pftrajectories_union"]
  • ["clifford", "dense"]
  • ["clifford", "symbolic"]
  • ["ecc", "evaluate_decoder"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Target

Julia Version 1.12.0-DEV.380
Commit e57a7e49ad7 (2024-04-21 17:46 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2070 s 0 s 215 s 6902 s 0 s
 #2 0 MHz 1435 s 0 s 170 s 7584 s 0 s
 #3 0 MHz 2812 s 0 s 193 s 6192 s 0 s
 #4 0 MHz 3205 s 0 s 182 s 5803 s 0 s
 Memory: 15.606494903564453 GB (13334.34765625 MB free)
 Uptime: 923.58 sec
 Load Avg: 1.0 1.01 0.74
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.12.0-DEV.380
Commit e57a7e49ad7 (2024-04-21 17:46 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2931 s 0 s 268 s 10440 s 0 s
 #2 0 MHz 2414 s 0 s 222 s 11005 s 0 s
 #3 0 MHz 3999 s 0 s 249 s 9402 s 0 s
 #4 0 MHz 4629 s 0 s 239 s 8776 s 0 s
 Memory: 15.606494903564453 GB (13257.70703125 MB free)
 Uptime: 1369.67 sec
 Load Avg: 1.0 1.01 0.87
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

Benchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jl

Job Properties

  • Time of benchmark: 22 Apr 2024 - 2:40
  • Package commit: 8f7ab3
  • Julia commit: e57a7e
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["circuitsim", "compactification", "compact"] 7.092 ms (5%)
["circuitsim", "compactification", "no_compact"] 7.247 ms (5%) 281.25 KiB (1%) 6000
["circuitsim", "mctrajectories", "q1001_r1"] 14.933 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 171.219 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 13.297 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 117.479 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 13.125 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 116.277 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 59.682 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 169.616 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.094 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 5.991 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 42.369 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 149.699 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.079 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.848 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.297 μs (5%)
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.602 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 132.647 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.054 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.334 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.494 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.774 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.122 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 560.404 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 51.246 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 24.566 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.189 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.815 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.478 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.775 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 979.926 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 560.394 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.439 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 686.289 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.161 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 569.190 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 4.768 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.294 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 4.678 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.294 μs (5%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 1.812 ms (5%) 1.76 MiB (1%) 42329
["ecc", "evaluate_decoder", "shor_bp_naivesyn"] 4.394 ms (5%) 3.63 MiB (1%) 81993
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 4.848 ms (5%) 3.72 MiB (1%) 83131
["ecc", "evaluate_decoder", "shor_pybp_comm"] 24.705 ms (5%) 3.97 MiB (1%) 116082
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 49.724 ms (5%) 7.99 MiB (1%) 228127
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 50.497 ms (5%) 8.07 MiB (1%) 229125
["ecc", "evaluate_decoder", "shor_table_comm"] 258.281 μs (5%) 241.42 KiB (1%) 4593
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 1.108 ms (5%) 350.69 KiB (1%) 5149
["ecc", "evaluate_decoder", "shor_table_shorsyn"] 1.509 ms (5%) 440.03 KiB (1%) 6147
["ecc", "evaluate_decoder", "toric8_bp_comm"] 698.378 ms (5%) 16.475 ms 173.15 MiB (1%) 1038122
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.452 s (5%) 34.230 ms 352.08 MiB (1%) 2143255
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.455 s (5%) 34.059 ms 354.88 MiB (1%) 2179054
["ecc", "evaluate_decoder", "toric8_pybp_comm"] 406.582 ms (5%) 7.31 MiB (1%) 135571
["ecc", "evaluate_decoder", "toric8_pybp_naivesyn"] 823.815 ms (5%) 16.90 MiB (1%) 317594
["ecc", "evaluate_decoder", "toric8_pybp_shorsyn"] 822.528 ms (5%) 19.37 MiB (1%) 351510
["ecc", "evaluate_decoder", "toric8_pymatch_comm"] 4.251 ms (5%) 1.95 MiB (1%) 23176
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 17.650 ms (5%) 6.03 MiB (1%) 92811
["ecc", "evaluate_decoder", "toric8_pymatch_shorsyn"] 26.301 ms (5%) 8.50 MiB (1%) 126727
["ecc", "evaluate_decoder", "toric8_table_comm"] 2.659 ms (5%) 1.64 MiB (1%) 23082
["ecc", "evaluate_decoder", "toric8_table_naivesyn"] 15.249 ms (5%) 5.38 MiB (1%) 92616
["ecc", "evaluate_decoder", "toric8_table_shorsyn"] 23.975 ms (5%) 7.85 MiB (1%) 126532
["pauli", "mul", "100"] 14.667 ns (5%)
["pauli", "mul", "1000"] 18.820 ns (5%)
["pauli", "mul", "100000"] 730.364 ns (5%)
["pauli", "mul", "20000000"] 204.892 μs (5%)
["stabilizer", "canon", "cano500"] 3.091 ms (5%)
["stabilizer", "canon", "diag_cano500"] 752.632 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.093 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 665.502 μs (5%)
["stabilizer", "canon", "gott500"] 6.496 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.528 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.593 ms (5%)
["stabilizer", "canon", "rref500"] 3.141 ms (5%)
["stabilizer", "project", "destabilizer"] 18.464 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 9.077 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.187 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.824 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 30.817 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 24.225 μs (5%) 112 bytes (1%) 3

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["circuitsim", "compactification"]
  • ["circuitsim", "mctrajectories"]
  • ["circuitsim", "mctrajectories_sumtype"]
  • ["circuitsim", "mctrajectories_union"]
  • ["circuitsim", "pftrajectories"]
  • ["circuitsim", "pftrajectories_sumtype"]
  • ["circuitsim", "pftrajectories_union"]
  • ["clifford", "dense"]
  • ["clifford", "symbolic"]
  • ["ecc", "evaluate_decoder"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Julia Version 1.12.0-DEV.380
Commit e57a7e49ad7 (2024-04-21 17:46 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.4 LTS
 uname: Linux 6.5.0-1018-azure #19~22.04.2-Ubuntu SMP Thu Mar 21 16:45:46 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2070 s 0 s 215 s 6902 s 0 s
 #2 0 MHz 1435 s 0 s 170 s 7584 s 0 s
 #3 0 MHz 2812 s 0 s 193 s 6192 s 0 s
 #4 0 MHz 3205 s 0 s 182 s 5803 s 0 s
 Memory: 15.606494903564453 GB (13334.34765625 MB free)
 Uptime: 923.58 sec
 Load Avg: 1.0 1.01 0.74
 WORD_SIZE: 64
 LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 defa...*[Comment body truncated]*

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Apr 20, 2024

Thanks for your comments. I have significantly improved the doc-strings and made 1 commit/push.

I hope you like the descent from Finite Fields back to the Boolean Field when reviewing!

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Apr 28, 2024

Results:

Test Summary:          | Time
ecc_decoder_all_setups | None  27.7s
Test Summary: | Pass  Total  Time
ecc_encoding  |  238    238  0.9s
Test Summary: |  Pass  Total  Time
ecc_gottesman | 24562  24562  0.2s
Test Summary:  | Pass  Total  Time
ecc_reedmuller |   19     19  0.8s
Test Summary: | Pass  Total  Time
ecc_bch       |   36     36  2.7s
Test Summary: | Pass  Total  Time
ecc_syndromes |  176    176  3.5s
Test Summary: | Pass  Total  Time
ecc_throws    |    4      4  0.0s
Test Summary: |Time
precompile    | None  0.3s
┌ Warning: The operation is of a type that can not be unified, defaulting to slower runtime dispatch
│   typeof(g) = NoiseOp{UnbiasedUncorrelatedNoise{Float64}, 1}
└ @ QuantumClifford ~/Desktop/New/bch/QuantumClifford.jl/src/sumtypes.jl:77
┌ Warning: The operation is of a type that can not be unified, defaulting to slower runtime dispatch
│   typeof(g) = NoiseOp{UnbiasedUncorrelatedNoise{Float64}, 1}
└ @ QuantumClifford ~/Desktop/New/bch/QuantumClifford.jl/src/sumtypes.jl:77
Test Summary: | Pass  Total  Time
pauliframe    |   93     93  6.0s
Test Summary: | Pass  Total  Time
allocations   |   39     39  7.4s
[ Info: SetupBuildDirectory: setting up build directory.
[ Info: Doctest: running doctests.
[ Info: Skipped ExpandTemplates step (doctest only).
[ Info: Skipped CrossReferences step (doctest only).
[ Info: Skipped CheckDocument step (doctest only).
[ Info: Skipped Populate step (doctest only).
[ Info: Skipped RenderDocument step (doctest only).
Test Summary: | Pass  Total   Time
doctests      |    1      1  14.6s
Skipping Base.active_repl
Skipping Base.active_repl_backend
Test Summary: | Pass  Total   Time
aqua          |   11     11  19.0s
     Testing QuantumClifford tests passed 

Copy link

codecov bot commented Apr 28, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 82.25%. Comparing base (2e80e87) to head (53a22fe).

❗ Current head 53a22fe differs from pull request most recent head 481faf1. Consider uploading reports for the commit 481faf1 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #263      +/-   ##
==========================================
- Coverage   82.28%   82.25%   -0.03%     
==========================================
  Files          58       59       +1     
  Lines        3894     3940      +46     
==========================================
+ Hits         3204     3241      +37     
- Misses        690      699       +9     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Apr 28, 2024

@Krastanov, Could you please help review the open PRs? Thanks.

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Apr 30, 2024

BCH code (15, 2)

Parity Check Matrix: H

julia> parity_checks(BCH(15,2))
8×15 Matrix{Bool}:
 1  0  0  0  1  0  0  1  1  0  1  0  1  1  1
 0  1  0  0  1  1  0  1  0  1  1  1  1  0  0
 0  0  1  0  0  1  1  0  1  0  1  1  1  1  0
 0  0  0  1  0  0  1  1  0  1  0  1  1  1  1
 1  0  0  0  1  1  0  0  0  1  1  0  0  0  1
 0  0  0  1  1  0  0  0  1  1  0  0  0  1  1
 0  0  1  0  1  0  0  1  0  1  0  0  1  0  1
 0  1  1  1  1  0  1  1  1  1  0  1  1  1  1

Screenshot_select-area_20240430050759

HField Matrix:


2×15 Matrix{FqFieldElem}:
 1  a    a^2        a^3      a + 1              a^2 + a  a^3 + a^2  …  a^3 + a^2 + 1  a^3 + 1
 1  a^3  a^3 + a^2  a^3 + a  a^3 + a^2 + a + 1  1        a^3           a^3 + a        a^3 + a^2 + a + 1

Screenshot_select-area_20240430050859

julia> GF2, a = finite_field(2, 4, "a")
(Finite field of degree 4 and characteristic 2, a)


julia> a^42
a^3 + a^2 + a + 1

julia> a^39
a^3 + a

julia> a^12
a^3 + a^2 + a + 1

julia> a^9
a^3 + a

julia> a^14
a^3 + 1

julia> a^13
a^3 + a^2 + 1

Copy link
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for setting this up! I finished a first round of a review. There are some superficial comments, but also a bunch of fairly important comments related to testing and error messages.

I also tried to run a few examples, and I am getting some strange results for some parameter regimes. E.g. the following:

julia> parity_checks(BCH(7,4)) |> size
(12, 7)

This does not make sense to me. A parity check matrices should have fewer rows than columns. This should probably be explicitly part of some form of universal tests -- the rank of the matrix should be equal to the number of rows it has which should be smaller than the number of columns, for any code.

CHANGELOG.md Outdated Show resolved Hide resolved
src/ecc/ECC.jl Outdated Show resolved Hide resolved
src/ecc/ECC.jl Outdated Show resolved Hide resolved
src/ecc/codes/classical/bch.jl Outdated Show resolved Hide resolved
src/ecc/codes/classical/bch.jl Outdated Show resolved Hide resolved
src/ecc/codes/classical/bch.jl Outdated Show resolved Hide resolved
test/test_ecc_bch.jl Outdated Show resolved Hide resolved
test/test_ecc_bch.jl Outdated Show resolved Hide resolved
src/ecc/codes/classical/bch.jl Outdated Show resolved Hide resolved
test/test_ecc_bch.jl Outdated Show resolved Hide resolved
@Krastanov
Copy link
Member

BCH code (15, 2)

Parity Check Matrix: H

julia> parity_checks(BCH(15,2))
8×15 Matrix{Bool}:
 1  0  0  0  1  0  0  1  1  0  1  0  1  1  1
 0  1  0  0  1  1  0  1  0  1  1  1  1  0  0
 0  0  1  0  0  1  1  0  1  0  1  1  1  1  0
 0  0  0  1  0  0  1  1  0  1  0  1  1  1  1
 1  0  0  0  1  1  0  0  0  1  1  0  0  0  1
 0  0  0  1  1  0  0  0  1  1  0  0  0  1  1
 0  0  1  0  1  0  0  1  0  1  0  0  1  0  1
 0  1  1  1  1  0  1  1  1  1  0  1  1  1  1

Screenshot_select-area_20240430050759

HField Matrix:


2×15 Matrix{FqFieldElem}:
 1  a    a^2        a^3      a + 1              a^2 + a  a^3 + a^2  …  a^3 + a^2 + 1  a^3 + 1
 1  a^3  a^3 + a^2  a^3 + a  a^3 + a^2 + a + 1  1        a^3           a^3 + a        a^3 + a^2 + a + 1

Screenshot_select-area_20240430050859

julia> GF2, a = finite_field(2, 4, "a") (Finite field of degree 4 and characteristic 2, a)


julia> a^42
a^3 + a^2 + a + 1

julia> a^39
a^3 + a

julia> a^12
a^3 + a^2 + a + 1

julia> a^9
a^3 + a

julia> a^14
a^3 + 1

julia> a^13
a^3 + a^2 + 1

This should be part of the tests, not just a comment on the pull requests (it is one of the todos I have listed in the review). Make sure these tests have references to where the example is taken from.

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented May 2, 2024

I also tried to run a few examples, and I am getting some strange results for some parameter regimes. E.g. the following:

julia> parity_checks(BCH(7,4)) |> size
(12, 7)

This does not make sense to me. A parity check matrices should have fewer rows than columns.

I made a mistake in the setting the bound of t. After reading the slides, the m >= 3 and t < 2^(m -1 ). n = Block length: n = 2^m − 1.

When m =3, we have n=7, and GF(2^3).

When n =7 is actually 2^3 - 1, GF(8), so m = 3. Now, t must be < 2^(3 - 1) so t < 4. (7, 4) is not a valid instance of the code and the bound is set incorrectly. I have set it to t <= 2^(m - 1) so that why the invalid instance (7, 4) is not throwing the error.

So, the m =3, the valid codes are (7, 1), (7, 2) and (7, 3) as t should be less than 2^(m - 1) as per the formula!

Right: 1 -> m- tuple
julia> parity_checks(BCH(7,1))
FqFieldElem[1 a a^2 a + 1 a^2 + a a^2 + a + 1 a^2 + 1]
3×7 Matrix{Bool}:
 1  0  0  1  0  1  1
 0  1  0  1  1  1  0
 0  0  1  0  1  1  1

Right:  2 -> 2 m- tuples
julia> parity_checks(BCH(7,2))
FqFieldElem[1 a a^2 a + 1 a^2 + a a^2 + a + 1 a^2 + 1; 1 a + 1 a^2 + 1 a^2 a^2 + a + 1 a a^2 + a]
6×7 Matrix{Bool}:
 1  0  0  1  0  1  1
 0  1  0  1  1  1  0
 0  0  1  0  1  1  1
 1  1  1  0  1  0  0
 0  1  0  0  1  1  1
 0  0  1  1  1  0  1

Right: Right:  3 -> 3 m- tuples
julia> parity_checks(BCH(7,3))
FqFieldElem[1 a a^2 a + 1 a^2 + a a^2 + a + 1 a^2 + 1; 1 a + 1 a^2 + 1 a^2 a^2 + a + 1 a a^2 + a; 1 a^2 + a + 1 a + 1 a a^2 + 1 a^2 + a a^2]
9×7 Matrix{Bool}:
 1  0  0  1  0  1  1
 0  1  0  1  1  1  0
 0  0  1  0  1  1  1
 1  1  1  0  1  0  0
 0  1  0  0  1  1  1
 0  0  1  1  1  0  1
 1  1  1  0  1  0  0
 0  1  1  1  0  1  0
 0  1  0  0  1  1  1

Wrong, invalid code
julia> parity_checks(BCH(7,4))
FqFieldElem[1 a a^2 a + 1 a^2 + a a^2 + a + 1 a^2 + 1; 1 a + 1 a^2 + 1 a^2 a^2 + a + 1 a a^2 + a; 1 a^2 + a + 1 a + 1 a a^2 + 1 a^2 + a a^2; 1 1 1 1 1 1 1]
12×7 Matrix{Bool}:
 1  0  0  1  0  1  1
 0  1  0  1  1  1  0
 0  0  1  0  1  1  1
 1  1  1  0  1  0  0
 0  1  0  0  1  1  1
 0  0  1  1  1  0  1
 1  1  1  0  1  0  0
 0  1  1  1  0  1  0
 0  1  0  0  1  1  1
 1  1  1  1  1  1  1
 0  0  0  0  0  0  0
 0  0  0  0  0  0  0

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented May 2, 2024

Thanks for comprehensive review. I have incorporated all your suggestions.

Test Summary:          | Time
ecc_decoder_all_setups | None  26.6s
Test Summary: | Pass  Total  Time
ecc_encoding  |  238    238  0.6s
Test Summary: |  Pass  Total  Time
ecc_gottesman | 24562  24562  0.2s
Test Summary:  | Pass  Total  Time
ecc_reedmuller |   19     19  0.8s
Test Summary: | Pass  Total  Time
ecc_bch       |   51     51  2.5s
Test Summary: | Pass  Total  Time
ecc_syndromes |  176    176  3.2s
Test Summary: | Pass  Total  Time
ecc_throws    |    4      4  0.0s
Test Summary: |Time
precompile    | None  0.2s
Test Summary: | Pass  Total  Time
pauliframe    |  106    106  5.5s
Test Summary: | Pass  Total  Time
allocations   |   39     39  6.3s

Test Summary: | Pass  Total   Time
doctests      |    1      1  14.3s
Skipping Base.active_repl
Skipping Base.active_repl_backend
Test Summary: | Pass  Total   Time
aqua          |   11     11  19.4s
     Testing QuantumClifford tests passed 

@Fe-r-oz Fe-r-oz requested a review from Krastanov May 2, 2024 19:05
test/test_ecc_bch.jl Outdated Show resolved Hide resolved
test/test_ecc_bch.jl Outdated Show resolved Hide resolved
@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented May 9, 2024

Thanks for your comments. Added all your suggestions, also downgrade is passing now as well.

@Fe-r-oz Fe-r-oz requested a review from Krastanov May 9, 2024 15:47
@Krastanov Krastanov added the Skip-Changelog label for control of CI: skips the changelog check label May 10, 2024
Copy link
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! I will make a few small changes (check the comments and the upcoming commits) and if tests pass I will merge.

You had mentioned that in some situations tests take long time. A convenient workaround that does not sacrifice the quality of the tests is to do something like:

for t in rand(all_test_cases, n) # where n is some small number of samples, e.g. 5 or 10

instead of

for t in all_test_cases

That way everything gets tested eventually but you do not need to worry about things being too expensive each time.

Of course, that should be done only after someone has actually executed all the tests at least once, e.g. during developing the package.

Thanks for taking care of this submission. It is quite polished now.

src/ecc/codes/classical/bch.jl Outdated Show resolved Hide resolved
src/ecc/codes/classical/bch.jl Outdated Show resolved Hide resolved
test/test_ecc_bch.jl Outdated Show resolved Hide resolved
test/test_ecc_bch.jl Outdated Show resolved Hide resolved
…Conjugates" because I do not understand its purpose but I also do not want to delay the merge, minor rework on tests and references
test/test_ecc_bch.jl Outdated Show resolved Hide resolved
@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented May 11, 2024

I have followed your docstring documentation style and added a small and relevant paragraph about conjugates. I hope this that satisfies you. This will save your time in for docstring. Also, the last check is now done via formula.

Apparently, I forgot to change the page numbers from 202, 203 to 168, 169. During tighting of the new docstring paragraph, please change the page numbers as well in the test section.

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented May 11, 2024

Apparently, I forgot to change the page numbers from 202, 203 to 168, 169.

Fixed the page numbers as well. I have polished this up as well!

@Krastanov
Copy link
Member

This is great! I removed a minor part of the docstring that I do not understand well. I do not want to keep you waiting on a merge over such a minor thing, given that the rest seems already very polished. If you consider that part of the docstring important, we can discuss it over a separate pull request.

Do you want me to start reviewing a specific next pull request? I see you have submitted a few, but I am not sure which one you would like to start with.

@Krastanov Krastanov merged commit 44f618a into QuantumSavory:master May 12, 2024
10 of 13 checks passed
@Krastanov
Copy link
Member

Woohoo!

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented May 12, 2024

Do you want me to start reviewing a specific next pull request?

Please review Reed-Solomon next!

@Fe-r-oz Fe-r-oz deleted the BCH branch July 17, 2024 17:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Skip-Changelog label for control of CI: skips the changelog check
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants