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

Bug fix to the parity_checks(ReedMuller(r, m)) along with RecursiveReedMuller code for cross-reference #277

Open
wants to merge 28 commits into
base: master
Choose a base branch
from

Conversation

Fe-r-oz
Copy link
Contributor

@Fe-r-oz Fe-r-oz commented May 18, 2024

Back then, I didn't had access to this book Fundamentals of Error Correcting codes by Huffman, that's why I skipped some details about Reed-Muller codes as now I am reading it now.

I have polished this PR #244 and added more details from the literature. This provides RM a complete introduction! Tested for all the cases.

@Krastanov Kindly please handle this small PR before reviewing ShortenedMDS! Thanks!

Copy link
Contributor

github-actions bot commented May 18, 2024

Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 18 May 2024 - 08:39
  • Baseline: 18 May 2024 - 08:46
  • Package commits:
  • Target: 626f68
  • Baseline: 44f618
  • Julia commits:
  • Target: 6c17db
  • Baseline: 6c17db
  • 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
["clifford", "dense", "dense500_on_diag500_destab"] 1.16 (5%) ❌ 1.00 (1%)
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 0.92 (5%) ✅ 0.97 (1%) ✅
["ecc", "evaluate_decoder", "toric8_bp_comm"] 0.96 (5%) 0.98 (1%) ✅
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 0.97 (5%) 0.98 (1%) ✅
["pauli", "mul", "1000"] 0.93 (5%) ✅ 1.00 (1%)
["stabilizer", "canon", "diag_rref500"] 1.12 (5%) ❌ 1.00 (1%)
["stabilizer", "tensor", "diag_pow5_20"] 1.07 (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.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 1878 s 0 s 166 s 7722 s 0 s
 #2 0 MHz 1980 s 0 s 147 s 7626 s 0 s
 #3 0 MHz 2654 s 0 s 176 s 6918 s 0 s
 #4 0 MHz 2822 s 0 s 168 s 6779 s 0 s
 Memory: 15.606498718261719 GB (13332.140625 MB free)
 Uptime: 981.35 sec
 Load Avg: 1.05 1.02 0.75
 WORD_SIZE: 64
 LLVM: libLLVM-17.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.12.0-DEV.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 3322 s 0 s 218 s 10668 s 0 s
 #2 0 MHz 3388 s 0 s 196 s 10610 s 0 s
 #3 0 MHz 3585 s 0 s 218 s 10386 s 0 s
 #4 0 MHz 3503 s 0 s 210 s 10495 s 0 s
 Memory: 15.606498718261719 GB (13329.39453125 MB free)
 Uptime: 1426.15 sec
 Load Avg: 1.0 1.02 0.87
 WORD_SIZE: 64
 LLVM: libLLVM-17.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: 18 May 2024 - 8:39
  • Package commit: 626f68
  • Julia commit: 6c17db
  • 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.218 ms (5%)
["circuitsim", "compactification", "no_compact"] 7.381 ms (5%) 281.25 KiB (1%) 6000
["circuitsim", "mctrajectories", "q1001_r1"] 14.918 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 173.612 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 13.381 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 120.343 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 13.150 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 119.061 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 60.202 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 170.306 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.097 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.051 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 42.429 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 150.706 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.080 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.855 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.258 μs (5%)
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.922 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 133.528 μ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.364 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.601 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.806 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.120 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 559.166 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 49.672 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 22.882 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 25.998 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.004 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.634 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.833 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 1.120 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 559.166 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.474 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 700.359 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.199 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 584.614 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 4.849 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.364 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 4.799 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.374 μs (5%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 1.828 ms (5%) 1.77 MiB (1%) 42611
["ecc", "evaluate_decoder", "shor_bp_naivesyn"] 4.531 ms (5%) 3.64 MiB (1%) 82321
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 4.942 ms (5%) 3.72 MiB (1%) 82983
["ecc", "evaluate_decoder", "shor_pybp_comm"] 25.959 ms (5%) 3.97 MiB (1%) 116084
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 52.907 ms (5%) 7.99 MiB (1%) 228133
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 52.672 ms (5%) 8.07 MiB (1%) 229131
["ecc", "evaluate_decoder", "shor_table_comm"] 257.027 μs (5%) 241.48 KiB (1%) 4595
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 1.093 ms (5%) 350.88 KiB (1%) 5155
["ecc", "evaluate_decoder", "shor_table_shorsyn"] 1.526 ms (5%) 440.22 KiB (1%) 6153
["ecc", "evaluate_decoder", "toric8_bp_comm"] 669.120 ms (5%) 16.236 ms 169.22 MiB (1%) 1014970
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.390 s (5%) 36.115 ms 350.41 MiB (1%) 2133432
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.387 s (5%) 37.297 ms 347.15 MiB (1%) 2133594
["ecc", "evaluate_decoder", "toric8_pybp_comm"] 390.117 ms (5%) 7.31 MiB (1%) 135575
["ecc", "evaluate_decoder", "toric8_pybp_naivesyn"] 819.553 ms (5%) 16.90 MiB (1%) 317606
["ecc", "evaluate_decoder", "toric8_pybp_shorsyn"] 831.204 ms (5%) 19.38 MiB (1%) 351522
["ecc", "evaluate_decoder", "toric8_pymatch_comm"] 4.174 ms (5%) 1.95 MiB (1%) 23180
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 16.925 ms (5%) 6.03 MiB (1%) 92823
["ecc", "evaluate_decoder", "toric8_pymatch_shorsyn"] 26.136 ms (5%) 8.50 MiB (1%) 126739
["ecc", "evaluate_decoder", "toric8_table_comm"] 2.622 ms (5%) 1.64 MiB (1%) 23086
["ecc", "evaluate_decoder", "toric8_table_naivesyn"] 14.789 ms (5%) 5.38 MiB (1%) 92628
["ecc", "evaluate_decoder", "toric8_table_shorsyn"] 23.959 ms (5%) 7.86 MiB (1%) 126544
["pauli", "mul", "100"] 14.204 ns (5%)
["pauli", "mul", "1000"] 17.608 ns (5%)
["pauli", "mul", "100000"] 725.682 ns (5%)
["pauli", "mul", "20000000"] 204.208 μs (5%)
["stabilizer", "canon", "cano500"] 3.021 ms (5%)
["stabilizer", "canon", "diag_cano500"] 637.353 μs (5%)
["stabilizer", "canon", "diag_gott500"] 3.993 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 732.899 μs (5%)
["stabilizer", "canon", "gott500"] 6.499 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.604 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.560 ms (5%)
["stabilizer", "canon", "rref500"] 3.149 ms (5%)
["stabilizer", "project", "destabilizer"] 17.753 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 8.976 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.387 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.472 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.458 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 24.616 μ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.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 1878 s 0 s 166 s 7722 s 0 s
 #2 0 MHz 1980 s 0 s 147 s 7626 s 0 s
 #3 0 MHz 2654 s 0 s 176 s 6918 s 0 s
 #4 0 MHz 2822 s 0 s 168 s 6779 s 0 s
 Memory: 15.606498718261719 GB (13332.140625 MB free)
 Uptime: 981.35 sec
 Load Avg: 1.05 1.02 0.75
 WORD_SIZE: 64
 LLVM: libLLVM-17.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: 18 May 2024 - 8:46
  • Package commit: 44f618
  • Julia commit: 6c17db
  • 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.925 ms (5%)
["circuitsim", "compactification", "no_compact"] 7.075 ms (5%) 281.25 KiB (1%) 6000
["circuitsim", "mctrajectories", "q1001_r1"] 15.403 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 174.674 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 13.247 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 120.343 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 13.116 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 119.001 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 59.761 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 174.554 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.144 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.021 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 43.641 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 153.865 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.129 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.815 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.397 μs (5%)
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.301 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 136.082 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.102 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.304 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.470 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.830 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.118 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 559.167 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.389 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 22.702 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 25.577 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 12.804 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.461 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.834 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 966.583 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 559.176 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.475 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 699.807 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.203 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 584.835 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 4.839 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.355 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 4.809 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.374 μs (5%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 1.840 ms (5%) 1.77 MiB (1%) 42583
["ecc", "evaluate_decoder", "shor_bp_naivesyn"] 4.364 ms (5%) 3.63 MiB (1%) 82083
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 5.396 ms (5%) 3.84 MiB (1%) 85881
["ecc", "evaluate_decoder", "shor_pybp_comm"] 26.660 ms (5%) 3.97 MiB (1%) 116084
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 55.094 ms (5%) 7.99 MiB (1%) 228133
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 55.265 ms (5%) 8.07 MiB (1%) 229131
["ecc", "evaluate_decoder", "shor_table_comm"] 257.798 μs (5%) 241.48 KiB (1%) 4595
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 1.083 ms (5%) 350.88 KiB (1%) 5155
["ecc", "evaluate_decoder", "shor_table_shorsyn"] 1.507 ms (5%) 440.22 KiB (1%) 6153
["ecc", "evaluate_decoder", "toric8_bp_comm"] 696.154 ms (5%) 12.075 ms 172.25 MiB (1%) 1032834
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.392 s (5%) 31.035 ms 348.32 MiB (1%) 2121112
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.431 s (5%) 31.832 ms 352.43 MiB (1%) 2164695
["ecc", "evaluate_decoder", "toric8_pybp_comm"] 391.801 ms (5%) 7.31 MiB (1%) 135575
["ecc", "evaluate_decoder", "toric8_pybp_naivesyn"] 826.951 ms (5%) 16.90 MiB (1%) 317606
["ecc", "evaluate_decoder", "toric8_pybp_shorsyn"] 818.907 ms (5%) 19.38 MiB (1%) 351522
["ecc", "evaluate_decoder", "toric8_pymatch_comm"] 4.250 ms (5%) 1.95 MiB (1%) 23180
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 16.887 ms (5%) 6.03 MiB (1%) 92823
["ecc", "evaluate_decoder", "toric8_pymatch_shorsyn"] 26.053 ms (5%) 8.50 MiB (1%) 126739
["ecc", "evaluate_decoder", "toric8_table_comm"] 2.744 ms (5%) 1.64 MiB (1%) 23086
["ecc", "evaluate_decoder", "toric8_table_naivesyn"] 14.764 ms (5%) 5.38 MiB (1%) 92628
["ecc", "evaluate_decoder", "toric8_table_shorsyn"] 23.932 ms (5%) 7.86 MiB (1%) 126544
["pauli", "mul", "100"] 14.566 ns (5%)
["pauli", "mul", "1000"] 18.843 ns (5%)
["pauli", "mul", "100000"] 731.271 ns (5%)
["pauli", "mul", "20000000"] 200.061 μs (5%)
["stabilizer", "canon", "cano500"] 3.075 ms (5%)
["stabilizer", "canon", "diag_cano500"] 635.418 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.173 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 655.585 μs (5%)
["stabilizer", "canon", "gott500"] 6.578 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.564 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.576 ms (5%)
["stabilizer", "canon", "rref500"] 3.150 ms (5%)
["stabilizer", "project", "destabilizer"] 17.633 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 8.746 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.297 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.403 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.368 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 24.575 μ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.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 3322 s 0 s 218 s 10668 s 0 s
 #2 0 MHz 3388 s 0 s 196 s 10610 s 0 s
 #3 0 MHz 3585 s 0 s 218 s 10386 s 0 s
 #4 0 MHz 3503 s 0 s 210 s 10495 s 0 s
 Memory: 15.606498718261719 GB (13329.39453125 MB free)
 Uptime: 1426.15 sec
 Load Avg: 1.0 1.02 0.87
 WORD_SIZE: 64
 LLVM: libLLVM-17.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.86
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; BHI 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: 18 May 2024 - 08:46
  • Baseline: 18 May 2024 - 08:54
  • Package commits:
  • Target: 08d15f
  • Baseline: 44f618
  • Julia commits:
  • Target: 6c17db
  • Baseline: 6c17db
  • 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.08 (5%) ❌ 1.00 (1%)
["circuitsim", "pftrajectories", "q101_r1"] 1.07 (5%) ❌ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 0.64 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 0.88 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 0.64 (5%) ✅ 1.00 (1%)
["clifford", "dense", "dense500_on_diag500_destab"] 0.86 (5%) ✅ 1.00 (1%)
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 0.96 (5%) 0.98 (1%) ✅
["ecc", "evaluate_decoder", "toric8_bp_comm"] 1.03 (5%) 0.97 (1%) ✅
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.04 (5%) 1.02 (1%) ❌
["pauli", "mul", "20000000"] 0.93 (5%) ✅ 1.00 (1%)
["stabilizer", "tensor", "diag_pow5_20"] 1.14 (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.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2041 s 0 s 159 s 7139 s 0 s
 #2 0 MHz 3121 s 0 s 170 s 6045 s 0 s
 #3 0 MHz 2024 s 0 s 168 s 7156 s 0 s
 #4 0 MHz 1984 s 0 s 174 s 7189 s 0 s
 Memory: 15.606502532958984 GB (13316.08203125 MB free)
 Uptime: 938.49 sec
 Load Avg: 1.0 1.01 0.71
 WORD_SIZE: 64
 LLVM: libLLVM-17.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.12.0-DEV.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 3552 s 0 s 210 s 9947 s 0 s
 #2 0 MHz 4276 s 0 s 215 s 9214 s 0 s
 #3 0 MHz 3139 s 0 s 218 s 10360 s 0 s
 #4 0 MHz 2595 s 0 s 224 s 10896 s 0 s
 Memory: 15.606502532958984 GB (13292.25390625 MB free)
 Uptime: 1376.08 sec
 Load Avg: 1.06 1.03 0.85
 WORD_SIZE: 64
 LLVM: libLLVM-17.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: 18 May 2024 - 8:46
  • Package commit: 08d15f
  • Julia commit: 6c17db
  • 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.886 ms (5%)
["circuitsim", "compactification", "no_compact"] 7.038 ms (5%) 281.25 KiB (1%) 6000
["circuitsim", "mctrajectories", "q1001_r1"] 15.269 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 175.767 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 13.364 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 121.437 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 13.369 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 119.634 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 64.230 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 174.637 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.102 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.432 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 42.970 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 150.502 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.083 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.811 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.298 μs (5%)
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.612 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 133.500 μ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"] 11.492 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.867 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.118 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 559.457 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.741 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 22.873 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 25.658 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 12.904 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.465 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.863 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 966.499 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 559.437 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.474 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 700.841 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.198 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 584.204 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 4.839 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.364 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 4.809 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.364 μs (5%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 1.831 ms (5%) 1.78 MiB (1%) 42737
["ecc", "evaluate_decoder", "shor_bp_naivesyn"] 4.423 ms (5%) 3.63 MiB (1%) 82027
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 4.881 ms (5%) 3.71 MiB (1%) 82871
["ecc", "evaluate_decoder", "shor_pybp_comm"] 25.260 ms (5%) 3.97 MiB (1%) 116084
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 51.451 ms (5%) 7.99 MiB (1%) 228133
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 51.913 ms (5%) 8.07 MiB (1%) 229131
["ecc", "evaluate_decoder", "shor_table_comm"] 256.940 μs (5%) 241.48 KiB (1%) 4595
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 1.083 ms (5%) 350.88 KiB (1%) 5155
["ecc", "evaluate_decoder", "shor_table_shorsyn"] 1.518 ms (5%) 440.22 KiB (1%) 6153
["ecc", "evaluate_decoder", "toric8_bp_comm"] 698.473 ms (5%) 13.417 ms 166.51 MiB (1%) 999080
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.447 s (5%) 27.480 ms 357.05 MiB (1%) 2172478
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.434 s (5%) 26.627 ms 354.70 MiB (1%) 2178044
["ecc", "evaluate_decoder", "toric8_pybp_comm"] 387.528 ms (5%) 7.31 MiB (1%) 135575
["ecc", "evaluate_decoder", "toric8_pybp_naivesyn"] 819.204 ms (5%) 16.90 MiB (1%) 317606
["ecc", "evaluate_decoder", "toric8_pybp_shorsyn"] 822.333 ms (5%) 19.38 MiB (1%) 351522
["ecc", "evaluate_decoder", "toric8_pymatch_comm"] 4.164 ms (5%) 1.95 MiB (1%) 23180
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 16.891 ms (5%) 6.03 MiB (1%) 92823
["ecc", "evaluate_decoder", "toric8_pymatch_shorsyn"] 26.147 ms (5%) 8.50 MiB (1%) 126739
["ecc", "evaluate_decoder", "toric8_table_comm"] 2.665 ms (5%) 1.64 MiB (1%) 23086
["ecc", "evaluate_decoder", "toric8_table_naivesyn"] 14.604 ms (5%) 5.38 MiB (1%) 92628
["ecc", "evaluate_decoder", "toric8_table_shorsyn"] 23.919 ms (5%) 7.86 MiB (1%) 126544
["pauli", "mul", "100"] 14.817 ns (5%)
["pauli", "mul", "1000"] 18.820 ns (5%)
["pauli", "mul", "100000"] 728.032 ns (5%)
["pauli", "mul", "20000000"] 174.076 μs (5%)
["stabilizer", "canon", "cano500"] 3.025 ms (5%)
["stabilizer", "canon", "diag_cano500"] 637.062 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.021 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 655.266 μs (5%)
["stabilizer", "canon", "gott500"] 6.531 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.539 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.590 ms (5%)
["stabilizer", "canon", "rref500"] 3.126 ms (5%)
["stabilizer", "project", "destabilizer"] 18.204 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 8.827 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.276 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.501 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.439 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 24.476 μ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.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2041 s 0 s 159 s 7139 s 0 s
 #2 0 MHz 3121 s 0 s 170 s 6045 s 0 s
 #3 0 MHz 2024 s 0 s 168 s 7156 s 0 s
 #4 0 MHz 1984 s 0 s 174 s 7189 s 0 s
 Memory: 15.606502532958984 GB (13316.08203125 MB free)
 Uptime: 938.49 sec
 Load Avg: 1.0 1.01 0.71
 WORD_SIZE: 64
 LLVM: libLLVM-17.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: 18 May 2024 - 8:54
  • Package commit: 44f618
  • Julia commit: 6c17db
  • 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.937 ms (5%)
["circuitsim", "compactification", "no_compact"] 7.056 ms (5%) 281.25 KiB (1%) 6000
["circuitsim", "mctrajectories", "q1001_r1"] 15.145 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 175.017 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 13.513 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 120.155 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 13.181 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 118.982 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 59.681 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 169.417 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.095 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.001 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 66.695 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 171.701 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.104 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.875 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 6.692 μs (5%)
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.592 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 132.428 μ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.334 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.483 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.829 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.120 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 559.928 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 49.382 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.003 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.149 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.095 μ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.827 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 1.118 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 559.898 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.482 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 701.934 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.200 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 584.514 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 4.849 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.364 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 4.809 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.365 μs (5%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 1.821 ms (5%) 1.78 MiB (1%) 42793
["ecc", "evaluate_decoder", "shor_bp_naivesyn"] 4.330 ms (5%) 3.63 MiB (1%) 82069
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 5.111 ms (5%) 3.80 MiB (1%) 84971
["ecc", "evaluate_decoder", "shor_pybp_comm"] 25.902 ms (5%) 3.97 MiB (1%) 116084
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 52.543 ms (5%) 7.99 MiB (1%) 228133
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 52.978 ms (5%) 8.07 MiB (1%) 229131
["ecc", "evaluate_decoder", "shor_table_comm"] 256.691 μs (5%) 241.48 KiB (1%) 4595
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 1.089 ms (5%) 350.88 KiB (1%) 5155
["ecc", "evaluate_decoder", "shor_table_shorsyn"] 1.521 ms (5%) 440.22 KiB (1%) 6153
["ecc", "evaluate_decoder", "toric8_bp_comm"] 680.957 ms (5%) 12.724 ms 171.34 MiB (1%) 1027472
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.403 s (5%) 24.267 ms 356.61 MiB (1%) 2169902
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.378 s (5%) 26.938 ms 349.27 MiB (1%) 2146110
["ecc", "evaluate_decoder", "toric8_pybp_comm"] 392.422 ms (5%) 7.31 MiB (1%) 135575
["ecc", "evaluate_decoder", "toric8_pybp_naivesyn"] 805.811 ms (5%) 16.90 MiB (1%) 317606
["ecc", "evaluate_decoder", "toric8_pybp_shorsyn"] 798.167 ms (5%) 19.38 MiB (1%) 351522
["ecc", "evaluate_decoder", "toric8_pymatch_comm"] 4.191 ms (5%) 1.95 MiB (1%) 23180
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 16.942 ms (5%) 6.03 MiB (1%) 92823
["ecc", "evaluate_decoder", "toric8_pymatch_shorsyn"] 26.154 ms (5%) 8.50 MiB (1%) 126739
["ecc", "evaluate_decoder", "toric8_table_comm"] 2.652 ms (5%) 1.64 MiB (1%) 23086
["ecc", "evaluate_decoder", "toric8_table_naivesyn"] 14.689 ms (5%) 5.38 MiB (1%) 92628
["ecc", "evaluate_decoder", "toric8_table_shorsyn"] 23.901 ms (5%) 7.86 MiB (1%) 126544
["pauli", "mul", "100"] 14.536 ns (5%)
["pauli", "mul", "1000"] 18.097 ns (5%)
["pauli", "mul", "100000"] 727.079 ns (5%)
["pauli", "mul", "20000000"] 186.890 μs (5%)
["stabilizer", "canon", "cano500"] 3.074 ms (5%)
["stabilizer", "canon", "diag_cano500"] 636.942 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.074 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 655.107 μs (5%)
["stabilizer", "canon", "gott500"] 6.567 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.561 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.566 ms (5%)
["stabilizer", "canon", "rref500"] 3.122 ms (5%)
["stabilizer", "project", "destabilizer"] 17.653 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 8.736 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.121 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.422 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.510 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 24.446 μ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.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 3552 s 0 s 210 s 9947 s 0 s
 #2 0 MHz 4276 s 0 s 215 s 9214 s 0 s
 #3 0 MHz 3139 s 0 s 218 s 10360 s 0 s
 #4 0 MHz 2595 s 0 s 224 s 10896 s 0 s
 Memory: 15.606502532958984 GB (13292.25390625 MB free)
 Uptime: 1376.08 sec
 Load Avg: 1.06 1.03 0.85
 WORD_SIZE: 64
 LLVM: libLLVM-17.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.86
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; BHI 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: 18 May 2024 - 09:34
  • Baseline: 18 May 2024 - 09:42
  • Package commits:
  • Target: debf0b
  • Baseline: 44f618
  • Julia commits:
  • Target: 6c17db
  • Baseline: 6c17db
  • 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
["clifford", "dense", "cnot250_on_dense500_stab"] 1.05 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot_on_dense500_stab"] 0.80 (5%) ✅ 1.00 (1%)
["clifford", "dense", "dense500_on_dense500_stab"] 1.05 (5%) ❌ 1.00 (1%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 0.76 (5%) ✅ 1.00 (1%)
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 0.93 (5%) ✅ 0.99 (1%)
["ecc", "evaluate_decoder", "shor_pybp_comm"] 0.94 (5%) ✅ 1.00 (1%)
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 0.94 (5%) ✅ 1.00 (1%)
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 0.93 (5%) ✅ 1.00 (1%)
["ecc", "evaluate_decoder", "toric8_bp_comm"] 1.01 (5%) 1.02 (1%) ❌
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.00 (5%) 0.99 (1%) ✅
["stabilizer", "tensor", "diag_pow5_20"] 0.90 (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.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2606 s 0 s 157 s 5998 s 0 s
 #2 0 MHz 2945 s 0 s 167 s 5660 s 0 s
 #3 0 MHz 1576 s 0 s 189 s 7012 s 0 s
 #4 0 MHz 2056 s 0 s 178 s 6542 s 0 s
 Memory: 15.606502532958984 GB (13317.2890625 MB free)
 Uptime: 881.44 sec
 Load Avg: 1.0 1.0 0.71
 WORD_SIZE: 64
 LLVM: libLLVM-17.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.12.0-DEV.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 3655 s 0 s 202 s 9285 s 0 s
 #2 0 MHz 3918 s 0 s 214 s 9021 s 0 s
 #3 0 MHz 2726 s 0 s 245 s 10188 s 0 s
 #4 0 MHz 3290 s 0 s 236 s 9632 s 0 s
 Memory: 15.606502532958984 GB (13335.296875 MB free)
 Uptime: 1320.46 sec
 Load Avg: 1.04 1.03 0.86
 WORD_SIZE: 64
 LLVM: libLLVM-17.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: 18 May 2024 - 9:34
  • Package commit: debf0b
  • Julia commit: 6c17db
  • 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.965 ms (5%)
["circuitsim", "compactification", "no_compact"] 7.083 ms (5%) 281.25 KiB (1%) 6000
["circuitsim", "mctrajectories", "q1001_r1"] 15.324 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 177.081 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 13.387 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 122.127 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 13.282 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 120.685 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 59.762 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 169.637 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.095 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.001 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 42.690 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 149.439 μs (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.078 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.849 ms (5%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.268 μs (5%)
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.292 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 132.838 μ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.304 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.509 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.998 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 975.128 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 559.323 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 49.692 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.604 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 25.217 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.324 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.517 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.996 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 1.117 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 559.313 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.485 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 699.584 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.205 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 584.661 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 4.879 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.364 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 4.789 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.364 μs (5%)
["ecc", "evaluate_decoder", "shor_bp_comm"] 1.829 ms (5%) 1.77 MiB (1%) 42709
["ecc", "evaluate_decoder", "shor_bp_naivesyn"] 4.370 ms (5%) 3.63 MiB (1%) 81957
["ecc", "evaluate_decoder", "shor_bp_shorsyn"] 4.821 ms (5%) 3.73 MiB (1%) 83193
["ecc", "evaluate_decoder", "shor_pybp_comm"] 24.842 ms (5%) 3.97 MiB (1%) 116084
["ecc", "evaluate_decoder", "shor_pybp_naivesyn"] 50.766 ms (5%) 7.99 MiB (1%) 228133
["ecc", "evaluate_decoder", "shor_pybp_shorsyn"] 51.124 ms (5%) 8.07 MiB (1%) 229131
["ecc", "evaluate_decoder", "shor_table_comm"] 255.356 μs (5%) 241.48 KiB (1%) 4595
["ecc", "evaluate_decoder", "shor_table_naivesyn"] 1.088 ms (5%) 350.88 KiB (1%) 5155
["ecc", "evaluate_decoder", "shor_table_shorsyn"] 1.512 ms (5%) 440.22 KiB (1%) 6153
["ecc", "evaluate_decoder", "toric8_bp_comm"] 694.500 ms (5%) 14.499 ms 172.27 MiB (1%) 1032918
["ecc", "evaluate_decoder", "toric8_bp_naivesyn"] 1.405 s (5%) 26.596 ms 349.67 MiB (1%) 2129050
["ecc", "evaluate_decoder", "toric8_bp_shorsyn"] 1.411 s (5%) 29.173 ms 353.05 MiB (1%) 2168342
["ecc", "evaluate_decoder", "toric8_pybp_comm"] 395.255 ms (5%) 7.31 MiB (1%) 135575
["ecc", "evaluate_decoder", "toric8_pybp_naivesyn"] 808.949 ms (5%) 16.90 MiB (1%) 317606
["ecc", "evaluate_decoder", "toric8_pybp_shorsyn"] 819.626 ms (5%) 19.38 MiB (1%) 351522
["ecc", "evaluate_decoder", "toric8_pymatch_comm"] 4.159 ms (5%) 1.95 MiB (1%) 23180
["ecc", "evaluate_decoder", "toric8_pymatch_naivesyn"] 16.917 ms (5%) 6.03 MiB (1%) 92823
["ecc", "evaluate_decoder", "toric8_pymatch_shorsyn"] 26.058 ms (5%) 8.50 MiB (1%) 126739
["ecc", "evaluate_decoder", "toric8_table_comm"] 2.627 ms (5%) 1.64 MiB (1%) 23086
["ecc", "evaluate_decoder", "toric8_table_naivesyn"] 14.675 ms (5%) 5.38 MiB (1%) 92628
["ecc", "evaluate_decoder", "toric8_table_shorsyn"] 23.873 ms (5%) 7.86 MiB (1%) 126544
["pauli", "mul", "100"] 14.506 ns (5%)
["pauli", "mul", "1000"] 18.820 ns (5%)
["pauli", "mul", "100000"] 731.205 ns (5%)
["pauli", "mul", "20000000"] 186.848 μs (5%)
["stabilizer", "canon", "cano500"] 3.078 ms (5%)
["stabilizer", "canon", "diag_cano500"] 636.917 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.013 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 674.568 μs (5%)
["stabilizer", "canon", "gott500"] 6.495 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.558 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.599 ms (5%)
["stabilizer", "canon", "rref500"] 3.132 ms (5%)
["stabilizer", "project", "destabilizer"] 17.843 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 8.546 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.118 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.594 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.208 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 24.275 μ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.555
Commit 6c17db1ba12 (2024-05-17 23:51 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-1021-azure #22~22.04.1-Ubuntu SMP Tue Apr 30 16:08:18 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 0 MHz 2606 s 0 s 157 s 5998 s 0 s
 #2 0 MHz 2945 s 0 s 167 s 5660 s 0 s
 #3 0 MHz 1576 s 0 s 189 s 7012 s 0 s
 #4 0 MHz 2056 s 0 s 178 s 6542 s 0 s
 Memory: 15.606502532958984 GB (13317.2890625 MB free)
 Uptime: 881.44 sec
 Load Avg: 1.0 1.0...*[Comment body truncated]*

Copy link

codecov bot commented May 18, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 83.09%. Comparing base (1fb1783) to head (155c503).

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #277      +/-   ##
==========================================
+ Coverage   83.01%   83.09%   +0.08%     
==========================================
  Files          61       62       +1     
  Lines        4033     4065      +32     
==========================================
+ Hits         3348     3378      +30     
- Misses        685      687       +2     

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

@Krastanov Krastanov added the ECC Having to do with the ECC submodule label May 19, 2024
@Fe-r-oz Fe-r-oz changed the title Significantly polishing PR #244, Adding more details from literature Polishing PR #244 and RecursiveReedMuller code Jun 15, 2024
src/ecc/ECC.jl Show resolved Hide resolved
@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Jun 15, 2024

Please review so that we can apply the fix as soon as feasible!

I have used reduced row echelon form test to compare all the cases of RecursiveReedMuller with ReedMuller,

@test rref(generator(ReedMuller(r, m))) == rref(generator(RecursiveReedMuller(r, m)))

The generator for RecursiveReedMuller is widely used as subroutine for construction of new quantum codes. Therefore, added this as well.

@Fe-r-oz Fe-r-oz changed the title Polishing PR #244 and RecursiveReedMuller code Improving PR #244 and RecursiveReedMuller code Jun 15, 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.

This is a pretty helpful set of additional implementation for cross reference. I did a quick first round of review -- there are some stylistic requests for improvement and a couple of questions on definitions and correctness checks.

src/ecc/ECC.jl Show resolved Hide resolved
src/ecc/codes/classical/recursivereedmuller.jl Outdated Show resolved Hide resolved
src/ecc/codes/classical/recursivereedmuller.jl Outdated Show resolved Hide resolved
src/ecc/codes/classical/recursivereedmuller.jl Outdated Show resolved Hide resolved
src/ecc/codes/classical/recursivereedmuller.jl Outdated Show resolved Hide resolved
src/ecc/codes/classical/reedmuller.jl Outdated Show resolved Hide resolved
test/Project.toml Outdated Show resolved Hide resolved
test/test_ecc_reedmuller.jl Outdated Show resolved Hide resolved
test/test_ecc_reedmuller.jl Outdated Show resolved Hide resolved
test/test_ecc_reedmuller.jl Outdated Show resolved Hide resolved
@Krastanov Krastanov marked this pull request as draft June 22, 2024 00:43
@Fe-r-oz Fe-r-oz requested a review from Krastanov June 22, 2024 12:30
@Fe-r-oz Fe-r-oz marked this pull request as ready for review June 22, 2024 12:31
@Krastanov
Copy link
Member

I probably will be able to merge this shortly if I do not find any new issues besides what I just mentioned. Could you update the changelog so that it is ready for merge? Mention there is a bug fix to the parameter_checks matrix (if this was a public type this would have been a breaking change, so it is good to document these clearly)

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Jun 23, 2024

This was changelog of 244 "Implemented the classical Reed-Muller code"

I think RM was not exported, so I am not sure about Public Type/Breaking change part.

So, maybe Bug fix to parity_checks(ReedMuller(r, m)) of classical Reed-Muller code along with RecursiveReedMuller code implementation for cross-reference

Please feel free to update CHANGELOG accordingly.

@Fe-r-oz Fe-r-oz changed the title Improving PR #244 and RecursiveReedMuller code Fixing PR #244 and RecursiveReedMuller code Jun 23, 2024
@Fe-r-oz Fe-r-oz changed the title Fixing PR #244 and RecursiveReedMuller code Fixing PR #244 and RecursiveReedMuller code for cross reference Jun 23, 2024
@Fe-r-oz Fe-r-oz requested a review from Krastanov June 23, 2024 03:17
@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Jun 29, 2024

Upcoming PR discussion

Good news, @Krastanov :)

Sometime ago, I discussed a paper about code conversion between Quantum Reed Muller code and Steane Code. Turns out that the Quantum Reed Muller is really simple! Now, I understand what ECCZOO is talking about in their QRM page!

There is a lot of rigorous testing that I am planning to do with these quantum codes and I think the entire paper can be implemented as upcoming PR. The parameters of the QRM are: [[n = 2^m − 1, k = 1, d = 3]]. Now, this are CSS Quantum Reed Muller codes!

Please checkout the two examples! Example of the popular 15 qubit QRM code that is used in magic state distillation: From visual inspection, we can see it as two copies to steane code. Steanecode is QRM(3)

#notes
# RM(1,m): dual is RM(m -2, m), generator(RM(m -2, m)) = H_m
# Shortened RM_bar(1, m): first row and first column are deleted from generator(RM(1, m))
julia> RM14 = generator(RecursiveReedMuller(1, 4));

julia> RM24 = generator(RecursiveReedMuller(4 - 2, 4)); #dual

julia> QRM = CSS(RM14[2:end, 2:end], RM24[2:end, 2:end])
CSS(Bool[1 0 … 0 1; 0 1 … 1 1; 0 0 … 1 1; 0 0 … 1 1], Bool[1 0 … 0 0; 0 1 … 1 0; … ; 0 0 … 1 1; 0 0 … 1 1])

julia> Stabilizer(QRM)
+ X_X_X_X_X_X_X_X
+ _XX__XX__XX__XX
+ ___XXXX____XXXX
+ _______XXXXXXXX
+ Z___Z___Z___Z__
+ _Z___Z___Z___Z_
+ __Z___Z___Z___Z
+ ___ZZZZ____ZZZZ
+ ____Z_Z_____Z_Z
+ _____ZZ______ZZ
+ _______ZZZZZZZZ
+ ________Z_Z_Z_Z
+ _________ZZ__ZZ
+ ___________ZZZZ

julia> naive_encoding_circuit(parity_checks(Stabilizer(QRM)))

43-element Vector{QuantumClifford.AbstractOperation}:
 sCNOT(15,5)
 sCNOT(15,6)
 sCNOT(15,7)
 sCNOT(15,9)
 sCNOT(15,10)
 sCNOT(15,12)
 sHadamard(1)
 sZCX(1,5)
 sZCX(1,6)
 sZCX(1,8)
 sZCX(1,9)
 sZCX(1,11)
 sZCX(1,13)
 sZCX(1,15)
 sHadamard(2)
 sZCX(2,5)
 sZCX(2,7)
 ⋮
 sZCX(3,12)
 sZCX(3,13)
 sZCX(3,14)
 sZCX(3,15)
 sHadamard(4)
 sZCX(4,9)
 sZCX(4,10)
 sZCX(4,11)
 sZCX(4,12)
 sZCX(4,13)
 sZCX(4,14)
 sZCX(4,15)
 sSWAP(8,4)
 sSWAP(7,4)
 sSWAP(6,4)
 sSWAP(5,4)
 sSWAP(4,3) 

More exciting is this fact that QuantumReedMuller(3) is Steane Code. The proof is as follows:


julia> RM13 = generator(RecursiveReedMuller(1, 3));

julia> RM23 = generator(RecursiveReedMuller(3 - 2, 3));

julia> QRM = CSS(RM14[2:end, 2:end], RM24[2:end, 2:end])
CSS(Bool[1 0 … 0 1; 0 1 … 1 1; 0 0 … 1 1; 0 0 … 1 1], Bool[1 0 … 0 0; 0 1 … 1 0; … ; 0 0 … 1 1; 0 0 … 1 1])

julia> QRM_steane = CSS(RM13[2:end, 2:end], RM23[2:end, 2:end])
CSS(Bool[1 0 … 0 1; 0 1 … 1 1; 0 0 … 1 1], Bool[1 0 … 0 1; 0 1 … 1 1; 0 0 … 1 1])

julia> Steane = Stabilizer(QRM_steane)
+ X_X_X_X
+ _XX__XX
+ ___XXXX
+ Z_Z_Z_Z
+ _ZZ__ZZ
+ ___ZZZZ

julia> canonicalize!(parity_checks(Steane7()))
+ X_X_X_X
+ _XX__XX
+ ___XXXX
+ Z_Z_Z_Z
+ _ZZ__ZZ
+ ___ZZZZ

julia> canonicalize!(parity_checks(Steane7())) == Stabilizer(QRM_steane)
true

I am very excited to work on this as soon as the RecursivePR is finished!

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Jul 9, 2024

Hello @Krastanov, the quantum CSS Reed Muller code PR is ready but I am waiting for this one to be finished so that I can use the constructors introuced in this PR in next one!

Please review this one so I can polish the next quantum code PR for review 😬 I am excited to submit quantum codes from classical codes finally!

@Fe-r-oz Fe-r-oz changed the title Fixing PR #244 and RecursiveReedMuller code for cross reference Bug fix to the parity_checks(ReedMuller(r, m)) along with RecursiveReedMuller code for cross-reference Jul 20, 2024
@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Jul 20, 2024

Hello @Krastanov, just a small reminder that the current implementation of ReedMuller needs a bug fix as it's bad and ugly at the moment. Please help review the PR so bug fix can be applied soon.

Thank you for the valuable feedback that helped improved the PR significantly.

In this PR, I have made sure to test two different representations (binomial polynomial rep vs recursive) for cross-reference and added several correctness tests and provided complete documentation.

@Fe-r-oz Fe-r-oz closed this Jul 21, 2024
@Fe-r-oz Fe-r-oz deleted the PolishRM branch July 21, 2024 13:21
@Fe-r-oz Fe-r-oz restored the PolishRM branch July 21, 2024 13:23
@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Jul 21, 2024

I tried to rename the branch to FixRM instead of PolishRM and the branch got deleted! Hopefully it's restored.

I was following your comments that "its good to document changes clearly" so I thought let's rename the branch. 🙄

@Fe-r-oz Fe-r-oz reopened this Jul 21, 2024
@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Jul 26, 2024

Removing CHANGELOG to prevent merge conflicts.

changelog:

- **(fix)** Bug fix to the `parity_checks(ReedMuller(r, m))` of classical `Reed-Muller` code along with `RecursiveReedMuller` code implementation for cross reference.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ECC Having to do with the ECC submodule
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants