Skip to content

🎨 MQT Bench Update: New device structure and device, code refactoring, and further improvements #429

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

Open
wants to merge 30 commits into
base: main
Choose a base branch
from

Conversation

nquetschlich
Copy link
Collaborator

@nquetschlich nquetschlich commented Nov 20, 2024

This PR

  1. removes the Provider class (resolves Remove the Provider concept and replace it with base classes of Devices  #387)
  2. removes the placement option for the mapped TKET quantum circuits
  3. removes the frontend and evaluation submodules
  4. adds a new IBM device: ibmq_torino (and, with that, resolves Add 433-Qubit IBM Device with new native gate set #220 kind of)
  5. improves the Device class structure
  6. refactors the tests to accelerate the test execution time
  7. renames the random circuit (resolves Rename random benchmark because of shadowing python's module with the same name #368)
  8. adds a qasm3 export function (resolves ✨ OpenQASM 3.0 support #389)
  9. adds the Bernstein-Vazarani algorithm
  10. removes all benchmarks relying on not-maintained-anymore dependencies qiskit_algorithms, qiskit_optimization, and qiskit_nature (making 🔥Remove most of the qiskit application module benchmarks #404 obsolete and resolves ✨ Removal of deprecated dependencies #390 as well as resolves ✨ Improving documentation to make it more explicit which benchmarks trigger an optimization procedure when generated #388)
  11. renames the vqe ansatz circuit benchmarks and rewrote the qaoa benchmark to not use the qiskit application libraries anymore
  12. adds a algorithm level benchmark generation function for qiskit that only supports qasm3

As a consequence of this PR, the get_benchmark function parameter name changed since it does not need the provider anymore but a gateset. However, this allows one to easily generate benchmarks for custom gatesets.

This PR comes with multiple breaking changes.

Copy link

codecov bot commented Nov 21, 2024

Codecov Report

Attention: Patch coverage is 91.73387% with 41 lines in your changes missing coverage. Please review.

Project coverage is 92.4%. Comparing base (fe8f101) to head (02238ad).

Files with missing lines Patch % Lines
src/mqt/bench/benchmark_generator.py 18.0% 41 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##            main    #429     +/-   ##
=======================================
- Coverage   92.8%   92.4%   -0.4%     
=======================================
  Files         43      35      -8     
  Lines       1969    1591    -378     
=======================================
- Hits        1828    1471    -357     
+ Misses       141     120     -21     
Flag Coverage Δ
python 92.4% <91.7%> (-0.4%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@nquetschlich nquetschlich marked this pull request as ready for review November 21, 2024 21:20
@nquetschlich nquetschlich changed the title 🎨 Remove provider class and improve overall structure 🎨 MQT Bench Update: New device structure and device, code refactoring, and further improvements Nov 22, 2024
@nquetschlich nquetschlich added enhancement New feature or request python Pull requests that update Python code major Part of a major release usability Anything related to usability feature New feature or request mqt.bench Issues that affect mqt.bench labels Nov 23, 2024
@burgholzer burgholzer changed the title 🎨 MQT Bench Update: New device structure and device, code refactoring, and further improvements 🎨 MQT Bench Update: New device structure and device, code refactoring, and further improvements Nov 28, 2024
@nquetschlich nquetschlich requested a review from burgholzer March 14, 2025 15:55
burgholzer added a commit that referenced this pull request Apr 8, 2025
This is the first PR in a series that splits up #429 into smaller chunks
that are easier to digest. Hopefully, this gets the ball rolling and
gets us closer to an actual next major release.

This PR removes the `benchviewer` and `evaluation` modules.

Signed-off-by: burgholzer <[email protected]>
Co-authored-by: Nils Quetschlich <[email protected]>
@burgholzer
Copy link
Member

I just rebased this branch on the current main and cleaned up the history a little bit.
Hopefully this makes it easier to extract individual PRs out of here.
I'd hope to iteratively move something out of the PR here into a separate PR and then rebase here.
Let's see how that goes.

@burgholzer burgholzer force-pushed the remove_provider branch 2 times, most recently from 58c4b77 to 84201e4 Compare April 8, 2025 18:54
simon1hofmann added a commit that referenced this pull request Apr 14, 2025
Extracted from #429:
9. adds the Bernstein-Vazarani algorithm
simon1hofmann added a commit that referenced this pull request Apr 14, 2025
simon1hofmann added a commit that referenced this pull request Apr 14, 2025
…ture`, and `qiskit_algorithm` Dependencies (#507)

Extracted from #429:
10. removes all benchmarks relying on not-maintained-anymore
dependencies qiskit_algorithms, qiskit_optimization, and qiskit_nature
(making #404 obsolete and
resolves #390 as well as
resolves #388)
simon1hofmann added a commit that referenced this pull request Apr 14, 2025
Extracted from #429:
7. renames the random circuit (resolves
#368)
11. renames the vqe ansatz circuit benchmarks and rewrote the qaoa
benchmark to not use the qiskit application libraries anymore
simon1hofmann added a commit that referenced this pull request Apr 14, 2025
Extracted from #429:
2. removes the placement option for the mapped TKET quantum circuits
simon1hofmann added a commit that referenced this pull request Apr 15, 2025
simon1hofmann added a commit that referenced this pull request Apr 15, 2025
Extracted from #429:
8. adds a qasm3 export function (resolves
#389)
12. adds a algorithm level benchmark generation function for qiskit that
only supports qasm3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request feature New feature or request major Part of a major release mqt.bench Issues that affect mqt.bench python Pull requests that update Python code usability Anything related to usability
Projects
Status: In Progress
Status: In Progress
2 participants