tensorflow / tensorflow/quantum

[Design] Improve proto wire size for serialized circuits

Open
#598 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

area/circuits area/performance kind/feature-request
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:

  1. Slim down the code in op_serializer.py and 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.

  2. Draft a new proto design spec for program.proto with an eye for fast serialization time and small wire size.

  3. Gradually implement that new spec which would require steady changes in both python and C++ code.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.