This repository contains a framework for developing and benchmarking Quantum Mini-Apps, which are small, self-contained applications designed to evaluate the performance of quantum computing systems and algorithms.
The Quantum Mini-Apps framework provides a modular and extensible architecture for defining and executing quantum computing motifs, which are fundamental building blocks or patterns of quantum algorithms. The framework leverages the power of Qiskit for quantum circuit simulation and Dask for parallel and distributed execution.
The main components of the framework are:
-
Motifs: Motifs are the core components of the framework, representing specific quantum computing tasks or algorithms. Each motif is implemented as a separate class and can be configured with various parameters.
-
Executor: The executor component manages the execution of motifs on different computing environments, such as local machines, clusters, or cloud resources. It supports different execution backends, including Dask and Ray.
-
Mini-Apps: Mini-Apps are high-level applications that combine one or more motifs to perform a specific quantum computing task or benchmark. They provide a convenient interface for configuring and running the motifs with different parameters.
To get started with the Quantum Mini-Apps framework, follow these steps:
- Clone the repository:
git clone https://github.com/radical-cybertools/quantum-mini-apps.git
- Install the required dependencies:
pip install -r requirements.txt
- Run the provided example Mini-App:
python mini-apps/quantum-simulation/ce_local.py
This will execute the QuantumSimulation
Mini-App with the default configuration, which runs a circuit execution motif on a local Dask cluster.
To run on Perlmutter, follow Using Dask on Perlmutter to provision dask cluster, and run python mini-apps/quantum-simulation/ce_perlmutter.py
against the running Perlmutter dask cluster.
To customize the framework or develop your own Mini-Apps, you can follow these sample steps:
-
Implement a new Mini-App: Create a new class that inherits from the
Motif
base class and implement therun
method to define the quantum computing task or algorithm. -
Configure the Motif: Use the provided builder classes (e.g.,
CircuitExecutionBuilder
) to configure the motif with the desired parameters. -
Create a new Mini-App: Define a new class that inherits from the
MiniApp
base class and implement therun
method to combine and execute the desired motifs. -
Configure the Execution Environment: Modify the
cluster_info
dictionary in themain.py
file to specify the desired execution environment (e.g., local, cluster, or cloud) and its configuration. -
Run the Mini-App: Execute the created mini-app script file with the appropriate configuration to run the Mini-App and benchmark the performance of the quantum computing system.
Contributions to the Quantum Mini-Apps framework are welcome! If you encounter any issues or have suggestions for improvements, please open an issue or submit a pull request.
This project is licensed under the MIT License.