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

Piecemaker #159

Draft
wants to merge 12 commits into
base: master
Choose a base branch
from
Draft

Piecemaker #159

wants to merge 12 commits into from

Conversation

Luisenden
Copy link
Contributor

This PR adds a new quantum network example: A central switch node connects to n clients. The switch possesses m = n + 1 qubit slots, while each client has a single qubit slot. At each clock tick, the switch initiates entanglement attempts with each of the n clients, resulting in n entanglement processes per cycle. Successful entanglement links are then merged into a GHZ (Greenberger–Horne–Zeilinger) state using an additional "piecemaker" qubit located in the (n + 1)th slot of the switch node. This fusion process is assumed to occur instantaneously. Once all clients went through the fusion operation, the piecemaker qubit is measured out completing one simulation run. The fidelity of the generated GHZ state as well as distribution times of each run are collected.

Changes

  • uptotime.jl: implemented struct Depolarization noise using krausops which can be applied to a Register
  • switches.jl: added struct FusionSwitchDiscreteProt as the main protocol including function _switch_entangler_all_selected(prot) and other functions. The latter runs the entangler protocol between all clients and their respective (preselected) slots at the switch node.
  • ProtocolZoo.jl: added tags FusionCounterpart and Piecemaker indicating/to query a new qubit available to be fused into the GHZ state and the piecemaker qubit, respectively. Added struct GHZConsumer which measures out the piecemaker qubit in the end, tracking the distribution time, as well as the fidelity of the final state with the target GHZ state.
  • CircuitZoo.jl: added struct EntanglementFusion circuit.
  • new file setup.jl: prepares simulation processes.
  • new file simple_run.jl: runs simulation and collects results from the GHZConsumer.log.

Troubleshooting

In the current implementation, sending and receiving classical measurement messages is achieved via a DelayQueue channel connected to MessageBuffers at the nodes. The MessageBuffer acts as a buffer that holds incoming messages and manages processes waiting for messages.

Important Note: By design, message passing should not involve simulated time delays by default. Messages are expected to be delivered instantaneously in simulation time unless explicitly specified otherwise. However, during simulation, the following debug output from the EntanglementTracker indicates that a delay is being introduced unexpectedly: @debug "EntanglementTracker @$(prot.node): Starting message wait at $(now(prot.sim)) with MessageBuffer containing: $(mb.buffer)" in the EntanglementTracker. This results in distribution times > # rounds of entanglement attempts, which should not be the case.

Copy link
Contributor

github-actions bot commented Oct 8, 2024

Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 8 Oct 2024 - 14:15
  • Baseline: 8 Oct 2024 - 14:16
  • Package commits:
  • Target: 811eb4
  • Baseline: eba99c
  • Julia commits:
  • Target: 6f3fdf
  • Baseline: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 0.94 (5%) ✅ 1.00 (1%)
["tagquery", "messagebuffer", "querydelete"] 1.08 (5%) ❌ 1.00 (1%)
["tagquery", "register", "queryall"] 0.99 (5%) 0.98 (1%) ✅

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Target

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:15
  • Package commit: 811eb4
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 187.122 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 289.725 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.164 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 10.219 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.529 s (5%) 1.978 s 523.92 MiB (1%) 4975444
["tagquery", "register", "queryall"] 4.344 s (5%) 2.720 s 1.50 GiB (1%) 4243941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:16
  • Package commit: eba99c
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 199.996 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 288.368 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.004 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 9.858 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.495 s (5%) 1.962 s 526.06 MiB (1%) 4995443
["tagquery", "register", "queryall"] 4.400 s (5%) 2.715 s 1.53 GiB (1%) 4333941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

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

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: AuthenticAMD
Model name: AMD EPYC 7763 64-Core Processor
CPU family: 25
Model: 1
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4890.85
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves user_shstk clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization: AMD-V
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 1 MiB (2 instances)
L3 cache: 32 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected

Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft
Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 8 Oct 2024 - 14:15
  • Baseline: 8 Oct 2024 - 14:16
  • Package commits:
  • Target: 811eb4
  • Baseline: eba99c
  • Julia commits:
  • Target: 6f3fdf
  • Baseline: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 0.94 (5%) ✅ 1.00 (1%)
["tagquery", "messagebuffer", "querydelete"] 1.08 (5%) ❌ 1.00 (1%)
["tagquery", "register", "queryall"] 0.99 (5%) 0.98 (1%) ✅

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Target

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:15
  • Package commit: 811eb4
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 187.122 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 289.725 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.164 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 10.219 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.529 s (5%) 1.978 s 523.92 MiB (1%) 4975444
["tagquery", "register", "queryall"] 4.344 s (5%) 2.720 s 1.50 GiB (1%) 4243941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:16
  • Package commit: eba99c
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 199.996 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 288.368 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.004 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 9.858 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.495 s (5%) 1.962 s 526.06 MiB (1%) 4995443
["tagquery", "register", "queryall"] 4.400 s (5%) 2.715 s 1.53 GiB (1%) 4333941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

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

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: AuthenticAMD
Model name: AMD EPYC 7763 64-Core Processor
CPU family: 25
Model: 1
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4890.85
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves user_shstk clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization: AMD-V
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 1 MiB (2 instances)
L3 cache: 32 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected

Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft
Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 8 Oct 2024 - 14:15
  • Baseline: 8 Oct 2024 - 14:16
  • Package commits:
  • Target: 811eb4
  • Baseline: eba99c
  • Julia commits:
  • Target: 6f3fdf
  • Baseline: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 0.94 (5%) ✅ 1.00 (1%)
["tagquery", "messagebuffer", "querydelete"] 1.08 (5%) ❌ 1.00 (1%)
["tagquery", "register", "queryall"] 0.99 (5%) 0.98 (1%) ✅

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Target

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:15
  • Package commit: 811eb4
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 187.122 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 289.725 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.164 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 10.219 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.529 s (5%) 1.978 s 523.92 MiB (1%) 4975444
["tagquery", "register", "queryall"] 4.344 s (5%) 2.720 s 1.50 GiB (1%) 4243941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:16
  • Package commit: eba99c
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 199.996 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 288.368 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.004 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 9.858 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.495 s (5%) 1.962 s 526.06 MiB (1%) 4995443
["tagquery", "register", "queryall"] 4.400 s (5%) 2.715 s 1.53 GiB (1%) 4333941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

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

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: AuthenticAMD
Model name: AMD EPYC 7763 64-Core Processor
CPU family: 25
Model: 1
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4890.85
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves user_shstk clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization: AMD-V
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 1 MiB (2 instances)
L3 cache: 32 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected

Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft
Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 8 Oct 2024 - 14:15
  • Baseline: 8 Oct 2024 - 14:16
  • Package commits:
  • Target: 811eb4
  • Baseline: eba99c
  • Julia commits:
  • Target: 6f3fdf
  • Baseline: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 0.94 (5%) ✅ 1.00 (1%)
["tagquery", "messagebuffer", "querydelete"] 1.08 (5%) ❌ 1.00 (1%)
["tagquery", "register", "queryall"] 0.99 (5%) 0.98 (1%) ✅

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Target

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:15
  • Package commit: 811eb4
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 187.122 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 289.725 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.164 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 10.219 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.529 s (5%) 1.978 s 523.92 MiB (1%) 4975444
["tagquery", "register", "queryall"] 4.344 s (5%) 2.720 s 1.50 GiB (1%) 4243941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:16
  • Package commit: eba99c
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 199.996 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 288.368 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.004 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 9.858 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.495 s (5%) 1.962 s 526.06 MiB (1%) 4995443
["tagquery", "register", "queryall"] 4.400 s (5%) 2.715 s 1.53 GiB (1%) 4333941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

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

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: AuthenticAMD
Model name: AMD EPYC 7763 64-Core Processor
CPU family: 25
Model: 1
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4890.85
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves user_shstk clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization: AMD-V
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 1 MiB (2 instances)
L3 cache: 32 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected

Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft
Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 8 Oct 2024 - 14:15
  • Baseline: 8 Oct 2024 - 14:16
  • Package commits:
  • Target: 811eb4
  • Baseline: eba99c
  • Julia commits:
  • Target: 6f3fdf
  • Baseline: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 0.94 (5%) ✅ 1.00 (1%)
["tagquery", "messagebuffer", "querydelete"] 1.08 (5%) ❌ 1.00 (1%)
["tagquery", "register", "queryall"] 0.99 (5%) 0.98 (1%) ✅

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Target

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:15
  • Package commit: 811eb4
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 187.122 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 289.725 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.164 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 10.219 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.529 s (5%) 1.978 s 523.92 MiB (1%) 4975444
["tagquery", "register", "queryall"] 4.344 s (5%) 2.720 s 1.50 GiB (1%) 4243941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:16
  • Package commit: eba99c
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 199.996 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 288.368 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.004 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 9.858 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.495 s (5%) 1.962 s 526.06 MiB (1%) 4995443
["tagquery", "register", "queryall"] 4.400 s (5%) 2.715 s 1.53 GiB (1%) 4333941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

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

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: AuthenticAMD
Model name: AMD EPYC 7763 64-Core Processor
CPU family: 25
Model: 1
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4890.85
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves user_shstk clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization: AMD-V
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 1 MiB (2 instances)
L3 cache: 32 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Mmio stale data: Not affected
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed: Not affected
Vulnerability Spec rstack overflow: Vulnerable: Safe RET, no microcode
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Retpolines; STIBP disabled; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected

Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft
Benchmark Result

Judge result

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

Job Properties

  • Time of benchmarks:
  • Target: 8 Oct 2024 - 14:15
  • Baseline: 8 Oct 2024 - 14:16
  • Package commits:
  • Target: 811eb4
  • Baseline: eba99c
  • Julia commits:
  • Target: 6f3fdf
  • Baseline: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 0.94 (5%) ✅ 1.00 (1%)
["tagquery", "messagebuffer", "querydelete"] 1.08 (5%) ❌ 1.00 (1%)
["tagquery", "register", "queryall"] 0.99 (5%) 0.98 (1%) ✅

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Target

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:15
  • Package commit: 811eb4
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 187.122 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 289.725 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.164 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 10.219 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.529 s (5%) 1.978 s 523.92 MiB (1%) 4975444
["tagquery", "register", "queryall"] 4.344 s (5%) 2.720 s 1.50 GiB (1%) 4243941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3243 MHz 3725 s 0 s 296 s 3875 s 0 s
 #2 3257 MHz 3847 s 0 s 291 s 3739 s 0 s
 #3 3242 MHz 3842 s 0 s 250 s 3798 s 0 s
 #4 3242 MHz 4241 s 0 s 291 s 3342 s 0 s
 Memory: 15.615280151367188 GB (13084.5546875 MB free)
 Uptime: 796.69 sec
 Load Avg: 1.15 2.41 1.67
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

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

Job Properties

  • Time of benchmark: 8 Oct 2024 - 14:16
  • Package commit: eba99c
  • Julia commit: 6f3fdf
  • 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
["register", "creation_and_initialization", "from_tests"] 199.996 μs (5%) 902.48 KiB (1%) 2378
["tagquery", "messagebuffer", "query"] 288.368 ns (5%) 64 bytes (1%) 2
["tagquery", "messagebuffer", "querydelete"] 2.004 μs (5%) 96 bytes (1%) 3
["tagquery", "misc", "from_tests"] 9.858 μs (5%) 24.95 KiB (1%) 217
["tagquery", "register", "query"] 3.495 s (5%) 1.962 s 526.06 MiB (1%) 4995443
["tagquery", "register", "queryall"] 4.400 s (5%) 2.715 s 1.53 GiB (1%) 4333941

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["register", "creation_and_initialization"]
  • ["tagquery", "messagebuffer"]
  • ["tagquery", "misc"]
  • ["tagquery", "register"]

Julia versioninfo

Julia Version 1.10.5
Commit 6f3fdf7b362 (2024-08-27 14:19 UTC)
Build Info:
 Official https://julialang.org/ release
Platform Info:
 OS: Linux (x86_64-linux-gnu)
 Ubuntu 24.04.1 LTS
 uname: Linux 6.8.0-1014-azure #16-Ubuntu SMP Thu Aug 15 20:04:41 UTC 2024 x86_64 x86_64
 CPU: AMD EPYC 7763 64-Core Processor: 
 speed user nice sys idle irq
 #1 3245 MHz 3893 s 0 s 313 s 4657 s 0 s
 #2 3240 MHz 4150 s 0 s 305 s 4390 s 0 s
 #3 3243 MHz 4246 s 0 s 280 s 4333 s 0 s
 #4 3240 MHz 4383 s 0 s 305 s 4154 s 0 s
 Memory: 15.615280151367188 GB (13342.4296875 MB free)
 Uptime: 893.59 sec
 Load Avg: 1.13 2.06 1.62
 WORD_SIZE: 64
 LIBM: libopenlibm
 LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

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

lscpu output:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: AuthenticAMD
Model name: AMD EPYC 7763 64-Core Processor
CPU family: 25
Model: 1
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 4890.85
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves user_shstk clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization: AMD-V
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 64 KiB (2 instances)
L1i cache: 64 KiB (2 instances)
L2 cache: 1 MiB (2 instances)
L3 cache: 32 MiB (1 instance)
NUMA node(s): 1
NUMA node0 CPU(s): 0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit: Not affected
Vulnerability...[Comment body truncated]

@Luisenden Luisenden assigned Luisenden and KDGoodenough and unassigned Luisenden Oct 11, 2024
Copy link
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

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

This looks great, thank you! Apologies for taking so long to start the review.

I have dropped a bunch of comments in, and there are still things I need to read more carefully, but this already looks very well executed.

When you have a chance, please answer the various questions in the review.

It would be very helpful if you can prepare a few sequence diagrams of what the protocol is doing. I have found mermaid to be a great tool for that https://mermaid.live/edit#pako:eNpt0L0OwiAUhuFbOZ7V9gYYNCYO6urKckK_lib8KIUYY7x3aaubTIfwvCTwYhM7sOIJ94JgcBxlSOJ1oLoObjRod7vtJdqg6ATnIs1zQzY-SBLoGcv-L16ZkTATspBEHl86n7WVtktTLx7XuqHzUiy6Zpv__Ew94GhIkLzhhj2Sl7Grr3jNgeZs4aFZ1bFDL8VlzTq8K5WS4_UZDKucChpOsQyWVS9uqrty6yT_vmAl7w9bXV2O

Would you like to meet next week to review the rest together, to make sure we are on the same page before merging?

@@ -72,3 +72,8 @@ function krausops(d::AmplitudeDamping, Δt, basis) # https://quantumcomputing.st
end

# TODO add an amplitude damping example of transduction

function krausops(Depol::Depolarization, Δt)
Copy link
Member

Choose a reason for hiding this comment

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

this would probably benefit from having a cross-check in the tests, e.g. compared against a master equation solver


"""
Run `queryall(switch, EntanglemetnCounterpart, ...)`
to find out which clients the switch has successfully entangled with.
Copy link
Member

Choose a reason for hiding this comment

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

This seems to be doing a bit more than what is said in the docstring. Could you document a bit more, both the "what" but also the "why"?


$TYPEDFIELDS
"""
@kwdef struct Piecemaker
Copy link
Member

Choose a reason for hiding this comment

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

Do we need this to be a tag? Is it a piece of information that is transmitted between protocols? If it is not, this can probably just be information given to the constructor of the fusion protocol.


$FIELDS
"""
@kwdef struct GHZConsumer{LT} <: AbstractProtocol where {LT<:Union{Float64,Nothing}}
Copy link
Member

Choose a reason for hiding this comment

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

The lack of symmetry in the names is noticeable. Can we call both GHZCounterpart and GHZConsumer (or FusionCounterpart and FusionConsumer). If it is just for GHZ for the moment, maybe we can stick to that name.


succeed(prot.event_ghz_state)
if state(prot.event_ghz_state) != idle
throw(StopSimulation("GHZ state shared among all users!"))
Copy link
Member

Choose a reason for hiding this comment

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

Any reason for StopSimulation instead of just exiting this function? This might be a part of a bigger simulation that is supposed to continue after the consumer runs.


$TYPEDFIELDS
"""
@kwdef struct SelectedEntanglerProt{LT} <: AbstractProtocol where {LT<:Union{Float64,Nothing}}
Copy link
Member

Choose a reason for hiding this comment

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

Why is this necessary over the already existing EntanglerProt?

Copy link
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

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

By the way, after the recently merged PR, you can now set the delay lines to arbitrary latencies: #162

@Luisenden
Copy link
Contributor Author

Nice, thanks for the comments! I have made quite a few updates (pushed to this branch) on the objects described above, e.g.,

  • the delay issue mentioned in 'Troubleshooting' is resolved --the timings and fidelity distributions now align with the template (Guus's piecemaker)
  • added some plotting to simple_run.jl

Your comments are still very relevant, and I will address them asap (plus adjust the code/docstrings).
Should I open a new PR or does this one automatically point to the latest stage of the branch?

And yes, let's synch next week! I sent an invite for Friday but feel free to propose any time that suits you !

Copy link
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

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

these are the comments from our meeting last week

apologies, it seems I never submitted the final review

Project.toml Outdated
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd"
Copy link
Member

Choose a reason for hiding this comment

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

These do not seem to be library dependencies, rather just example dependencies. They can go in an example Project.toml or just be left out.

.DS_Store Outdated
Copy link
Member

Choose a reason for hiding this comment

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

add this file to .gitignore

The fusion operation consists of applying a **CNOT** gate followed by a measurement in the computational basis. This procedure allows the merging of two GHZ states into a single GHZ state, modulo any required Pauli corrections. We iterate over all existing entangled states with the switch node: in each iteration, the piecemaker qubit (initialized in the state \(|+\rangle\)) is fused with one of the existing entangled states.

# Noise
The memories residing the nodes' `Register`s suffer from depolarizing noise. The latter is modelled via Kraus operators applied to the current state's density matrix.
Copy link
Member

Choose a reason for hiding this comment

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

in the nodes

Copy link
Member

Choose a reason for hiding this comment

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

The use of Kraus operators is just the default due to using state vectors. The simulator might decide to not use Kraus operators if it defaults to a different representation (e.g. tableaux)

Comment on lines 11 to 24
@resumable function init_piecemaker(sim, net, m)
while true
@yield lock(net[1][m])
if !isassigned(net[1][m])
initialize!(net[1][m], X1)
tag!(net[1][m], Piecemaker, 1, m)
unlock(net[1][m])
@yield timeout(sim, 1)
else
unlock(net[1][m])
@yield timeout(sim, 1)
end
end
end
Copy link
Member

Choose a reason for hiding this comment

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

delete if not used

Comment on lines 45 to 46
initialize!(net[1][m], X1)
tag!(net[1][m], Piecemaker, 1, m)
Copy link
Member

Choose a reason for hiding this comment

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

This should probably just be some flag or entry in the FusionSwitchDiscreteProt.

Comment on lines 659 to 742
"""
$TYPEDEF

A protocol that generates entanglement between two nodes.
Whenever the selected client slot and the associated slot on the remote node are free, the protocol locks them
and starts probabilistic attempts to establish entanglement.

$TYPEDFIELDS
"""
@kwdef struct SelectedEntanglerProt <: AbstractProtocol
"""time-and-schedule-tracking instance from `ConcurrentSim`"""
sim::Simulation # TODO check that
"""a network graph of registers"""
net::RegisterNet
"""the vertex index of node A"""
nodeA::Int
"""the vertex index of node B"""
nodeB::Int
"""the state being generated (supports symbolic, numeric, noisy, and pure)"""
pairstate = StabilizerState("ZZ XX")
"""success probability of one attempt of entanglement generation"""
success_prob::Float64 = 0.001
"""duration of single entanglement attempt"""
attempt_time::Float64 = 0.001
"""how many rounds of this protocol to run (`-1` for infinite)"""
rounds::Int = -1
"""maximum number of attempts to make per round (`-1` for infinite)"""
attempts::Int = -1
end

"""Convenience constructor for specifying `rate` of generation instead of success probability and time"""
function SelectedEntanglerProt(sim::Simulation, net::RegisterNet, nodeA::Int, nodeB::Int; rate::Union{Nothing,Float64}=nothing, kwargs...)
if isnothing(rate)
return SelectedEntanglerProt(;sim, net, nodeA, nodeB, kwargs...)
else
return SelectedEntanglerProt(;sim, net, nodeA, nodeB, kwargs..., success_prob=0.001, attempt_time=0.001/rate)
end
end

#TODO """Convenience constructor for specifying `fidelity` of generation instead of success probability and time"""

@resumable function (prot::SelectedEntanglerProt)()
rounds = prot.rounds
round = 1
while rounds != 0
isentangled = !isnothing(query(prot.net[prot.nodeA], EntanglementCounterpart, prot.nodeB, ❓; assigned=true))
a = prot.net[prot.nodeA][prot.nodeB-1]
b = prot.net[prot.nodeB][1]

if isnothing(a) || isnothing(b)
isnothing(prot.retry_lock_time) && error("We do not yet support waiting on register to make qubits available") # TODO
@debug "EntanglerProt between $(prot.nodeA) and $(prot.nodeB)|round $(round): Failed to find free slots. \nGot:\n1. \t $a \n2.\t $b \n retrying..."
continue
end

@yield lock(a) & lock(b) # this yield is expected to return immediately
attempts = if isone(prot.success_prob)
1
else
rand(Geometric(prot.success_prob))+1
end

if (prot.attempts == -1 || prot.attempts >= attempts) && !isassigned(b) && !isassigned(a)

initialize!((a,b), prot.pairstate; time=now(prot.sim))
@yield timeout(prot.sim, attempts * prot.attempt_time)

# tag local node a with EntanglementCounterpart remote_node_idx_b remote_slot_idx_b
tag!(a, EntanglementCounterpart, prot.nodeB, b.idx)
# tag local node b with EntanglementCounterpart remote_node_idx_a remote_slot_idx_a
tag!(b, EntanglementCounterpart, prot.nodeA, a.idx)

@debug "EntanglerProt between $(prot.nodeA) and $(prot.nodeB)|round $(round): Entangled .$(a.idx) and .$(b.idx)"
else
uptotime!((a,b), now(prot.sim))
@yield timeout(prot.sim, prot.attempts * prot.attempt_time)
@debug "EntanglerProt between $(prot.nodeA) and $(prot.nodeB)|round $(round): Performed the maximum number of attempts and gave up"
end
unlock(a)
unlock(b)
rounds==-1 || (rounds -= 1)
round += 1
end
end
Copy link
Member

Choose a reason for hiding this comment

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

this hopefully can be removed by improving EntanglerProt to have slotA::Union{Int,Wildcard} -- if it is wildcard it does what it currently does and if not it checks islocked and isassigned and proceeds if available.

"""
$TYPEDEF

Indicates the current entanglement status with a remote node's slot. Added when a new qubit is fused into the GHZ state through [`FusionProt`](@ref).
Copy link
Member

Choose a reason for hiding this comment

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

adding a sentence or two about who receives this tag and whom the tag points to

Comment on lines 490 to 491
"""event when all users are sharing a ghz state"""
event_ghz_state::Event
Copy link
Member

Choose a reason for hiding this comment

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

not used anymore

Comment on lines 505 to 570
@resumable function (prot::GHZConsumer)()
if isnothing(prot.period)
error("In `GHZConsumer` we do not yet support waiting on register to make qubits available") # TODO
end
while true
nclients = nsubsystems(prot.net[1])-1
qparticipating = queryall(prot.piecemaker, FusionCounterpart, ❓, ❓) # TODO Need a `querydelete!` dispatch on `Register` rather than using `query` here followed by `untag!` below
if isnothing(qparticipating)
@debug "GHZConsumer between $(prot.piecemaker): query on piecemaker slot found no entanglement"
#@yield timeout(prot.sim, prot.period)
continue
return
elseif length(qparticipating) == nclients
@debug "All clients are now part of the GHZ state."
client_slots = [prot.net[k][1] for k in 2:nclients+1]

# Wait for all locks to complete
tasks = []
for resource in client_slots
push!(tasks, lock(resource))
end
push!(tasks, lock(prot.piecemaker))
all_locks = reduce(&, tasks)
@yield all_locks

@debug "GHZConsumer of $(prot.piecemaker): queries successful, consuming entanglement"
for q in qparticipating
untag!(prot.piecemaker, q.id)
end

# when all qubits have arrived, we measure out the central qubit
zmeas = project_traceout!(prot.piecemaker, σˣ)
if zmeas == 2
apply!(prot.net[2][1], Z) # apply correction on arbitrary client slot
end
result = real(observable(client_slots, projector(1/sqrt(2)*(reduce(⊗, [fill(Z2,nclients)...]) + reduce(⊗,[fill(Z1,nclients)...])))))
@debug "GHZConsumer: expectation value $(result)"

pm = queryall(prot.piecemaker, ❓, ❓, ❓)
@assert length(pm) < 2 "More than one entry for piecemaker in database."
(slot, id, tag) = pm[1]
@debug "GHZConsumer: piecemaker qubit state real($(observable(slot, X1)))"
untag!(prot.piecemaker, id)

# delete tags and free client slots
for k in 2:nclients+1
queries = queryall(prot.net[k], EntanglementCounterpart, ❓, ❓)
for q in queries
untag!(q.slot, q.id)
end
end

traceout!([prot.net[k][1] for k in 2:nclients+1]...)
for k in 2:nclients+1
unlock(prot.net[k][1])
end
unlock(prot.piecemaker)

# log results
push!(prot.log, (now(prot.sim), result,))
throw(StopSimulation("GHZ state shared among all users!"))
@yield timeout(prot.sim, prot.period)
end
@yield timeout(prot.sim, prot.period)
end
end
Copy link
Member

Choose a reason for hiding this comment

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

not fully reviewed yet

Comment on lines +174 to +193
while rounds != 0
rounds==-1 || (rounds -= 1)

@debug "Node $(prot.switchnode) starts a new entanglement round at time $(now(prot.sim))"
# run entangler without requests (=no assignment)
_switch_entangler_all_selected(prot)
@yield timeout(prot.sim, prot.ticktock/2)
@debug "Node $(prot.switchnode) stops at time $(now(prot.sim))"
# read which entanglements were successful
matches = _switch_successful_entanglements(prot, reverseclientindex)
if isnothing(matches)
@yield timeout(prot.sim, prot.ticktock/2)
continue
end
@debug "Node $(prot.switchnode) performs fusions at time $(now(prot.sim))"
# perform fusions
_switch_run_fusions(prot, matches)
@yield timeout(prot.sim, prot.ticktock/2)
@debug "Node $(prot.switchnode) is done with fusions at time $(now(prot.sim))"
end
Copy link
Member

Choose a reason for hiding this comment

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

while true
    processes = [entangler_followed_by_fusion(i) for i in clients]
    wait_on_all_of_them = reduce(&, processes)
    @yield wait_on_all_of_them
end

where

@resumable entangler_followed_by_fusion(...)
    @yield @process Entangler...
    # and then the fusion code
end

Copy link
Member

Choose a reason for hiding this comment

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

just be careful to make sure slots are locked and unlocked

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants