Speeding up simulations of quantum circuits
Background
A possible application for near-term quantum computers is the simulation of quantum systems, e.g., in condensed-matter physics. Here, the user considered the dynamics of an Ising system driven out of equilibrium by a periodic perturbation, and compared different approximations by simulating the corresponding quantum circuits for manageable system sizes (20 qubits). The model is formulated using the python library Cirq and then passed to the simulator qsim written in C++.
Calculations were carried out as single-node jobs on the Woody cluster. In the cluster monitoring, the jobs showed relatively poor performance with strongly fluctuating FLOPS and vectorization values.
Analysis
Profiling data indicated most of the compute time is spent on translating the quantum circuit from the Cirq to the qsim format, and not on the actual simulations. Analyzing the Cirq-qsim interface function revealed that this happens because most gates occurring in the quantum circuits belong to a class not supported by qsim and first need to be decomposed.
These gates, called Pauli phasors, appear when approximating the time-evolution operator of a general Hamiltonian by a Suzuki-Trotter decomposition. For the Hamiltonians studied here, however, only specific Pauli phasors are needed and those are in fact equivalent to standard gates supported by qsim.
Optimization
By avoiding the use of Pauli phasors and formulating the quantum circuit in terms of more specialized gates, the time needed for the conversion between Cirq and qsim becomes negligible. Additional optimizations can be done to reduce the time spent on constructing the quantum circuits in Cirq.
Summary
Simulations of quantum circuits were sped up by significantly reducing the overhead due to the conversion of the circuits between Cirq and the external simulator qsim. For the considered model and systems of 20 qubits, the overall speedup factor is about 4–5. This is achieved by reducing the operations done in python/Cirq without modifying the actual simulation code of the qsim library.