Skip to content

Architecture Proposal

Lukas Prediger edited this page Dec 4, 2018 · 3 revisions

Overview

Note: information on this page is quite old and in parts outdated. Of the components listed below, the pulse and measurements modeling and, to an extent, hardware components are currently implemented or in active development. The other components are from early conceptual stages and may be implemented in the far future or not tackled at all if other software already provides the functionality in question and can be integrated with qupulse.

The following figure shows a first draft of a division of the software into packages / components. stuff The arrows indicate usage, i.e. if an arrow points from A to B, A uses (parts of) B. Layering and increased abstraction of components is indicated by vertical positioning. The higher "up" a component is, the more it abstracts from the actual hardware.

Component Roles

This chapter very briefly describes the intended roles of packages. These are subject to change as the design gets more and more refined.

Quantum Circuits

(so far only conceptual) Contains classes to represent quantum circuits in the software, such as Qubits, Gates, etc. Does not contain any logic operating on these. Depending on the actual use case, the represented quantum circuit can then either be simulated or executed on the hardware using the corresponding components.

Simulation Framework

(so far only conceptual) A component that can be used to simulate the behavior of a quantum circuit. Most likely a (wrapper for) an existing software (e.g. QuTiP).

QC Runtime

(so far only conceptual) A component that can be used to execute a quantum circuit on real qubit hardware. It will configure timestreams with pulses and measurements corresponding to quantum circuit gates start their execution.

Timestreams

(so far only conceptual) Set up complex execution paths. Sequences of pulses with flow controls (branching, looping) possibly depending on measured hardware behavior, feedback loops, etc. Association between output and input (pulses and measurements).

Pulses

A component to define pulses (control signals) or templates for pulses on different levels of sophistication: Directly as a waveform, as a sequence of important points with interpolation in between (pulse table (pulsetab)) with ability to nest pulses to construct more complex pulses out of existing, simple ones.

Measurement

Logic to configure data acquisition and analysis: Masks, post-processing, etc.. Currently part of the pulses component.

Hardware Abstraction

Abstracts from the real hardware: Hardware qubits are controlled using voltage signals and their behavior is measured as such. These signals are generated/measured by dedicated hardware devices, i.e., arbitrary waveform generators (AWGs) and data acquisition devices/cards (DAQs). A variety of such devices from multiple manufacturers exist. Hardware abstraction should, first, abstract from the specifics of a device and, second, from the hardware setup (which single device is connected to which qubit) and offer only a uniform set of input and output channels to layers above as well as means to configure devices through a common interface.

Clone this wiki locally