  This paper presents the definition and implementation of a quantum computer
architecture to enable creating a new computational device - a quantum computer
as an accelerator. In this paper, we present explicitly the idea of a quantum
accelerator which contains the full stack of the layers of an accelerator. Such
a stack starts at the highest level describing the target application of the
accelerator. The next layer abstracts the quantum logic outlining the algorithm
that is to be executed on the quantum accelerator. In our case, the logic is
expressed in the universal quantum-classical hybrid computation language
developed in the group, called OpenQL, which visualised the quantum processor
as a computational accelerator. The OpenQL compiler translates the program to a
common assembly language, called cQASM, which can be executed on a quantum
simulator. The cQASM represents the instruction set that can be executed by the
micro-architecture implemented in the quantum accelerator. In a subsequent
step, the compiler can convert the cQASM to generate the eQASM, which is
executable on a particular experimental device incorporating the
platform-specific parameters. This way, we are able to distinguish clearly the
experimental research towards better qubits, and the industrial and societal
applications that need to be developed and executed on a quantum device. The
first case offers experimental physicists with a full-stack experimental
platform using realistic qubits with decoherence and error-rates while the
second case offers perfect qubits to the quantum application developer, where
there is no decoherence nor error-rates. We conclude the paper by explicitly
presenting three examples of full-stack quantum accelerators, for an
experimental superconducting processor, for quantum accelerated genome
sequencing and for near-term generic optimisation problems based on quantum
heuristic approaches.
