{ "about": "Run time and peak memory per engine on one host: tools/perf.py. Times are each engine's own call (timers says where each starts and stops), the minimum and median of repeated runs; memory is the peak resident set of the process that ran the engine.", "timers": { "wai": "the engine's run, after the program is read and lowered (the driver's own clock)", "aer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "qsim": "the simulate call, which converts the circuit to its own form inside it", "ddsim": "the run call, which converts the circuit to its own form inside it", "stim": "the tableau's or sampler's run, after the circuit text is parsed", "quimb": "the building of the circuit object, which applies each gate as it is added, and the read-out" }, "host": { "system": "Darwin", "machine": "arm64", "release": "27.2.0", "cpu": "Apple M3 Ultra", "memory_bytes": 274877906944, "os": "macOS 27.2", "logical_cpus": 32, "load_average": [ 70.69287109375, 81.63525390625, 68.42578125 ] }, "versions": { "cirq-core": "1.7.0", "mqt.core": "3.11.0", "mqt.ddsim": "2.7.0", "numpy": "2.5.4", "python": "3.12.16", "qiskit": "2.6.2", "qiskit-aer": "0.18.2", "qsimcirq": "0.22.1", "quimb": "1.15.0", "scipy": "1.18.1", "stim": "1.16.0" }, "engine_under_test": "after: wai/wai-quantum 0cd14ae3d7845da8d8a1782565781b8a54bb141b, wai/wai-quantum-cli d3407ee21f3de60a94f4aad561c3dd5c94d47905 (the reader-scaling branch, d4282f680)", "repeat": 5, "rows": [ { "case": "qft_n20", "what": "the QFT of a basis state, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 84.8, 55.3, 47.2 ], "load_after": [ 84.9, 55.8, 47.5 ], "seconds_min": 0.030688167, "seconds_median": 0.032649125, "wall_median": 0.07823962497059256, "peak_rss_mib": 28.5, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 230, "settings": null }, { "case": "qft_n20", "what": "the QFT of a basis state, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 84.9, 55.8, 47.5 ], "load_after": [ 84.9, 55.8, 47.5 ], "seconds_min": 0.082436083, "seconds_median": 0.084105291, "wall_median": 0.40595091693103313, "peak_rss_mib": 100.6, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 231, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 0.08928029192611575 }, { "case": "qft_n20", "what": "the QFT of a basis state, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 84.9, 55.8, 47.5 ], "load_after": [ 90.7, 57.5, 48.1 ], "seconds_min": 0.07705833297222853, "seconds_median": 0.09050345805007964, "wall_median": 1.2444457079982385, "peak_rss_mib": 197.2, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "qft_n20", "what": "the QFT of a basis state, the whole state", "engine": "ddsim.statevector", "cpus": 32, "threads": "not set", "timer": "the run call, which converts the circuit to its own form inside it", "load_before": [ 89.8, 57.8, 48.3 ], "load_after": [ 89.8, 57.8, 48.3 ], "seconds_min": 0.14229662506841123, "seconds_median": 0.14530420897062868, "wall_median": 0.4130727919982746, "peak_rss_mib": 119.2, "baseline_rss_mib": 86.1, "repeats": 5, "ops": null, "settings": { "arithmetic": "decision diagram, double" } }, { "case": "qft_n20", "what": "the QFT of a basis state, the whole state", "engine": "wai.exact", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 89.8, 57.8, 48.3 ], "load_after": [ 89.8, 57.8, 48.3 ], "seconds_min": 0.230797208, "seconds_median": 0.242068542, "wall_median": 0.2980207089567557, "peak_rss_mib": 36.8, "baseline_rss_mib": 3.4, "repeats": 5, "ops": 250, "settings": null }, { "case": "qft_n20", "what": "the QFT of a basis state, the whole state", "engine": "quimb.dense", "cpus": 32, "threads": "not set", "timer": "the building of the circuit object, which applies each gate as it is added, and the read-out", "load_before": [ 89.8, 57.8, 48.3 ], "load_after": [ 87.8, 58.4, 48.6 ], "seconds_min": 1.4850348749896511, "seconds_median": 1.6033009169623256, "wall_median": 1.783973415964283, "peak_rss_mib": 255.7, "baseline_rss_mib": 158.5, "repeats": 5, "ops": null, "settings": { "arithmetic": "double" } }, { "case": "qft_n24", "what": "the QFT of a basis state, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 87.8, 58.4, 48.6 ], "load_after": [ 88.6, 59.1, 48.9 ], "seconds_min": 0.540033792, "seconds_median": 0.584915417, "wall_median": 0.6433089579222724, "peak_rss_mib": 308.0, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 324, "settings": null }, { "case": "qft_n24", "what": "the QFT of a basis state, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 88.6, 59.1, 48.9 ], "load_after": [ 88.7, 59.6, 49.1 ], "seconds_min": 0.943747959, "seconds_median": 1.021051708, "wall_median": 1.4321522919926792, "peak_rss_mib": 341.2, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 325, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 1.0276822079904377 }, { "case": "qft_n24", "what": "the QFT of a basis state, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 88.7, 59.6, 49.1 ], "load_after": [ 89.6, 61.3, 49.9 ], "seconds_min": 0.7766921250149608, "seconds_median": 0.8253435000078753, "wall_median": 2.125137082999572, "peak_rss_mib": 317.4, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "qft_n24", "what": "the QFT of a basis state, the whole state", "engine": "ddsim.statevector", "cpus": 32, "threads": "not set", "timer": "the run call, which converts the circuit to its own form inside it", "load_before": [ 89.6, 61.3, 49.9 ], "load_after": [ 87.0, 61.6, 50.2 ], "seconds_min": 2.1981360838981345, "seconds_median": 2.241012666025199, "wall_median": 2.5453058750135824, "peak_rss_mib": 599.1, "baseline_rss_mib": 86.1, "repeats": 5, "ops": null, "settings": { "arithmetic": "decision diagram, double" } }, { "case": "qft_n24", "what": "the QFT of a basis state, the whole state", "engine": "wai.exact", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 87.0, 61.6, 50.2 ], "load_after": [ 91.1, 65.1, 51.8 ], "seconds_min": 5.486884625, "seconds_median": 5.763906459, "wall_median": 6.03005241707433, "peak_rss_mib": 517.5, "baseline_rss_mib": 3.4, "repeats": 5, "ops": 348, "settings": null }, { "case": "qft_n26", "what": "the QFT of a basis state, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 91.1, 65.1, 51.8 ], "load_after": [ 107.2, 70.0, 53.8 ], "seconds_min": 2.156384083, "seconds_median": 2.656515625, "wall_median": 2.729259250103496, "peak_rss_mib": 1069.7, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 377, "settings": null }, { "case": "qft_n26", "what": "the QFT of a basis state, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 107.2, 70.0, 53.8 ], "load_after": [ 108.9, 71.6, 54.6 ], "seconds_min": 2.081141458, "seconds_median": 2.282563084, "wall_median": 2.6245728750946, "peak_rss_mib": 1109.3, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 378, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 2.2919143750332296 }, { "case": "qft_n26", "what": "the QFT of a basis state, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 108.9, 71.6, 54.6 ], "load_after": [ 108.4, 73.9, 55.8 ], "seconds_min": 2.7223151669604704, "seconds_median": 2.769396624993533, "wall_median": 3.8492029170738533, "peak_rss_mib": 701.2, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "qft_n28", "what": "the QFT of a basis state, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 108.4, 73.9, 55.8 ], "load_after": [ 129.7, 85.6, 61.3 ], "seconds_min": 10.151050083, "seconds_median": 10.185908458, "wall_median": 10.316226082970388, "peak_rss_mib": 4142.7, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 434, "settings": null }, { "case": "qft_n28", "what": "the QFT of a basis state, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 129.7, 85.6, 61.3 ], "load_after": [ 133.5, 91.3, 64.3 ], "seconds_min": 7.01796275, "seconds_median": 7.038690125, "wall_median": 7.354327708017081, "peak_rss_mib": 4181.4, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 435, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 7.047589124995284 }, { "case": "qft_n28", "what": "the QFT of a basis state, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 133.5, 91.3, 64.3 ], "load_after": [ 107.2, 90.5, 65.7 ], "seconds_min": 9.414586916915141, "seconds_median": 9.449702834011987, "wall_median": 10.537941624992527, "peak_rss_mib": 2237.9, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "rotations_n20", "what": "20 layers of arbitrary U gates on a brickwork of cx, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 107.2, 90.5, 65.7 ], "load_after": [ 107.2, 90.5, 65.7 ], "seconds_min": 0.066267459, "seconds_median": 0.069945, "wall_median": 0.12205045798327774, "peak_rss_mib": 28.6, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 590, "settings": null }, { "case": "rotations_n20", "what": "20 layers of arbitrary U gates on a brickwork of cx, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 107.2, 90.5, 65.7 ], "load_after": [ 107.1, 90.7, 65.9 ], "seconds_min": 0.166231791, "seconds_median": 0.195309625, "wall_median": 0.5207094169454649, "peak_rss_mib": 101.5, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 591, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 0.2004267079755664 }, { "case": "rotations_n20", "what": "20 layers of arbitrary U gates on a brickwork of cx, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 107.1, 90.7, 65.9 ], "load_after": [ 100.2, 89.6, 65.6 ], "seconds_min": 0.08347808301914483, "seconds_median": 0.14288054208736867, "wall_median": 1.4020102920476347, "peak_rss_mib": 198.6, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "rotations_n20", "what": "20 layers of arbitrary U gates on a brickwork of cx, the whole state", "engine": "quimb.dense", "cpus": 32, "threads": "not set", "timer": "the building of the circuit object, which applies each gate as it is added, and the read-out", "load_before": [ 100.2, 89.6, 65.6 ], "load_after": [ 99.3, 89.9, 66.2 ], "seconds_min": 2.823499458958395, "seconds_median": 2.8431653750594705, "wall_median": 3.0339519169647247, "peak_rss_mib": 235.5, "baseline_rss_mib": 158.5, "repeats": 5, "ops": null, "settings": { "arithmetic": "double" } }, { "case": "rotations_n24", "what": "20 layers of arbitrary U gates on a brickwork of cx, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 99.3, 89.9, 66.2 ], "load_after": [ 102.6, 90.7, 66.6 ], "seconds_min": 0.901458583, "seconds_median": 0.925344291, "wall_median": 0.9855166249908507, "peak_rss_mib": 303.0, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 710, "settings": null }, { "case": "rotations_n24", "what": "20 layers of arbitrary U gates on a brickwork of cx, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 102.6, 90.7, 66.6 ], "load_after": [ 102.4, 91.1, 67.0 ], "seconds_min": 1.509604542, "seconds_median": 1.577388959, "wall_median": 1.8986314999638125, "peak_rss_mib": 342.5, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 711, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 1.5830910420045257 }, { "case": "rotations_n24", "what": "20 layers of arbitrary U gates on a brickwork of cx, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 102.4, 91.1, 67.0 ], "load_after": [ 100.1, 91.0, 67.3 ], "seconds_min": 0.584896165993996, "seconds_median": 0.6012331671081483, "wall_median": 1.7153582909377292, "peak_rss_mib": 318.3, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "rotations_n26", "what": "20 layers of arbitrary U gates on a brickwork of cx, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 100.1, 91.0, 67.3 ], "load_after": [ 98.1, 90.9, 67.7 ], "seconds_min": 2.304095917, "seconds_median": 2.361874458, "wall_median": 2.4290217079687864, "peak_rss_mib": 1073.7, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 770, "settings": null }, { "case": "rotations_n26", "what": "20 layers of arbitrary U gates on a brickwork of cx, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 98.1, 90.9, 67.7 ], "load_after": [ 94.5, 90.5, 68.0 ], "seconds_min": 3.829566083, "seconds_median": 3.889778875, "wall_median": 4.214873707969673, "peak_rss_mib": 1110.2, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 771, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 3.8958393749780953 }, { "case": "rotations_n26", "what": "20 layers of arbitrary U gates on a brickwork of cx, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 94.5, 90.5, 68.0 ], "load_after": [ 91.2, 89.9, 68.2 ], "seconds_min": 1.9765661669662222, "seconds_median": 1.9922070000320673, "wall_median": 3.1203600829467177, "peak_rss_mib": 701.8, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "grover_n10", "what": "two Grover iterations on 10 qubits: four Z gates under 9 controls, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 91.2, 89.9, 68.2 ], "load_after": [ 91.2, 89.9, 68.2 ], "seconds_min": 0.000174792, "seconds_median": 0.0001835, "wall_median": 0.050484957988373935, "peak_rss_mib": 4.3, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 114, "settings": null }, { "case": "grover_n10", "what": "two Grover iterations on 10 qubits: four Z gates under 9 controls, the whole state", "engine": "wai.exact", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 91.2, 89.9, 68.2 ], "load_after": [ 91.2, 89.9, 68.2 ], "seconds_min": 0.026424958, "seconds_median": 0.026438959, "wall_median": 0.08181400003377348, "peak_rss_mib": 16.9, "baseline_rss_mib": 3.4, "repeats": 5, "ops": 26686, "settings": null }, { "case": "grover_n10", "what": "two Grover iterations on 10 qubits: four Z gates under 9 controls, the whole state", "engine": "wai.exact_whole", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 91.2, 89.9, 68.2 ], "load_after": [ 91.2, 89.9, 68.2 ], "seconds_min": 0.000149584, "seconds_median": 0.000150084, "wall_median": 0.04924162500537932, "peak_rss_mib": 4.1, "baseline_rss_mib": 3.4, "repeats": 5, "ops": 114, "settings": null }, { "case": "grover_n10", "what": "two Grover iterations on 10 qubits: four Z gates under 9 controls, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 91.2, 89.9, 68.2 ], "load_after": [ 89.9, 89.6, 68.2 ], "seconds_min": 0.000226209, "seconds_median": 0.000252417, "wall_median": 0.3110462080221623, "peak_rss_mib": 83.6, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 123, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 0.001836540992371738 }, { "case": "grover_n10", "what": "two Grover iterations on 10 qubits: four Z gates under 9 controls, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 89.9, 89.6, 68.2 ], "load_after": [ 88.5, 89.3, 68.3 ], "seconds_min": 0.0030661249766126275, "seconds_median": 0.003371707978658378, "wall_median": 1.1587839999701828, "peak_rss_mib": 189.3, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "grover_n10", "what": "two Grover iterations on 10 qubits: four Z gates under 9 controls, the whole state", "engine": "ddsim.statevector", "cpus": 32, "threads": "not set", "timer": "the run call, which converts the circuit to its own form inside it", "load_before": [ 88.5, 89.3, 68.3 ], "load_after": [ 88.5, 89.3, 68.3 ], "seconds_min": 0.005707874894142151, "seconds_median": 0.007026250008493662, "wall_median": 0.30851670796982944, "peak_rss_mib": 86.6, "baseline_rss_mib": 86.1, "repeats": 5, "ops": null, "settings": { "arithmetic": "decision diagram, double" } }, { "case": "grover_n14", "what": "two Grover iterations on 14 qubits: four Z gates under 13 controls, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 88.5, 89.3, 68.3 ], "load_after": [ 88.5, 89.3, 68.3 ], "seconds_min": 0.002213209, "seconds_median": 0.00223325, "wall_median": 0.048084459034726024, "peak_rss_mib": 4.5, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 158, "settings": null }, { "case": "grover_n14", "what": "two Grover iterations on 14 qubits: four Z gates under 13 controls, the whole state", "engine": "wai.exact", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 88.5, 89.3, 68.3 ], "load_after": [ 73.9, 85.6, 68.0 ], "seconds_min": 9.098708917, "seconds_median": 9.1811275, "wall_median": 9.283998541999608, "peak_rss_mib": 260.7, "baseline_rss_mib": 3.4, "repeats": 5, "ops": 557146, "settings": null }, { "case": "grover_n14", "what": "two Grover iterations on 14 qubits: four Z gates under 13 controls, the whole state", "engine": "wai.exact_whole", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 73.9, 85.6, 68.0 ], "load_after": [ 73.9, 85.6, 68.0 ], "seconds_min": 0.003202375, "seconds_median": 0.003216333, "wall_median": 0.04807179199997336, "peak_rss_mib": 4.5, "baseline_rss_mib": 3.4, "repeats": 5, "ops": 158, "settings": null }, { "case": "grover_n14", "what": "two Grover iterations on 14 qubits: four Z gates under 13 controls, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 73.9, 85.6, 68.0 ], "load_after": [ 75.7, 85.8, 68.2 ], "seconds_min": 0.003133458, "seconds_median": 0.003155625, "wall_median": 0.33264562499243766, "peak_rss_mib": 83.7, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 167, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 0.00490541709586978 }, { "case": "grover_n14", "what": "two Grover iterations on 14 qubits: four Z gates under 13 controls, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 75.7, 85.8, 68.2 ], "load_after": [ 71.6, 84.8, 67.9 ], "seconds_min": 0.012269375030882657, "seconds_median": 0.013836459023877978, "wall_median": 1.279901499976404, "peak_rss_mib": 188.8, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "grover_n14", "what": "two Grover iterations on 14 qubits: four Z gates under 13 controls, the whole state", "engine": "ddsim.statevector", "cpus": 32, "threads": "not set", "timer": "the run call, which converts the circuit to its own form inside it", "load_before": [ 71.6, 84.8, 67.9 ], "load_after": [ 71.6, 84.8, 67.9 ], "seconds_min": 0.006222792086191475, "seconds_median": 0.006434041075408459, "wall_median": 0.31049050006549805, "peak_rss_mib": 87.5, "baseline_rss_mib": 86.1, "repeats": 5, "ops": null, "settings": { "arithmetic": "decision diagram, double" } }, { "case": "grover_n16", "what": "two Grover iterations on 16 qubits: four Z gates under 15 controls, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 71.6, 84.8, 67.9 ], "load_after": [ 71.6, 84.8, 67.9 ], "seconds_min": 0.010599667, "seconds_median": 0.011049916, "wall_median": 0.056917125009931624, "peak_rss_mib": 6.6, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 180, "settings": null }, { "case": "grover_n16", "what": "two Grover iterations on 16 qubits: four Z gates under 15 controls, the whole state", "engine": "wai.exact_whole", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 71.6, 84.8, 67.9 ], "load_after": [ 71.6, 84.8, 67.9 ], "seconds_min": 0.014648333, "seconds_median": 0.014762625, "wall_median": 0.06128787505440414, "peak_rss_mib": 6.1, "baseline_rss_mib": 3.4, "repeats": 5, "ops": 180, "settings": null }, { "case": "grover_n16", "what": "two Grover iterations on 16 qubits: four Z gates under 15 controls, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 71.6, 84.8, 67.9 ], "load_after": [ 73.7, 85.0, 68.1 ], "seconds_min": 0.0159895, "seconds_median": 0.019403792, "wall_median": 0.3502927909139544, "peak_rss_mib": 86.2, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 189, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 0.021312540979124606 }, { "case": "grover_n16", "what": "two Grover iterations on 16 qubits: four Z gates under 15 controls, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 73.7, 85.0, 68.1 ], "load_after": [ 73.4, 84.7, 68.1 ], "seconds_min": 0.01337295793928206, "seconds_median": 0.015118750045076013, "wall_median": 1.2596284579485655, "peak_rss_mib": 189.2, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "grover_n16", "what": "two Grover iterations on 16 qubits: four Z gates under 15 controls, the whole state", "engine": "ddsim.statevector", "cpus": 32, "threads": "not set", "timer": "the run call, which converts the circuit to its own form inside it", "load_before": [ 73.4, 84.7, 68.1 ], "load_after": [ 73.4, 84.7, 68.1 ], "seconds_min": 0.006665208959020674, "seconds_median": 0.007018540985882282, "wall_median": 0.3093775419984013, "peak_rss_mib": 89.4, "baseline_rss_mib": 86.1, "repeats": 5, "ops": null, "settings": { "arithmetic": "decision diagram, double" } }, { "case": "grover_n20", "what": "two Grover iterations on 20 qubits: four Z gates under 19 controls, the whole state", "engine": "wai.statevector", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 73.4, 84.7, 68.1 ], "load_after": [ 79.4, 85.8, 68.6 ], "seconds_min": 0.028578, "seconds_median": 0.030125917, "wall_median": 0.07989525003358722, "peak_rss_mib": 27.8, "baseline_rss_mib": 3.6, "repeats": 5, "ops": 224, "settings": null }, { "case": "grover_n20", "what": "two Grover iterations on 20 qubits: four Z gates under 19 controls, the whole state", "engine": "wai.exact_whole", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 79.4, 85.8, 68.6 ], "load_after": [ 79.4, 85.8, 68.6 ], "seconds_min": 0.318840041, "seconds_median": 0.321990542, "wall_median": 0.3818241669796407, "peak_rss_mib": 36.4, "baseline_rss_mib": 3.4, "repeats": 5, "ops": 224, "settings": null }, { "case": "grover_n20", "what": "two Grover iterations on 20 qubits: four Z gates under 19 controls, the whole state", "engine": "aer.statevector", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 79.4, 85.8, 68.6 ], "load_after": [ 79.4, 85.8, 68.6 ], "seconds_min": 0.054569375, "seconds_median": 0.058810792, "wall_median": 0.38925283402204514, "peak_rss_mib": 108.5, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 233, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 0.06099237501621246 }, { "case": "grover_n20", "what": "two Grover iterations on 20 qubits: four Z gates under 19 controls, the whole state", "engine": "qsim.statevector", "cpus": 32, "threads": "32", "timer": "the simulate call, which converts the circuit to its own form inside it", "load_before": [ 79.4, 85.8, 68.6 ], "load_after": [ 74.8, 84.7, 68.4 ], "seconds_min": 0.02472874999511987, "seconds_median": 0.02537666610442102, "wall_median": 1.2847149160224944, "peak_rss_mib": 197.0, "baseline_rss_mib": 188.0, "repeats": 5, "ops": null, "settings": { "arithmetic": "single", "fusion": 2 } }, { "case": "grover_n20", "what": "two Grover iterations on 20 qubits: four Z gates under 19 controls, the whole state", "engine": "ddsim.statevector", "cpus": 32, "threads": "not set", "timer": "the run call, which converts the circuit to its own form inside it", "load_before": [ 74.8, 84.7, 68.4 ], "load_after": [ 74.8, 84.7, 68.4 ], "seconds_min": 0.015670707914978266, "seconds_median": 0.015854333993047476, "wall_median": 0.3141072919825092, "peak_rss_mib": 119.2, "baseline_rss_mib": 86.1, "repeats": 5, "ops": null, "settings": { "arithmetic": "decision diagram, double" } }, { "case": "clifford_n1000", "what": "random Clifford layers: the tableau, and its stabilizer group read out", "engine": "wai.stabilizer", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 74.8, 84.7, 68.4 ], "load_after": [ 74.8, 84.7, 68.4 ], "seconds_min": 0.001025959, "seconds_median": 0.001059, "wall_median": 0.1331792080309242, "peak_rss_mib": 95.4, "baseline_rss_mib": 3.4, "repeats": 5, "ops": 35082, "settings": null }, { "case": "clifford_n1000", "what": "random Clifford layers: the tableau, and its stabilizer group read out", "engine": "stim.tableau", "cpus": 32, "threads": "not set", "timer": "the tableau's or sampler's run, after the circuit text is parsed", "load_before": [ 74.8, 84.7, 68.4 ], "load_after": [ 74.8, 84.7, 68.4 ], "seconds_min": 0.0016297500114887953, "seconds_median": 0.0016962080262601376, "wall_median": 0.062154749990440905, "peak_rss_mib": 45.7, "baseline_rss_mib": 27.0, "repeats": 5, "ops": null, "settings": null }, { "case": "clifford_n1000", "what": "random Clifford layers: the tableau, and its stabilizer group read out", "engine": "aer.stabilizer", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 74.8, 84.7, 68.4 ], "load_after": [ 69.7, 83.4, 68.0 ], "seconds_min": 0.008537416, "seconds_median": 0.009630292, "wall_median": 0.8086862500058487, "peak_rss_mib": 192.6, "baseline_rss_mib": 98.8, "repeats": 5, "ops": 35083, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 0.1727997090201825 }, { "case": "clifford_n5000", "what": "random Clifford layers: the tableau, and its stabilizer group read out", "engine": "wai.stabilizer", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 77.3, 84.6, 68.6 ], "load_after": [ 77.3, 84.5, 68.7 ], "seconds_min": 0.012275042, "seconds_median": 0.012698, "wall_median": 0.883271542028524, "peak_rss_mib": 168.2, "baseline_rss_mib": 3.4, "repeats": 5, "ops": 58265, "settings": null }, { "case": "clifford_n5000", "what": "random Clifford layers: the tableau, and its stabilizer group read out", "engine": "stim.tableau", "cpus": 32, "threads": "not set", "timer": "the tableau's or sampler's run, after the circuit text is parsed", "load_before": [ 77.3, 84.5, 68.7 ], "load_after": [ 77.3, 84.5, 68.7 ], "seconds_min": 0.033097916981205344, "seconds_median": 0.044058374944143, "wall_median": 0.12251466698944569, "peak_rss_mib": 73.5, "baseline_rss_mib": 27.0, "repeats": 5, "ops": null, "settings": null }, { "case": "surface_z_d5_sample", "what": "the rotated surface-code memory experiment, d = rounds = 5, p = 0.001: 10^6 shots of every detector", "engine": "wai.qec", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 77.3, 84.5, 68.7 ], "load_after": [ 76.9, 84.3, 68.7 ], "seconds_min": 0.087176458, "seconds_median": 0.089712, "wall_median": 0.1365506669972092, "peak_rss_mib": 18.1, "baseline_rss_mib": 3.0, "repeats": 5, "ops": null, "settings": null }, { "case": "surface_z_d5_sample", "what": "the rotated surface-code memory experiment, d = rounds = 5, p = 0.001: 10^6 shots of every detector", "engine": "stim.tableau", "cpus": 32, "threads": "not set", "timer": "the tableau's or sampler's run, after the circuit text is parsed", "load_before": [ 76.9, 84.3, 68.7 ], "load_after": [ 76.9, 84.3, 68.7 ], "seconds_min": 0.21944941696710885, "seconds_median": 0.22391937510110438, "wall_median": 0.2705464590108022, "peak_rss_mib": 123.4, "baseline_rss_mib": 37.6, "repeats": 5, "ops": null, "settings": null }, { "case": "surface_z_d5_model", "what": "the same circuit's detector error model", "engine": "wai.qec", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 76.9, 84.3, 68.7 ], "load_after": [ 76.9, 84.3, 68.7 ], "seconds_min": 0.002262166, "seconds_median": 0.002312958, "wall_median": 0.05570537503808737, "peak_rss_mib": 5.6, "baseline_rss_mib": 3.0, "repeats": 5, "ops": null, "settings": null }, { "case": "surface_z_d5_model", "what": "the same circuit's detector error model", "engine": "stim.tableau", "cpus": 32, "threads": "not set", "timer": "the tableau's or sampler's run, after the circuit text is parsed", "load_before": [ 76.9, 84.3, 68.7 ], "load_after": [ 76.9, 84.3, 68.7 ], "seconds_min": 0.0026905419072136283, "seconds_median": 0.0027869580080732703, "wall_median": 0.05353224999271333, "peak_rss_mib": 28.5, "baseline_rss_mib": 27.6, "repeats": 5, "ops": null, "settings": null }, { "case": "surface_z_d11_sample", "what": "the rotated surface-code memory experiment, d = rounds = 11, p = 0.001: 10^6 shots of every detector", "engine": "wai.qec", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 76.9, 84.3, 68.7 ], "load_after": [ 77.1, 84.2, 68.8 ], "seconds_min": 0.980566375, "seconds_median": 0.997363208, "wall_median": 1.0504068330628797, "peak_rss_mib": 163.0, "baseline_rss_mib": 3.0, "repeats": 5, "ops": null, "settings": null }, { "case": "surface_z_d11_sample", "what": "the rotated surface-code memory experiment, d = rounds = 11, p = 0.001: 10^6 shots of every detector", "engine": "stim.tableau", "cpus": 32, "threads": "not set", "timer": "the tableau's or sampler's run, after the circuit text is parsed", "load_before": [ 77.1, 84.2, 68.8 ], "load_after": [ 75.9, 83.7, 68.8 ], "seconds_min": 2.1776748340344056, "seconds_median": 2.183669374906458, "wall_median": 2.242437541950494, "peak_rss_mib": 938.5, "baseline_rss_mib": 37.6, "repeats": 5, "ops": null, "settings": null }, { "case": "surface_z_d11_model", "what": "the same circuit's detector error model", "engine": "wai.qec", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 75.9, 83.7, 68.8 ], "load_after": [ 74.7, 83.3, 68.7 ], "seconds_min": 0.024283666, "seconds_median": 0.026374417, "wall_median": 0.1861139580141753, "peak_rss_mib": 32.6, "baseline_rss_mib": 3.0, "repeats": 5, "ops": null, "settings": null }, { "case": "surface_z_d11_model", "what": "the same circuit's detector error model", "engine": "stim.tableau", "cpus": 32, "threads": "not set", "timer": "the tableau's or sampler's run, after the circuit text is parsed", "load_before": [ 74.7, 83.3, 68.7 ], "load_after": [ 74.7, 83.3, 68.7 ], "seconds_min": 0.039864541962742805, "seconds_median": 0.04003533406648785, "wall_median": 0.22282420902047306, "peak_rss_mib": 47.4, "baseline_rss_mib": 27.6, "repeats": 5, "ops": null, "settings": null }, { "case": "qft_n40_amplitudes", "what": "six amplitudes of the 40-qubit QFT of a basis state", "engine": "wai.mps", "cpus": 32, "threads": "1 (no threads)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 74.7, 83.3, 68.7 ], "load_after": [ 74.7, 83.3, 68.7 ], "seconds_min": 0.015904875, "seconds_median": 0.016681, "wall_median": 0.06618754204828292, "peak_rss_mib": 10.3, "baseline_rss_mib": 4.6, "repeats": 5, "ops": null, "settings": null }, { "case": "qft_n40_amplitudes", "what": "six amplitudes of the 40-qubit QFT of a basis state", "engine": "aer.mps", "cpus": 32, "threads": "32", "timer": "the simulator's own time for the experiment, as its result states it (time_taken); the conversion of the circuit to its own form is outside it", "load_before": [ 74.7, 83.3, 68.7 ], "load_after": [ 74.7, 83.3, 68.7 ], "seconds_min": 0.005233792, "seconds_median": 0.005520042, "wall_median": 0.3685570830712095, "peak_rss_mib": 85.9, "baseline_rss_mib": 83.1, "repeats": 5, "ops": 861, "settings": { "precision": "double", "fusion_threshold": 14, "fusion_max_qubit": 5 }, "call_seconds_median": 0.022820041980594397 }, { "case": "qft_n40_amplitudes", "what": "six amplitudes of the 40-qubit QFT of a basis state", "engine": "quimb.mps", "cpus": 32, "threads": "not set", "timer": "the building of the circuit object, which applies each gate as it is added, and the read-out", "load_before": [ 74.7, 83.3, 68.7 ], "load_after": [ 64.9, 81.0, 68.0 ], "seconds_min": 1.9202770839910954, "seconds_median": 1.9317395410034806, "wall_median": 2.169111541006714, "peak_rss_mib": 167.2, "baseline_rss_mib": 160.3, "repeats": 5, "ops": null, "settings": { "arithmetic": "double", "cutoff": 1e-28, "cutoff_mode": "sum2" } }, { "case": "qft_n40_amplitudes", "what": "six amplitudes of the 40-qubit QFT of a basis state", "engine": "wai.tensor_network", "cpus": 32, "threads": "all (32)", "timer": "the engine's run, after the program is read and lowered (the driver's own clock)", "load_before": [ 65.7, 80.9, 68.1 ], "load_after": [ 65.7, 80.9, 68.1 ], "seconds_min": 0.194438083, "seconds_median": 0.197412708, "wall_median": 0.24635199992917478, "peak_rss_mib": 11.8, "baseline_rss_mib": 4.9, "repeats": 5, "ops": null, "settings": null }, { "case": "qft_n40_amplitudes", "what": "six amplitudes of the 40-qubit QFT of a basis state", "engine": "quimb.tensor_network", "cpus": 32, "threads": "not set", "timer": "the building of the circuit object, which applies each gate as it is added, and the read-out", "load_before": [ 65.7, 80.9, 68.1 ], "load_after": [ 70.7, 81.6, 68.4 ], "seconds_min": 0.9160886249737814, "seconds_median": 0.9336580000817776, "wall_median": 1.1526370419887826, "peak_rss_mib": 180.3, "baseline_rss_mib": 166.6, "repeats": 5, "ops": null, "settings": { "arithmetic": "double" } } ] }