VM6502Q and Qrack¶
An introductory talk to QRack can be found here Intro to Qrack: a framework for fast quantum simulation by Daniel Strano | Quantum Software Talks.
Qrack is a C++ quantum bit and gate simulator, with the ability to support arbitrary numbers of entangled qubits - up to system limitations. Suitable for embedding in other projects, the
Qrack::QInterface contains a full and performant collection of standard quantum gates, as well as variations suitable for register operations and arbitrary rotations.
The developers of Qrack maintain a fork of the ProjectQ quantum computer compiler which can use Qrack as the simulator, generally. This stack is also compatible with the SimulaQron quantum network simulator. Further, we maintain a QrackProvider for Qiskit. Both ProjectQ and Qiskit integrations for Qrack support the PennyLane stack. (For Qiskit, a fork of the Qiskit plugin provides support for a “QrackDevice”.) Qrack’s developers are not directly affiliated with any of these projects, but we thank them for their contribution to the open source quantum computing community!
As a demonstration of the
Qrack::QInterface implementation, a MOS-6502 microprocessor [MOS-6502] virtual machine has been modified with a set of new opcodes (MOS-6502Q Opcodes) supporting quantum operations. The vm6502q virtual machine exposes new integrated quantum opcodes such as Hadamard transforms and an X-indexed LDA, with the X register in superposition, across a page of memory. An assembly example of a Grover’s search with a simple oracle function is demonstrated in the examples repository.
Qrack with tools designed to control, extend and visualize data emanating to and from Quantum circuits utilising Docker can be found here ThereminQ. QRack integerated with Unity game creation framework and quantum physics engine can be found here OpenRelativity.
Copyright (c) Daniel Strano 2017-2021 and the Qrack contributors. All rights reserved.
Daniel Strano would like to specifically note that Benn Bollay is almost entirely responsible for the original implementation of QUnit and tooling, including unit tests, in addition to large amounts of work on the documentation and many other various contributions in intensive reviews. Also, thank you to Marek Karcz for supplying an awesome base classical 6502 emulator for proof-of-concept.