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

Error correction methods for creating Bicycle and Unicycle codes + belief decoder code evaluation #195

Closed
wants to merge 23 commits into from

Conversation

Benzillaist
Copy link
Contributor

Added multiple methods:

code_generation:

  • Methods for creating Bicycle and Unicycle codes
  • Methods for assembling CSS codes
  • Utility methods for working with codes

code_evaluation:

  • Methods for evaluating codes with a belief propagation decoder
  • Methods for plotting codes given error rates

ECC.jl was modified to include the required imports for the two added files.

Added multiple methods:
code_generation:
- Methods for creating Bicycle and Unicycle codes
- Methods for assembling CSS codes
- Utility methods for working with codes

code_evaluation:
- Methods for evaluating codes with a belief propagation decoder
Added the following dependencies:
CairoMakie
LDPCDecoders
SparseArrays
Statistics
During discussion with Anthony, he mentioned that he would add his code himself later on
src/ecc/ECC.jl Outdated Show resolved Hide resolved
src/ecc/ECC.jl Outdated Show resolved Hide resolved
@Krastanov
Copy link
Member

This is pretty exciting! I left a bunch of comments in, but they are mostly on coding conventions, not on the substance of the PR.

I would suggest putting the CCS things in a separate file called css.jl and then the bicycle and unicycle codes in a file uni_bi_cycle_codes.jl or something like that. The name code_generation.jl is much too general, while the content is just for a few specific codes.

We should think of adding some tests, but we can discuss this later.

- Fixed naming and organization issued identified.
- Limited exports
- Added additional methods to easily create unicycle and bicycle codes
src/ecc/css.jl Outdated Show resolved Hide resolved
src/ecc/css.jl Outdated Show resolved Hide resolved
src/ecc/css.jl Outdated Show resolved Hide resolved
src/ecc/css.jl Outdated Show resolved Hide resolved
src/ecc/css.jl Outdated Show resolved Hide resolved
@Krastanov
Copy link
Member

I did some minor cleanup along the lines of the comments I just posted. Make sure you pull locally before you continue modifying.

Also, it is helpful to always create a separate branch when making modifications. Currently all of this seems to be on your master branch which makes it difficult for you to experiment with multiple things at the same time.

I think there are still some things not functional in simple_sparse_codes.jl

When you address a comment, please also click "resolve" on it, as it makes it easier for me to review.

I will mark this as a draft. When you are ready for the next round of reviews, just mark it back to not-a-draft.

@Krastanov Krastanov marked this pull request as draft November 8, 2023 19:02
- Fixed issues with typing in bicycle gen methods
- Fixed issue with incorrectly copied methods for unicycle generation
- Fixed imports for Nemo methods
Fixed bugs preventing the generation of Bicycle and Unicycle codes
@Benzillaist Benzillaist marked this pull request as ready for review November 13, 2023 07:43
Krastanov and others added 2 commits December 16, 2023 02:30
* add compat downgrader

* bump compats for quantuminterface and quantumopticsbase

* bump compats for docstringextensions

* bump compats for graphs

* bump nemo to 0.38

* nemo fixes
@Krastanov
Copy link
Member

Ben, I just now noticed that you had actually marked this as ready for review for quite a while. I apologize for my oversight! Could you click "resolve conversation" on the comments you have addressed in the follow-up edits? That would make it much easier for me to finish the review.

@Benzillaist
Copy link
Contributor Author

Hi Stefan, I apologize for not informing you that I pushed an update. I believe that my most recent commits should resolve any problems. I also tested my code to ensure it works, but please let me know if I've made any glaring errors!

dependabot bot added 2 commits December 18, 2023 07:45
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 2 to 3.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](dawidd6/action-download-artifact@v2...v3)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.

I added a few more comments. This will also need tests before we can merge it. In particular, tests for whether the generated codes are valid.

One possible type of tests is to just check exactly for the parity check matrix of known small codes.

Another type of tests to add is tests for random large codes verifying they produce valid tableaux.

Project.toml Outdated Show resolved Hide resolved
src/ecc/ECC.jl Outdated Show resolved Hide resolved
src/ecc/css.jl Outdated Show resolved Hide resolved
src/ecc/css.jl Outdated Show resolved Hide resolved
src/ecc/css.jl Outdated Show resolved Hide resolved
src/ecc/css.jl Outdated Show resolved Hide resolved
src/ecc/simple_sparse_codes.jl Outdated Show resolved Hide resolved
src/ecc/ECC.jl Outdated Show resolved Hide resolved
src/ecc/ECC.jl Outdated Show resolved Hide resolved
src/ecc/simple_sparse_codes.jl Outdated Show resolved Hide resolved
@Krastanov
Copy link
Member

I also noticed that you are working on your master branch. That makes work generally more difficult, as it is cumbersome to keep things in sync with the main repository.

@Krastanov
Copy link
Member

@amicciche , skim through the CSS definition that Ben is making here. Just making sure you guys are not duplicating work that is done by the other.

@amicciche
Copy link
Member

@amicciche , skim through the CSS definition that Ben is making here. Just making sure you guys are not duplicating work that is done by the other.

My definition of a CSS struct was the bare minimum to get the idea of the functionality implemented quickly. In other words, it was sort of a functional placeholder. Here it is in its entirety:

struct CSS; tableau; cx; cz; end

Ben's version seems to be a bit more detailed and fleshed out, and could easily just replace my version. I do have some code that was not included in my pull request that coverts the matrices into a stabilizer tableau, and perhaps could be part of the CSS struct?

Benzillaist and others added 6 commits December 19, 2023 02:14
Remove LDPCDecoders import

Co-authored-by: Stefan Krastanov <[email protected]>
Remove LDPCDecoders import

Co-authored-by: Stefan Krastanov <[email protected]>
Updated use case description

Co-authored-by: Stefan Krastanov <[email protected]>
Remove unused import

Co-authored-by: Stefan Krastanov <[email protected]>
Update use case of Bicycle matrix

Co-authored-by: Stefan Krastanov <[email protected]>
Updated CSS struct to use Hx and Hz instead of just the full tableau form.

Updated CSS methods to work with the new struct form
Copy link
Contributor

github-actions bot commented Dec 19, 2023

Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 19 Dec 2023 - 07:21
  • Baseline: 19 Dec 2023 - 07:26
  • Package commits:
  • Target: 405805
  • Baseline: c8d531
  • Julia commits:
  • Target: d336a3
  • Baseline: d336a3
  • 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.92 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories", "q101_r1"] 0.91 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_destab"] 1.14 (5%) ❌ 1.00 (1%)
["pauli", "mul", "20000000"] 1.08 (5%) ❌ 1.00 (1%)
["stabilizer", "tensor", "diag_pow5_20"] 1.60 (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.1116
Commit d336a3e15db (2023-12-19 04:37 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 1608 s 0 s 121 s 3544 s 0 s
 #2 3244 MHz 1281 s 0 s 88 s 3902 s 0 s
 #3 2445 MHz 1060 s 1 s 119 s 4086 s 0 s
 #4 3228 MHz 1013 s 0 s 103 s 4154 s 0 s
 Memory: 15.606903076171875 GB (13784.21484375 MB free)
 Uptime: 530.27 sec
 Load Avg: 1.03 0.93 0.49
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 on 4 virtual cores

Baseline

Julia Version 1.11.0-DEV.1116
Commit d336a3e15db (2023-12-19 04:37 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 2419 s 0 s 137 s 5513 s 0 s
 #2 3243 MHz 2374 s 0 s 119 s 5575 s 0 s
 #3 2445 MHz 1799 s 1 s 141 s 6120 s 0 s
 #4 2716 MHz 1208 s 0 s 126 s 6730 s 0 s
 Memory: 15.606903076171875 GB (13695.85546875 MB free)
 Uptime: 810.31 sec
 Load Avg: 1.0 1.0 0.65
 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: 19 Dec 2023 - 7:21
  • Package commit: 405805
  • Julia commit: d336a3
  • 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.230 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 185.967 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 14.499 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 125.874 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 14.074 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 124.833 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 59.871 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 173.324 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.050 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.011 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 35.616 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 140.742 μ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.819 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"] 128.530 μ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.404 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.571 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.848 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.626 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.270 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.513 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.519 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.415 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.575 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.853 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.648 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.517 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 686.550 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.247 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 575.934 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.049 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.344 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 5.029 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.354 μs (5%)
["pauli", "mul", "100"] 14.094 ns (5%)
["pauli", "mul", "1000"] 18.820 ns (5%)
["pauli", "mul", "100000"] 704.818 ns (5%)
["pauli", "mul", "20000000"] 183.442 μs (5%)
["stabilizer", "canon", "cano500"] 3.061 ms (5%)
["stabilizer", "canon", "diag_cano500"] 766.740 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.252 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 543.824 μs (5%)
["stabilizer", "canon", "gott500"] 6.630 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.527 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.555 ms (5%)
["stabilizer", "canon", "rref500"] 3.079 ms (5%)
["stabilizer", "project", "destabilizer"] 13.976 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 6.061 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.382 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.587 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 30.808 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.454 μ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.1116
Commit d336a3e15db (2023-12-19 04:37 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 1608 s 0 s 121 s 3544 s 0 s
 #2 3244 MHz 1281 s 0 s 88 s 3902 s 0 s
 #3 2445 MHz 1060 s 1 s 119 s 4086 s 0 s
 #4 3228 MHz 1013 s 0 s 103 s 4154 s 0 s
 Memory: 15.606903076171875 GB (13784.21484375 MB free)
 Uptime: 530.27 sec
 Load Avg: 1.03 0.93 0.49
 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: 19 Dec 2023 - 7:26
  • Package commit: c8d531
  • Julia commit: d336a3
  • 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.935 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 177.721 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 14.218 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 126.366 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 14.075 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 124.783 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 65.242 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 171.309 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.059 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.572 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 35.265 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 141.734 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.024 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.816 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 3.607 μ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.429 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.008 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.473 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.752 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.125 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 561.527 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.250 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.264 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.539 μ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.466 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.758 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.517 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.514 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 691.920 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.250 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 580.714 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.059 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.354 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 5.030 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.364 μs (5%)
["pauli", "mul", "100"] 13.934 ns (5%)
["pauli", "mul", "1000"] 18.821 ns (5%)
["pauli", "mul", "100000"] 711.839 ns (5%)
["pauli", "mul", "20000000"] 169.466 μs (5%)
["stabilizer", "canon", "cano500"] 3.049 ms (5%)
["stabilizer", "canon", "diag_cano500"] 766.769 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.242 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 541.049 μs (5%)
["stabilizer", "canon", "gott500"] 6.668 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.538 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.562 ms (5%)
["stabilizer", "canon", "rref500"] 3.092 ms (5%)
["stabilizer", "project", "destabilizer"] 13.916 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 5.992 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 862.449 μs (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.682 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.128 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.714 μ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.1116
Commit d336a3e15db (2023-12-19 04:37 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 2419 s 0 s 137 s 5513 s 0 s
 #2 3243 MHz 2374 s 0 s 119 s 5575 s 0 s
 #3 2445 MHz 1799 s 1 s 141 s 6120 s 0 s
 #4 2716 MHz 1208 s 0 s 126 s 6730 s 0 s
 Memory: 15.606903076171875 GB (13695.85546875 MB free)
 Uptime: 810.31 sec
 Load Avg: 1.0 1.0 0.65
 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.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: 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: 19 Dec 2023 - 07:23
  • Baseline: 19 Dec 2023 - 07:28
  • Package commits:
  • Target: b47d82
  • Baseline: c8d531
  • Julia commits:
  • Target: d336a3
  • Baseline: d336a3
  • Julia command flags:
  • Target: None
  • Baseline: None
  • Environment variables:
  • Target: None
  • Baseline: None

Results

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

ID time ratio memory ratio
["circuitsim", "pftrajectories", "q1001_r1"] 1.09 (5%) ❌ 1.00 (1%)
["circuitsim", "pftrajectories", "q101_r1"] 1.13 (5%) ❌ 1.00 (1%)
["pauli", "mul", "100"] 1.14 (5%) ❌ 1.00 (1%)
["pauli", "mul", "1000"] 1.16 (5%) ❌ 1.00 (1%)
["pauli", "mul", "20000000"] 1.08 (5%) ❌ 1.00 (1%)
["stabilizer", "tensor", "diag_pow5_20"] 0.94 (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.1116
Commit d336a3e15db (2023-12-19 04:37 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 1360 s 0 s 97 s 3960 s 0 s
 #2 2445 MHz 2085 s 0 s 123 s 3209 s 0 s
 #3 3241 MHz 698 s 0 s 91 s 4623 s 0 s
 #4 3257 MHz 817 s 0 s 107 s 4493 s 0 s
 Memory: 15.606910705566406 GB (13781.859375 MB free)
 Uptime: 544.43 sec
 Load Avg: 1.0 0.89 0.47
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 on 4 virtual cores

Baseline

Julia Version 1.11.0-DEV.1116
Commit d336a3e15db (2023-12-19 04:37 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 3230 MHz 1826 s 0 s 116 s 6294 s 0 s
 #2 2445 MHz 2568 s 0 s 151 s 5516 s 0 s
 #3 2585 MHz 1401 s 0 s 109 s 6720 s 0 s
 #4 3118 MHz 2027 s 0 s 129 s 6081 s 0 s
 Memory: 15.606910705566406 GB (13721.70703125 MB free)
 Uptime: 826.86 sec
 Load Avg: 1.0 0.99 0.64
 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: 19 Dec 2023 - 7:23
  • Package commit: b47d82
  • Julia commit: d336a3
  • 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.351 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 179.374 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 14.238 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 125.914 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 14.161 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 124.702 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 66.684 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 172.311 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.051 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.962 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 35.897 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 140.872 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.020 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.827 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 3.676 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 23.223 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 128.679 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.001 ms (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.473 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.824 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"] 561.525 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.610 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.463 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 26.339 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.285 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.460 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"] 561.526 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.517 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 692.028 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.247 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 580.280 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.089 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.355 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 5.029 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.374 μs (5%)
["pauli", "mul", "100"] 16.521 ns (5%)
["pauli", "mul", "1000"] 21.082 ns (5%)
["pauli", "mul", "100000"] 709.669 ns (5%)
["pauli", "mul", "20000000"] 191.627 μs (5%)
["stabilizer", "canon", "cano500"] 3.054 ms (5%)
["stabilizer", "canon", "diag_cano500"] 766.947 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.292 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 540.366 μs (5%)
["stabilizer", "canon", "gott500"] 6.638 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.535 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.537 ms (5%)
["stabilizer", "canon", "rref500"] 3.070 ms (5%)
["stabilizer", "project", "destabilizer"] 13.916 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 6.001 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 817.452 μs (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.651 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.068 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.594 μ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.1116
Commit d336a3e15db (2023-12-19 04:37 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 1360 s 0 s 97 s 3960 s 0 s
 #2 2445 MHz 2085 s 0 s 123 s 3209 s 0 s
 #3 3241 MHz 698 s 0 s 91 s 4623 s 0 s
 #4 3257 MHz 817 s 0 s 107 s 4493 s 0 s
 Memory: 15.606910705566406 GB (13781.859375 MB free)
 Uptime: 544.43 sec
 Load Avg: 1.0 0.89 0.47
 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: 19 Dec 2023 - 7:28
  • Package commit: c8d531
  • Julia commit: d336a3
  • 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.169 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 176.969 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 14.305 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 125.915 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 14.180 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 124.822 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 61.084 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 172.370 μ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.141 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 36.208 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 145.962 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.011 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.819 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 3.707 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 23.524 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 128.099 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 994.019 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.434 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.536 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.751 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.127 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 561.986 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.501 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.564 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 27.011 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.676 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.589 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.761 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"] 562.046 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.516 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 686.117 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.248 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 575.953 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.059 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.344 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 5.029 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.354 μs (5%)
["pauli", "mul", "100"] 14.511 ns (5%)
["pauli", "mul", "1000"] 18.209 ns (5%)
["pauli", "mul", "100000"] 704.090 ns (5%)
["pauli", "mul", "20000000"] 178.052 μs (5%)
["stabilizer", "canon", "cano500"] 3.052 ms (5%)
["stabilizer", "canon", "diag_cano500"] 786.022 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.231 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 532.741 μs (5%)
["stabilizer", "canon", "gott500"] 6.661 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.498 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.540 ms (5%)
["stabilizer", "canon", "rref500"] 3.115 ms (5%)
["stabilizer", "project", "destabilizer"] 13.906 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 6.141 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 873.235 μs (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.628 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.118 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.754 μ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.1116
Commit d336a3e15db (2023-12-19 04:37 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 3230 MHz 1826 s 0 s 116 s 6294 s 0 s
 #2 2445 MHz 2568 s 0 s 151 s 5516 s 0 s
 #3 2585 MHz 1401 s 0 s 109 s 6720 s 0 s
 #4 3118 MHz 2027 s 0 s 129 s 6081 s 0 s
 Memory: 15.606910705566406 GB (13721.70703125 MB free)
 Uptime: 826.86 sec
 Load Avg: 1.0 0.99 0.64
 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.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: 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: 19 Dec 2023 - 07:27
  • Baseline: 19 Dec 2023 - 07:31
  • Package commits:
  • Target: d4dd2a
  • Baseline: c8d531
  • Julia commits:
  • Target: d336a3
  • Baseline: d336a3
  • 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_diag500_destab"] 1.14 (5%) ❌ 1.00 (1%)
["stabilizer", "tensor", "diag_pow5_20"] 1.68 (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.1116
Commit d336a3e15db (2023-12-19 04:37 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 3240 MHz 1183 s 0 s 96 s 4298 s 0 s
 #2 3253 MHz 1043 s 0 s 112 s 4419 s 0 s
 #3 3242 MHz 1500 s 0 s 144 s 3932 s 0 s
 #4 2445 MHz 1311 s 0 s 101 s 4162 s 0 s
 Memory: 15.60690689086914 GB (13811.41015625 MB free)
 Uptime: 560.63 sec
 Load Avg: 1.0 0.9 0.47
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 on 4 virtual cores

Baseline

Julia Version 1.11.0-DEV.1116
Commit d336a3e15db (2023-12-19 04:37 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 3242 MHz 2038 s 0 s 114 s 6246 s 0 s
 #2 2602 MHz 2019 s 0 s 148 s 6230 s 0 s
 #3 3242 MHz 2251 s 0 s 168 s 5979 s 0 s
 #4 2445 MHz 1595 s 0 s 137 s 6663 s 0 s
 Memory: 15.60690689086914 GB (13702.703125 MB free)
 Uptime: 843.37 sec
 Load Avg: 1.0 0.98 0.64
 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: 19 Dec 2023 - 7:27
  • Package commit: d4dd2a
  • Julia commit: d336a3
  • 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.025 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 177.111 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 14.495 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 125.705 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 14.495 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 124.772 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 59.841 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 172.141 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.041 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 6.031 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 35.576 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 139.681 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.011 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 5.817 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.223 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 126.696 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 991.421 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.404 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.523 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.744 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_destab"] 1.278 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_diag500_stab"] 561.498 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.591 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.403 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_destab"] 27.031 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_diag500_stab"] 13.556 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "dense500_on_dense500_destab"] 11.480 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "dense500_on_dense500_stab"] 5.730 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.377 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.521 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 689.908 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.270 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 579.892 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.099 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.364 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 5.060 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.364 μs (5%)
["pauli", "mul", "100"] 14.034 ns (5%)
["pauli", "mul", "1000"] 17.929 ns (5%)
["pauli", "mul", "100000"] 693.864 ns (5%)
["pauli", "mul", "20000000"] 198.411 μs (5%)
["stabilizer", "canon", "cano500"] 3.060 ms (5%)
["stabilizer", "canon", "diag_cano500"] 766.932 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.234 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 539.837 μs (5%)
["stabilizer", "canon", "gott500"] 6.669 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.508 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.543 ms (5%)
["stabilizer", "canon", "rref500"] 3.073 ms (5%)
["stabilizer", "project", "destabilizer"] 13.626 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 6.031 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 1.413 ms (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.661 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 31.299 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.464 μ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.1116
Commit d336a3e15db (2023-12-19 04:37 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 3240 MHz 1183 s 0 s 96 s 4298 s 0 s
 #2 3253 MHz 1043 s 0 s 112 s 4419 s 0 s
 #3 3242 MHz 1500 s 0 s 144 s 3932 s 0 s
 #4 2445 MHz 1311 s 0 s 101 s 4162 s 0 s
 Memory: 15.60690689086914 GB (13811.41015625 MB free)
 Uptime: 560.63 sec
 Load Avg: 1.0 0.9 0.47
 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: 19 Dec 2023 - 7:31
  • Package commit: c8d531
  • Julia commit: d336a3
  • 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.914 ms (5%) 500.77 KiB (1%) 18019
["circuitsim", "mctrajectories", "q101_r1"] 178.112 μs (5%) 50.53 KiB (1%) 1818
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 14.430 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 125.845 μs (5%) 256 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q1001_r1"] 14.283 ms (5%) 496 bytes (1%) 9
["circuitsim", "mctrajectories_union", "q101_r1"] 124.853 μs (5%) 256 bytes (1%) 8
["circuitsim", "pftrajectories", "q1001_r1"] 58.880 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 173.013 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.040 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 5.941 μ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.051 μ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.815 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 3.706 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 23.214 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 126.786 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 991.611 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.404 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 11.365 ms (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot250_on_dense500_stab"] 5.734 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"] 561.348 μs (5%) 512 bytes (1%) 8
["clifford", "dense", "cnot_on_dense500_destab"] 48.119 μs (5%) 368 bytes (1%) 10
["clifford", "dense", "cnot_on_dense500_stab"] 23.433 μ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.685 μ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.743 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.348 μs (5%) 512 bytes (1%) 8
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.518 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 698.434 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.250 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 591.554 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.089 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 2.385 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 5.039 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.404 μs (5%)
["pauli", "mul", "100"] 14.034 ns (5%)
["pauli", "mul", "1000"] 17.939 ns (5%)
["pauli", "mul", "100000"] 700.950 ns (5%)
["pauli", "mul", "20000000"] 195.215 μs (5%)
["stabilizer", "canon", "cano500"] 3.111 ms (5%)
["stabilizer", "canon", "diag_cano500"] 766.772 μs (5%)
["stabilizer", "canon", "diag_gott500"] 4.281 ms (5%) 5.19 MiB (1%) 34521
["stabilizer", "canon", "diag_rref500"] 532.504 μs (5%)
["stabilizer", "canon", "gott500"] 6.647 ms (5%) 5.19 MiB (1%) 34531
["stabilizer", "canon", "md_cano500"] 1.567 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.532 ms (5%)
["stabilizer", "canon", "rref500"] 3.115 ms (5%)
["stabilizer", "project", "destabilizer"] 13.825 μs (5%) 288 bytes (1%) 5
["stabilizer", "project", "stabilizer"] 6.112 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 840.800 μs (5%) 23.97 MiB (1%) 34
["stabilizer", "tensor", "pow5_20"] 2.673 μs (5%) 6.44 KiB (1%) 31
["stabilizer", "trace", "destabilizer"] 30.907 μs (5%) 80 bytes (1%) 2
["stabilizer", "trace", "stabilizer"] 23.624 μ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.1116
Commit d336a3e15db (2023-12-19 04:37 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 3242 MHz 2038 s 0 s 114 s 6246 s 0 s
 #2 2602 MHz 2019 s 0 s 148 s 6230 s 0 s
 #3 3242 MHz 2251 s 0 s 168 s 5979 s 0 s
 #4 2445 MHz 1595 s 0 s 137 s 6663 s 0 s
 Memory: 15.60690689086914 GB (13702.703125 MB free)
 Uptime: 843.37 sec
 Load Avg: 1.0 0.98 0.64
 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
Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 19 Dec 2023 - 07:27
  • Baseline: 19 Dec 2023 - 07:32
  • Package commits:
  • Target: 912165
  • Baseline: c8d531
  • Julia commits:
  • Target: d336a3
  • Baseline: d336a3
  • 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.14 (5%) ❌ 1.00 (1%)
["circuitsim", "pftrajectories", "q1001_r100"] 1.05 (5%) ❌ 1.00 (1%)
["circuitsim", "pftrajectories", "q101_r1"] 1.14 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_destab"] 1.14 (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.1116
Commit d336a3e15db (2023-12-19 04:37 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 1302 s 0 s 102 s 4880 s 0 s
 #2 3243 MHz 1187 s 0 s 114 s 4986 s 0 s
 #3 2957 MHz 1572 s 0 s 104 s 4614 s 0 s
 #4 2776 MHz 1064 s 0 s 147 s 5079 s 0 s
 Memory: 15.60690689086914 GB (13786.0234375 MB free)
 Uptime: 633.01 sec
 Load Avg: 1.01 0.94 0.51
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
 Threads: 1 on 4 virtual cores

Baseline

Julia Version 1.11.0-DEV.1116
Commit d336a3e15db (2023-12-19 04:37 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 2071 s 0 s 128 s 6968 s 0 s
 #2 3126 MHz 2387 s 0 s 165 s 6618 s 0 s
 #3 3244 MHz 2228 s 0 s 136 s 6809 s 0 s
 #4 3254 MHz 1348 s 0 s 176 s 7648 s 0 s
 Memory: 15.60690689086914 GB (13714.61328125 MB free)
 Uptime: 921.92 sec
 Load Avg: 1.0 1.0 0.67
 WORD_SIZ...*[Comment body truncated]*

@Benzillaist
Copy link
Contributor Author

Thank you for the review! I have implemented all the changes you requested.
I can definitely prepare some codes, but I'm unsure how to prove that they are valid. Do you know where I might be able to come across some existing bicycle codes for comparison?

Additionally, I will be using new branches for all future commits. Thank you for that recommendation as well!

@Krastanov Krastanov added the to be revived a PR that has lost steam and has lacked engagement for a while, but potentially valuable label Jan 25, 2024
@Krastanov
Copy link
Member

After #212, a lot of the functionality here has already been implemented. I will close this one for now, but please consider opening a new one that adds the new codes you have defined -- they are not in #212 and will be greatly appreciated.

@Krastanov Krastanov closed this Jan 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
to be revived a PR that has lost steam and has lacked engagement for a while, but potentially valuable
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants