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

Added error correction pipeline simulations #198

Conversation

amicciche
Copy link
Member

@amicciche amicciche commented Dec 11, 2023

Implemented both naive and short syndrome error correction pipelines for both CSS and non-CSS codes. I have many non-official testing functions for these, but didn’t know if I should have included them. The main way I’ve been testing them is by generating plots and then inspecting them visually. Regardless this feature might be nice to have in the library, as currently these function just return a tuple of an x and z logical error rate for a given code and physical error rate. It would be nice if the user didn’t have to convert this into something more easy to plot themselves. Below I’ll include a sample function of mine, and based on discussion, might supply a second commit that adds these types of “nice-to-have” features.

Here is a sample testing function. There are some functions being called from my private repo, but hopefully the main idea of how to use this is clear. This function in particular returns a plot for the logical X error, as well as a plot for the logical Z error. (f_x and f_z are plots)

function test_CSS_shor_refactor()
    name = "LDPC1"
    error_rates = exp10.(range(-5,-1.5,length=40))
    stab, Cx, Cz = CircuitCompilation2xn.getGoodLDPC(1)
    code = QuantumClifford.ECC.CSS(stab, Cx, Cz)
    post_ec_error_rates = [QuantumClifford.ECC.CSS_shor_error_correction_pipeline(code, p, nframes=10_000) for p in error_rates]

    x_error = [post_ec_error_rates[i][1] for i in eachindex(post_ec_error_rates)]
    z_error = [post_ec_error_rates[i][2] for i in eachindex(post_ec_error_rates)]

    f_x = CircuitCompilation2xn.plot_code_performance_log_log(error_rates, x_error,title="Logical X Error of "*name*" Circuit Krishna")
    f_z = CircuitCompilation2xn.plot_code_performance_log_log(error_rates, z_error,title="Logical Z Error of "*name*" Circuit Krishna")
    return f_x, f_z
end

And its output:
image
image

@Krastanov
Copy link
Member

A lot of the failures are due to the LDPCDecoders dependency. I cleaned it up a bit. Let's see whether the tests work better after JuliaRegistries/General#97229

@Krastanov
Copy link
Member

@Benzillaist, could you drop a link here to the code you have prepared for the wiki. If I remember correctly, we had discussed some API design with you, and it would be useful for me to refer to that API while working through reviewing this code.

@Krastanov
Copy link
Member

There were some changes done on the master branch which help with testing. I updated this branch to include the changes from master. Be sure to first do git pull before making further changes to this branch, to avoid divergences.

Copy link
Contributor

github-actions bot commented Dec 16, 2023

Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 16 Dec 2023 - 07:50
  • Baseline: 16 Dec 2023 - 07:55
  • Package commits:
  • Target: bf4d30
  • Baseline: 8125b9
  • Julia commits:
  • Target: 67c784
  • Baseline: 67c784
  • 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_sumtype", "q1001_r1"] 0.80 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 0.82 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_destab"] 0.88 (5%) ✅ 1.00 (1%)
["stabilizer", "tensor", "diag_pow5_20"] 1.56 (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"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Target

Julia Version 1.11.0-DEV.1109
Commit 67c7843d8ca (2023-12-15 22:53 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 LTS
 uname: Linux 6.2.0-1018-azure #18~22.04.1-Ubuntu SMP Tue Nov 21 19:25:02 UTC 2023 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3189 MHz 2031 s 0 s 127 s 3874 s 0 s
 #2 2575 MHz 1714 s 0 s 127 s 4199 s 0 s
 #3 3244 MHz 1160 s 0 s 109 s 4764 s 0 s
 #4 2445 MHz 1354 s 0 s 122 s 4552 s 0 s
 Memory: 15.60690689086914 GB (13785.3984375 MB free)
 Uptime: 606.27 sec
 Load Avg: 1.32 1.07 0.59
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 on 4 virtual cores

Baseline

Julia Version 1.11.0-DEV.1109
Commit 67c7843d8ca (2023-12-15 22:53 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 LTS
 uname: Linux 6.2.0-1018-azure #18~22.04.1-Ubuntu SMP Tue Nov 21 19:25:02 UTC 2023 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 2779 s 0 s 147 s 5906 s 0 s
 #2 3250 MHz 2207 s 0 s 152 s 6479 s 0 s
 #3 2445 MHz 2048 s 0 s 130 s 6655 s 0 s
 #4 2445 MHz 2065 s 0 s 151 s 6613 s 0 s
 Memory: 15.60690689086914 GB (13690.421875 MB free)
 Uptime: 886.77 sec
 Load Avg: 1.0 1.02 0.72
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 on 4 virtual cores

Target result

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

Job Properties

  • Time of benchmark: 16 Dec 2023 - 7:50
  • Package commit: bf4d30
  • Julia commit: 67c784
  • 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.894 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 176.102 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 14.733 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 125.917 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 14.426 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 124.814 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 60.794 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 171.532 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.052 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.121 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 36.198 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 141.736 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.019 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.823 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 3.706 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.913 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 127.560 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.002 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.374 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.528 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.844 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.126 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 561.713 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.341 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.474 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.720 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.345 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.528 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.843 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 1.123 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 561.707 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.524 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 699.848 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.266 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 589.158 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.080 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.384 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 5.060 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.404 μs (5%)
["pauli", "mul", "100"] 14.165 ns (5%)
["pauli", "mul", "1000"] 18.571 ns (5%)
["pauli", "mul", "100000"] 697.072 ns (5%)
["pauli", "mul", "20000000"] 180.069 μs (5%)
["stabilizer", "canon", "cano500"] 3.119 ms (5%)
["stabilizer", "canon", "diag_cano500"] 766.954 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.300 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 539.757 μs (5%)
["stabilizer", "canon", "gott500"] 6.596 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.521 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.529 ms (5%)
["stabilizer", "canon", "rref500"] 3.116 ms (5%)
["stabilizer", "project", "destabilizer"] 13.806 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 6.202 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.383 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.659 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.188 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.614 μ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"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Julia Version 1.11.0-DEV.1109
Commit 67c7843d8ca (2023-12-15 22:53 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 LTS
 uname: Linux 6.2.0-1018-azure #18~22.04.1-Ubuntu SMP Tue Nov 21 19:25:02 UTC 2023 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3189 MHz 2031 s 0 s 127 s 3874 s 0 s
 #2 2575 MHz 1714 s 0 s 127 s 4199 s 0 s
 #3 3244 MHz 1160 s 0 s 109 s 4764 s 0 s
 #4 2445 MHz 1354 s 0 s 122 s 4552 s 0 s
 Memory: 15.60690689086914 GB (13785.3984375 MB free)
 Uptime: 606.27 sec
 Load Avg: 1.32 1.07 0.59
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 on 4 virtual cores

Baseline result

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

Job Properties

  • Time of benchmark: 16 Dec 2023 - 7:55
  • Package commit: 8125b9
  • Julia commit: 67c784
  • 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"] 16.487 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 177.133 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 14.672 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 125.946 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 14.342 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 124.884 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 60.994 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 165.901 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.033 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.161 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 45.365 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 139.552 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.014 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.834 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.508 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.912 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 128.812 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 986.521 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.374 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.619 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.866 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.277 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 561.695 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.330 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.774 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.770 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.596 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.622 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.857 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 1.123 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 561.654 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.524 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 698.341 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.267 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 588.895 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.089 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.394 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 5.059 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.404 μs (5%)
["pauli", "mul", "100"] 14.868 ns (5%)
["pauli", "mul", "1000"] 17.908 ns (5%)
["pauli", "mul", "100000"] 697.568 ns (5%)
["pauli", "mul", "20000000"] 172.804 μs (5%)
["stabilizer", "canon", "cano500"] 3.063 ms (5%)
["stabilizer", "canon", "diag_cano500"] 767.442 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.236 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 539.934 μs (5%)
["stabilizer", "canon", "gott500"] 6.655 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.509 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.558 ms (5%)
["stabilizer", "canon", "rref500"] 3.086 ms (5%)
["stabilizer", "project", "destabilizer"] 13.686 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 6.061 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 885.584 μs (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.584 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 30.707 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.775 μ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"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Julia Version 1.11.0-DEV.1109
Commit 67c7843d8ca (2023-12-15 22:53 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 LTS
 uname: Linux 6.2.0-1018-azure #18~22.04.1-Ubuntu SMP Tue Nov 21 19:25:02 UTC 2023 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 2779 s 0 s 147 s 5906 s 0 s
 #2 3250 MHz 2207 s 0 s 152 s 6479 s 0 s
 #3 2445 MHz 2048 s 0 s 130 s 6655 s 0 s
 #4 2445 MHz 2065 s 0 s 151 s 6613 s 0 s
 Memory: 15.60690689086914 GB (13690.421875 MB free)
 Uptime: 886.77 sec
 Load Avg: 1.0 1.02 0.72
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 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.84
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: Mitigation; 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: 16 Dec 2023 - 07:55
  • Baseline: 16 Dec 2023 - 08:00
  • Package commits:
  • Target: ead9ce
  • Baseline: 8125b9
  • Julia commits:
  • Target: 67c784
  • Baseline: 67c784
  • 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.91 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories", "q1001_r100"] 0.94 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories", "q101_r1"] 0.92 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_stab"] 0.88 (5%) ✅ 1.00 (1%)
["clifford", "dense", "dense500_on_diag500_stab"] 0.88 (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"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Target

Julia Version 1.11.0-DEV.1109
Commit 67c7843d8ca (2023-12-15 22:53 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 LTS
 uname: Linux 6.2.0-1018-azure #18~22.04.1-Ubuntu SMP Tue Nov 21 19:25:02 UTC 2023 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3264 MHz 1638 s 0 s 121 s 3793 s 0 s
 #2 3241 MHz 1837 s 0 s 144 s 3572 s 0 s
 #3 3072 MHz 1338 s 0 s 117 s 4092 s 0 s
 #4 2445 MHz 1511 s 0 s 114 s 3925 s 0 s
 Memory: 15.60690689086914 GB (13765.17578125 MB free)
 Uptime: 558.69 sec
 Load Avg: 1.07 1.02 0.59
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 on 4 virtual cores

Baseline

Julia Version 1.11.0-DEV.1109
Commit 67c7843d8ca (2023-12-15 22:53 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 LTS
 uname: Linux 6.2.0-1018-azure #18~22.04.1-Ubuntu SMP Tue Nov 21 19:25:02 UTC 2023 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 2445 MHz 2118 s 0 s 149 s 6101 s 0 s
 #2 2597 MHz 2787 s 0 s 192 s 5391 s 0 s
 #3 3247 MHz 2023 s 0 s 140 s 6198 s 0 s
 #4 3243 MHz 2238 s 0 s 144 s 5984 s 0 s
 Memory: 15.60690689086914 GB (13737.453125 MB free)
 Uptime: 840.84 sec
 Load Avg: 1.0 1.0 0.71
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 on 4 virtual cores

Target result

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

Job Properties

  • Time of benchmark: 16 Dec 2023 - 7:55
  • Package commit: ead9ce
  • Julia commit: 67c784
  • 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"] 16.597 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 179.998 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 14.565 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 125.896 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 14.609 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 124.844 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 60.613 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 172.754 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.040 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.111 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 35.596 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 139.742 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.010 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.824 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 3.646 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 23.213 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 126.748 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 991.177 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.394 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.340 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.739 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.332 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.241 μ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"] 27.041 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.706 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.342 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.738 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_destab"] 1.122 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 561.352 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.520 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 690.855 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.267 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 580.739 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.089 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.354 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 5.049 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.364 μs (5%)
["pauli", "mul", "100"] 14.054 ns (5%)
["pauli", "mul", "1000"] 18.821 ns (5%)
["pauli", "mul", "100000"] 713.072 ns (5%)
["pauli", "mul", "20000000"] 180.108 μs (5%)
["stabilizer", "canon", "cano500"] 3.018 ms (5%)
["stabilizer", "canon", "diag_cano500"] 786.025 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.229 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 538.940 μs (5%)
["stabilizer", "canon", "gott500"] 6.653 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.557 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.547 ms (5%)
["stabilizer", "canon", "rref500"] 3.076 ms (5%)
["stabilizer", "project", "destabilizer"] 14.037 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 6.071 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.446 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.733 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.449 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.444 μ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"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Julia Version 1.11.0-DEV.1109
Commit 67c7843d8ca (2023-12-15 22:53 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 LTS
 uname: Linux 6.2.0-1018-azure #18~22.04.1-Ubuntu SMP Tue Nov 21 19:25:02 UTC 2023 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3264 MHz 1638 s 0 s 121 s 3793 s 0 s
 #2 3241 MHz 1837 s 0 s 144 s 3572 s 0 s
 #3 3072 MHz 1338 s 0 s 117 s 4092 s 0 s
 #4 2445 MHz 1511 s 0 s 114 s 3925 s 0 s
 Memory: 15.60690689086914 GB (13765.17578125 MB free)
 Uptime: 558.69 sec
 Load Avg: 1.07 1.02 0.59
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 on 4 virtual cores

Baseline result

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

Job Properties

  • Time of benchmark: 16 Dec 2023 - 8:0
  • Package commit: 8125b9
  • Julia commit: 67c784
  • 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"] 16.442 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 185.788 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 14.701 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 125.806 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 14.308 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 124.794 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 66.354 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 184.276 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.048 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.662 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 36.197 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 140.012 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.006 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.832 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 3.706 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 22.903 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 126.266 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 987.221 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.374 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.461 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.834 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.124 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 638.568 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.030 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.555 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.589 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.705 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.451 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.123 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_diag500_stab"] 638.557 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.504 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 687.188 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.251 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 575.900 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.069 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.344 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 5.039 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.344 μs (5%)
["pauli", "mul", "100"] 13.934 ns (5%)
["pauli", "mul", "1000"] 18.820 ns (5%)
["pauli", "mul", "100000"] 708.210 ns (5%)
["pauli", "mul", "20000000"] 189.415 μs (5%)
["stabilizer", "canon", "cano500"] 3.066 ms (5%)
["stabilizer", "canon", "diag_cano500"] 786.133 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.290 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 539.842 μs (5%)
["stabilizer", "canon", "gott500"] 6.646 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.535 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.611 ms (5%)
["stabilizer", "canon", "rref500"] 3.088 ms (5%)
["stabilizer", "project", "destabilizer"] 13.826 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 6.111 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.435 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.686 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.489 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.694 μ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"]
  • ["pauli", "mul"]
  • ["stabilizer", "canon"]
  • ["stabilizer", "project"]
  • ["stabilizer", "tensor"]
  • ["stabilizer", "trace"]

Julia versioninfo

Julia Version 1.11.0-DEV.1109
Commit 67c7843d8ca (2023-12-15 22:53 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 LTS
 uname: Linux 6.2.0-1018-azure #18~22.04.1-Ubuntu SMP Tue Nov 21 19:25:02 UTC 2023 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 2445 MHz 2118 s 0 s 149 s 6101 s 0 s
 #2 2597 MHz 2787 s 0 s 192 s 5391 s 0 s
 #3 3247 MHz 2023 s 0 s 140 s 6198 s 0 s
 #4 3243 MHz 2238 s 0 s 144 s 5984 s 0 s
 Memory: 15.60690689086914 GB (13737.453125 MB free)
 Uptime: 840.84 sec
 Load Avg: 1.0 1.0 0.71
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 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: Mitigation; 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

@@ -0,0 +1,512 @@
"""Generate a lookup table for decoding single qubit errors."""
function create_lookup_table(code::Stabilizer)
Copy link
Member

Choose a reason for hiding this comment

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

@Benzillaist could you link to the implementation you have for the lookup table? In particular in the type-based API for decoders

@Krastanov
Copy link
Member

Krastanov commented Dec 18, 2023

For these four functions we need a better API:

naive_error_correction_pipeline
shor_error_correction_pipeline
CSS_naive_error_correction_pipeline
CSS_shor_error_correction_pipeline

One type of code repetition here is that there are two copies of the simulation code for each of the hardcoded decoders. It would be useful to decouple the decoders.

Something that Ben (@Benzillaist) has been working on is a decoder API.

Ben, could you submit a PR to LDPCDecoders with the API?

It is along the lines of:

decoder_instance_x = SomeDecoderType(configuration...)
decoder_instance_z = SomeDecoderType(configuration...)
predicted_error_pattern_x = decode(decoder_instance_x, syndrome_measurement_x)
predicted_error_pattern_z = decode(decoder_instance_z, syndrome_measurement_z)
predicted_error_pattern = cat(...)
decoded += logical_measurements == faults_matrix[??] * predicted_error_pattern

(done once for the X logicals and once for the Z logicals)

@Benzillaist
Copy link
Contributor

Hello Stefan, apologies for the delay. I have made a pull request to LDPCDecoders with my code as it is right now.
I have unfortunately had issues with calling the faults_matrix method on the Stabilizers that I create, meaning that I am finding it very hard to test my code. I would greatly appreciate someone looking at my code to help me debug where I am doing something wrong with regards to getting the faults matrix.

Link to PR: QuantumSavory/LDPCDecoders.jl#11

@Krastanov
Copy link
Member

superseded by #212 -- much of #212 is based on what was here

@Krastanov Krastanov closed this Jan 19, 2024
@amicciche amicciche deleted the error_correction_simulation_pipelines branch September 2, 2024 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants