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

Pulse benchmarks #10573

Open
8 of 21 tasks
taalexander opened this issue Jan 23, 2020 · 9 comments · Fixed by Qiskit/qiskit-metapackage#848
Open
8 of 21 tasks

Pulse benchmarks #10573

taalexander opened this issue Jan 23, 2020 · 9 comments · Fixed by Qiskit/qiskit-metapackage#848
Assignees
Labels
mod: pulse Related to the Pulse module type: enhancement It's working, but needs polishing

Comments

@taalexander
Copy link
Contributor

taalexander commented Jan 23, 2020

What is the expected behavior?

The circuit, transpilation and circuit assembly modules are well benchmarked. There should be associated benchmarks for the pulse path and an associated integration benchmark from the construction of a relatively sophisticated quantum circuit, default backend transpilation and scheduling.

Benchmarks:

  • Schedule construction
    • with parameters being the:
      • number of unique pulses
      • number of channels
      • number of uses of each pulse
    • options:
      • pulse types:
        • Parametric
        • Sample
      • Building methods:
        • Append instruction
        • Insert instruction right to left
        • Convert the instruction to a schedule and then take the union of all schedules.
  • Scheduling. Use benchmarks from transpiler but decomposed to a native single qubit gate. Use mockbackend of 20q device:
    • for schedules:
      • single gate schedule
      • cx gate schedule
      • measure schedule
      • large qasm schedule
    • scheduling methods:
      • alap
      • asap
  • End to end benchmark. Add pulse benchmarks to:
    • quantum volume
    • randomized benchmarking
  • Assembly
    • random schedule tests
@nkanazawa1989
Copy link
Contributor

nkanazawa1989 commented Jan 31, 2020

how about adding error mitigation as a potential target? it requires stretching of pulses and may have a different aspect from others.

@taalexander
Copy link
Contributor Author

We don't currently have an error mitigation module so this would be infeasible to add as a benchmark. All of the benchmarks above already have code for circuit generation.

@nkanazawa1989
Copy link
Contributor

Yes. This is why I said potential, just for future plan. I agree the list you have is enough to cover many practical situations.

@taalexander
Copy link
Contributor Author

Discussing with @kdk and @mtreinish it appears the current benchmarks are already taking a significant fraction of a day to run, we may wish to pare down the list. Any suggestions for what to cut @nkanazawa1989?

@nkanazawa1989
Copy link
Contributor

nkanazawa1989 commented Feb 5, 2020

In that sense, benchmarks that has less dependency on circuit transpiler, ie benchmarks that don't intend to evaluate connectivity, are good candidate. There are two reasons:

  • overlap with circuit benchmarks
  • unwanted performance dependency

For example, QV and random hex may insert many SWAP operations, depending on topology, and end to end performance depends on the result of qubit routing and basis gates (if swap exists) rather than scheduling algorithm. If the purpose of pulse benchmark is to evaluate the performance of scheduling algorithm, I think 2q RB is good candidate.

@taalexander
Copy link
Contributor Author

I think it is still important to have some end to end benchmarks that have interdependency. This is valuable to show realistic performance numbers. QV is a great example I think.

mtreinish referenced this issue in Qiskit/qiskit-metapackage Apr 10, 2020
Partially fixes #794.

* first commit

* Fixed some typos

* More fixes

* Add benchmark to insert instruction from left to right

* Fix Lints

* Add hardcorded parametic pulse and sample pulse

* reduce params

* Fix lint

* review suggestions

* Instruction to schedule

* review suggestions

* Rename due to lint restrictions

number_of_unique_pulses -> unique_pulses and number_of_channels -> channels

* review suggestions

* Seperate inst_add and sched.union

* Remove unwanted imports

* lint

* Update code

* Fix lint

* separate instruction to sched conversion and union of sched

* uncomment code

* Lint

* move benchmark functions with similar setup.py to a different file

* lint

* Move time_union_of_schedules to schedule construction class

* Add Open Pulse backend in backends/

* lint

* Add Play

* Add Play

* Remove union

union is deprecated

* lint
@taalexander
Copy link
Contributor Author

@mtreinish, I don't think this should have been closed as this is an epic with follow up issues coming.

@SooluThomas
Copy link
Member

It automatically got closed because, in that PR, I added the summary as "partially fixes" this issue.

@SooluThomas SooluThomas reopened this Apr 10, 2020
jakelishman referenced this issue in jakelishman/qiskit-terra Aug 1, 2023
Partially fixes Qiskit/qiskit-metapackage#794.

* first commit

* Fixed some typos

* More fixes

* Add benchmark to insert instruction from left to right

* Fix Lints

* Add hardcorded parametic pulse and sample pulse

* reduce params

* Fix lint

* review suggestions

* Instruction to schedule

* review suggestions

* Rename due to lint restrictions

number_of_unique_pulses -> unique_pulses and number_of_channels -> channels

* review suggestions

* Seperate inst_add and sched.union

* Remove unwanted imports

* lint

* Update code

* Fix lint

* separate instruction to sched conversion and union of sched

* uncomment code

* Lint

* move benchmark functions with similar setup.py to a different file

* lint

* Move time_union_of_schedules to schedule construction class

* Add Open Pulse backend in backends/

* lint

* Add Play

* Add Play

* Remove union

union is deprecated

* lint
@jakelishman jakelishman transferred this issue from Qiskit/qiskit-metapackage Aug 4, 2023
@jakelishman
Copy link
Member

@nkanazawa1989: I've moved this from the metapackage to Terra, since after #10546 it'll be here. Could you see if this is still something you'll be wanting to do, or close the issue if not?

@1ucian0 1ucian0 added type: enhancement It's working, but needs polishing and removed enhancement labels Sep 2, 2024
@ShellyGarion ShellyGarion added the mod: pulse Related to the Pulse module label Dec 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mod: pulse Related to the Pulse module type: enhancement It's working, but needs polishing
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants