-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Adds the main transformer to do routing in Cirq #5838
Adds the main transformer to do routing in Cirq #5838
Conversation
…q' namespace; made both classes not serializable
…al_mapping_setup syncing
…al_mapping_setup syncing
…al_mapping_setup syncing
…for directed graph value equality remaining
…_initial_mapper syncing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Round 2 of comments.
…d move a class function to free function
merging with unitary testing PR
…igani/Cirq into routing-unitary_testing syncing with master
sync with unitary testing
…nction argument everywhere
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks really good, thanks for making all the changes!
Made one final round of comments and then we can merge
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, Thanks for all the changes!
woo 🍾 🎉 |
* added abstract initial mapper and identity initial mapper * added __str__ and __repr__ for MappingManager * minor bug * made MappingManager not serializable * removed unused import * pushed AbstractInitialMapping and IdentityInitialMapping name to 'cirq' namespace; made both classes not serializable * minor lint fix * addressed comments * addressed comments * fixed bug with edges not being sorted for graph equality testing * fixed bug with digraphs repr method in MappingManager and added test for it * addressed some comments * added grid testing device * added grid routing testing device * formatting * added line_initial_mapper and some tests; needs more testing * formatting * formatting * changed interface for LineInitialMapper and added better tests; test for directed graph value equality remaining * addressed comments and added ring device * added test for supportin directed graphs * changed interface for AbstractInitialMapper * formatting * changed RoutingTestingDevice interface; need to change is_isomorphic tests * added hard-coded isomorphism tests * fixed type issue * removed redundant imports * merged with routing testing device PR quantumlib#5830 * simplified _value_equalit_values_ * addressed comments * removed unused import * pasted routing files * fixed nits * cleaned up circuit transformer class; needs tests * addressed comments * formatting * small fixes * removed unused import * modified test file * debugging * removed print statements * debugging statement * debugging statement * fix * fix * print statement * edges sorting * addressed comments; ready for review * fixed type bug * cleanup * wrote some tests * ready for review * type and lint fixes * working for basic tests * slightly modified _make_circuit_graph() * added some tests * added test for testing valid circuits and fixed bug in _make_circuit_graph() * debugging currently * made dict of dict storing pqubit distances into numpy integer numpy array * made dict of dict storing pqubit distances into numpy integer numpy array * used better cost function that sped up algorithm by a lot * cleaned up a little and added coverage tests * removed unitary testing code; will add it in next PR * fixed lint and type issues * small lint fix * added unitary testing for routed circuits * changed api to accept only a final mapping of a set of qubits to itself * fixed typos * fixed some docstrings, changed __call__ and route_circuit() order, and move a class function to free function * added tests * refactored _get_timesteps() as per suggestion * more fixes * changed construction of two and single qubit ops lists * fixed bug from _get_two_qubit_ops and added unitary testing * addressed comments and refactored _route() function * minor cleanup * addressed comments * made helper functions class variable and passed mapping manager as function argument everywhere * docstring and nomenclature changes Co-authored-by: Tanuj Khattar <tanujkhattar@google.com>
* added abstract initial mapper and identity initial mapper * added __str__ and __repr__ for MappingManager * minor bug * made MappingManager not serializable * removed unused import * pushed AbstractInitialMapping and IdentityInitialMapping name to 'cirq' namespace; made both classes not serializable * minor lint fix * addressed comments * addressed comments * fixed bug with edges not being sorted for graph equality testing * fixed bug with digraphs repr method in MappingManager and added test for it * addressed some comments * added grid testing device * added grid routing testing device * formatting * added line_initial_mapper and some tests; needs more testing * formatting * formatting * changed interface for LineInitialMapper and added better tests; test for directed graph value equality remaining * addressed comments and added ring device * added test for supportin directed graphs * changed interface for AbstractInitialMapper * formatting * changed RoutingTestingDevice interface; need to change is_isomorphic tests * added hard-coded isomorphism tests * fixed type issue * removed redundant imports * merged with routing testing device PR quantumlib#5830 * simplified _value_equalit_values_ * addressed comments * removed unused import * pasted routing files * fixed nits * cleaned up circuit transformer class; needs tests * addressed comments * formatting * small fixes * removed unused import * modified test file * debugging * removed print statements * debugging statement * debugging statement * fix * fix * print statement * edges sorting * addressed comments; ready for review * fixed type bug * cleanup * wrote some tests * ready for review * type and lint fixes * working for basic tests * slightly modified _make_circuit_graph() * added some tests * added test for testing valid circuits and fixed bug in _make_circuit_graph() * debugging currently * made dict of dict storing pqubit distances into numpy integer numpy array * made dict of dict storing pqubit distances into numpy integer numpy array * used better cost function that sped up algorithm by a lot * cleaned up a little and added coverage tests * removed unitary testing code; will add it in next PR * fixed lint and type issues * small lint fix * added unitary testing for routed circuits * changed api to accept only a final mapping of a set of qubits to itself * fixed typos * fixed some docstrings, changed __call__ and route_circuit() order, and move a class function to free function * added tests * refactored _get_timesteps() as per suggestion * more fixes * changed construction of two and single qubit ops lists * fixed bug from _get_two_qubit_ops and added unitary testing * addressed comments and refactored _route() function * minor cleanup * addressed comments * made helper functions class variable and passed mapping manager as function argument everywhere * docstring and nomenclature changes Co-authored-by: Tanuj Khattar <tanujkhattar@google.com>
The main heuristic algorithm that accomplishes routing, implemented as a Cirq transformer.
See http://tinyurl.com/cirq-qubit-routing for more details.