Skip to content

Parallelise fanout/fanin #81

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

Open
acl-cqc opened this issue Apr 1, 2025 · 1 comment
Open

Parallelise fanout/fanin #81

acl-cqc opened this issue Apr 1, 2025 · 1 comment

Comments

@acl-cqc
Copy link
Collaborator

acl-cqc commented Apr 1, 2025

Fanout/fanin are checkable currently so the places they can be used is limited, but we could guess at the expected size using the nat-solving framework, they'd be much more useful!
e.g.

f(Vec(Qubit, 2)) -o Bit
f = ...

g(Qubit, Qubit) -o Bit
g = [\/]; f

h(Qubit, Qubit) -o Bit
h = [\/]; ..; f

g succeeds but h fails. I think we could do better!

At the moment we are not using the nat-solving framework, fanout/fanin expects the vector type to have already been solved, so this needs parallisation. Instead we should guess a vector type (of variables), and then yield until the length is solved to a constant.

@acl-cqc
Copy link
Collaborator Author

acl-cqc commented Apr 1, 2025

A neat way to do this would be to include a length in the syntax of fanout/fanin, which can be a constant, a hole (!), even an expression containing a hole (but no variables - the number of wires must be fixed for all values of all variables)

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

1 participant