  Until high-fidelity quantum computers with a large number of qubits become
widely available, classical simulation remains a vital tool for algorithm
design, tuning, and validation. We present a simulator for the Quantum
Approximate Optimization Algorithm (QAOA). Our simulator is designed with the
goal of reducing the computational cost of QAOA parameter optimization and
supports both CPU and GPU execution. Our central observation is that the
computational cost of both simulating the QAOA state and computing the QAOA
objective to be optimized can be reduced by precomputing the diagonal
Hamiltonian encoding the problem. We reduce the time for a typical QAOA
parameter optimization by eleven times for $n = 26$ qubits compared to a
state-of-the-art GPU quantum circuit simulator based on cuQuantum. Our
simulator is available on GitHub: https://github.com/jpmorganchase/QOKit
