The 13 Best Qiskit Quantum Programming Features You Probably Don’t Know About

Brian probes the wisdom of Quantum Programming gurus in the Qiskit language. He’s got some of the world’s most powerful and experienced users and developers to. share their knowledge when it comes to getting the most out of the open source programming framework: Qiskit.

For this article, I was tasked with writing “tips and tricks” for using Qiskit. But, it occurred to me that if I know something about Qiskit, could it really be that rare? What if you could read an entire such and learn absolutely nothing? What a waste of time, right?

So, I counter-proposed writing the article you’re about to read. What if I gave a few genuine Qiskit experts some brushes and asked them to expose the diamonds in the rough? If I’m going to take the time to write such an article, I should learn something myself, right? Fortunately, my suggestion was well received.

Qiskit pronounced kiss-kit is an open-source SDK for working with quantum computers at the level of pulses, circuits, and application modules. Qiskit accelerates the development of quantum applications by providing the complete set of tools needed for interacting with quantum systems and simulators.

qiskit.org

Pushing the capabilities of Qiskit

So, I asked a small number of bona fide Qiskit experts just one question:

“What’s the best feature of Qiskit that most people don’t know about?”

Some respondents provided multiple answers, and some answers were repeated by multiple respondents. Consequently, I decided to list the experts separately, and then list their responses. For the record, had I not “interviewed” these Qiskit experts, this article would be missing the vast majority of this content.

The Qiskit Programming Experts (alphabetical order)

Qiskit Features….you might not know about

  1. Aqua. Are you interested in developing real world applications for quantum computers? That’s what Qiskit Aqua was intended to enable. It grew to the extent that it has been split into four parts: qiskit-finance, qiskit-machine-learning, qiskit-nature, and qiskit-optimization. In fact, if you’re not a developer at all, and you’re simply wondering what quantum computers may someday be useful for, those names right there provide your answer. https://github.com/Qiskit/qiskit-aqua

2. Backends. You’re not restricted to using IBM devices and simulators. In fact, you can run your algorithms on devices provided by IBM’s competitors in this space. Furthermore, you’re not restricted to IBM’s superconducting transmon qubit technology; Qiskit supports ion traps, for example. (3 responses)

A few notable mentions:

For a general list: https://pypi.org/search/?q=qiskit

Qiskit is well on its way to become the foundation of most quantum computing, serving as the lingua franca between applications and hardware. Moreover, Qiskit is a full software stack unto itself.

Dr. Sutor

3. Benchmarking. Although deprecated, Qiskit Ignis allows you to “[see] the noise that goes on in a device.” [Dr. Wootton] This is important for error correction.

https://qiskit.org/textbook/ch-quantum-hardware/randomized-benchmarking.html

https://github.com/Qiskit/qiskit-ignis/tree/master/qiskit/ignis/verification/randomized_benchmarking

4. Collaboration. In development now, Qiskit will soon allow cloud sharing. This is intended to support open collaboration for conducting science.

5. Graphing. The graph library retworkx, written by Matthew Treinish in Rust, is not a “bottleneck” like networkx.

https://github.com/Qiskit/retworkx

6. Kraus Operators. The ability to insert Kraus operators as if they were gates is “a great way to make noise models in a custom way, because you can specify exactly where in the circuit you want different noise events to happen and what form they take.” [Dr. Wootton] https://qiskit.org/documentation/_modules/qiskit/quantum_info/operators/channel/kraus.html

7. OpenQASM 3. If you’re primarily interested in gate-level quantum computational science, you should explore the emerging OpenQASM 3 language definition.

https://qiskit.github.io/openqasm/

8. Pulse. Whether dynamics or experiment, most people don’t know the full extent of Pulse’s capabilities. Chances are it’s far more powerful than you think it is.

https://qiskit.org/documentation/apidoc/pulse.html

9. Python. You’re not limited to using Qiskit’s features. You have the entire Python language and all its libraries at your disposal.  It’s OK to collaborate with computer scientists.

https://www.python.org/doc/

10. Resources for Learning Quantum Programming and Qiskit

All users should be aware of the breadth of resources available to help you progress:

11. Runtime. Qiskit Runtime “integrates quantum and classical computing to significantly improve the speed of the entire workload.” [Dr. Sutor] https://quantum-computing.ibm.com/lab/docs/iql/runtime/

IBM Quantum with the new Qiskit Runtime delivers more than 120x speedup of quantum workloads

12. Statevector Classes. The Statevector class “can be instantiated with a quantum circuit (as well as other ways) and its value is a quantum statevector. It also supports probability distribution sampling for measurement. Those features often make it not necessary to run on a simulator.” [Dr. Weaver]

https://github.com/Qiskit/qiskit-terra/blob/main/qiskit/quantum_info/states/statevector.py

13. Transpiler Passes. Transpiler passes are a powerful way to optimize your quantum circuits. (3 responses) 

https://github.com/Qiskit/qiskit-tutorials/blob/master/tutorials/circuits_advanced/04_transpiler_passes_and_passmanager.ipynb

It’s worth noting that “backends” and “transpiler passes” were each submitted by three different Qiskit experts.

Summary

If you are an established user to pretty new to qiskit, there is plenty for everyone here to get stuck into. There are plenty of ways to get started even if you are a newbie, and one popular way is with online courses.

We are some way from the early days of Classical Computers using switches and lights to program a computer. Quantum programmers can use python to build quantum circuits.