Most people programming gate-level quantum computers now do so at the gate level, using standard gates such as X, Y, Z, CNOT, Hadamard, etc. However, quantum processors can also be programmed at the pulse level to more precisely control the qubits. The pulses are typically microwave pulses of specific duration, frequency, amplitude, and phase that make the qubits implement the desired function. By enabling an end users to control these pulses, the end users can potentially achieve better performance and higher quality in their programs than they could achieve with the standard gates. Programming at this level can allow users to do a better job of mitigating noise, creating their own custom gates, or even to design analog quantum algorithms. IBM had previously made this capability available with software they called OpenPulse and Rigetti also provides this capability with software they called Quilt. Amazon is now making a pulse programming capability available on two of the processors that are connected to Amazon Braket, Rigetti’s Aspen-M-2 and OQC’s Lucy. Amazon has posted a blog that describes this new capability along with programming examples on their website here.

Another challenge in quantum computing is to improve interoperability so that programs written for one target quantum processor can be easily modified and recompiled to run on a different quantum processor. This has significant benefits for an end user because it allows them to compare the results of two different processors and also to reuse code that may have been previously written for some new application. There are several efforts underway to make this easier and one of them is a specification for an intermediate programming representation called OpenQASM3. The idea is that different front end quantum programming languages can be written which will be first translated to a common intermediate representation and then different backend compilers can be written that can compile from the common intermediate representation to low level instructions that will be specific and optimized for the different target quantum processors. This concept is not new and an implementation of this for classical computing called LLVM was created almost 20 years ago.

IBM initiated OpenQASM3 as a goal of providing a structure for specifying hybrid classical/quantum algorithms but has since opened up it and has created a steering committee including other Amazon, Microsoft, and other parties to continue the development as an open standard. Amazon migrated to use OpenQASM3 as its primary intermediate representation earlier this year, and now, Amazon has made a significant contribution to the OpenQASM3 effort by releasing a program called OQpy, an open-source library designed to make it easy to generate OpenQASM 3 programs in Python. As an example of OQpy’s use, the Braket Pulse capability was built on top of OQpy for integration within the Braket SDK. You can read more about OQpy in a blog post on the Amazon website here and also access the code and documentation for OQpy library on GitHub here.

October 20, 2022