Skip to content

Backend module integration with WMI simulators and quantum computers #3

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

Merged
merged 21 commits into from
May 1, 2024

Conversation

TFphoenix
Copy link
Contributor

@TFphoenix TFphoenix commented Apr 19, 2024

This pull request aims to implement a backend module within qib, that can interchange experimentation requests and results over the network with various quantum providers and processors. This pull request also expands the backend module for the WMI provider (i.e. for their Qiskit Simulator and Quantum Computer backends). Other auxiliary changes, adaptations, and expansions of the existing codebase were proposed in this pull request.

Changes proposed in this pull request:

  • A generic and fully-extendable infrastructure for the integration of quantum processors/backends with qib (i.e. the backend module), consisting of the following core components: QuantumProcessor, Experiment, ExperimentResults, Options (see this for a more detailed module architecture overview)
  • An extension of the backend module for the WMI (Walter-Meissner Institute) provider (i.e. for their Qiskit Simulator and Quantum Computer backends)
  • Additional quantum gates: Identity, iSwap, and SX
  • An extension of the AbstractOperator: ControlInstruction which includes the measure, barrier, and delay quantum instructions
  • OpenQASM 2.0+ serialization for quantum circuits, experiments, gates, and instructions
  • A simple HTTP request-response network communication system
  • UTs for all above-mentioned implementations
  • Codebase syntax upgrade to Python 3.10
  • A small refactoring and adaptation of the TensorNetworkProcessor
  • Additional examples, consisting of a basic and a more advanced scenario, of utilizing the WMI provider using qib's backend module (WMI Backend Integration and Single-Qubit Quantum State Tomography Experiment, for both the WMI Qiskit Simulator and WMI Quantum Computer backends)
  • Documentation on how to extend the backend module for future quantum backend providers (see here)

FEAT: Implement initial ProcessorConfiguration logic

CHORE: Add configuration to twnsor_nw_proc

FEAT: Architecture WIP

Architecture WIP

Architecture WIP

Architecture WIP (Qiskit Simulator)

Configuration & Options WIP

FEAT: Options implementation and refactoring

TEST: QiskitSimulator test WIP
REFACTOR: Processor Experiment relation

CHORE: Implement Martin's proposals regarding properties

FEAT: Experiment WIP

REFACTOR: experiment serialization and BE integration
…and refactorings

CHORE + Measurement Operation WIP

TEST: UTs for gates Qobj OpenQASM serialization + FIX: Circular dependencies

FEAT: Implement measurement operator

FEAT: test & refactor measurement operator and gates

REFACTOR: as_qobj_openQASM() -> as_openQASM()
…tions

FEAT: Experiment validation + small refactoring

CHORE: Remove duplicate method

FEAT: Experiment options and serialization WIP + REFACTOR: remove hardcoded values (constants)

FEAT: Experiment serialization + REFACTOR: bits to clbits

CHORE: Rename QSIM to WMIQSIM
CHORE: Add new gates to modules

Implement UTs for the id, sx, and iswap gates
REFACTOR: Restructure backend module

FEAT: Control Instructions WIP + REFACTOR: Measurement

FEAT: Implement barrier and delay, and their UTs
FIX: as_circuit_matrix() UT for iSwap gate
REFACTOR: Simplify architecture + FEAT: WMI Requests WIP

Add remaining TODOs

FEAT: Implement results() and wait_for_results()

FIX: Tie up loose-ends

CHORE: WMI Experiment

REFACTOR: counts as get_counts function

CHORE: QoL improvements

REFACTOR: TNP Refactoring WIP
REFACTOR: WMI Options syntax and chores

CHORE: Fix "coupling_map" name conflict

FIX: Options syntax error
REFACTOR: as_openQASM -> as_qasm

Add requests as dependency and backend example ipynb

REFACTOR: Small fixes and UTs

TEST: UTs for backend functionalities + small refactoring

TEST: Add UTs for WMIQC as well
FIX: Use radians instead of degrees

Chore

FIX: append_circuit object not iterable error

CHORE: Minor fixes and improvements

CHORE: Improve backend architecture diagram
… WMI QC)

Chore: wmi qc separate notebook

FEAT: Different query frequencies + QST clean-up WIP

WMI QSim + QC (almost) final experiments

CHORE: Restructure QST experiments, separate python notebooks, add WMIQC QST

QST on WMI quantum computer

Backend example QC
@cmendl cmendl merged commit a1d9668 into qc-tum:master May 1, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants