Qiskit and its Fundamental Elements
It has been an amazing experience watching Qiskit grow. Since its beginnings as a software for writing experiments on IBM Q quantum computers, Qiskit has evolved into much more, and our thinking has evolved with it. It is now becoming clear to us the direction that we and many in the community would like the project to take. Therefore, in this post, we will share an overview of our plans for Qiskit, including its four elements, each of which forms a pillar of quantum computing software.
To surpass the computational power of classical supercomputers by harnessing the power of quantum computation remains one of the 21st century’s grand scientific challenges. We have always envisioned Qiskit as a “meeting of the minds”, or a comprehensive platform that engages a broad community of scientists and developers contributing valuable expertise at all levels of this endeavor.
Certainly, a central goal of Qiskit is to build a software stack that makes it easy for anyone to use quantum computers. However, Qiskit also aims to facilitate research on the most important open issues facing quantum computation today.
There is still a long path to making a universal fault-tolerant quantum computer, and we would argue that we are still not sure what the software for such a machine will look like. However, at present we have noisy intermediate-scale quantum computers (NISQ), which are still too complex to predict. If we could harness this resource, we would find ourselves in possession of a device believed to be more computationally powerful than our conventional computers. So, with such a device, how do we answer the questions on everyone’s minds:
- What can we do with them?
- How do we make them better?
- How do we understand quantum complexity in NISQ machines?
These are not simple questions. In fact, they start a train of many more questions for which getting close to finding answers will require the traditional scientific method: theorists running out of chalk on their blackboards and experimentalists developing new devices until they forget what they are doing.
But beyond these traditional forms of scientific research, we are most excited by the opportunities that the coder brings. The only way we can make a dent in answering the above questions is to advance the quantum software framework. We need tools to study heuristic algorithms; to delve into the verification and validation of quantum devices; to study small quantum codes; for demonstration of fault tolerance, dynamical decoupling and optimal control theories; and lastly to develop reliable circuit and pulse scheduling schemes to run complicated circuits on real devices.
To build a successful quantum software ecosystem, we are pursuing four directions (or elements) simultaneously. We’ve named Qiskit’s elements after Latin terms for the classical elements, nodding to quantum computing’s roots in nature.
Terra, the ‘earth’ element, is the foundation on which the rest of the software lies. Terra provides a bedrock for composing quantum programs at the level of circuits and pulses, to optimize them for the constraints of a particular device, and to manage the execution of batches of experiments on remote-access devices. Terra defines the interfaces for a desirable end-user experience, as well as the efficient handling of layers of optimization, pulse scheduling and backend communication.
Aqua, the ‘water’ element, is the element of life. To make quantum computing live up to its expectations, we need to find real-world applications. Aqua is where algorithms for NISQ computers are built. These algorithms can be used to build applications for quantum computing. Aqua is accessible to domain experts in chemistry, optimization or AI, who want to explore the benefits of using quantum computers as accelerators for specific computational tasks, without needing to worry about how to translate the problem into the language of quantum machines.
Ignis, the ‘fire’ element, is dedicated to fighting noise and errors and to forging a new path. This includes better characterization of errors, improving gates, and computing in the presence of noise. Ignis is meant for those who want to design quantum error correction codes, or who wish to study ways to characterize errors through methods such as tomography, or even to find a better way for using gates by exploring dynamical decoupling and optimal control. While we have already released parts of this element as part of libraries in Terra, an official stand-alone release will come soon.
Aer, the ‘air’ element, permeates all Qiskit elements. To really speed up development of quantum computers we need better simulators, emulators and debuggers. At IBM Q, we have built high-quality, high-performance simulators and continue to improve their scalability and features. Aer will help us understand the limits of classical processors by demonstrating to what extent they can mimic quantum computation. Furthermore, we can use Aer to verify that current and near-future quantum computers function correctly. This can be done by stretching the limits of simulation to accommodate 50+ qubits with reasonably high depth, and by simulating the effects of realistic noise on the computation.
There are many avenues left to explore in quantum computing research. This is why Qiskit is designed with modularity and extensibility in mind. For example, it is easy to extend Qiskit Terra by adding new circuit optimization passes or adding new device or simulator backends; similarly, extending Qiskit Aqua is simply done by plugging in new algorithms for solving optimization problems.
As quantum hardware continues to mature, software plays a critical role in the success of quantum computers. In just over a year, more than 110 scientific articles have used Qiskit and remote access to IBM Q devices to study different aspects of quantum computation. We are proud of this, and we continue to rely on members of our community for feedback, contributions, and guidance. Qiskit has come a long way, and Terra, Aqua, Ignis, and Aer will shape its growth over the months to come.
To get started with Qiskit, try out this hands on tutorial that will walk you through getting started with Qiskit.