A Python Framework for the Design of Quantum Control Stacks

There is more than a cat in the Schroedinger Box: a Python

Anton Buyskikh

Data Science Distributed Systems Open-Source Templating

Python is used in all scientific fields. Quantum computing is no exception. The technology that can potentially revolutionise the future of quantum computation relies on Python’s simplicity to drive its frontend. Almost all commercial quantum hardware companies provide Jupyter notebooks and Python-based APIs to send programs to their quantum machines. These quantum programs are compiled into specific control sequences that are sent to the backend logic. In most quantum computers the backend is a complex system, composed of multiple CPUs and FPGAs, that creates the quantum state and performs quantum operations.
We call the logic that runs in this backend the “quantum control stack” – a combination of CPU code and FPGA/ASIC logic that must borrow from high-energy physics, telecommunications and artificial intelligence to function. Defining a framework to make the backend efficient and user-friendly has been Riverlane’s goal for the past year.
We have designed a framework – Deltaflow - that builds on Python3.x to provide three components: a language, a simulator and a runtime.
The language, Deltalanguage, allows users to define their heterogeneous system as a Dataflow graph in Python. We currently support CPU and FPGA computing units. The former units rely on Multithreading, Queues and Typing to implement the Dataflow paradigm. The latter units use a Python-based metalanguage (Migen) to define and simulate FPGA logic.

The simulator, Deltasimulator, generates a SystemC representation of the original graph and adds valuable timing information to the FPGA code. The CPU code remains untouched and is simulated as python code.

Finally, the runtime, Deltaruntime, compiles the FPGA code, deploys to the different components of the system and creates a backbone to exchange configurations, coarse-synchronise the blocks and handle messages / tracing.

Type: Talk (45 mins); Python level: Advanced; Domain level: Beginner

Anton Buyskikh