  Quantum Hamiltonian simulation, which simulates the evolution of quantum
systems and probes quantum phenomena, is one of the most promising applications
of quantum computing. Recent experimental results suggest that
Hamiltonian-oriented analog quantum simulation would be advantageous over
circuit-oriented digital quantum simulation in the Noisy Intermediate-Scale
Quantum (NISQ) machine era. However, programming analog quantum simulators is
much more challenging due to the lack of a unified interface between hardware
and software. In this paper, we design and implement SimuQ, the first framework
for quantum Hamiltonian simulation that supports Hamiltonian programming and
pulse-level compilation to heterogeneous analog quantum simulators.
Specifically, in SimuQ, front-end users specify the target quantum system with
Hamiltonian Modeling Language, and the Hamiltonian-level programmability of
analog quantum simulators is specified through a new abstraction called the
abstract analog instruction set (AAIS) and programmed in AAIS Specification
Language by hardware providers. Through a solver-based compilation, SimuQ
generates executable pulse schedules for real devices to simulate the evolution
of desired quantum systems, which is demonstrated on superconducting (IBM),
neutral-atom (QuEra), and trapped-ion (IonQ) quantum devices. Moreover, we
demonstrate the advantages of exposing the Hamiltonian-level programmability of
devices with native operations or interaction-based gates and establish a small
benchmark of quantum simulation to evaluate SimuQ's compiler with the above
analog quantum simulators.
