A library for quantum circuit composition
Project description
QCRAFT AutoSchedulQ
Description
QCRAFT AutoSchedulQ: a library that allows users to automatically schedule the execution of their own quantum circuits, improving efficiency and reducing execution times in quantum computing environments. With this library, your Qiskit or Braket quantum circuit will be modified to increase its length but also decreasing the number of shots needed to execute it, getting a new circuit that needs more qubits but less shots to get the same result as the original circuit.
Installation
You can install QCRAFT AutoSchedulQ and all its dependencies using pip:
pip install autoscheduler
You can also install from source by cloning the repository and installing from source:
git clone https://github.com/Qcraft-UEx/QCRAFT-AutoSchedulQ.git
cd autoscheduler
pip install .
Usage
Here is a basic example on how to use Autoscheduler with a Quirk URL, when using a Quirk URL, it is mandatory to include the provider ('ibm' or 'aws') as an input.
from autoscheduler import Autoscheduler
circuit = "https://algassert.com/quirk#circuit={'cols':[['H'],['•','X'],['Measure','Measure']]}"
max_qubits = 4
shots = 100
provider = 'ibm'
autoscheduler = Autoscheduler()
scheduled_circuit, shots, times = autoscheduler.schedule(circuit, max_qubits, shots, provider)
results = autoscheduler.execute(scheduled_circuit,shots,'local',times)
Here is a basic example on how to use Autoscheduler with a GitHub URL.
from autoscheduler import Autoscheduler
circuit = "https://raw.githubusercontent.com/user/repo/branch/file.py"
max_qubits = 15
shots = 1000
autoscheduler = Autoscheduler()
scheduled_circuit, shots, times = autoscheduler.schedule(circuit, max_qubits, shots)
results = autoscheduler.execute(scheduled_circuit,shots,'local',times)
Here is a basic example on how to use Autoscheduler with a Braket circuit.
from autoscheduler import Autoscheduler
from braket.circuits import Circuit
circuit = Circuit()
circuit.x(0)
circuit.cnot(0,1)
max_qubits = 8
shots = 300
autoscheduler = Autoscheduler()
scheduled_circuit, shots, times = autoscheduler.schedule(circuit, max_qubits, shots)
results = autoscheduler.execute(scheduled_circuit,shots,'local',times)
Here is a basic example on how to use Autoscheduler with a Qiskit circuit.
from autoscheduler import Autoscheduler
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
qreg_q = QuantumRegister(2, 'q')
creg_c = ClassicalRegister(2, 'c')
circuit = QuantumCircuit(qreg_q, creg_c)
circuit.h(qreg_q[0])
circuit.cx(qreg_q[0], qreg_q[1])
circuit.measure(qreg_q[0], creg_c[0])
circuit.measure(qreg_q[1], creg_c[1])
max_qubits = 16
shots = 500
autoscheduler = Autoscheduler()
scheduled_circuit, shots, times = autoscheduler.schedule(circuit, max_qubits, shots)
results = autoscheduler.execute(scheduled_circuit,shots,'local',times)
It it possible to use the method schedule_and_execute instead of schedule and then execute, this method needs to have the machine in which you want to execute the circuit as a mandatory input. If the execution is on a aws machine, it is needed to specify the s3 bucket too. Also, provider is only needed when using Quirk URLs.
from autoscheduler import Autoscheduler
circuit = "https://algassert.com/quirk#circuit={'cols':[['H'],['•','X'],['Measure','Measure']]}"
max_qubits = 4
shots = 100
provider = 'aws'
autoscheduler = Autoscheduler()
results = autoscheduler.schedule_and_execute(circuit, max_qubits, shots, 'ionq', provider, 'amazon-braket-s3')
from autoscheduler import Autoscheduler
circuit = "https://raw.githubusercontent.com/user/repo/branch/file.py"
max_qubits = 15
shots = 1000
autoscheduler = Autoscheduler()
results = autoscheduler.schedule_and_execute(circuit, max_qubits, shots, 'ibm_brisbane')
from autoscheduler import Autoscheduler
from braket.circuits import Circuit
circuit = Circuit()
circuit.x(0)
circuit.cnot(0,1)
max_qubits = 8
shots = 300
autoscheduler = Autoscheduler()
results = autoscheduler.schedule_and_execute(circuit, max_qubits, shots, 'ionq', s3_bucket='amazon-braket-s3')
from autoscheduler import Autoscheduler
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
qreg_q = QuantumRegister(2, 'q')
creg_c = ClassicalRegister(2, 'c')
circuit = QuantumCircuit(qreg_q, creg_c)
circuit.h(qreg_q[0])
circuit.cx(qreg_q[0], qreg_q[1])
circuit.measure(qreg_q[0], creg_c[0])
circuit.measure(qreg_q[1], creg_c[1])
max_qubits = 16
shots = 500
autoscheduler = Autoscheduler()
results = autoscheduler.schedule_and_execute(circuit, max_qubits, shots, 'ibm_brisbane')
Changelog
The changelog is available here
License
Autoscheduler is licensed under the MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file autoscheduler-0.2.tar.gz
.
File metadata
- Download URL: autoscheduler-0.2.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 22770678e5346ba85e3fa2663f3d7ae5f421d8c9fca6f863804b102149d232b7 |
|
MD5 | 8cd45430b09b5c3457fdfae360fdabd6 |
|
BLAKE2b-256 | 97dacd0bb369c9055fa805f10ef0e9adcc505007d35d5e26ccc0a2b4ce1be856 |
File details
Details for the file autoscheduler-0.2-py3-none-any.whl
.
File metadata
- Download URL: autoscheduler-0.2-py3-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29c4b182de2804019bf017a4cd8507ffa78edf3fcfc6419506796b3b488e9f9f |
|
MD5 | bd1e8a984ad152953d5cda1ca0f44ff9 |
|
BLAKE2b-256 | 62d5966584fe83be22a99ce16126cf1953a539baa08da1912debd77f1b85cacf |