Benchmark Results (original) (raw)
To demonstrate the practical usefulness of QuIDDPro, it has been compared with a number of simulation methods which all utilize explicit vectors and matrices. Results for simulation with the density matrix model are provided for a number of quantum circuit benchmarks. Results for simulation with the state vector model are provided for instances of Grover's quantum search algorithm with up to 40 qubits. As the results indicate, QuIDDPro far outperforms the explicit vector/matrix methods. It is also worth noting that stabilizer circuit simulation [8] cannot efficiently simulate most of the density matrix benchmarks or the instances of Grover's quantum search algorithm.
Density Matrix Results
The benchmarks used are representative of quantum circuit applications in reversible logic, quantum communication,quantum error correction, and quantum search. For each benchmark, QuIDDPro is compared with one of the best-known density matrix simulators that uses explicit matrices, QCSim [6]. Any simulator which uses explicit matrices will have similar performance to QCSim. These results are reproduced from [3]. > 2GB indicates that a memory usage cutoff of 2GB was exceeded and therefore simulation could not be finished. The results were obtained by running each simulator on a dual processor Intel Xeon workstation running linux. All of the benchmarks, in addition to other circuit descriptions, are bundled with the QuIDDPro simulator software.
Performance results for QuIDDPro and QCSim on the reversible logic benchmarks. > 2GB indicates that a memory usage cutoff of 2GB was exceeded and simulation was terminated.
Benchmark | No. of Qubits | No. of Gates | QuIDDPro | QCSim | ||
---|---|---|---|---|---|---|
Runtime (s) | Peak Memory (MB) | Runtime (s) | Peak Memory (MB) | |||
rc_adder1 | 16 | 24 | 0.44 | 0.0625 | N/A | > 2GB |
rc_adder2 | 16 | 24 | 0.44 | 0.0625 | N/A | > 2GB |
rc_adder3 | 16 | 24 | 0.44 | 0.0625 | N/A | > 2GB |
rc_adder4 | 16 | 24 | 0.44 | 0.0625 | N/A | > 2GB |
9sym1 | 12 | 29 | 0.2 | 0.0586 | 8.01 | 128.1 |
9sym2 | 12 | 29 | 0.2 | 0.0586 | 8.02 | 128.1 |
9sym3 | 12 | 29 | 0.2 | 0.0586 | 8.04 | 128.1 |
9sym4 | 12 | 29 | 0.2 | 0.0586 | 8 | 128.1 |
9sym5 | 12 | 29 | 0.2 | 0.0586 | 7.95 | 128.1 |
ham15_1 | 15 | 148 | 1.99 | 0.121 | N/A | > 2GB |
ham15_2 | 15 | 148 | 2.01 | 0.121 | N/A | > 2GB |
ham15_3 | 15 | 148 | 1.99 | 0.121 | N/A | > 2GB |
Performance results for QuIDDPro and QCSim on the quantum error correction and quantum communication benchmarks. > 2GB indicates that a memory usage cutoff of 2GB was exceeded and simulation was terminated.
Benchmark | No. of Qubits | No. of Gates | QuIDDPro | QCSim | ||
---|---|---|---|---|---|---|
Runtime (s) | Peak Memory (MB) | Runtime (s) | Peak Memory (MB) | |||
steaneZ | 13 | 143 | 0.6 | 0.672 | 287 | 512 |
steaneX | 12 | 120 | 0.27 | 0.68 | 53.2 | 128 |
hadder_bf1 | 24 | 49 | 18.3 | 1.48 | N/A | > 2GB |
hadder_bf2 | 24 | 49 | 18.7 | 1.48 | N/A | > 2GB |
hadder_bf3 | 24 | 49 | 18.7 | 1.48 | N/A | > 2GB |
hadder_pf1 | 24 | 51 | 21.2 | 1.50 | N/A | > 2GB |
hadder_pf2 | 24 | 51 | 21.2 | 1.50 | N/A | > 2GB |
hadder_pf3 | 24 | 51 | 20.7 | 1.50 | N/A | > 2GB |
grover_s1 | 24 | 50 | 2301 | 94.2 | N/A | > 2GB |
grover_s_bf1 | 24 | 71 | 2208 | 94.3 | N/A | > 2GB |
grover_s_pf1 | 24 | 73 | 2258 | 94.2 | N/A | > 2GB |
bb84Eve | 9 | 26 | 0.02 | 0.129 | 0.19 | 2.0 |
bb84NoEve | 7 | 14 | < 0.01 | 0.0313 | < 0.01 | 0.152 |
Performance results for QuIDDPro and QCSim on the quantum search benchmark. The number of qubits (and therefore the search space) is increased in each instance. The oracle used in every instance finds one item in the search space. > 2GB indicates that a memory usage cutoff of 2GB was exceeded and simulation was terminated.
No. of Qubits | No. of Gates | QuIDDPro | QCSim | ||
---|---|---|---|---|---|
Runtime (s) | Peak Memory (MB) | Runtime (s) | Peak Memory (MB) | ||
5 | 32 | 0.05 | 0.0234 | 0.01 | 0.00781 |
6 | 50 | 0.07 | 0.0391 | 0.01 | 0.0352 |
7 | 84 | 0.11 | 0.043 | 0.08 | 0.152 |
8 | 126 | 0.16 | 0.0586 | 0.54 | 0.625 |
9 | 208 | 0.27 | 0.0742 | 3.64 | 2.50 |
10 | 324 | 0.42 | 0.0742 | 23.2 | 10.0 |
11 | 520 | 0.66 | 0.0898 | 151 | 40.0 |
12 | 792 | 1.03 | 0.105 | 933 | 160 |
13 | 1224 | 1.52 | 0.141 | 5900 | 640 |
14 | 1872 | 2.41 | 0.125 | N/A | > 2GB |
15 | 2828 | 3.62 | 0.129 | N/A | > 2GB |
16 | 4290 | 5.55 | 0.145 | N/A | > 2GB |
17 | 6464 | 8.29 | 0.152 | N/A | > 2GB |
18 | 9690 | 12.7 | 0.246 | N/A | > 2GB |
19 | 14508 | 18.8 | 0.199 | N/A | > 2GB |
20 | 21622 | 28.9 | 0.203 | N/A | > 2GB |
State Vector Results
Using intances of Grover's quantum search algorithm up to 40 qubits in size, QuIDDPro has been compared with three different implementations of state vector simulation which all use explicit vectors and clever matrix multiplication techniques that avoid explicit creation of the operator (gate) matrices. Performance results are provided for 10 to 40 qubit instances of Grover's quantum search algorithm with two different oracles. Oracle 1 is an oracle which finds one element in the search space, and Oracle 2 is a "mod-1024" oracle wich finds elements whose ten least significant index bits are 1. "Octave" indicates performance results for an Octave implementation, "Matlab" indicates performance results for a Matlab implementation, and "Blitz++" indicates performance results for a C++ implementation which uses the Blitz++ library. Any simulator which uses explicit matrices will have similar performance to the Blitz++ implementation if it is compiled, or it will have similar performance to the Matlab and Octave implementations if it is interpreted. These results are reproduced from [4]. > 24hrs indicates that a runtime cutoff of 24 hours was exceeded. > 1.5GB indicates that a memory usage cutoff of 1.5GB was exceeded. If any simulation method exceeded either cutoff, simulation was terminated. NA indicates that after one week of running, the memory usage was still steadily growing, preventing a peak memory usage measurement. The results were obtained by running each simulation method on a dual processor Intel Xeon workstation running linux.
Performance results for QuIDDPro, Blitz++, Matlab, and Octave on the quantum search benchmark using Oracle 1. The number of qubits (and therefore the search space) is increased in each instance. > 24hrs indicates that a runtime cutoff of 24 hours was exceeded, while > 1.5GB indicates that a memory usage cutoff of 1.5GB was exceeded. If either or both cutoffs were exceeded, simulation was terminated. NA indicates that after one week of running, the memory usage was still steadily growing, preventing a peak memory usage measurement.
No. of Qubits | QuIDDPro | Blitz++ | Matlab | Octave | ||||
---|---|---|---|---|---|---|---|---|
Runtime (s) | Peak Memory (MB) | Runtime (s) | Peak Memory (MB) | Runtime (s) | Peak Memory (MB) | Runtime (s) | Peak Memory (MB) | |
10 | 0.33 | 9.38e-2 | 0.15 | 3.52e-2 | 6.64 | 1.05e-2 | 80.6 | 2.64e-2 |
11 | 0.54 | 0.121 | 0.48 | 8.20e-2 | 22.5 | 2.07e-2 | 2.65e2 | 5.47e-2 |
12 | 0.83 | 0.137 | 1.49 | 0.176 | 74.2 | 4.12e-2 | 8.36e2 | 0.105 |
13 | 1.30 | 0.137 | 4.70 | 0.309 | 2.55e2 | 8.22e-2 | 2.75e3 | 0.213 |
14 | 2.01 | 0.137 | 14.6 | 0.559 | 1.06e3 | 0.164 | 1.03e4 | 0.426 |
15 | 3.09 | 0.137 | 44.7 | 1.06 | 6.76e3 | 0.328 | 4.82e4 | 0.837 |
16 | 4.79 | 0.145 | 1.35e2 | 2.06 | > 24hrs | 0.656 | > 24hrs | 1.74 |
17 | 7.36 | 0.172 | 4.09e2 | 4.06 | > 24hrs | 1.31 | > 24hrs | 3.34 |
18 | 11.3 | 0.172 | 1.23e3 | 8.06 | > 24hrs | 2.62 | > 24hrs | 4.59 |
19 | 17.1 | 0.172 | 3.67e3 | 16.1 | > 24hrs | 5.24 | > 24hrs | 13.4 |
20 | 26.2 | 0.172 | 1.09e4 | 32.1 | > 24hrs | 10.5 | > 24hrs | 27.8 |
21 | 39.7 | 0.195 | 3.26e4 | 64.1 | > 24hrs | N/A | > 24hrs | 55.6 |
22 | 60.5 | 0.207 | > 24hrs | 1.28e2 | > 24hrs | N/A | > 24hrs | N/A |
23 | 92.7 | 0.207 | > 24hrs | 2.56e2 | > 24hrs | N/A | > 24hrs | N/A |
24 | 1.40e2 | 0.223 | > 24hrs | 5.12e2 | > 24hrs | N/A | > 24hrs | N/A |
25 | 2.08e2 | 0.230 | > 24hrs | 1.02e3 | > 24hrs | N/A | > 24hrs | N/A |
26 | 3.12e2 | 0.238 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
27 | 4.72e2 | 0.254 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
28 | 7.07e2 | 0.262 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
29 | 1.08e3 | 0.277 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
30 | 1.57e3 | 0.297 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
31 | 2.35e3 | 0.301 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
32 | 3.53e3 | 0.305 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
33 | 5.23e3 | 0.320 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
34 | 7.90e3 | 0.324 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
35 | 1.15e4 | 0.348 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
36 | 1.71e4 | 0.352 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
37 | 2.57e4 | 0.371 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
38 | 3.82e4 | 0.375 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
39 | 5.64e4 | 0.395 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
40 | 8.23e4 | 0.398 | > 24hrs | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
Performance results for QuIDDPro, Blitz++, Matlab, and Octave on the quantum search benchmark using Oracle 2. The number of qubits (and therefore the search space) is increased in each instance. > 24hrs indicates that a runtime cutoff of 24 hours was exceeded, while > 1.5GB indicates that a memory usage cutoff of 1.5GB was exceeded. If either or both cutoffs were exceeded, simulation was terminated. NA indicates that after one week of running, the memory usage was still steadily growing, preventing a peak memory usage measurement.
No. of Qubits | QuIDDPro | Blitz++ | Matlab | Octave | ||||
---|---|---|---|---|---|---|---|---|
Runtime (s) | Peak Memory (MB) | Runtime (s) | Peak Memory (MB) | Runtime (s) | Peak Memory (MB) | Runtime (s) | Peak Memory (MB) | |
13 | 0.617 | 0.137 | 2.47 | 0.252 | 1.31e2 | 8.22e-2 | 1.39e3 | 0.218 |
14 | 0.662 | 0.141 | 5.42 | 0.563 | 7.26e2 | 0.164 | 3.75e3 | 0.436 |
15 | 0.705 | 0.145 | 11.7 | 1.06 | 4.27e3 | 0.328 | 1.11e4 | 0.873 |
16 | 0.756 | 0.172 | 24.9 | 2.06 | 2.23e4 | 0.656 | 3.70e4 | 1.74 |
17 | 0.805 | 0.176 | 53.4 | 4.06 | > 24hrs | 1.31 | > 24hrs | 3.34 |
18 | 0.863 | 0.180 | 1.13e2 | 8.06 | > 24hrs | 2.62 | > 24hrs | 4.59 |
19 | 0.910 | 0.180 | 2.39e2 | 16.1 | > 24hrs | 5.24 | > 24hrs | 13.4 |
20 | 0.965 | 0.195 | 5.15e2 | 32.1 | > 24hrs | 10.5 | > 24hrs | 27.8 |
21 | 1.03 | 0.199 | 1.14e3 | 64.1 | > 24hrs | N/A | > 24hrs | 55.6 |
22 | 1.09 | 0.207 | 2.25e3 | 1.28e2 | > 24hrs | N/A | > 24hrs | N/A |
23 | 1.15 | 0.215 | 5.21e3 | 2.56e2 | > 24hrs | N/A | > 24hrs | N/A |
24 | 1.21 | 0.227 | 1.02e4 | 5.12e2 | > 24hrs | N/A | > 24hrs | N/A |
25 | 1.28 | 0.238 | 2.19e4 | 1.02e3 | > 24hrs | N/A | > 24hrs | N/A |
26 | 1.35 | 0.246 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
27 | 1.41 | 0.256 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
28 | 1.49 | 0.266 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
29 | 1.55 | 0.297 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
30 | 1.63 | 0.301 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
31 | 1.71 | 0.305 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
32 | 1.78 | 0.324 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
33 | 1.86 | 0.328 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
34 | 1.94 | 0.348 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
35 | 2.03 | 0.352 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
36 | 2.12 | 0.375 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
37 | 2.21 | 0.375 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
38 | 2.29 | 0.395 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
39 | 2.37 | 0.398 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
40 | 2.47 | 0.408 | > 1.5GB | > 1.5GB | > 24hrs | N/A | > 24hrs | N/A |
Copyright © 2004, 2005, 2006, 2007 George F. Viamontes, Igor L. Markov, John P. Hayes, and The Regents of the University of Michigan. All rights reserved.