Skip to main content

No project description provided

Project description

Stability Client verify process License Code style: Black Python Qiskit

Qiskit Serverless client

diagram

Installation

pip install qiskit_serverless

Documentation

Full docs can be found at https://qiskit.github.io/qiskit-serverless/

Usage

Step 1: write funtion in ./src/function.py

from qiskit_serverless import distribute_task, get, get_arguments, save_result

from qiskit import QuantumCircuit
from qiskit.circuit.random import random_circuit
from qiskit.primitives import StatevectorSampler as Sampler
from qiskit.quantum_info import SparsePauliOp

# 1. let's annotate out function to convert it
# to distributed async function
# using `distribute_task` decorator
@distribute_task()
def distributed_sample(circuit: QuantumCircuit):
    """Calculates quasi dists as a distributed function."""
    return Sampler().run([(circuit)]).result()[0].data.meas.get_counts()

# 2. our program will have one arguments
# `circuits` which will store list of circuits
# we want to sample in parallel.
# Let's use `get_arguments` funciton
# to access all program arguments
arguments = get_arguments()
circuits = arguments.get("circuits", [])

# 3. run our functions in a loop
# and get execution references back
function_references = [
    distributed_sample(circuit)
    for circuit in circuits
]

# 4. `get` function will collect all
# results from distributed functions
collected_results = get(function_references)

# 5. `save_result` will save results of program execution
# so we can access it later
save_result({
    "quasi_dists": collected_results
})

Step 2: run function

from qiskit_serverless import ServerlessClient, QiskitFunction
from qiskit.circuit.random import random_circuit

client = ServerlessClient(
    token="<TOKEN>",
    host="<GATEWAY_ADDRESS>",
)

# create function
function = QiskitFunction(
    title="Quickstart",
    entrypoint="program.py",
    working_dir="./src"
)
client.upload(function)

# create inputs to our program
circuits = []
for _ in range(3):
    circuit = random_circuit(3, 2)
    circuit.measure_all()
    circuits.append(circuit)

# run program
my_function = client.get("Quickstart")
job = my_function.run(circuits=circuits)

Step 3: monitor job status

job.status()
# 'DONE'

# or get logs
job.logs()

Step 4: get results

job.result()
# {'quasi_dists': [
# {'101': 902, '011': 66, '110': 2, '111': 37, '100': 17},
# {'100': 626, '101': 267, '001': 49, '000': 82},
# {'010': 145, '100': 126, '011': 127, '001': 89, '110': 173, '111': 166, '000': 94, '101': 104}
# ]}

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

qiskit_serverless-0.15.1.tar.gz (32.3 kB view details)

Uploaded Source

Built Distribution

qiskit_serverless-0.15.1-py3-none-any.whl (45.0 kB view details)

Uploaded Python 3

File details

Details for the file qiskit_serverless-0.15.1.tar.gz.

File metadata

  • Download URL: qiskit_serverless-0.15.1.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for qiskit_serverless-0.15.1.tar.gz
Algorithm Hash digest
SHA256 a678bc957ca149ae1ab3fa81728b9686d341e631038e66f7895cba76a80f4fc5
MD5 93c1e79238ca08fe6ed413125c59fd60
BLAKE2b-256 35c98ace94dcab38b008461a7746df35a42489dbbd9df92efb1357d27074500d

See more details on using hashes here.

File details

Details for the file qiskit_serverless-0.15.1-py3-none-any.whl.

File metadata

File hashes

Hashes for qiskit_serverless-0.15.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b0dfc12cc629a88602bccd60909a66b894badde1d7b19cae593394265eb08e3e
MD5 f4481364e70dd314eacb4ae83cc668e9
BLAKE2b-256 4fd527d8bba24f7f6211619a01e527f1cfa68e9da4d8d524742f897948767798

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page