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

shor syndrome, classic xor, and pauli frame x measurement #170

Merged

Conversation

amicciche
Copy link
Member

@amicciche amicciche commented Aug 23, 2023

Shor-style syndrome extraction, classical xor gate, and a lazy implementation x measurement for pauli frames.

  • Need to add Quantikz support for ClassicalXOR

Here is some sample code to run the shor syndrome circuit:

using QuantumClifford
using QuantumClifford.ECC: Steane7, Shor9, encoding_circuit, parity_checks, shor_syndrome_circuit

errors = [PauliError(7, 1)];
code = Steane7()
checks = parity_checks(code)
ecirc = encoding_circuit(code);
circuit = vcat(ecirc, errors, shor_syndrome_circuit(checks));

total_weight_checks = 0 
for pauli in checks
    total_weight_checks += mapreduce(count_ones,+, xview(pauli) .| zview(pauli))
end
num_checks, data_qubits = size(checks) 
numframes = 20

frames = PauliFrame(numframes, total_weight_checks + data_qubits, total_weight_checks + num_checks)
pftrajectories(frames, circuit)
pfmeasurements(frames)[:,total_weight_checks+1:total_weight_checks+num_checks]

I tested all single qubit errors after encoding on the Steane code.
I tested random single qubit errors on the Shor code.

@codecov
Copy link

codecov bot commented Aug 23, 2023

Codecov Report

Merging #170 (ec6436e) into master (cb1b591) will increase coverage by 0.13%.
The diff coverage is 91.54%.

@@            Coverage Diff             @@
##           master     #170      +/-   ##
==========================================
+ Coverage   83.88%   84.01%   +0.13%     
==========================================
  Files          44       44              
  Lines        3326     3391      +65     
==========================================
+ Hits         2790     2849      +59     
- Misses        536      542       +6     
Files Changed Coverage Δ
...mCliffordQuantikzExt/QuantumCliffordQuantikzExt.jl 0.00% <0.00%> (ø)
src/QuantumClifford.jl 90.17% <ø> (ø)
src/pauli_frames.jl 80.95% <76.47%> (-1.03%) ⬇️
src/ecc/ECC.jl 90.65% <98.03%> (+5.65%) ⬆️
src/misc_ops.jl 96.72% <100.00%> (+0.11%) ⬆️

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

src/misc_ops.jl Outdated

"""Applies an XOR gate to classical bits. Currently only implemented for funcitonality with pauli frames."""
struct ClassicalXOR <: AbstractOperation
bits::Vector{Int} # the indices of the classical bits to be xored
Copy link
Member

Choose a reason for hiding this comment

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

Turn these into NTuple{N, Int} where N is a type parameter for ClassicalXOR. That way it will be non-allocating (Vector can not be stored on the stack, they only go in the heap).

function apply!(frame::PauliFrame, op::sMZ) # TODO sMX, sMY
function apply!(frame::PauliFrame, xor::ClassicalXOR)
for f in eachindex(frame)
value = reduce(⊻,frame.measurements[f,xor.bits])
Copy link
Member

Choose a reason for hiding this comment

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

use a view, otherwise this will allocate a new array at each itteration

src/misc_ops.jl Outdated
bits::Vector{Int} # the indices of the classical bits to be xored
store::Int # the index of the classical bit that will store the results
end
ClassicalXOR(bits::NTuple, store::Int) = ClassicalXOR(collect(bits),store)
Copy link
Member

Choose a reason for hiding this comment

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

after the ClassicalXOR above is changed to use tuples, this constructor can be deleted

@Krastanov
Copy link
Member

could you add tests

Something along the lines of:

for code in list_of_codes
        circuit1 = naive...
        circuit2 = ...        
        pauli_frame1 = PauliFrame(nframes, nqubits+nanc1, nbits1)
        pauli_frame2 = PauliFrame(nframes, nqubits+nanc1, nbits2)
        pftrajectories!...
        pftrajectories!...
        @test measurements1 == measurement2 == zero
end

@Krastanov
Copy link
Member

@amicciche, I will try to help with this in the next few days. Let me know if you have local unpushed changes so that I avoid causing merge conflicts.

@amicciche
Copy link
Member Author

@amicciche, I will try to help with this in the next few days. Let me know if you have local unpushed changes so that I avoid causing merge conflicts.

Thank you very much for asking this! (I do enjoy avoiding merge conflicts myself). I'll add a commit soon which changes the shor_syndrome_circuit() function to always return a tuple, the cat state circuit and then the syndrome circuit. (I mentioned it in today's meeting.

@amicciche
Copy link
Member Author

amicciche commented Aug 26, 2023

I just pushed my latest changes. Here is an example for how to use the new shor_syndrome_circuit() function:

errors = [PauliError(3, 1)];
code = Shor9()
checks = parity_checks(code)
ecirc = encoding_circuit(code);
cat, scirc = QuantumClifford.ECC.shor_syndrome_circuit(checks);
circuit = vcat(ecirc, errors, cat, scirc);

total_weight_checks = 0 #
for pauli in checks
    total_weight_checks += mapreduce(count_ones,+, xview(pauli) .| zview(pauli))
end
num_checks, data_qubits = size(checks) 
numframes = 20

frames = PauliFrame(numframes, total_weight_checks + data_qubits, total_weight_checks + num_checks)
pftrajectories(frames, circuit)
pfmeasurements(frames)[:,total_weight_checks+1:total_weight_checks+num_checks]

@github-actions
Copy link
Contributor

github-actions bot commented Aug 26, 2023

Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 26 Aug 2023 - 03:32
  • Baseline: 26 Aug 2023 - 03:37
  • Package commits:
  • Target: 0e893d
  • Baseline: cb1b59
  • Julia commits:
  • Target: 38520e
  • Baseline: 38520e
  • 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.90 (5%) ✅ 1.00 (1%)
["circuitsim", "mctrajectories", "q101_r1"] 0.81 (5%) ✅ 1.00 (1%)
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 0.88 (5%) ✅ 1.00 (1%)
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 0.81 (5%) ✅ 1.00 (1%)
["circuitsim", "mctrajectories_union", "q1001_r1"] 0.89 (5%) ✅ 1.00 (1%)
["circuitsim", "mctrajectories_union", "q101_r1"] 0.71 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories", "q1001_r100"] 0.80 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories", "q1001_r10000"] 0.72 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories", "q101_r1"] 1.12 (5%) ❌ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 1.14 (5%) ❌ 2002.00 (1%) ❌
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 0.95 (5%) 2002.00 (1%) ❌
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 0.86 (5%) ✅ 2002.00 (1%) ❌
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 0.97 (5%) 2002.00 (1%) ❌
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 1.28 (5%) ❌ 202.00 (1%) ❌
["circuitsim", "pftrajectories_union", "q1001_r10000"] 0.82 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_destab"] 1.30 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_stab"] 0.67 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot_on_dense500_destab"] 1.09 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot_on_dense500_stab"] 1.16 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot_on_diag500_destab"] 0.92 (5%) ✅ 1.00 (1%)
["clifford", "dense", "dense500_on_diag500_destab"] 1.23 (5%) ❌ 1.00 (1%)
["clifford", "dense", "dense500_on_diag500_stab"] 0.63 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot250_on_dense500_destab"] 0.76 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 0.93 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 0.85 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 0.79 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 0.86 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 0.94 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 0.75 (5%) ✅ 1.00 (1%)
["pauli", "mul", "1000"] 1.33 (5%) ❌ 1.00 (1%)
["stabilizer", "canon", "diag_cano500"] 0.93 (5%) ✅ 1.00 (1%)
["stabilizer", "canon", "md_cano500"] 1.22 (5%) ❌ 1.00 (1%)
["stabilizer", "project", "destabilizer"] 1.39 (5%) ❌ 1.00 (1%)
["stabilizer", "project", "stabilizer"] 1.13 (5%) ❌ 1.00 (1%)
["stabilizer", "tensor", "pow5_20"] 1.12 (5%) ❌ 1.00 (1%)
["stabilizer", "trace", "destabilizer"] 1.17 (5%) ❌ 1.00 (1%)
["stabilizer", "trace", "stabilizer"] 1.31 (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.346
Commit 38520e134d1 (2023-08-25 19:45 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 1330 s 0 s 276 s 7593 s 0 s
 #2 2095 MHz 7614 s 0 s 421 s 1165 s 0 s
 Memory: 6.7694854736328125 GB (4657.83984375 MB free)
 Uptime: 930.52 sec
 Load Avg: 1.03 1.05 0.78
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512)
 Threads: 1 on 2 virtual cores

Baseline

Julia Version 1.11.0-DEV.346
Commit 38520e134d1 (2023-08-25 19:45 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 4134 s 0 s 384 s 7993 s 0 s
 #2 2095 MHz 8016 s 0 s 476 s 4011 s 0 s
 Memory: 6.7694854736328125 GB (4676.3125 MB free)
 Uptime: 1262.03 sec
 Load Avg: 1.0 1.02 0.87
 WORD_SIZE: 64
 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: 26 Aug 2023 - 3:32
  • Package commit: 0e893d
  • Julia commit: 38520e
  • 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"] 25.308 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 249.914 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 23.923 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 157.809 μs (5%) 288 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q1001_r1"] 24.591 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q101_r1"] 156.609 μs (5%) 288 bytes (1%) 7
["circuitsim", "pftrajectories", "q1001_r1"] 82.805 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 197.412 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.333 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 9.401 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 50.603 μs (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 203.211 μs (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.580 ms (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 10.324 ms (5%) 93.84 KiB (1%) 2002
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 5.800 μs (5%) 9.47 KiB (1%) 202
["circuitsim", "pftrajectories_union", "q1001_r1"] 27.701 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 169.310 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.426 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.825 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 23.294 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 10.928 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 2.121 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 653.838 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 71.904 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 35.102 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 39.402 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 16.401 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 23.282 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 11.106 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.357 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 600.034 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.051 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 939.854 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.769 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 813.647 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 5.825 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 3.213 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 6.350 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 2.775 μs (5%)
["pauli", "mul", "100"] 18.338 ns (5%)
["pauli", "mul", "1000"] 32.698 ns (5%)
["pauli", "mul", "100000"] 844.776 ns (5%)
["pauli", "mul", "20000000"] 439.425 μs (5%)
["stabilizer", "canon", "cano500"] 5.265 ms (5%)
["stabilizer", "canon", "diag_cano500"] 1.058 ms (5%)
["stabilizer", "canon", "diag_gott500"] 15.281 ms (5%) 5.27 MiB (1%) 24557
["stabilizer", "canon", "diag_rref500"] 790.245 μs (5%)
["stabilizer", "canon", "gott500"] 19.301 ms (5%) 5.27 MiB (1%) 24608
["stabilizer", "canon", "md_cano500"] 2.474 ms (5%)
["stabilizer", "canon", "md_rref500"] 2.465 ms (5%)
["stabilizer", "canon", "rref500"] 5.417 ms (5%)
["stabilizer", "project", "destabilizer"] 32.501 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 13.901 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 4.674 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 4.172 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 47.403 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 50.202 μ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.346
Commit 38520e134d1 (2023-08-25 19:45 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 1330 s 0 s 276 s 7593 s 0 s
 #2 2095 MHz 7614 s 0 s 421 s 1165 s 0 s
 Memory: 6.7694854736328125 GB (4657.83984375 MB free)
 Uptime: 930.52 sec
 Load Avg: 1.03 1.05 0.78
 WORD_SIZE: 64
 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: 26 Aug 2023 - 3:37
  • Package commit: cb1b59
  • Julia commit: 38520e
  • 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"] 28.138 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 307.017 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 27.145 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 195.211 μs (5%) 288 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q1001_r1"] 27.482 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q101_r1"] 220.513 μs (5%) 288 bytes (1%) 7
["circuitsim", "pftrajectories", "q1001_r1"] 81.004 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 247.614 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.853 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 8.400 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 44.203 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 213.212 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.827 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 10.676 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.520 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 27.702 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 168.410 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.736 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.825 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 22.600 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 11.492 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.625 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 982.857 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 66.004 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 30.201 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 42.902 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 17.101 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 22.776 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 11.258 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.100 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 959.756 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.693 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 1.013 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 2.088 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 808.347 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 7.401 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 3.725 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 6.776 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.688 μs (5%)
["pauli", "mul", "100"] 18.338 ns (5%)
["pauli", "mul", "1000"] 24.650 ns (5%)
["pauli", "mul", "100000"] 831.632 ns (5%)
["pauli", "mul", "20000000"] 451.026 μs (5%)
["stabilizer", "canon", "cano500"] 5.322 ms (5%)
["stabilizer", "canon", "diag_cano500"] 1.140 ms (5%)
["stabilizer", "canon", "diag_gott500"] 14.882 ms (5%) 5.27 MiB (1%) 24557
["stabilizer", "canon", "diag_rref500"] 755.844 μs (5%)
["stabilizer", "canon", "gott500"] 19.726 ms (5%) 5.27 MiB (1%) 24608
["stabilizer", "canon", "md_cano500"] 2.036 ms (5%)
["stabilizer", "canon", "md_rref500"] 2.427 ms (5%)
["stabilizer", "canon", "rref500"] 5.370 ms (5%)
["stabilizer", "project", "destabilizer"] 23.301 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 12.301 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 4.762 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 3.714 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 40.403 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 38.403 μ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.346
Commit 38520e134d1 (2023-08-25 19:45 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 4134 s 0 s 384 s 7993 s 0 s
 #2 2095 MHz 8016 s 0 s 476 s 4011 s 0 s
 Memory: 6.7694854736328125 GB (4676.3125 MB free)
 Uptime: 1262.03 sec
 Load Avg: 1.0 1.02 0.87
 WORD_SIZE: 64
 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.35
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: 31 Aug 2023 - 05:31
  • Baseline: 31 Aug 2023 - 05:36
  • Package commits:
  • Target: 1eb551
  • Baseline: cb1b59
  • Julia commits:
  • Target: 95af5a
  • Baseline: 95af5a
  • 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_r100"] 0.88 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories", "q1001_r10000"] 0.82 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 0.88 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 0.82 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_union", "q1001_r100"] 0.86 (5%) ✅ 1.00 (1%)
["circuitsim", "pftrajectories_union", "q1001_r10000"] 0.81 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_stab"] 1.55 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot_on_dense500_destab"] 0.88 (5%) ✅ 1.00 (1%)
["clifford", "dense", "cnot_on_diag500_destab"] 1.25 (5%) ❌ 1.00 (1%)
["clifford", "dense", "dense500_on_diag500_destab"] 1.41 (5%) ❌ 1.00 (1%)
["clifford", "dense", "dense500_on_diag500_stab"] 1.55 (5%) ❌ 1.00 (1%)
["clifford", "symbolic", "cnot250_on_dense500_destab"] 0.90 (5%) ✅ 1.00 (1%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 0.92 (5%) ✅ 1.00 (1%)
["pauli", "mul", "1000"] 0.90 (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.377
Commit 95af5a08926 (2023-08-31 03:12 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 8272CL CPU @ 2.60GHz: 
 speed user nice sys idle irq
 #1 2593 MHz 806 s 0 s 263 s 7637 s 0 s
 #2 2593 MHz 7527 s 0 s 373 s 828 s 0 s
 Memory: 6.7694854736328125 GB (4785.5 MB free)
 Uptime: 881.25 sec
 Load Avg: 1.01 1.01 0.75
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512)
 Threads: 1 on 2 virtual cores

Baseline

Julia Version 1.11.0-DEV.377
Commit 95af5a08926 (2023-08-31 03:12 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 8272CL CPU @ 2.60GHz: 
 speed user nice sys idle irq
 #1 2593 MHz 1761 s 0 s 329 s 9755 s 0 s
 #2 2593 MHz 9611 s 0 s 480 s 1781 s 0 s
 Memory: 6.7694854736328125 GB (4681.4375 MB free)
 Uptime: 1196.08 sec
 Load Avg: 1.06 1.03 0.84
 WORD_SIZE: 64
 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: 31 Aug 2023 - 5:31
  • Package commit: 1eb551
  • Julia commit: 95af5a
  • 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.748 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 275.404 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 22.900 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 199.403 μs (5%) 288 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q1001_r1"] 22.880 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q101_r1"] 198.103 μs (5%) 288 bytes (1%) 7
["circuitsim", "pftrajectories", "q1001_r1"] 83.302 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 230.704 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.419 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 8.300 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 46.200 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 195.703 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.373 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 9.031 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.686 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 28.300 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 173.202 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.344 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.889 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 19.056 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 9.615 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.759 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 958.115 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 69.201 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 32.200 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 47.700 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 16.700 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 18.987 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 9.591 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.758 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 957.614 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.374 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 986.014 μs (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 2.011 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 830.613 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 8.733 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 3.325 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 8.067 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.325 μs (5%)
["pauli", "mul", "100"] 16.733 ns (5%)
["pauli", "mul", "1000"] 28.443 ns (5%)
["pauli", "mul", "100000"] 745.169 ns (5%)
["pauli", "mul", "20000000"] 415.906 μs (5%)
["stabilizer", "canon", "cano500"] 4.557 ms (5%)
["stabilizer", "canon", "diag_cano500"] 948.016 μs (5%)
["stabilizer", "canon", "diag_gott500"] 12.296 ms (5%) 5.27 MiB (1%) 24561
["stabilizer", "canon", "diag_rref500"] 754.812 μs (5%)
["stabilizer", "canon", "gott500"] 16.051 ms (5%) 5.27 MiB (1%) 24616
["stabilizer", "canon", "md_cano500"] 2.187 ms (5%)
["stabilizer", "canon", "md_rref500"] 2.251 ms (5%)
["stabilizer", "canon", "rref500"] 4.841 ms (5%)
["stabilizer", "project", "destabilizer"] 27.200 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 12.600 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 4.482 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 4.200 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 49.000 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 45.200 μ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.377
Commit 95af5a08926 (2023-08-31 03:12 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 8272CL CPU @ 2.60GHz: 
 speed user nice sys idle irq
 #1 2593 MHz 806 s 0 s 263 s 7637 s 0 s
 #2 2593 MHz 7527 s 0 s 373 s 828 s 0 s
 Memory: 6.7694854736328125 GB (4785.5 MB free)
 Uptime: 881.25 sec
 Load Avg: 1.01 1.01 0.75
 WORD_SIZE: 64
 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: 31 Aug 2023 - 5:36
  • Package commit: cb1b59
  • Julia commit: 95af5a
  • 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.769 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 281.304 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 22.900 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 199.802 μs (5%) 288 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q1001_r1"] 22.868 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q101_r1"] 198.504 μs (5%) 288 bytes (1%) 7
["circuitsim", "pftrajectories", "q1001_r1"] 83.201 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 262.905 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.723 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 8.300 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 46.100 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 223.303 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.676 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 9.019 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.686 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 28.300 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 202.403 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.652 ms (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q101_r1"] 2.900 μs (5%) 96 bytes (1%) 2
["clifford", "dense", "cnot250_on_dense500_destab"] 18.985 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 9.338 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.759 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 618.768 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 78.701 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 31.300 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 38.301 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 17.400 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 18.972 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 9.330 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.242 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 618.909 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.635 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 1.008 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 2.013 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 829.312 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 9.500 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 3.325 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 8.067 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.325 μs (5%)
["pauli", "mul", "100"] 16.733 ns (5%)
["pauli", "mul", "1000"] 31.658 ns (5%)
["pauli", "mul", "100000"] 748.395 ns (5%)
["pauli", "mul", "20000000"] 414.206 μs (5%)
["stabilizer", "canon", "cano500"] 4.613 ms (5%)
["stabilizer", "canon", "diag_cano500"] 946.715 μs (5%)
["stabilizer", "canon", "diag_gott500"] 12.290 ms (5%) 5.27 MiB (1%) 24561
["stabilizer", "canon", "diag_rref500"] 752.411 μs (5%)
["stabilizer", "canon", "gott500"] 16.070 ms (5%) 5.27 MiB (1%) 24616
["stabilizer", "canon", "md_cano500"] 2.193 ms (5%)
["stabilizer", "canon", "md_rref500"] 2.198 ms (5%)
["stabilizer", "canon", "rref500"] 4.833 ms (5%)
["stabilizer", "project", "destabilizer"] 27.000 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 12.600 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 4.574 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 4.143 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 47.601 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 45.401 μ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.377
Commit 95af5a08926 (2023-08-31 03:12 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 8272CL CPU @ 2.60GHz: 
 speed user nice sys idle irq
 #1 2593 MHz 1761 s 0 s 329 s 9755 s 0 s
 #2 2593 MHz 9611 s 0 s 480 s 1781 s 0 s
 Memory: 6.7694854736328125 GB (4681.4375 MB free)
 Uptime: 1196.08 sec
 Load Avg: 1.06 1.03 0.84
 WORD_SIZE: 64
 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 8272CL CPU @ 2.60GHz
CPU family: 6
Model: 85
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
Stepping: 7
BogoMIPS: 5187.81
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 8272CL CPU @ 2.60GHz
Vendor :Intel
Architecture :Skylake
Model Family: 0x06, Model: 0x55, Stepping: 0x07, 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: 31 Aug 2023 - 05:32
  • Baseline: 31 Aug 2023 - 05:37
  • Package commits:
  • Target: c59616
  • Baseline: cb1b59
  • Julia commits:
  • Target: 95af5a
  • Baseline: 95af5a
  • 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.06 (5%) ❌ 1.00 (1%)
["clifford", "dense", "cnot250_on_diag500_destab"] 1.15 (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.377
Commit 95af5a08926 (2023-08-31 03:12 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 2489 s 0 s 270 s 7139 s 0 s
 #2 2793 MHz 5721 s 0 s 342 s 3835 s 0 s
 Memory: 6.7694854736328125 GB (4624.16015625 MB free)
 Uptime: 998.58 sec
 Load Avg: 1.01 1.0 0.69
 WORD_SIZE: 64
 LLVM: libLLVM-15.0.7 (ORCJIT, icelake-server)
 Threads: 1 on 2 virtual cores

Baseline

Julia Version 1.11.0-DEV.377
Commit 95af5a08926 (2023-08-31 03:12 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 2685 s 0 s 316 s 9906 s 0 s
 #2 2793 MHz 8434 s 0 s 451 s 4029 s 0 s
 Memory: 6.7694854736328125 GB (4633.26171875 MB free)
 Uptime: 1300.26 sec
 Load Avg: 1.0 1.01 0.8
 WORD_SIZE: 64
 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: 31 Aug 2023 - 5:32
  • Package commit: c59616
  • Julia commit: 95af5a
  • 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.061 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 245.302 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 22.387 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 174.501 μs (5%) 288 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q1001_r1"] 22.363 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q101_r1"] 172.902 μs (5%) 288 bytes (1%) 7
["circuitsim", "pftrajectories", "q1001_r1"] 76.100 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 221.003 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.506 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 7.725 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 41.800 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 188.501 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.507 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 10.129 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.271 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 27.500 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 172.702 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r10000"] 1.458 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"] 20.433 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 10.015 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.272 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 540.303 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 56.100 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 26.900 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 33.400 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 15.700 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 20.418 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 10.040 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.074 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 539.905 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.133 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 1.056 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.767 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 868.507 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_destab"] 6.920 μs (5%)
["clifford", "symbolic", "cnot_on_dense500_stab"] 3.300 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_destab"] 6.840 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.300 μs (5%)
["pauli", "mul", "100"] 16.232 ns (5%)
["pauli", "mul", "1000"] 27.264 ns (5%)
["pauli", "mul", "100000"] 954.545 ns (5%)
["pauli", "mul", "20000000"] 395.703 μs (5%)
["stabilizer", "canon", "cano500"] 4.884 ms (5%)
["stabilizer", "canon", "diag_cano500"] 758.206 μs (5%)
["stabilizer", "canon", "diag_gott500"] 11.778 ms (5%) 5.27 MiB (1%) 24561
["stabilizer", "canon", "diag_rref500"] 628.605 μs (5%)
["stabilizer", "canon", "gott500"] 16.078 ms (5%) 5.27 MiB (1%) 24616
["stabilizer", "canon", "md_cano500"] 2.200 ms (5%)
["stabilizer", "canon", "md_rref500"] 2.160 ms (5%)
["stabilizer", "canon", "rref500"] 5.040 ms (5%)
["stabilizer", "project", "destabilizer"] 25.700 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 12.300 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 2.938 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 3.837 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 42.300 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 13.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.377
Commit 95af5a08926 (2023-08-31 03:12 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 2489 s 0 s 270 s 7139 s 0 s
 #2 2793 MHz 5721 s 0 s 342 s 3835 s 0 s
 Memory: 6.7694854736328125 GB (4624.16015625 MB free)
 Uptime: 998.58 sec
 Load Avg: 1.01 1.0 0.69
 WORD_SIZE: 64
 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: 31 Aug 2023 - 5:37
  • Package commit: cb1b59
  • Julia commit: 95af5a
  • 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.172 ms (5%) 500.78 KiB (1%) 18017
["circuitsim", "mctrajectories", "q101_r1"] 252.102 μs (5%) 50.53 KiB (1%) 1816
["circuitsim", "mctrajectories_sumtype", "q1001_r1"] 22.371 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_sumtype", "q101_r1"] 175.102 μs (5%) 288 bytes (1%) 7
["circuitsim", "mctrajectories_union", "q1001_r1"] 22.296 ms (5%) 544 bytes (1%) 8
["circuitsim", "mctrajectories_union", "q101_r1"] 173.405 μs (5%) 288 bytes (1%) 7
["circuitsim", "pftrajectories", "q1001_r1"] 72.001 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r100"] 229.502 μs (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q1001_r10000"] 1.526 ms (5%) 93.80 KiB (1%) 2001
["circuitsim", "pftrajectories", "q101_r1"] 7.475 μs (5%) 9.42 KiB (1%) 201
["circuitsim", "pftrajectories_sumtype", "q1001_r1"] 40.400 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r100"] 193.602 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000"] 1.492 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q1001_r10000_fastrow"] 10.107 ms (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_sumtype", "q101_r1"] 4.129 μs (5%) 48 bytes (1%) 1
["circuitsim", "pftrajectories_union", "q1001_r1"] 27.400 μs (5%) 96 bytes (1%) 2
["circuitsim", "pftrajectories_union", "q1001_r100"] 179.701 μ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"] 20.455 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_dense500_stab"] 10.015 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_destab"] 1.109 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot250_on_diag500_stab"] 538.804 μs (5%) 512 bytes (1%) 4
["clifford", "dense", "cnot_on_dense500_destab"] 55.701 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_dense500_stab"] 26.500 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_destab"] 33.000 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "cnot_on_diag500_stab"] 15.700 μs (5%) 368 bytes (1%) 5
["clifford", "dense", "dense500_on_dense500_destab"] 20.539 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_dense500_stab"] 10.001 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_destab"] 1.074 ms (5%) 512 bytes (1%) 4
["clifford", "dense", "dense500_on_diag500_stab"] 538.404 μs (5%) 512 bytes (1%) 4
["clifford", "symbolic", "cnot250_on_dense500_destab"] 2.148 ms (5%)
["clifford", "symbolic", "cnot250_on_dense500_stab"] 1.061 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_destab"] 1.761 ms (5%)
["clifford", "symbolic", "cnot250_on_diag500_stab"] 862.406 μ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.860 μs (5%)
["clifford", "symbolic", "cnot_on_diag500_stab"] 3.300 μs (5%)
["pauli", "mul", "100"] 16.333 ns (5%)
["pauli", "mul", "1000"] 27.264 ns (5%)
["pauli", "mul", "100000"] 945.455 ns (5%)
["pauli", "mul", "20000000"] 407.903 μs (5%)
["stabilizer", "canon", "cano500"] 4.975 ms (5%)
["stabilizer", "canon", "diag_cano500"] 757.307 μs (5%)
["stabilizer", "canon", "diag_gott500"] 11.622 ms (5%) 5.27 MiB (1%) 24561
["stabilizer", "canon", "diag_rref500"] 608.604 μs (5%)
["stabilizer", "canon", "gott500"] 15.874 ms (5%) 5.27 MiB (1%) 24616
["stabilizer", "canon", "md_cano500"] 2.142 ms (5%)
["stabilizer", "canon", "md_rref500"] 2.168 ms (5%)
["stabilizer", "canon", "rref500"] 5.022 ms (5%)
["stabilizer", "project", "destabilizer"] 25.800 μs (5%) 288 bytes (1%) 3
["stabilizer", "project", "stabilizer"] 11.900 μs (5%) 80 bytes (1%) 2
["stabilizer", "tensor", "diag_pow5_20"] 2.810 ms (5%) 23.97 MiB (1%) 31
["stabilizer", "tensor", "pow5_20"] 3.788 μs (5%) 6.48 KiB (1%) 28
["stabilizer", "trace", "destabilizer"] 42.800 μs (5%) 80 bytes (1%) 1
["stabilizer", "trace", "stabilizer"] 13.880 μ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.377
Commit 95af5a08926 (2023-08-31 03:12 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 22.04.3 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 2685 s 0 s 316 s 9906 s 0 s
 #2 2793 MHz 8434 s 0 s 451 s 4029 s 0 s
 Memory: 6.7694854736328125 GB (4633.26171875 MB free)
 Uptime: 1300.26 sec
 Load Avg: 1.0 1.01 0.8
 WORD_SIZE: 64
 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.88
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

@Krastanov
Copy link
Member

@amicciche , check the last two commits and let me know if something is unclear. A pretty important addition was the tests. I also slightly changed the API for the syndrome measurement circuits (they return a bit more information now). That might require changing some of your user code.

@Krastanov
Copy link
Member

the tests will fail until the new Quantikz version is registered (should be done in a few minutes). I will rerun the tests tomorrow.

@amicciche
Copy link
Member Author

These all make sense to me. I agree that returning the ancillary qubit information is helpful, otherwise the user needs to run a loop like this to calculate it:

    anc_qubits = 0 
    for pauli in checks
        anc_qubits += mapreduce(count_ones,+, xview(pauli) .| zview(pauli))
    end

@Krastanov Krastanov merged commit 44a1896 into QuantumSavory:master Aug 31, 2023
8 of 9 checks passed
@amicciche amicciche deleted the shor_syndrome_measurement_wo_notebook branch September 2, 2024 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants