Quantum macro assembler for D-Wave systems
Latest commit 381bc3c Dec 23, 2016 @spakin spakin Formatted MiniZinc output to look like normal QMASM output
A remaining discrepancy is that all solutions are labeled "Solution
from within a model file when minizinc is run with --all-solutions.


QMASM: A Quantum Macro Assembler


QMASM fills a gap in the software ecosystem for D-Wave's adiabatic quantum computers by shielding the programmer from having to know system-specific hardware details while still enabling programs to be expressed at a fairly low level of abstraction. It is therefore analogous to a conventional macro assembler and can be used in much the same way: as a target either for programmers who want a great deal of control over the hardware or for compilers that implement higher-level languages.

N.B. This tool used to be called "QASM" but was renamed to avoid confusion with MIT's QASM, which is used to describe quantum circuits (a different model of quantum computation from what the D-Wave uses) and the IBM Quantum Experience's QASM language, also used for describing quantum circuits.


QMASM is written in Python and uses Setuptools for installation. Use

python setup.py install

to install in the default location and

python setup.py install --prefix=/my/install/directory

to install elsewhere.


Documentation for QMASM can be found on the QMASM wiki.

QMASM (then known as QASM) is discussed in the following publication:

Scott Pakin. "A Quantum Macro Assembler". In Proceedings of the 20th Annual IEEE High Performance Extreme Computing Conference (HPEC 2016), Waltham, Massachusetts, USA, 13–15 September 2016. DOI: 10.1109/HPEC.2016.7761637.


QMASM is provided under a BSD-ish license with a "modifications must be indicated" clause. See the LICENSE file for the full text.

This package is part of the Hybrid Quantum-Classical Computing suite, known internally as LA-CC-16-032.


Scott Pakin, pakin@lanl.gov