Skip to main content

Today we’re excited to announce the release of the Quantum Assembly Toolchain (QAT), our low-level compiler, as an open-source python project on GitHub and as an installable package.

Beyond the technical intricacies lies the heartbeat of QAT, which is a dynamic and ever-evolving project that forms the bedrock of our quantum mission: to bring quantum into the hands of humanity. The unique feature of QAT lies in its malleability and enables our partners and the wider community to actively contribute and foster a cycle of innovation. With this open source release, we’re giving you access to OQC’s quantum compiler and runtime. We want to inspire and empower you to experiment with your quantum program setups and configurations on our Quantum Processing Units (QPUs) before submitting them through our private Quantum Computing as a Service (QCaaS) or AWS Braket. You may have other ideas entirely, which is why we have adopted a permissive licence in BSD-3 to give you wide scope in your modification and application.

As we work on our next-generation compiler and runtime, we want to put our current QAT versions into the wild. Here are few highlights of what QAT does for us, and could do for you. 

Core conceptual models

Several hardware models [object modelling our superconducting hardware] are included in our package and ready for you to use out of the box, together with the built-in back-ends. In just a few lines of code, you can set up an end-to-end playground with our Echo or RealtimeChipSim Engine [runtime for executing instructions] and experiment with circuits and configuration settings. While we are unable to release our internal Engines for our live devices, QAT has all the extensions and capabilities to run against a real QPU. For adapted use of our software, you can specialise both the Model and the Engine to turn our abstract pulse instructions into low-level instructions your hardware understands; then QAT can handle everything else: parsing, optimisation, result processing, scheduling, the lot – if you want it to. We’ve also ensured that you can extend and override the majority of QAT as you see fit depending on the capabilities you need.

High-Level Language Parsers

QAT comes with full support for circuits written in both QASMv2.0 and base-profile compliant QIR built-in. We also support OpenPulse, a subset of the QASM v.3.0 specification; you can see how this is used alongside Amazon Braket via our blog. As a user, you can choose to write your program directly in one of these languages or use one of the many circuit modelling packages (e.g. Qiskit) to build and export your circuits into one of our ingestible formats.

Adjustable Optimisation Level

Completely new to writing quantum algorithms or a seasoned professional seeking complete control over executed instructions? QAT has you covered. QAT has built-in support for TKET as well as our own optimisation passes, which you can take advantage of, or not, as you see fit.

Moving Our Partnerships, And The Community Forward

Back in April, we announced the installation of a quantum computer with Fujitsu, in Spain. We are also excited to be rolling out QAT to our partners at CESGA, and to AWS Braket users.  This will enable further work on error mitigation and runtime feature enhancements upstream. Alex Shih, head of product at Q-CTRL notes “Q-CTRL’s error suppression workflow combined with OQC’s state-of-the-art hardware has been demonstrated to deliver end-users with a performance enhancement of over 140X to date. The launch of QAT will provide the critical capabilities that enable us to bring this technology to as many OQC end-users as possible and to ensure future innovations are supported in our growing collaboration.”


So, for those who have harboured dreams of tinkering with experimental features on a quantum computer but found the prospect elusive, QAT is here to turn those aspirations into reality. So roll up those sleeves and start experimenting.   Our software team wants to hear from you so if you want a specific feature let us know by raising a feature request, or contribute to its development by submitting a pull request

We can’t wait to see what you’ll do. 

Contact us