Skip to content

Commit

Permalink
vm6502q/qrack.github.io#8: Duplicate PR in alternate repository
Browse files Browse the repository at this point in the history
  • Loading branch information
WrathfulSpatula committed Mar 12, 2022
1 parent 0aa00c0 commit 65a894e
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 1 deletion.
7 changes: 7 additions & 0 deletions docs/implementation.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
Implementation
==============

Organizational Chart
--------------------------------

.. image:: performance/qrack_org_chart.png

In overview, Qrack freely mixes simulator representations, between "Schrödinger method"/"ket," stabilizer tableau, and Schmidt decomposed representations of both ket and stabilizer. `Qrack::QStabilizerHybrid` will attempt to maintain stabilizer representation for as deep as possible into a circuit, then switch over internally to ket representation when it encounters an operation it cannot carry out with Clifford and Pauli gates. For ket simulation, we have both CPU and GPU based implementations, which will be automatically switched between as opportune by `QHybrid`. `QUnit` creates a collection of partially Schmidt decomposed peer simulator types, like `QStabilizerHybrid` representation over `QHybrid` (or `QPager`, for Intel-QS-like "paged" simulation across different maximum allocation segments on one or more GPU devices).

QEngine
--------------------------------

Expand Down
5 changes: 4 additions & 1 deletion docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,20 @@ VM6502Q and Qrack

Introduction
------------
An introductory talk to QRack can be found here `Intro to Qrack: a framework for fast quantum simulation by Daniel Strano | Quantum Software Talks <https://www.youtube.com/watch?v=yxyqJDC4SUo>`_.

`Qrack <https://github.com/vm6502q/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 :cpp:class:`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 <https://github.com/vm6502q/ProjectQ>`_ of the `ProjectQ <https://github.com/ProjectQ-Framework/ProjectQ>`_ quantum computer compiler which can use Qrack as the simulator, generally. This stack is also compatible with the `SimulaQron <https://github.com/SoftwareQuTech/SimulaQron>`_ quantum network simulator. Further, we maintain a `QrackProvider <https://github.com/vm6502q/qiskit-qrack-provider>`_ for `Qiskit <https://qiskit.org/>`_. Both ProjectQ and Qiskit integrations for Qrack support the `PennyLane <https://pennylane.ai/>`_ stack. (For Qiskit, a `fork <https://github.com/vm6502q/pennylane-qiskit>`_ 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 :cpp:class:`Qrack::QInterface` implementation, a MOS-6502 microprocessor [MOS-6502]_ virtual machine has been modified with a set of new opcodes (:ref:`mos-6502q-opcodes`) supporting quantum operations. The `vm6502q <https://github.com/vm6502q/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 <https://github.com/vm6502q/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 <https://github.com/twobombs/thereminq>`_. QRack integerated with Unity game creation framework and quantum physics engine can be found here `OpenRelativity <https://github.com/vm6502q/OpenRelativity>`_.

Copyright
---------

Copyright (c) Daniel Strano 2017-2020 and the Qrack contributors. All rights reserved.
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.

Expand Down
Binary file added docs/qrack_org_chart.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 65a894e

Please sign in to comment.