Skip to content
This repository has been archived by the owner on Dec 20, 2023. It is now read-only.

🧪 Gather DDSIM benchmarks #5

Open
burgholzer opened this issue May 8, 2023 · 0 comments · May be fixed by #12
Open

🧪 Gather DDSIM benchmarks #5

burgholzer opened this issue May 8, 2023 · 0 comments · May be fixed by #12
Assignees
Labels
enhancement New feature or request

Comments

@burgholzer
Copy link
Collaborator

burgholzer commented May 8, 2023

The task is to gather a representative set of benchmarks for DDSIM and set up a corresponding benchmark suite.
This builds on #4


On the one hand, this means different simulators within DDSIM. This should at least include:

The general purpose simulators:

  • CircuitSimulator,
  • HybridSchrodingerFeynmanSimulator in Amplitude and DD mode,
  • UnitarySimulator in Sequential and Recursive mode,
  • DeterministicNoiseSimulator
  • StochasticNoiseSimulator

The special purpose simulators:

  • GroverSimulator
  • ShorFastSimulator

You can look into the respective test/test_* files to get some inspiration on how the tests could look like.


On the other hand, this means benchmark circuits (for the general purpose simulators).
Some of algorithms are already built into the QFR and can be used as qc input right away (see https://github.com/cda-tum/qfr/tree/main/include/algorithms)

  • Entanglement (GHZ state)
  • Berstein-Vazirani (regular circuit and dynamic version)
  • Quantum Phase Estimation (regular circuit and dynamic version)
  • QFT (regular circuit and dynamic version) -- probably only interesting for the UnitarySimulator
  • Random Clifford Circuit
  • Grover

Some benchmarks are not yet implemented in C++, but would be rather helpful. See https://github.com/cda-tum/MQTBench/tree/main/src/mqt/bench/benchmarks for Python/Qiskit reference implementations.

  • W-State
  • Quantum Walk
  • Graph State
  • Some Ansatz functions (realamprandom, su2random, twolocalrandom)
  • QAOA

It would be preferable to have these implemented in C++ just as the other algorithms (would be a nice "Getting Started" activity), but it is not a must have. You can also generate the circuits using mqt.bench.


As for the size of the benchmarks: The current max in the DD package, without changing anything, is 128 qubits. Benchmarks that run in significantly less than a second are not interesting. The interesting runtimes are between 1s and 300s per benchmark. So careful selection is key. Otherwise running the evaluation once will take forever.

In all cases, make sure to fix a random seed wherever applicable so that results are reproducible (as much as possible).

@burgholzer burgholzer added the enhancement New feature or request label May 8, 2023
@tyi1025 tyi1025 self-assigned this May 8, 2023
@tyi1025 tyi1025 linked a pull request Jun 14, 2023 that will close this issue
@tyi1025 tyi1025 linked a pull request Jun 14, 2023 that will close this issue
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants