Flipping the script on quantum software development
I came across this 2018 PLOS ONE article on “open source software in quantum computing” and focused on their diagram depicting the full-stack software development process.
The leftmost part (defining the problem) is self-explanatory. If you don’t know what problem you’re trying to solve (“find the best route”, “determine the ground state of a molecule”, “calculate the value of a financial option”), it’s hard to justify using a quantum computer to do so.
Creating the rightmost part (the compiler and/or transpiler) is difficult problem, but in most cases it is the responsibility of the hardware provider. Since the hardware provider knows best what connectivity their computer has, what is the native gate set, what are are noise and coherence characteristics, what unique capabilities the hardware has, they are best positioned to create a compiler. The compiler might benefit from understanding more than just “here are the gates that I wish to compile” but that’s a discussion for another day.
How to translate the problem into a quantum circuit is a truly difficult problem, and especially so when the problems and the circuits become larger and more complex.
The typical process today is something like this:
Once the problem is defined and is broken down into individual steps, the quantum software engineer seeks pre-existing circuits that implement each step. The designer makes manual modifications to adapt the blocks into the specific use case. She works hard to connect the individual blocks and to optimize them to fit into the available quantum resources as well as the performance and accuracy goals. Then, once a gate-level circuit is available, it is finally sent off to the compiler/transpiler for execution on a simulator or a quantum processor.
The problem is that most of these steps are manual. As a result, they are error-prone, and the designer — even if she is a world-class export — can reasonably examine only a small sliver of the implementation options, perform only a small fraction of the available optimizations, and might become tired and weary of this problem after a few days or weeks.
The Classiq approach is different. It stems from two simple realizations: 1) creating quantum circuits is hard; and 2) there are some tasks where computers — classical computers — can drastically outperform humans.
Therefore, the Classiq approach is to flip the script. Instead of having a human perform most of the steps in this process, a human defines and problem and breaks down the problem into interconnected functional steps. From that point on, the process is fully automatic. yet is done faster and better:
The human designer directs the computer what to do, and then examines the results (and changes the parameters or constraints if needed). The human retains full control, but the computer dramatically accelerates and improves the work.
Originally published at https://www.classiq.io.