The conundrum of a quantum computer

Author: EIS Release Date: Mar 2, 2020


Quantum computing is evolving differently from classical computing, says Steve Brierley, with work to do on its middle layer.

Quantum computers are truly remarkable – and weird. They are made up of qubits which can be in one of two states, just like a conventional computer, but, as quantum objects they can also be in any combination, or superposition, of these states.

Like Schroedinger’s cat they can be both dead and alive.

It is not at all obvious how to go from a weird quantum object to a fully-fledged quantum computer that is capable of calculating useful things like the properties of a material. How do you programme something that’s both dead and alive at the same time?

To understand that, we need to take a look at what kind of algorithms we will run on quantum computers.

Many quantum computers that are being designed are universal, which means that they can, in principle, run any programme and, by extension, any algorithm.

But not all quantum algorithms are going to show acceleration compared with their classical cousins, because it is by no means trivial to exploit the advantage that superposition may give.

Nevertheless, researchers have found over 400 quantum algorithms, capable of doing linear algebra, fourier transformations, searching, factoring numbers and much more.

Some of these algorithms are just a bit faster than conventional computers, but a few show exponential quantum speed-up.Various quantum programming languages have been designed to express quantum algorithms in code. These languages have borrowed heavily from the best classical languages in expressiveness and functionality.

There are languages that look like Haskell (Quipper and QML), and many languages that are embedded in Python (for example ProjectQ or Quiskit) and a language that is very similar to C (QCL).

Work on programming languages has advanced handsomely and beautiful quantum programmes can be written but, eventually, the instructions from the quantum programme have to manipulate a physical system consisting of qubits. Various types of qubits are currently being investigated.

The two most advanced systems are trapped ions and superconducting qubits. The code for a clever new algorithm has to be compiled, the communication between different blocks of the architecture has to be managed and, at the bottom of the stack, the algorithm will have been transformed into control pulses changing the qubit states in order to execute a computation. How exactly this stack will look is a matter of intense research.

There are complicating factors. First, almost all models of quantum computers assume a classical co‑processor consisting of CPUs and, occasionally, FPGAs. After all, a classical co-processor is needed to orchestrate a complicated quantum sequence.

There is another reason why we would want to integrate classical compute. Algorithms that run on the small and noisy quantum computers of the near future are likely to be quantum‑classical hybrid algorithms. The hardest parts of this computation are delegated to the quantum computer while the classical computer carries out all the tasks in which a quantum computer does not necessarily excel.

It is crucial to optimise the control carried out by the classical computer to demonstrate that a useful quantum computation is faster than a classical computation.

Second, in the long run we will need a layer that is little used in classical computing – error correction. Qubits are very sensitive and easily decohere. There must be a way for the system to recognise that and correct for any errors. Integrating these error correcting codes in the quantum toolchain is not straightforward.

The choice of error correcting codes is fundamental to how the layers further up the stack look – but how exactly the least resource‑intensive error-correcting code will look is not yet clear.

Early classical computers had circuits and an assembly-level language on top. The stack above – high level languages, compilers, operating systems, architecture models – were slowly built on top of this very simple model of a computer.

The quantum computing stack looks more like Swiss cheese. The community has succeeded in designing the top (programming language) and the bottom (qubits and gates) layers but the middle of the stack contains countless holes.