Git Product home page Git Product logo

transpile_benchy's Introduction

transpile_benchy's People

Contributors

evmckinney9 avatar r-g-1 avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

r-g-1 procatv

transpile_benchy's Issues

Add interface for all submodules

Feature Description and Why

Finish creating an interface for the rest of the submodules listed in the README. Then combine all submodules for a master list and remove duplicates.

Additional Details / Helpful Resources

No response

Metrics Rewrite

Currently metrics are computed taking circuit inputs post-transpilation.
I think it would be better to instead have metrics computed on the dag as final set of AnalysisPasses.
Avoids needing another circuit->dag conversion.

[Feature Request]: Statistics Utiltiies

Feature Description and Why

  • returns a metric report, e.g. average improvement on metric X compared to baseline runner Y
  • which circuit had best improvement and worst for each metric...

Additional Details / Helpful Resources

No response

More Benchmarks

Feature Request

Collect even more papers that have additional benchmarks. For example, Table II in SABRE https://arxiv.org/pdf/1809.02573.pdf
Check that this contains circuits we haven't included yet.

  • Need some way to print all circuit names across all submodules, in an organized way.
  • getting all circuits given a name by searching through modules

Error handle conflicting circuit names

Feature Description and Why

Need to add error handling for when a benchmark is given interfaces with conflicting circuit names.

Additional Details / Helpful Resources

No response

Plot creation

Feature Description and Why

There should be control in the creation of plots. An example is to be able to put two different metrics on the same graph.

Additional Details / Helpful Resources

No response

[Feature Request]: Refactor runner

Feature Description and Why

The logic of runners has become a mess. See https://github.com/Pitt-JonesLab/virtual-swap/blob/main/src/virtual_swap/pass_managers.py for proof.

Refactor this eventually :)

Additional Details / Helpful Resources

I originally wrote it so to minimize dag to circuit conversions, the pre-,main-,post- process stages only modify the pass manager but all run sequentially in the run function. I think this is harder for maintainability so we should instead just run the pass mangers separately.

Interface Filtering

Feature Request

Currently, the filtering is done in the SubmoduleInterface abstract class. This is silly, just move the filtering to be in the lower-level get() functions of the interfaces.
:)

[Documentation]: README.md and example main.ipynb

Documentation Section

Following refactor updates and new stats functionality, need to update all documentation

Description of the Issue

Changes from #8 changed repo that needs to be updated in docs.

Proposed Change

  • README.md
  • main.ipynb
  • tests/

Report Average, Best, Std dev

Feature Request

Include nshots parameter, rerun each circuit multiple time per transpiler.

Adjust plotting accordingly.

Code Cleanup analysis transition

Feature Description and Why

Previously a partial transition from circuit analysis to DAG analysis in metrics class was done. The refactor could be improved and code cleanup can be done specifically in various parts of the runner and benchmark classes.

Additional Details / Helpful Resources

[Bug]: Ugly Formatting Print Benchmark

Bug Description

  • Needs some truncating of trials
  • see comment in benchmark.py about code reuse
print(benchmark)

Transpiler: Qiskit-$\sqrt{\texttt{iSWAP}}$

Metric: accepted_subs
Circuit: adder_n4 Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: ae Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: dj Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: fredkin_n3 Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: qaoa Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: qft Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: qftentangled Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: qgan Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: toffoli_n3 Mean result: 0.000 Trials: [0, 0, 0, 0, 0]

Metric: monodromy_depth
Circuit: adder_n4 Mean result: 6.500 Trials: [6.5, 6.5, 6.5, 6.5, 6.5]
Circuit: ae Mean result: 36.450 Trials: [38.0, 33.5, 38.0, 38.0, 35.0]
Circuit: dj Mean result: 13.041 Trials: [13.0, 14.5, 14.5, 12.0, 11.5]
Circuit: fredkin_n3 Mean result: 10.500 Trials: [10.5, 10.5, 10.5, 10.5, 10.5]
Circuit: qaoa Mean result: 8.500 Trials: [8.5, 8.5, 8.5, 8.5, 8.5]
Circuit: qft Mean result: 29.667 Trials: [29.5, 28.5, 32.5, 29.0, 29.0]
Circuit: qftentangled Mean result: 43.582 Trials: [43.0, 42.0, 45.5, 43.0, 44.5]
Circuit: qgan Mean result: 29.896 Trials: [29.5, 29.5, 30.5, 29.5, 30.5]
Circuit: toffoli_n3 Mean result: 5.269 Trials: [5.0, 5.0, 5.0, 6.5, 5.0]

Transpiler: Qiskit-$\texttt{CNOT}$

Metric: accepted_subs
Circuit: adder_n4 Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: ae Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: dj Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: fredkin_n3 Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: qaoa Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: qft Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: qftentangled Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: qgan Mean result: 0.000 Trials: [0, 0, 0, 0, 0]
Circuit: toffoli_n3 Mean result: 0.000 Trials: [0, 0, 0, 0, 0]

Metric: monodromy_depth
Circuit: adder_n4 Mean result: 10.000 Trials: [10.0, 10.0, 10.0, 10.0, 10.0]
Circuit: ae Mean result: 75.507 Trials: [74.0, 74.0, 72.0, 83.0, 75.0]
Circuit: dj Mean result: 16.806 Trials: [14.0, 14.0, 19.0, 18.0, 20.0]
Circuit: fredkin_n3 Mean result: 15.000 Trials: [15.0, 15.0, 15.0, 15.0, 15.0]
Circuit: qaoa Mean result: 17.000 Trials: [17.0, 17.0, 17.0, 17.0, 17.0]
Circuit: qft Mean result: 59.960 Trials: [57.0, 63.0, 59.0, 59.0, 62.0]
Circuit: qftentangled Mean result: 85.764 Trials: [82.0, 89.0, 84.0, 87.0, 87.0]
Circuit: qgan Mean result: 28.871 Trials: [28.0, 41.0, 28.0, 24.0, 26.0]
Circuit: toffoli_n3 Mean result: 7.000 Trials: [7.0, 7.0, 7.0, 7.0, 7.0]

Transpiler: SABREMS-$\sqrt{\texttt{iSWAP}}$

Metric: accepted_subs
Circuit: adder_n4 Mean result: 0.000 Trials: [0.0, 0.0, 0.0, 0.0, 0.0]
Circuit: ae Mean result: 0.822 Trials: [0.25925925925925924, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629]
Circuit: dj Mean result: 0.200 Trials: [0.0, 0.3333333333333333, 0.3333333333333333, 0.16666666666666666, 0.16666666666666666]
Circuit: fredkin_n3 Mean result: 0.500 Trials: [0.5, 0.5, 0.5, 0.5, 0.5]
Circuit: qaoa Mean result: 0.027 Trials: [0.0, 0.13333333333333333, 0.0, 0.0, 0.0]
Circuit: qft Mean result: 0.770 Trials: [0.3333333333333333, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.6296296296296297]
Circuit: qftentangled Mean result: 0.794 Trials: [0.7941176470588235, 0.7941176470588235, 0.7941176470588235, 0.7941176470588235, 0.7941176470588235]
Circuit: qgan Mean result: 0.963 Trials: [0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629, 0.9629629629629629]
Circuit: toffoli_n3 Mean result: 0.250 Trials: [0.25, 0.25, 0.25, 0.25, 0.25]


### Version

0

[Feature Request]: stock qiskit as a baseline runner

Feature Description and Why

In https://github.com/Pitt-JonesLab/mirror-gates/blob/main/src/mirror_gates/pass_managers.py, I create a pass manager for Qiskit that does nothing. This should be a default runner. Goes with #8 , because if the only modificaiton is to post-process which means adding custom AnalysisPasses should be handled automatically.

Additional Details / Helpful Resources

Put it in a baseline file. Then the metric statistics utilities can auto compare against runners defined as baselines.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.