  Recent demonstrations of superconducting quantum computers by Google and IBM
and trapped-ion computers from IonQ fueled new research in quantum algorithms,
compilation into quantum circuits, and empirical algorithmics. While online
access to quantum hardware remains too limited to meet the demand, simulating
quantum circuits on conventional computers satisfies many needs. We advance
Schr\"odinger-style simulation of quantum circuits that is useful standalone
and as a building block in layered simulation algorithms, both cases are
illustrated in our results. Our algorithmic contributions show how to simulate
multiple quantum gates at once, how to avoid floating-point multiplies, how to
best use instruction-level and thread-level parallelism as well as CPU cache,
and how to leverage these optimizations by reordering circuit gates. While not
described previously, these techniques implemented by us supported published
high-performance distributed simulations up to 64 qubits. To show additional
impact, we benchmark our simulator against Microsoft, IBM and Google simulators
on hard circuits from Google.
