Qiskit AQT Provider
Qiskit is an open-source SDK for working with quantum computers at the level of circuits, algorithms, and application modules.
This module contains the "Qiskit AQT Provider" which allows access to Alpine Quantum Technologies GmbH (AQT) ion-trap quantum computing systems within the High-Performance integrated Quantum Computing (HPQC) project in the Quantum Austria program.
External documentation links
- Qiskit
- Qiskit AQT Provider
- AQT
Accessing AQT Quantum Computers
Access time windows
- HPQC project partners will be able to submit quantum circuits to AQT's QC systems through their access to LEO5.
- The general time window for external access of our QC is Wednesdays from 10:00 - 16:00 CET/CEST. Please note, that external access to the QC systems is much in demand and AQT needs to coordinate the access time with other users. To enable efficient scheduling and maximize successful execution of experiments, we ask the project partners to notify us about one week in advance to the intended access via email to ibex-access@aqt.eu.
- Availability of the QC might change on short notice due to maintenance work on the QC systems hardware or the cloud access.
- Additional weekly time windows for accessing the QC for project partners might open up on short notice and partners will be informed at the soonest.
- Before submitting a quantum algorithm or circuit to the AQT QC systems, please test it on the offline-simulator backend.
Optimizing quantum algorithms for AQT Quantum Computer properties
- Quantum circuits can consist of the gates defined in Qiskit, as they can be automatically transpiled to the AQT native gate set with the qiskit-aqt-provider, with optimization_level=3 as the recommended setting. Note: in-sequence measurements are not supported, details for gates can be found in the OpenAPI specification at https://arnica.aqt.eu/api/v1/docs.
- Entangling gate: RXX(theta) with an arbitrary angle theta
- Single-qubit gates: R(theta, phi) and RZ(theta) with arbitrary angles theta and phi
- We suggest that a single job request to the QC systems contains less than 50 circuits, to reduce the overhead in case single circuit executions fail, which requires re-processing of the entire job.
- The maximum supported number of repetitions per circuit is 200, whereas AQT recommends using more than 20 repetitions, due to duty-cycle efficiency. This variable can be set in the job submission in Qiskit. Note: if higher statistical significance is required for a given circuit it may simply be executed multiple times and results can be summed up.
- The coherence times of the qubits are on the order of T1=1000 ms and T2=300 ms. At the time of writing the measured quantum volume is 64, corresponding to successfully executed circuits with up to 40 two-qubit and 100 single-qubit gates. Thus, AQT recommends not to exceed the above numbers of gates for a single circuit. Note: the successful execution of longer circuits may be possible, but could return results with fidelities below the noise level of the current gate performance.
- AQT will provide a QC system with 8 qubits. In our experience, 8 qubits have the best performance with respect to number of qubits and fidelities. In case certain HPQC projects require more qubits, we can discuss on the basis of individual use cases how to push the qubit number higher. The 8-qubit register typically has:
- Single-qubit gate fidelities of 99.3(5)%
- Two-qubit gate fidelities of 98(1)%
- A continuous system availability from several hours to days, with the afore mentioned fidelities.
- While AQT tries to maintain high levels of performance, fidelity and availability might change on short notice.
Usage with LEO5
To list available versions of the "Qiskit AQT Provider" module use the command
module avail qiskit
To load the "Qiskit AQT Provider" module use
module load qiskit
which will load its most recent version by default or specify a version by e.g. qiskit/aqt-1.0.0. It is highly recommended to always use the most recent version. The qiskit modules also contain the required authentication variables for the AQT provider, if the user has the according permissions.
The module provides the following things:
- a recent Python virtual environment
- the Qiskit libraries qiskit, qiskit-aer, and qiskit-terra
- the "Qiskit AQT Provider" library qiskit-aqt-provider
- the authentication data required to access the real-hardware devices from AQT (for users that are members of the group hpqc - see below)
To print the available version of libraries use the command
pip list | grep "qiskit"
Workspaces
To List available workspaces and quantum computing devices therein use this Python example. The dotenv_path must be set for authentication with the AQT API. For users in the group hpqc the environment variable AQT_ENV_FILE is automatically set to the correct value - so you can use the code exactly as shown below.
import os from qiskit_aqt_provider.aqt_provider import AQTProvider provider = AQTProvider(dotenv_path=os.environ["AQT_ENV_FILE"]) print(provider.backends())
which will generate an output similar to
╒════════════════╤════════════════════════════╤═════════════════════════╤═══════════════════╕ │ Workspace ID │ Resource ID │ Description │ Resource type │ ╞════════════════╪════════════════════════════╪═════════════════════════╪═══════════════════╡ │ default │ offline_simulator_no_noise │ Offline ideal simulator │ offline_simulator │ ├────────────────┼────────────────────────────┼─────────────────────────┼───────────────────┤ │ │ offline_simulator_noise │ Offline noisy simulator │ offline_simulator │ ├────────────────┼────────────────────────────┼─────────────────────────┼───────────────────┤ │ hpqc │ ibex │ Ibex │ device │ ╘════════════════╧════════════════════════════╧═════════════════════════╧═══════════════════╛
The list of available backends shows the workspace default, which contains so-called offline simulators, and the workspace hpqc, which contains the real-hardware backend ibex. Without a valid access token, the hpqc workspace will not be shown, in which case you can check if the Qiskit AQT Provider module has been correctly loaded.