Quantum Computing Glossary

Quantum Software

What is quantum software? 

Quantum software is a form of specialized software with the aim to make the implementation of quantum algorithms possible. It contains several different tools that are related to the development of algorithms for specific applications, simulations of how quantum computers behave in classical computers and runs on actual quantum processing units (QPUs).  

Quantum computing software stack:  

The quantum software stack can be considered as a set of layers of several quantum software tools. The goal is to combine them in order to optimize the implementation of quantum algorithms, designed to tackle specific applications, on actual quantum hardware. These tools establish a connection between high-level software instructions and the lower-level instructions that are specific to the type of physical qubits of each hardware provider. The quantum software stack can be divided in the following six layers: 

  1. Quantum software development tools: higher level of abstraction tools for developing quantum algorithms. There are several software development kits (SDKs) that act as libraries of commonly used programming languages like Python. This makes the development of quantum software easier and more manageable. Some of the SDKs are developed with the aim of being compatible with specific hardware types. For example, Perceval, developed by Quandela, is designed to help users program and manipulate photonic quantum processing units. Others, like Pennylane from Xanadu or Qiskit from IBM are hardware agnostic and can be used to design algorithms that are compatible with various hardware types.  
  1. Quantum applications: a clear goal for quantum computing is to develop algorithms that will be able to provide quantum advantage for real-world use-cases. To achieve this, and to help the researchers in the field, several libraries have been developed which focus more on specific use cases. Two examples are Pennylane which focuses more on QML tasks, and Open Fermion which specialises in quantum chemistry. 
  1. Quantum hardware simulators: these are tools that aim to replicate the behavior of real quantum processing units on classical computers. It is an important part of the quest for achieving quantum advantage because they act as testbeds for quantum algorithms and workflows. Moreover, some of them are designed for specific quantum hardware and include the exact simulation of their equivalent noise parameters. This is crucial as it allows the evaluation of the performance of algorithms in noisy environments in a much faster and cheaper way, compared to running them on a real device. 
  1. Quantum compilers and circuit optimisation: this is a crucial part of the implementation of quantum algorithms on real devices. Compilation is about translating the high-level code for an algorithm to low-level instructions that can be understood by the hardware. When researchers and engineers develop quantum algorithms for a specific application, they do not necessarily consider what the optimal setup is for the hardware they intend to run it on, for example in terms of gate sequence or connectivity. A circuit optimisation part is thus required and can be completed either before or during the compilation process. Circuit optimisation can be either handled by the library that is used to develop the algorithm (in the backend) or from software solutions that are specifically developed for such tasks.  
  1. Quantum error correction: it is a very important part in the development of the field as we intend to move from noisy intermediate scale quantum (NISQ) systems to fault-tolerance. That is why explicit software tools are developed for applying QEC techniques in NISQ devices with the aim to improve the performance of specific quantum algorithms (See error correction glossary entry) for more details. 
  1. Quantum control systems: there are also some quantum software solutions that are related to controlling the hardware part of the quantum stack. These tools are directly related to the type of hardware. 

All the parts of the stack should be combined in an optimal way to achieve the best possible performance for the development and implementation of a quantum algorithm on a real QPU. 

Frequently asked questions about quantum software 

  1. What is the difference between classical software and quantum software? Quantum software is designed to run on quantum computers where we can use some unique properties of quantum mechanics like entanglement and superposition. Qubits are used instead of classical bits and are thus not limited to values 0 and 1. In addition, quantum software is used to design quantum circuits that correspond to quantum algorithms and requires specific libraries. 
  1. Do I need a quantum computer to develop or test quantum software? No, there is no need to have access to quantum computers to develop quantum software. We can do this by using simulators that run on classical computers and are designed to mimic the behavior of the real QPUs. Many quantum SDKs contain simulators tailored to the hardware that can be used to debug quantum algorithms.  
  1. What are some real-world applications of quantum software today? There are several implementations of quantum algorithms designed to tackle real-world applications using quantum software. Some examples are optimization, chemistry, cryptography, and machine learning. For more details regarding possible quantum advantage see (quantum advantage glossary entry).