Quantum Computing: Open Source from the Start

December 13, 2021

This blog post will discuss why Quantum Computing is a natural step to evolve our computing capabilities. I will give a short overview of the core principles and differences to classical computing and how anyone with interest is able to access quantum computers — using Open Source software.

Why do we care about quantum computing?

Classical computing has advanced tremendously during the recent decades and will still continue to advance. However, Moore’s law (the observation that the number of transistors in a dense integrated circuit doubles about every two years) is currently slowing down and slowly reaches its physical limits.

Why is that? Since integrated circuits cannot grow too much in size (and also not too much in the 3rd dimension due to heating problems) all structures need to become smaller and smaller. The currently best processes (now = end of 2021) are at a 4-5 nm structure scale. The size of a single silicon atom is about 200 pm. So in between a 4 nm structure, we just have approx 20 atoms. This still seems to work, but lowering the scale will not go on infinitely. Quantum effects are already interfering with the structure and spontaneous quantum tunneling may appear soon.

So quantum physics is in the way. But maybe quantum physics itself can help us here: 

In 1982 Richard Feynman, one of the most influential physicists of the last century proposed to construct a computer that actually makes use of quantum physics. This was the start of quantum computing.

Quantum computing: What is it about?

To understand quantum computing, we need to take a step back and look at the strange but fundamental properties of quantum physics. We also should remember that we do not understand how quantum physics really works. We only have a mathematical method to describe the outcome, and this to a phenomenal precision. Therefore, when quantum is discussed, we need to start with mathematics. I will not give a thorough introduction of quantum computing here, as there are very good textbooks available.  A free resource for instance is the Qiskit textbook (https://qiskit.org/textbook/content/ch-ex/).

But to understand the compelling properties of quantum computers, we need to understand some basic, though very strange behaviours:

Quantization:

Energy levels or other properties are “quantized”. This means that there is no continuum of all possible values. As an example, an electron inside an atom can either be in a so-called “ground state” or in one of several “excited states”. Each of these states represent a certain energy level. There is no way that this electron can have an energy that is in between two states. In quantum computing we only look at the ground state “|0>” and the first excited state “|1>”. If we do a measurement, we will find the electron either in the |0> state or in the |1> state.

Superposition:

But if we do not make a measurement, the electron can be in an arbitrary superposition of the |0> and |1> state. This means that we cannot know its exact state, until we do a measurement. This is one of the “magic” properties of quantum systems: In theory all possible combinations and proportions of the “|0>” and the “|1>” state are possible, they only have different probabilities.

By manipulating the system we can influence the superposition and change the relative distribution of the |0> and the |1> state on a continuous scale. So this single electron could hold much more information than “0” or “1”. 

But wait: when we now measure the electron, we still only got “0” or “1”, right? Correct. But if we measure the system very often, say 1000 times, the probability distribution between the “0” and “1” will tell us something about the distribution of the superposition. Tricky, right? Nobody said it is easy….

Entanglement:

An even more disturbing character of quantum systems is entanglement. Entanglement means that two quantum systems that have been in contact with each other at an earlier point in time, can share their quantum state even when they are at a distance. They do not even need to communicate. This has the consequence that if we measure one of the systems we exactly know the quantum state of the second system. 

This strange behaviour makes it possible to transfer information from one system to another without communication. Einstein once called this “spooky action at a distance”.

Computing with quanta

But how do we compute with these guys? First of all, we need to create and isolate such 2-quantum-state objects. In quantum computing these 2-state quantum objects are called “qubits”.

At first this has been a theoretical construct, but since some time, “real” qubits can be built in several different ways using different quantum particles. The most prominent ones are superconducting qubits, trapped ions, photons and some others. The challenge is not only to isolate a quantum system, but also to “interact” with it and to make measurements. Sometimes the current of a single electron needs to be measured.

And there are more challenges: First of all, a quantum state needs to be “conserved” during your calculation, so that it does not spontaneously change its state just by thermal fluctuation. Therefore most qubits need to be cooled down to nearly 0 K, the absolute minimum temperature. Much colder than liquid helium. 

And qubits produce errors that need to be under control and taken into account for your calculations.

So why do we put so much effort into quantum computing?

Well, it is because of their capabilities. I will keep the mathematical formalism minimal, but let’s first look at superposition: Through superposition, a single qubit state |????> can be expressed as a linear combination of the |0> and the |1> state:

|????> = ???? |0> + ???? |1>,

where ???? and ???? are two complex numbers. So instead of only 1 bit, “0” or “1”, a superpositioned qubit can intermediately hold the information of many bits, representing the numbers ???? and ????. If we now measure this qubit, we got “0” with the probability of |????|² and “1” with the probability of |????|². We just need to do many measurements with this qubit state and we get these values.


But the real power of quantum computing comes from entanglement: if we entangle multiple qubits, the information the system contains increases exponentially. When I entangle 2 qubits, I will need 512 bits to represent its joint state, for 160 qubits I would already need more bits than there are atoms on planet earth to completely determine the state of all qubits. This theoretically allows us to tackle complex questions in a completely different way in the future. But you don’t have to wait:

Quantum computing is already there and nowadays everyone can access quantum systems on the internet.

Open Source FTW: Access to quantum systems

Quantum Computers are still rare and only built by a handful of companies. The good thing: These companies want to spread the word and educate many people on quantum computing! And how do you engage many professionals to date: Open Source! This is why Open Source is dominating the quantum enabling technologies.

Here some prominent examples:

IBM’s Qiskit:

The Qiskit framework (https://qiskit.org/), source code at https://github.com/Qiskit , is probably the most active and mature python framework. It allows not only access to IBM Quantum systems and consists of multiple levels that allow either for low level kernel engineering and algorithmic abstraction layers. IBM lets you connect to IBM cloud quantum systems and access Quantum simulators and some smaller real quantum hardware for free!

Qiskit (including its starting project qiskit-terra) has 5.5k stars on github and 1.2M downloads.

Google’s Circ:

The Circ framework (https://quantumai.google/cirq) , source code at https://github.com/quantumlib/Cirq , is also based on python and a very large player and nicely integrated into the Google cloud offering.

Circ has 3.1k stars and 773k downloads.

More Open Source frameworks are PyQuill (https://github.com/rigetti/pyquil)  from Rigetti, Amazons Bracket (https://github.com/aws/amazon-braket-sdk-python) and Microsofts Q# (https://github.com/microsoft/QuantumLibraries).

But all Quantum libraries have one thing in common: They are Open Source! Open Source already dominates the Quantum market! 

More to come…

In a later post I will go a little deeper into the mathematics of quantum computing and we will learn how to prepare and entangle qubits using qiskit! This is something like the “Hello World” in quantum computing. Stay tuned!