One very useful tools for those wishing to develop quantum programs is a classical computing based simulator that can demonstrate how a quantum computer would process the program. Although the drawback of this approach is that it is limited to the number of qubits the classical computer can simulate, but it has the advantage is that the classical computing simulations can be performed on an in-house system and not require submitting a job to some quantum computer in the cloud. The simulations can also be done in an error-free environment so that programs can be initially developed to check out the basic logic without a programmer having to deal with noisy qubits that can cause uncertainty when analyzing the results of a run. Although a real quantum computer with full error correction could accomplish the same thing, this would require machines that have thousands of qubits and won’t be available for many years.
In order to improve the performance of these simulations, a recent trend is to utilize GPUs (Graphics Processing Units) and other special processors to execute these simulations more efficiently than general purpose processing units. Because quantum operations can be described using matrix mathematics and tensor networks, the architecture of GPUs is better optimized to process these types of operations.
To this end, NVIDIA has just announced an SDK (Software Development Kit) called cuQuantum that provides simulation capabilities on NVIDIA’s latest GPUs. The package contains APIs that allow one to create a quantum program in one of the common frameworks such as Qiskit, Cirq, ProjectQ, Q#, and others and then simulate it on a platform that contains one of the recent generation of NVIDIA GPUs. The SDK currently supports two different methods of simulation. The State Vector Simulator provides high fidelity results, but requires a memory space that grows 2n with the number of qubits and limits the total number of qubits that can be simulated The Tensor Network method trades memory footprint for memory to allow one to simulate a program with a larger number of qubit at a slightly reduced fidelity. NVIDIA will continue development of this SDK and will be releasing additional simulation capabilities in the future.
The performance of this approach can be quite good. As an example NVIDIA worked with Caltech to simulate Google’s 53 qubit Sycamore processor with a circuit that had a depth of 20, similar to the one used in Google’s quantum supremacy experiment and were able to complete the simulation in 9.3 minutes on NVIDIA in-house Selene supercomputer. Google’s experiment took a little over 3 minutes on Sycamore and estimated that replicating it on Oak Ridge’s Summit supercomputer would take 10,000. However, to be fair, the full Google experiment required running it for 1,000,000 shots while the NVIDIA/Caltech 9.3 minute run was just for one shot. This is still a substantial improvement over the Summit estimate and it is likely that fewer shots would be needed to get a valid answer in the GPU simulation because it doesn’t have noisy qubits.
The cuQuantum SDK is currently under final testing and NVIDIA expects to start offering early access in Q3. For more on this SDK you can read a blog post on the NVIDIA website here and to sign up for early interest and receive updates on the product, you can go to their webpage here.
April 12, 2021