Quantum Processing Unit¶
At the heart of every type of quantum computer lies the quantum processing unit (QPU), which is responsible for executing quantum programs. Just like a classical central processing unit (CPU), the QPU is defined by its instruction set (quantum operations), its available components (quantum elements) and their connectivity graph (topology).
In this chapter, we will explain each of these three components in turn. We start by explaining how quantum operations are constructed and how quantum elements are defined, before finally demonstrating how they can be combined to construct a QPU with arbitrary topology.
Quantum Operations¶
Quantum computing experiments consist of quantum circuits of gates applied on a set of qubits. Therefore, the natural description of such circuits is in terms of quantum gates and operations that are applied on a qubit or a set of qubits.
In LabOne Q, you can do this using QuantumOperations. A set of quantum operations is
collection of Sections and pulses implementing common operations on qubits.
For example, single-qubit gates (x180, y90, etc.), two-qubit gates (CZ, CR, CNOT, etc.),
or any other collection of sections and pulses that are reused often in
quantum experiments, such as an active-reset operation.
Design and Implementation¶
The pulse commands introduced before operate on
Logical Signal Lines.
Quantum operations operate on qubits and wrap a Section around one or more pulse
commands applied on the relevant logical signals of the qubits. Therefore, the quantum
operations have the following call signature:
section = my_quantum_operation(qubit, ...)
When acting on a single qubit, the return value of a quantum operation is a Section.
You also have the option of broadcasting quantum operations by passing a list of qubits.
This means that the operation is run all qubits in parallel.
When one broadcasts an operation over a list of qubits, it creates one operation section per qubit. The operation thus returns a list of sections. All those sections will be added to the section currently being built if there is one. We activate broadcasting just by supplying a list of qubits instead of a single qubit, like so:
sections = my_quantum_operation(qubits, ...)
When broadcasting, other parameters of the operation may be either specified per-qubit or once for all the qubits. If a parameter is supplied as a list (or tuple) it is treated as being per-qubit. Otherwise the single value supplied is used for all the qubits.
Note that the broadcasting feature is currently an experimental feature and might still change in the future.
In the tutorial on Quantum Operations, we show you how to create a set of quantum operations and how to use them in LabOne Q Experiments with your own experimental pulse sequence. Check it out!
Quantum Elements¶
The quantum elements of a QPU are the available components on which quantum operations can be applied and are typically categorized by their function. For example, the most famous type of quantum element is a qubit, which is responsible for storing one quantum bit of information. Another common type of quantum element is a coupler, which is responsible for coupling multiple qubits. Each type of quantum element has their own subset of allowed quantum operations.
Note
Different types of quantum elements may correspond to the same type of physical component in the hardware. For example, a transmon qubit in one experiment may, in principle, be used as a tunable coupler in another experiment.
In LabOne Q, we construct these different types of component using the
QuantumElement class. At its core, a QuantumElement instance defines a signal
mapping from role to logical signal path, specifies a signal calibration, and provides
a corresponding set of parameters. Check out the tutorial on Quantum Elements
for step-by-step examples of how to create your own types of quantum elements and how to
use them in LabOne Q Experiments.
QPU and QPU Topology¶
Abstractly, a set of allowed quantum operations together with a set of quantum elements is sufficient to define a QPU. In LabOne Q, if we construct a QPU using only these two parameters, then we will construct a QPU with a trivial topology. In other words, the quantum elements will have no connections and so only single-qubit gates can be applied. In order to implement more sophisticated quantum circuits, we need to additionally specify the QPU topology.
We can define the QPU topology by adding edges to the topology graph. Each edge may be directed and have an associated quantum element, along with its own set of edge parameters. The QPU topology varies depending on the type of QPU and is crucial for efficiently implementing multi-qubit gates and suppressing noise. Check out the tutorial on QPU Topology for further details on the QPU topology and how it may be applied in real experiments.