Frontend Development / Machine Learning / Software Development

Classiq Brings Abstraction Layer to Quantum Software Stack

5 Jul 2022 6:00am, by
Classiq

How does software even work in quantum computers, and how do you create “quantum algorithms”? Those were my opening questions for Nir Minerbi, co-founder and CEO of Classiq, an Israeli software company that offers a software development platform for quantum computing.

“Quantum software is manipulating the quantum state vector in a way that will solve your problem,” Minerbi replied. This is done by “multiplying it with a unitary matrix” — which, in layman’s terms, means using a lot of math and logic. The upshot is that quantum software development, at this point in time, involves programming the physical states on a quantum computer. The company describes it as “a little bit like electronic design and a little bit like assembly language.”

As you can probably guess by now, writing quantum software is incredibly difficult. As Minerbi put it, in regards to writing a unity matrix, “it’s really hard to think in this way, right?” The second problem developers will have with quantum computing is the sheer size of the calculations. “On a 300-qubit machine,” Minerbi explained, “the size of this unitary matrix is 2 to the power of 300, which is larger than the number of atoms in the universe.” That means problems have to be divided into smaller workloads (1 or 2-qubit operations).

Going a Layer Above Quantum Circuits

This is where “quantum circuits” come in. According to Wikipedia, “a quantum circuit is a model for quantum computation, similar to classical circuits, in which a computation is a sequence of quantum gates, measurements, initializations of qubits to known values, and possibly other actions.”

“So today,” said Minerbi, “this is basically the level of abstraction in the quantum software stack. You need to design these circuits, which are the software at the gate level.”

To create a quantum circuit, Classiq outlined in a presentation shown to me, “one specifies which ‘qubits’ (wires) connect to which ‘gates’ (square blocks). This is done in quantum assembly language.”

quantum circuit

A quantum circuit, per Classiq.

The circuits are then run on a quantum computer, which is a physical process. “Eventually each of these gate-level operations will be compiled into a physical operation — microwave or laser — that will actually be applied on the physical qubits,” Minerbi explained.

What Classiq has done is add a layer of abstraction onto the current state of quantum computing — which, as noted, is at the gate and machine level. “The methods and tools that were developed in the classical stack for the past 60 years, we’ll bring them to the quantum stack,” said Minerbi.

To achieve this abstraction layer, Classiq created a high-level functional model that can be translated into quantum assembly language. So, as a user, you model the circuit design (via Python or VSCode) and then Classiq’s platform turns that into actual circuit code. You then run this code on one of the leading quantum computing processing services, like Qiskit or Amazon Braket.

Classiq2

From high-level model to quantum circuit

As noted on Classiq’s platform description page, developers are encouraged to “combine built-in quantum modules with user-defined ones” and then “set constraints such as the number of gates, circuit depth and levels of entanglement.” After all this is done, Classiq produces a quantum circuit that can be used on Qiskit, Braket, or another platform.

But is there a reason why developers shouldn’t just use Qiskit or Braket directly, I asked Minerbi?

“Basically what Qiskit allows you to do, which is very important, is to design circuits at gate level in a convenient way,” he replied. “But still it’s gate level, because you need to know which gates to put where and what building blocks to use. And we are one layer on top of that — we are in the layer of functionality of high-level modeling, and our synthesis engine is generating the quantum circuit in Qiskit, or in any other language.”

How Python Developers Can Get Started in Quantum Computing

In order to create the logic for a circuit — what Classiq calls a high-level model — developers can either use the company’s VSCode extension (which has drag-and-drop functionality) or a Python SDK.

Classiq1

Model (in Python) on the left, circuit design in the middle, and circuit code on the right.

I asked Minerbi how difficult it is for a web developer who is familiar with Python to start building quantum computing software on Classiq?

“So we basically have two kinds of users,” he replied. “The first kind is a quantum expert. These people […] are very familiar with quantum algorithms, and use the platform to achieve state-of-the-art results that they couldn’t achieve with Qiskit and other platforms. And the second [kind of user] is Python developers or Machine Learning developers and so on, who are using Classiq to enter into quantum computing.”

Usually, the Python and ML developers start with a few use cases that are good for entrants to quantum computing. One example is Grover’s algorithm, which is often used to speed up unstructured search. It’s a good one to start with, said Minerbi, “because it’s about embedding classical logic in a quantum circuit.”

While Python and ML developers don’t necessarily need to understand quantum information theory in order to understand an algorithm like Grover’s, it does help if they have a background in algebra, added Minerbi.

Since quantum computing is still very new — especially on the software development side — physicists outnumber computer scientists in the industry at this point. However, this is changing and more computer scientists are coming into the field.

“In our company, for example, there are about 45 people,” Minerbi said. “Some of them are quantum information PhDs and postdocs, others are computer scientists with no background in physics — and the combination is powerful.”

Conclusion

The classical computing industry has added layers of abstraction over the years, with each new layer making it easier to develop software. It went from assembly language to higher-level languages (like Python), but we’ve also seen this play out in the web world too — in the early-to-mid 1990s, you needed to code a web page in “raw” HTML, but now you can do it in any number of drag-and-drop design tools. So it’s pleasing to see this same level of abstraction begin to be added to quantum computing.

Clearly, though, we’re in the early days of defining the quantum software stack. Classiq has some competition. A company called Horizon Quantum Computing is “developing a complete compiler stack” for quantum software, and the big service providers like IBM and Amazon offer their own SDKs. But Classiq’s solution seems to be one of the more compelling abstraction layers so far.