  Recent computations involving quantum processing units (QPUs) have
demonstrated a series of challenges inherent to hybrid classical-quantum
programming, compilation, execution, and verification and validation. Despite
considerable progress, system-level noise, limited low-level instructions sets,
remote access models, and an overall lack of portability and classical
integration presents near-term programming challenges that must be overcome in
order to enable reliable scientific quantum computing and support robust
hardware benchmarking. In this work, we draw on our experience in programming
QPUs to identify common concerns and challenges, and detail best practices for
mitigating these challenge within the current hybrid classical-quantum
computing paradigm. Following this discussion, we introduce the XACC quantum
compilation and execution framework as a hardware and language agnostic
solution that addresses many of these hybrid programming challenges. XACC
supports extensible methodologies for managing a variety of programming,
compilation, and execution concerns across the increasingly diverse set of
QPUs. We use recent nuclear physics simulations to illustrate how the framework
mitigates programming, compilation, and execution challenges and manages the
complex workflow present in QPU-enhanced scientific applications. Finally, we
codify the resulting hybrid scientific computing workflow in order to identify
key areas requiring future improvement.
