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

Naive Implementation of the Encoding Circuit #154

Merged
merged 23 commits into from
Sep 18, 2023

Conversation

dmtrung14
Copy link
Collaborator

Compared to the code we saw today I broke the naive_encoding_circuit function into 3 parts: rank calculates the rank, standard_tab_gott calculates the standardized tableau in the format of PhysRevA.56.76, and the real naive_encoding_circuit.

I put all of them in ecc.jl

I tested each function on the codes I knew and found no apparent mistakes. But they error out when I tried to swap encoding_circuit for naive_encoding_circuit in the naive_syndrome_test

Also I added noise to the naive_syndrome_test

@codecov
Copy link

codecov bot commented Jul 14, 2023

Codecov Report

Merging #154 (ed698f3) into master (b6defd2) will increase coverage by 0.06%.
The diff coverage is 95.18%.

@@            Coverage Diff             @@
##           master     #154      +/-   ##
==========================================
+ Coverage   83.45%   83.51%   +0.06%     
==========================================
  Files          45       48       +3     
  Lines        3414     3451      +37     
==========================================
+ Hits         2849     2882      +33     
- Misses        565      569       +4     
Files Changed Coverage Δ
src/canonicalization.jl 100.00% <ø> (ø)
src/ecc/codes/bitflipcode.jl 100.00% <ø> (ø)
src/entanglement.jl 97.84% <ø> (ø)
src/symbolic_cliffords.jl 92.20% <ø> (ø)
src/ecc/codes/fivequbit.jl 66.66% <66.66%> (ø)
src/ecc/ECC.jl 69.76% <75.00%> (-20.89%) ⬇️
src/ecc/codes/shorcode.jl 75.00% <75.00%> (ø)
src/ecc/codes/steanecode.jl 75.00% <75.00%> (ø)
src/QuantumClifford.jl 90.22% <100.00%> (+0.05%) ⬆️
src/affectedqubits.jl 60.00% <100.00%> (ø)
... and 2 more

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@@ -0,0 +1,9 @@
struct Paper8 <: AbstractECC end
Copy link
Member

Choose a reason for hiding this comment

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

May we rename this to Cleve8 (from the last name of the author). Paper8 is a bit confusing :D

I will test all of this later today and give comments

@Krastanov
Copy link
Member

I will make a few changes to this branch and push them here. I will comment on why the changes are made in the commit messages. Most of them are just stylistic questions. Please check through the messages so we are on the same page for why I was making the changes.

Do not forget to pull the now modified branch before you start making changes of your own.

src/ecc/ECC.jl Outdated
Comment on lines 92 to 106
""" Check if the code is degenerate or not."""
function is_degenerate(c::AbstractECC)
tableau = stab_to_gf2(parity_checks(c))
n = code_n(c)
dictionary = Set()
for column in 1:2*n
temp = tableau[:, column]
if temp in dictionary
return true
else
push!(dictionary, temp)
end
end
return false
end
Copy link
Member

Choose a reason for hiding this comment

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

Could you document where is this from? Where did you find this algorithm?

src/ecc/ECC.jl Outdated
# and we augment the following third line (for logical qubits)
# 0 E^T I | 0 0 0
# Then we apply the gates line by line bottom up in accordance with the formalisms here: arXiv:quant-ph/9607030
standard_tab = stab_to_gf2(stabilizerview(MixedDestabilizer(parity_checks(c), undoperm=false)))
Copy link
Member

Choose a reason for hiding this comment

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

at some point you have to undo the permutations of columns, otherwise your qubits are now reindexed from what the user was expecting, and great amount of confusion can ensue

Copy link
Member

Choose a reason for hiding this comment

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

also, check this function, it seems to be doing most of what you need. canonicalize_gott specifically seems to be doing all of the necessary steps, including creating the E^T part

function MixedDestabilizer(stab::Stabilizer{T}; undoperm=true) where {T}

Copy link
Member

Choose a reason for hiding this comment

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

nope, I am wrong, it does not do everything you need, but might be a useful inspiration for how to write your code in a more simple way

src/ecc/ECC.jl Outdated
end
standard_tab = vcat(standard_tab, augment)
end
# Flipping the table so it has the same format as the papercode
Copy link
Member

Choose a reason for hiding this comment

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

Just use transpose, and if you need to reverse axes you can use reverse. It would be much shorter and more legible.

@Krastanov
Copy link
Member

Could you place any references in this file: https://github.com/QuantumSavory/QuantumClifford.jl/blob/master/docs/src/references.bib

You can then refer to them with a [id](@cite) string.

…e same, but it is reusing MixedDestabilizer for all steps
@Krastanov
Copy link
Member

@dmtrung14 , I pushed two commits with small changes. Could you look at the TODOs I have left in them.

@github-actions
Copy link
Contributor

github-actions bot commented Jul 16, 2023

Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 16 Jul 2023 - 16:38
  • Baseline: 16 Jul 2023 - 16:42
  • Package commits:
  • Target: a41d80
  • Baseline: 5ab1f0
  • Julia commits:
  • Target: c22b1c
  • Baseline: c22b1c
  • 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_union", "q1001_r100"] 1.05 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_destab"] 1.18 (5%) ❌ 1.00 (1%)
["stabilizer", "tensor", "diag_pow5_20"] 1.10 (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.103
Commit c22b1c1393d (2023-07-16 12:05 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz: 
 speed user nice sys idle irq
 #1 2793 MHz 6640 s 0 s 183 s 1938 s 0 s
 #2 2793 MHz 1433 s 0 s 170 s 7138 s 0 s
 Memory: 6.7694854736328125 GB (5118.875 MB free)
 Uptime: 883.42 sec
 Load Avg: 1.0 0.98 0.66
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, icelake-server)
 Threads: 1 on 2 virtual cores

Baseline

Julia Version 1.11.0-DEV.103
Commit c22b1c1393d (2023-07-16 12:05 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz: 
 speed user nice sys idle irq
 #1 2793 MHz 9500 s 0 s 191 s 2001 s 0 s
 #2 2793 MHz 1501 s 0 s 179 s 9984 s 0 s
 Memory: 6.7694854736328125 GB (5065.27734375 MB free)
 Uptime: 1176.41 sec
 Load Avg: 1.0 1.0 0.77
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, icelake-server)
 Threads: 1 on 2 virtual cores

Target result

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

Job Properties

  • Time of benchmark: 16 Jul 2023 - 16:38
  • Package commit: a41d80
  • Julia commit: c22b1c
  • 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"] 23.125 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 246.400 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 22.346 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 174.499 μs (5%) 288 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q1001_r1"] 22.333 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q101_r1"] 173.100 μs (5%) 288 bytes (1%) 7
["circuitsim", "pftrajectories", "q1001_r1"] 73.900 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 229.999 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.567 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 7.575 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 41.400 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 194.600 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.493 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 10.088 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.229 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 27.400 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 181.699 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.477 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.822 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 15.242 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 8.283 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.260 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 634.299 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 59.100 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 27.400 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 31.200 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 15.899 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 15.231 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 8.251 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.066 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 633.999 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.132 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 1.058 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.762 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 864.598 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 6.900 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 3.325 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 6.860 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.325 μs (5%)
["pauli", "mul", "100"] 16.332 ns (5%)
["pauli", "mul", "1000"] 26.942 ns (5%)
["pauli", "mul", "100000"] 932.226 ns (5%)
["pauli", "mul", "20000000"] 404.499 μs (5%)
["stabilizer", "canon", "cano500"] 4.562 ms (5%)
["stabilizer", "canon", "diag_cano500"] 1.073 ms (5%)
["stabilizer", "canon", "diag_gott500"] 11.231 ms (5%) 5.27 MiB (1%) 24557
["stabilizer", "canon", "diag_rref500"] 1.100 ms (5%)
["stabilizer", "canon", "gott500"] 14.975 ms (5%) 5.27 MiB (1%) 24608
["stabilizer", "canon", "md_cano500"] 1.865 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.927 ms (5%)
["stabilizer", "canon", "rref500"] 4.571 ms (5%)
["stabilizer", "project", "destabilizer"] 23.100 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 10.599 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 2.346 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 3.800 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 36.000 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 10.800 μs (5%) 112 bytes (1%) 2

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.103
Commit c22b1c1393d (2023-07-16 12:05 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz: 
 speed user nice sys idle irq
 #1 2793 MHz 6640 s 0 s 183 s 1938 s 0 s
 #2 2793 MHz 1433 s 0 s 170 s 7138 s 0 s
 Memory: 6.7694854736328125 GB (5118.875 MB free)
 Uptime: 883.42 sec
 Load Avg: 1.0 0.98 0.66
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, icelake-server)
 Threads: 1 on 2 virtual cores

Baseline result

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

Job Properties

  • Time of benchmark: 16 Jul 2023 - 16:42
  • Package commit: 5ab1f0
  • Julia commit: c22b1c
  • 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"] 23.059 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 248.800 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 22.357 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 175.000 μs (5%) 288 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q1001_r1"] 22.312 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q101_r1"] 172.399 μs (5%) 288 bytes (1%) 7
["circuitsim", "pftrajectories", "q1001_r1"] 74.400 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 228.400 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.515 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 7.575 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 40.399 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 186.800 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.471 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 10.069 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.114 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 27.499 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 172.399 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.451 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.811 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 15.149 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 8.196 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.065 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 637.499 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 59.300 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 27.800 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 31.100 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 15.900 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 15.141 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 8.195 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.066 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 637.400 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.143 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 1.054 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.763 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 861.599 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 6.880 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 3.275 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 6.880 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.300 μs (5%)
["pauli", "mul", "100"] 16.633 ns (5%)
["pauli", "mul", "1000"] 27.548 ns (5%)
["pauli", "mul", "100000"] 954.839 ns (5%)
["pauli", "mul", "20000000"] 386.800 μs (5%)
["stabilizer", "canon", "cano500"] 4.529 ms (5%)
["stabilizer", "canon", "diag_cano500"] 1.073 ms (5%)
["stabilizer", "canon", "diag_gott500"] 11.174 ms (5%) 5.27 MiB (1%) 24557
["stabilizer", "canon", "diag_rref500"] 1.101 ms (5%)
["stabilizer", "canon", "gott500"] 14.669 ms (5%) 5.27 MiB (1%) 24608
["stabilizer", "canon", "md_cano500"] 1.868 ms (5%)
["stabilizer", "canon", "md_rref500"] 1.915 ms (5%)
["stabilizer", "canon", "rref500"] 4.541 ms (5%)
["stabilizer", "project", "destabilizer"] 23.200 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 10.699 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 2.126 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 3.725 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 36.300 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 10.760 μs (5%) 112 bytes (1%) 2

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.103
Commit c22b1c1393d (2023-07-16 12:05 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz: 
 speed user nice sys idle irq
 #1 2793 MHz 9500 s 0 s 191 s 2001 s 0 s
 #2 2793 MHz 1501 s 0 s 179 s 9984 s 0 s
 Memory: 6.7694854736328125 GB (5065.27734375 MB free)
 Uptime: 1176.41 sec
 Load Avg: 1.0 1.0 0.77
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, icelake-server)
 Threads: 1 on 2 virtual cores

Runtime information

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

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: GenuineIntel
Model name: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
CPU family: 6
Model: 106
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
Stepping: 6
BogoMIPS: 5586.87
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xsaves md_clear
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 96 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 2.5 MiB (2 instances)
L3 cache: 48 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0,1
Vulnerability Itlb multihit: KVM: Mitigation: VMX unsupported
Vulnerability L1tf: Mitigation; PTE Inversion
Vulnerability Mds: Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown: Mitigation; PTI
Vulnerability Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Vulnerability Retbleed: Not affected
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: Mitigation; Clear CPU buffers; SMT Host state unknown

Cpu Property Value
Brand Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
Vendor :Intel
Architecture :UnknownIntel
Model Family: 0x06, Model: 0x6a, Stepping: 0x06, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (48, 1280, 49152) kbytes
64 byte cache line size
Address Size 48 bits virtual, 46 bits physical
SIMD 512 bit = 64 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC increased at every clock cycle (non-invariant TSC)
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 Jul 2023 - 16:57
  • Baseline: 16 Jul 2023 - 17:03
  • Package commits:
  • Target: 2a10d6
  • Baseline: 5ab1f0
  • Julia commits:
  • Target: c22b1c
  • Baseline: c22b1c
  • Julia command flags:
  • Target: None
  • Baseline: None
  • Environment variables:
  • Target: None
  • Baseline: None

Results

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

ID time ratio memory ratio
["circuitsim", "mctrajectories", "q101_r1"] 0.93 (5%) ✅ 1.00 (1%)
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 1.01 (5%) 0.94 (1%) ✅
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 0.97 (5%) 0.89 (1%) ✅
["circuitsim", "mctrajectories_union", "q1001_r1"] 0.97 (5%) 0.94 (1%) ✅
["circuitsim", "mctrajectories_union", "q101_r1"] 0.93 (5%) ✅ 0.89 (1%) ✅
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 0.94 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_union", "q101_r1"] 1.05 (5%) ❌ 1.00 (1%)
["clifford", "symbolic", "cnot250_on_dense500_destab"] 1.08 (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.103
Commit c22b1c1393d (2023-07-16 12:05 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
 speed user nice sys idle irq
 #1 2294 MHz 6909 s 0 s 259 s 2842 s 0 s
 #2 2294 MHz 2875 s 0 s 209 s 6880 s 0 s
 Memory: 6.7694854736328125 GB (5109.625 MB free)
 Uptime: 1009.39 sec
 Load Avg: 1.0 1.0 0.78
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, broadwell)
 Threads: 1 on 2 virtual cores

Baseline

Julia Version 1.11.0-DEV.103
Commit c22b1c1393d (2023-07-16 12:05 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
 speed user nice sys idle irq
 #1 2294 MHz 7327 s 0 s 272 s 5904 s 0 s
 #2 2294 MHz 5956 s 0 s 222 s 7290 s 0 s
 Memory: 6.7694854736328125 GB (5052.2109375 MB free)
 Uptime: 1360.36 sec
 Load Avg: 1.01 1.03 0.88
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, broadwell)
 Threads: 1 on 2 virtual cores

Target result

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

Job Properties

  • Time of benchmark: 16 Jul 2023 - 16:57
  • Package commit: 2a10d6
  • Julia commit: c22b1c
  • 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"] 43.943 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 276.200 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 42.287 ms (5%) 512 bytes (1%) 7
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 180.200 μs (5%) 256 bytes (1%) 6
["circuitsim", "mctrajectories_union", "q1001_r1"] 41.132 ms (5%) 512 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q101_r1"] 177.500 μs (5%) 256 bytes (1%) 6
["circuitsim", "pftrajectories", "q1001_r1"] 91.500 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 297.900 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.955 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 8.800 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 49.200 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 237.900 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.830 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 13.177 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 5.150 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 32.400 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 216.000 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.844 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 3.513 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 18.609 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 9.627 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.397 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 780.600 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 76.300 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 35.700 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 37.800 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 17.800 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 18.525 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 9.672 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.368 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 788.800 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.563 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 1.196 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 2.044 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 1.049 ms (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 7.733 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 4.029 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 7.933 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.886 μs (5%)
["pauli", "mul", "100"] 18.337 ns (5%)
["pauli", "mul", "1000"] 31.791 ns (5%)
["pauli", "mul", "100000"] 1.460 μs (5%)
["pauli", "mul", "20000000"] 430.900 μs (5%)
["stabilizer", "canon", "cano500"] 5.135 ms (5%)
["stabilizer", "canon", "diag_cano500"] 1.200 ms (5%)
["stabilizer", "canon", "diag_gott500"] 13.896 ms (5%) 5.27 MiB (1%) 24557
["stabilizer", "canon", "diag_rref500"] 1.148 ms (5%)
["stabilizer", "canon", "gott500"] 17.763 ms (5%) 5.27 MiB (1%) 24608
["stabilizer", "canon", "md_cano500"] 2.207 ms (5%)
["stabilizer", "canon", "md_rref500"] 2.188 ms (5%)
["stabilizer", "canon", "rref500"] 5.086 ms (5%)
["stabilizer", "project", "destabilizer"] 13.133 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 10.000 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 4.911 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 5.467 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 43.500 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 16.350 μs (5%) 112 bytes (1%) 2

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.103
Commit c22b1c1393d (2023-07-16 12:05 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
 speed user nice sys idle irq
 #1 2294 MHz 6909 s 0 s 259 s 2842 s 0 s
 #2 2294 MHz 2875 s 0 s 209 s 6880 s 0 s
 Memory: 6.7694854736328125 GB (5109.625 MB free)
 Uptime: 1009.39 sec
 Load Avg: 1.0 1.0 0.78
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, broadwell)
 Threads: 1 on 2 virtual cores

Baseline result

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

Job Properties

  • Time of benchmark: 16 Jul 2023 - 17:3
  • Package commit: 5ab1f0
  • Julia commit: c22b1c
  • 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"] 44.532 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 297.000 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 41.920 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 185.700 μs (5%) 288 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q1001_r1"] 42.291 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q101_r1"] 190.800 μs (5%) 288 bytes (1%) 7
["circuitsim", "pftrajectories", "q1001_r1"] 87.900 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 293.100 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 2.001 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 8.900 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 48.600 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 248.100 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.938 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 13.193 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 5.216 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 33.900 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 219.600 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.905 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 3.337 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 18.616 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 9.686 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.426 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 807.194 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 74.500 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 36.300 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 38.200 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 17.899 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 18.528 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 9.647 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.419 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 799.498 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.369 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 1.184 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 2.046 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 1.048 ms (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 7.767 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 3.843 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 7.667 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.757 μs (5%)
["pauli", "mul", "100"] 18.337 ns (5%)
["pauli", "mul", "1000"] 32.093 ns (5%)
["pauli", "mul", "100000"] 1.420 μs (5%)
["pauli", "mul", "20000000"] 420.499 μs (5%)
["stabilizer", "canon", "cano500"] 5.162 ms (5%)
["stabilizer", "canon", "diag_cano500"] 1.193 ms (5%)
["stabilizer", "canon", "diag_gott500"] 13.879 ms (5%) 5.27 MiB (1%) 24557
["stabilizer", "canon", "diag_rref500"] 1.126 ms (5%)
["stabilizer", "canon", "gott500"] 17.817 ms (5%) 5.27 MiB (1%) 24608
["stabilizer", "canon", "md_cano500"] 2.209 ms (5%)
["stabilizer", "canon", "md_rref500"] 2.208 ms (5%)
["stabilizer", "canon", "rref500"] 5.047 ms (5%)
["stabilizer", "project", "destabilizer"] 12.733 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 9.700 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 4.934 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 5.283 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 44.399 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 17.000 μs (5%) 112 bytes (1%) 2

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.103
Commit c22b1c1393d (2023-07-16 12:05 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
 speed user nice sys idle irq
 #1 2294 MHz 7327 s 0 s 272 s 5904 s 0 s
 #2 2294 MHz 5956 s 0 s 222 s 7290 s 0 s
 Memory: 6.7694854736328125 GB (5052.2109375 MB free)
 Uptime: 1360.36 sec
 Load Avg: 1.01 1.03 0.88
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, broadwell)
 Threads: 1 on 2 virtual cores

Runtime information

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

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: GenuineIntel
Model name: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
CPU family: 6
Model: 79
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4589.37
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt md_clear
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 512 KiB (2 instances)
L3 cache: 50 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0,1
Vulnerability Itlb multihit: KVM: Mitigation: VMX unsupported
Vulnerability L1tf: Mitigation; PTE Inversion
Vulnerability Mds: Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown: Mitigation; PTI
Vulnerability Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Vulnerability Retbleed: Not affected
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: Mitigation; Clear CPU buffers; SMT Host state unknown

Cpu Property Value
Brand Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
Vendor :Intel
Architecture :Broadwell
Model Family: 0x06, Model: 0x4f, Stepping: 0x01, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 256, 51200) kbytes
64 byte cache line size
Address Size 48 bits virtual, 46 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC increased at every clock cycle (non-invariant TSC)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft
Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 21 Jul 2023 - 17:36
  • Baseline: 21 Jul 2023 - 17:41
  • Package commits:
  • Target: b0b917
  • Baseline: a4fa6f
  • Julia commits:
  • Target: 958f64
  • Baseline: 958f64
  • Julia command flags:
  • Target: None
  • Baseline: None
  • Environment variables:
  • Target: None
  • Baseline: None

Results

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

ID time ratio memory ratio
["circuitsim", "mctrajectories", "q1001_r1"] 0.91 (5%) ✅ 1.00 (1%)
["circuitsim", "mctrajectories", "q101_r1"] 0.88 (5%) ✅ 1.00 (1%)
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 0.89 (5%) ✅ 0.94 (1%) ✅
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 0.81 (5%) ✅ 0.89 (1%) ✅
["circuitsim", "mctrajectories_union", "q1001_r1"] 0.89 (5%) ✅ 0.94 (1%) ✅
["circuitsim", "mctrajectories_union", "q101_r1"] 0.81 (5%) ✅ 0.89 (1%) ✅
["circuitsim", "pftrajectories", "q1001_r100"] 0.90 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories", "q1001_r10000"] 0.81 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories", "q101_r1"] 0.94 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 0.90 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 0.85 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 1.08 (5%) ❌ 1.00 (1%)
["circuitsim", "pftrajectories_union", "q1001_r100"] 0.89 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_union", "q1001_r10000"] 0.85 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot250_on_dense500_stab"] 1.12 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_destab"] 1.15 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_stab"] 1.22 (5%) ❌ 1.00 (1%)
["clifford", "dense", "dense500_on_dense500_stab"] 1.17 (5%) ❌ 1.00 (1%)
["clifford", "dense", "dense500_on_diag500_stab"] 1.20 (5%) ❌ 1.00 (1%)
["clifford", "symbolic", "cnot250_on_dense500_destab"] 0.84 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 0.82 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 0.77 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 0.81 (5%) ✅ 1.00 (1%)
["pauli", "mul", "100"] 0.93 (5%) ✅ 1.00 (1%)
["pauli", "mul", "1000"] 0.95 (5%) ✅ 1.00 (1%)
["pauli", "mul", "100000"] 0.93 (5%) ✅ 1.00 (1%)
["stabilizer", "canon", "diag_cano500"] 1.05 (5%) ❌ 1.00 (1%)
["stabilizer", "canon", "diag_rref500"] 0.95 (5%) ✅ 1.00 (1%)
["stabilizer", "canon", "md_rref500"] 1.05 (5%) ❌ 1.00 (1%)
["stabilizer", "project", "stabilizer"] 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.137
Commit 958f647d8e2 (2023-07-21 03:21 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
 speed user nice sys idle irq
 #1 2095 MHz 5281 s 0 s 210 s 3987 s 0 s
 #2 2095 MHz 3736 s 0 s 203 s 5491 s 0 s
 Memory: 6.7694854736328125 GB (5097.90234375 MB free)
 Uptime: 953.97 sec
 Load Avg: 1.0 1.0 0.74
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512)
 Threads: 1 on 2 virtual cores

Baseline

Julia Version 1.11.0-DEV.137
Commit 958f647d8e2 (2023-07-21 03:21 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
 speed user nice sys idle irq
 #1 2095 MHz 8483 s 0 s 221 s 4063 s 0 s
 #2 2095 MHz 3821 s 0 s 216 s 8668 s 0 s
 Memory: 6.7694854736328125 GB (5055.8828125 MB free)
 Uptime: 1282.97 sec
 Load Avg: 1.07 1.02 0.84
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512)
 Threads: 1 on 2 virtual cores

Target result

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

Job Properties

  • Time of benchmark: 21 Jul 2023 - 17:36
  • Package commit: b0b917
  • Julia commit: 958f64
  • 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"] 24.908 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 268.916 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 24.026 ms (5%) 512 bytes (1%) 7
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 181.111 μs (5%) 256 bytes (1%) 6
["circuitsim", "mctrajectories_union", "q1001_r1"] 24.104 ms (5%) 512 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q101_r1"] 179.811 μs (5%) 256 bytes (1%) 6
["circuitsim", "pftrajectories", "q1001_r1"] 89.605 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 252.914 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.573 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 9.101 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 51.803 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 216.112 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.533 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 10.498 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 5.584 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 31.501 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 194.212 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.497 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 3.225 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 18.409 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 9.822 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.609 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 1.171 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 82.406 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 37.402 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 38.902 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 18.501 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 18.273 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 9.877 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.947 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 1.150 ms (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.228 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 1.114 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.838 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 909.756 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 7.467 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 3.663 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 7.300 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.663 μs (5%)
["pauli", "mul", "100"] 19.941 ns (5%)
["pauli", "mul", "1000"] 39.237 ns (5%)
["pauli", "mul", "100000"] 816.270 ns (5%)
["pauli", "mul", "20000000"] 448.327 μs (5%)
["stabilizer", "canon", "cano500"] 5.368 ms (5%)
["stabilizer", "canon", "diag_cano500"] 1.604 ms (5%)
["stabilizer", "canon", "diag_gott500"] 14.236 ms (5%) 5.27 MiB (1%) 24557
["stabilizer", "canon", "diag_rref500"] 1.407 ms (5%)
["stabilizer", "canon", "gott500"] 18.470 ms (5%) 5.27 MiB (1%) 24608
["stabilizer", "canon", "md_cano500"] 2.130 ms (5%)
["stabilizer", "canon", "md_rref500"] 2.291 ms (5%)
["stabilizer", "canon", "rref500"] 5.040 ms (5%)
["stabilizer", "project", "destabilizer"] 28.101 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 13.001 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 4.519 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 4.600 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 47.403 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 38.503 μs (5%) 112 bytes (1%) 2

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.137
Commit 958f647d8e2 (2023-07-21 03:21 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
 speed user nice sys idle irq
 #1 2095 MHz 5281 s 0 s 210 s 3987 s 0 s
 #2 2095 MHz 3736 s 0 s 203 s 5491 s 0 s
 Memory: 6.7694854736328125 GB (5097.90234375 MB free)
 Uptime: 953.97 sec
 Load Avg: 1.0 1.0 0.74
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512)
 Threads: 1 on 2 virtual cores

Baseline result

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

Job Properties

  • Time of benchmark: 21 Jul 2023 - 17:41
  • Package commit: a4fa6f
  • Julia commit: 958f64
  • 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"] 27.253 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 305.518 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 27.015 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 222.313 μs (5%) 288 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q1001_r1"] 27.023 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q101_r1"] 221.513 μs (5%) 288 bytes (1%) 7
["circuitsim", "pftrajectories", "q1001_r1"] 90.305 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 282.216 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.931 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 9.700 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 50.902 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 240.814 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.809 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 10.252 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 5.167 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 31.402 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 218.511 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.757 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 3.213 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 18.204 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 8.789 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.395 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 960.556 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 80.505 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 36.302 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 38.403 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 18.901 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 17.913 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 8.473 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.930 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 960.256 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.640 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 1.118 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 2.240 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 909.653 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 9.700 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 3.663 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 8.976 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.613 μs (5%)
["pauli", "mul", "100"] 21.544 ns (5%)
["pauli", "mul", "1000"] 41.452 ns (5%)
["pauli", "mul", "100000"] 877.081 ns (5%)
["pauli", "mul", "20000000"] 471.828 μs (5%)
["stabilizer", "canon", "cano500"] 5.539 ms (5%)
["stabilizer", "canon", "diag_cano500"] 1.524 ms (5%)
["stabilizer", "canon", "diag_gott500"] 14.584 ms (5%) 5.27 MiB (1%) 24557
["stabilizer", "canon", "diag_rref500"] 1.485 ms (5%)
["stabilizer", "canon", "gott500"] 18.335 ms (5%) 5.27 MiB (1%) 24608
["stabilizer", "canon", "md_cano500"] 2.137 ms (5%)
["stabilizer", "canon", "md_rref500"] 2.174 ms (5%)
["stabilizer", "canon", "rref500"] 5.293 ms (5%)
["stabilizer", "project", "destabilizer"] 28.502 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 13.800 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 4.447 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 4.486 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 47.002 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 38.802 μs (5%) 112 bytes (1%) 2

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.137
Commit 958f647d8e2 (2023-07-21 03:21 UTC)
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.2 LTS
 uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64
 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
 speed user nice sys idle irq
 #1 2095 MHz 8483 s 0 s 221 s 4063 s 0 s
 #2 2095 MHz 3821 s 0 s 216 s 8668 s 0 s
 Memory: 6.7694854736328125 GB (5055.8828125 MB free)
 Uptime: 1282.97 sec
 Load Avg: 1.07 1.02 0.84
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512)
 Threads: 1 on 2 virtual cores

Runtime information

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

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: GenuineIntel
Model name: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz
CPU family: 6
Model: 85
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
Stepping: 4
BogoMIPS: 4190.34
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xsaves md_clear
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 2 MiB (2 instances)
L3 cache: 35.8 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0,1
Vulnerability Itlb multihit: KVM: Mitigation: VMX unsupported
Vulnerability L1tf: Mitigation; PTE Inversion
Vulnerability Mds: Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown: Mitigation; PTI
Vulnerability Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Vulnerability Retbleed: Vulnerable
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: Mitigation; Clear CPU buffers; SMT Host state unknown

Cpu Property Value
Brand Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz
Vendor :Intel
Architecture :Skylake
Model Family: 0x06, Model: 0x55, Stepping: 0x04, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 1024, 36608) kbytes
64 byte cache line size
Address Size 48 bits virtual, 46 bits physical
SIMD 512 bit = 64 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC increased at every clock cycle (non-invariant TSC)
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: 29 Jul 2023 - 17:12
  • Baseline: 29 Jul 2023 - 17:18
  • Package commits:
  • Target: aa7232
  • Baseline: 3873c3
  • Julia commits:
  • Target: 4825a0
  • Baseline: 4825a0
  • Julia command flags:
  • Target: None
  • Baseline: None
  • Environment variables:
  • Target: None
  • Baseline: None

Results

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

ID time ratio memory ratio
["circuitsim", "mctrajectories", "q1001_r1"] 1.10 (5%) ❌ 1.00 (1%)
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 0.97 (5%) 0.94 (1%) ✅
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 0.98 (5%) 0.89 (1%) ✅
["circuitsim", "mctrajectories_union", "q1001_r1"] 0.98 (5%) 0.94 (1%) ✅
["circuitsim", "mctrajectories_union", "q101_r1"] 1.06 (5%) ❌ 0.89 (1%) ✅
["circuitsim", "pftrajectories", "q1001_r100"] 0.94 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 1.25 (5%) ❌ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 1.24 (5%) ❌ 1.00 (1%)
["circuitsim", "pftrajectories_union", "q1001_r1"] 0.94 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_destab"] 0.94 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot_on_dense500_destab"] 0.94 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot_on_dense500_stab"] 1.08 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot_on_diag500_destab"] 1.07 (5%) ❌ 1.00 (1%)
`["clifford", "dense", "cnot_on_

@Krastanov
Copy link
Member

Trung, have you tested the new encoding circuit function you have created? Just running it with default parameters is raising errors? New functionality should be tested - it helps both with review and with correctness.

@dmtrung14
Copy link
Collaborator Author

dmtrung14 commented Aug 4, 2023

Trung, have you tested the new encoding circuit function you have created? Just running it with default parameters is raising errors? New functionality should be tested - it helps both with review and with correctness.

Yes, I did run the functions to test and nothing seems wrong. I did not write new tests for it though. I will do it now

@dmtrung14
Copy link
Collaborator Author

Trung, have you tested the new encoding circuit function you have created? Just running it with default parameters is raising errors? New functionality should be tested - it helps both with review and with correctness.

Yes, I did run the functions to test and nothing seems wrong. I did not write new tests for it though. I will do it now

Oh I think I figured out what is the problem: When I undoperm before I create the circuits, then the check standard_tab[i, i] == 1 will return wrong when the columns are permuted. So we have the error. I fixed it.

@Krastanov
Copy link
Member

I submitted a commit that has a bit of cleanup and a few tests. Currently, with or without undoing permutations I seem to have the wrong results. E.g. with encoding_circuit(Cleve8()) I get this:

image

Which seems pretty different from the one in the paper.

If you are making modifications, could you add them on top of the cleanup commit I submitted (a git pull should be enough on your end).

Let me know if you figure out what the problem is.

@dmtrung14
Copy link
Collaborator Author

dmtrung14 commented Aug 4, 2023

I submitted a commit that has a bit of cleanup and a few tests. Currently, with or without undoing permutations I seem to have the wrong results. E.g. with encoding_circuit(Cleve8()) I get this:

image

Which seems pretty different from the one in the paper.

If you are making modifications, could you add them on top of the cleanup commit I submitted (a git pull should be enough on your end).

Let me know if you figure out what the problem is.

Why do I keep getting this message when I tried to pull (and consequently my local repo is not updating)? Also, is there a built in method that allows me to create a circuit like that? It might help me to debug faster. Currently I am doing everything by hand.

PS C:\Users\progr\OneDrive\Quant SWE\Quantum Research\Spring 2023\julia_dev\QuantumClifford.jl> git pull upstream master
From https://github.com/QuantumSavory/QuantumClifford.jl
 * branch            master     -> FETCH_HEAD
Already up to date.

@Krastanov
Copy link
Member

the changes were made to your origin/minor branch (the branch which is being provided in this pull request), not the master branch

@Krastanov
Copy link
Member

the last two commits you made that I see here seem to match what I was doing, so maybe things are fine?

@dmtrung14
Copy link
Collaborator Author

dmtrung14 commented Aug 4, 2023

the last two commits you made that I see here seem to match what I was doing, so maybe things are fine?

I think I figured out what is wrong with the circuit. I think we must have ignored what the canonicalize_gott! or MixedDestabilizer does on the second half of the bimatrix (On PhysRevA.56.76 it is denoted as $Z^{(*)}$)

It is currently returning this for stabilizerview(c),

 1  0  0  0  1  1  1  0 | 1  0  1  1  0  0  1  0
 0  1  0  0  1  1  0  1 | 1  1  0  1  0  1  0  0
 0  0  1  0  1  0  1  1 | 1  0  1  0  0  1  0  1
 0  0  0  1  0  1  1  1 | 1  1  0  0  0  0  1  1
 0  0  0  0  0  0  0  0 | 1  1  1  1  1  1  1  1

while it should return this:

image

As you can see, the 3rd and the 4th rows have their bits flipped. I don't have any reasonable explanation for it.

@Krastanov Krastanov marked this pull request as ready for review September 17, 2023 21:19
@Krastanov
Copy link
Member

@amicciche , I think this should implement all we need. Thank you for the presentation last week, it made it much easier to implement. I also added the references you found to the documentation.

@dmtrung14 , thank you so much for the initial implementation during the summer! Anthony gave it another look and pointed out that there seems to be some issues in the paper. It turns out that both the thesis and the paper by Cleve contain some severe but subtle mistakes. This should address them all.

@Krastanov Krastanov merged commit 55fc876 into QuantumSavory:master Sep 18, 2023
9 checks passed
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.

2 participants