Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Qrack back end #57

Open
WrathfulSpatula opened this issue Mar 17, 2023 · 0 comments
Open

Qrack back end #57

WrathfulSpatula opened this issue Mar 17, 2023 · 0 comments
Assignees

Comments

@WrathfulSpatula
Copy link

WrathfulSpatula commented Mar 17, 2023

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.]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants