tensorflow / tensorflow/quantum
[Design] Improve proto wire size for serialized circuits
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 2.2k
- Forks
- 665
- PR merge metrics
- No merged PRs in 30d
Description
Thanks to #590 we can now roll our own proto structures + serialization code. We should do some work to try and make our program.proto wire size and serialization code (python and C++) as fast as possible. Anecdotally I can say that in smaller simulation workloads ( < 10 qubits ) The lions share of the time in C++ is actually spent deserializing, this shouldn't be the case.
Some good steps for this project would be to:
-
Slim down the code in
op_serializer.pyand other modules as much as possible so that we have the bare minimum needed for our functionality. i.e. we don't allow boolean types in our serialization. -
Draft a new proto design spec for
program.protowith an eye for fast serialization time and small wire size. -
Gradually implement that new spec which would require steady changes in both python and C++ code.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the serialization changes from #590, then inspect op_serializer.py, program.proto, and the related Python and C++ serialization code. Profile serialization and deserialization for small simulations, define the revised proto design and its wire-size and timing goals, and implement the changes across both languages.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, python
- Domain
- performance
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100