Since it was first released in 2017, IBM has made scores of releases of the Qiskit software with a focus on improving it in three different aspects. These include functionality, in order to make it easier for users to program, better optimization, to compile the program into few qubits, gates, and gate levels to provide improved execution on a quantum processor, and also performance of the SDK itself. Originally, when the size of the quantum computers were gauged in the tens of qubits, the performance of the compiler was probably not a big deal. But now as the quantum computers scale to the hundreds and thousands of qubits, and the number of circuit layers increases to hundreds or thousands or millions of layers, the time it takes to compiler a program before it can even run on the quantum machine can be noticeable and potentially a limiter in how quickly one can compose and debug a quantum program.

So, beginning with version 1.0, IBM is converting portions of the Qiskit internals to use the Rust programming language which is intrinsically designed for fast performance and efficiency in its use of memory. Typically, a program written in Rust will run much faster with lower memory requirements than a program that implements the same thing in a language like Python. Because Qiskit is now quite large, IBM is doing this conversion (the term that some programmers use is “oxidation”) in stages. They started this process with the release of Qiskit 1.0 in May. and have now moved on to convert large parts of the synthesis library with this version 1.2. Their goal is to convert as much of the internal Qiskit functionality to Rust as possible by the time they release Qiskit 2.0 scheduled for next year while still retaining Python compatibility for end users externally. The goal is to have the highest performance quantum SDK of any that may be available.

As an example, you can view the progress they have made between Qiskit versions 1.0, 1.1, and 1.2 that shows a speedup of 2.8X for Qiskit 1.0 for an example of constructing for a 400-qubit circuit as a function of the number of entangling layers.

Chart Showing Qiskit Construction Time for Different Versions of Qiskit. Credit: IBM

Besides improvements in the speed of the SDK, other improvements include two new import path options, improvements in peephole transpilation optimization, and new circuit library classes and functions including QFTGate class to natively represent Quantum Fourier Transforms and a new function which generates a random Clifford circuit.

Besides conversion of more functionality to use Rust to provide additional performance, IBM is expected to release Qiskit 1.3 later this year. That version will require a user to have Python 3.9 and due to the performance improvements this release will also increase the default optimization level in the transpiler from level 1 to level 2.

Additional information about this new release is available in a blog post available here, release notes for version 1.2 here, and a list of anticipated upcoming milestones for future releases of Qiskit that can be accessed here.

August 23, 2024