Skip to content

Qrack back end #57

@WrathfulSpatula

Description

@WrathfulSpatula

Per earlier discussions, this ticket is to track the integration of the (C++11) Qrack quantum computer simulator as an optional back end, via the qook Rust bindings: https://crates.io/crates/qook.

(The Qrack library and utility binary installer is updated with each subsequent release: https://github.com/unitaryfund/qrack/releases)

@smml1996 and I have discussed a plan.

Firstly, Qrack needs to simulate the CNOT, NOT, and MCX quantum instructions of the oracle, (all of which it can do natively).

Qrack also needs to track and internally mirror allocation of every qubit that participates in a given system of qubits that can potentially interact among each other. If the qubits are in different simulator instances, they cannot interact, though simulator instances or "registers" can be readily composed and decomposed along separable qubit subsystem bounds, (without guarantee that "decompose" operations will not denormalize, but Qrack internals do not denormalize, and it is the resposibility of user code to not denormalize when "decomposing," as can be achieved by measuring first). However, notably, the Qrack simulator is designed for easy dynamic bounds resizing and dynamic allocation (and deallocation) of qubits, by the user.

Whatever the oracle inputs are, Qrack also needs to simulate the preparation of the input, whether this is simply via parallel Hadamard gates to all input qubits.

I suspect those are the three major "ingredients." I'm trying my hand at this, but all input is welcome. (I can't assign myself to this issue ticket on GitHub, by the way, but I have created a fork.)

[EDITED above, for clarity and specificity.]

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions