Zum Hauptinhalt springen

Code zu Qiskit Serverless portieren

Das folgende Beispiel zeigt, wie du bestehenden Code portierst, um Qiskit Serverless zu nutzen.

hinweis

Der folgende Code setzt voraus, dass du deine Zugangsdaten gespeichert hast. Falls nicht, folge den Anweisungen unter IBM Cloud-Konto einrichten, um dich mit deinem API-Schlüssel zu authentifizieren.

Das Experiment aktualisieren

from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit.circuit.random import random_circuit

qc_random = [(random_circuit(20, 20, measure=True)) for _ in range(30)]
optimization_level = 3

service = QiskitRuntimeService(channel="ibm_quantum_platform")
backend = service.get_backend(backend_name)

pass_manager = generate_preset_pass_manager(
optimization_level=optimization_level, backend=backend
)

# @distribute_task(target={"cpu": 1})
def transpile_parallel(circuit, pass_manager):
"""Distributed transpilation for an abstract circuit into an ISA circuit for a given backend."""

isa_circuit = pass_manager.run(circuit)

return isa_circuit

transpiled_circuits = [
transpile_parallel(circuit, pass_manager)
for circuit in circuits
]

print(transpiled_circuits)

In Qiskit Serverless hochladen

Folge den Anweisungen auf der Seite Einführung in Qiskit Functions, um dich mit deinem API-Schlüssel zu authentifizieren.

from qiskit_ibm_catalog import QiskitServerless, QiskitFunction

# Authenticate to the remote cluster and submit the pattern for remote execution.
serverless = QiskitServerless()

transpile_remote_demo = QiskitFunction(
title="transpile_remote_serverless",
entrypoint="transpile_remote.py",
working_dir="./source_files/",
)

serverless.upload(transpile_remote_demo)

Ausgabe

'transpile_remote_serverless'

Remote in Qiskit Serverless ausführen

from qiskit.circuit.random import random_circuit
from qiskit_ibm_runtime import QiskitRuntimeService

# Setup inputs
qc_random = [(random_circuit(20, 20, measure=True)) for _ in range(30)]
backend = "ibm_brisbane"
optimization_level = 3

# Running program
transpile_remote_serverless = serverless.load('transpile_remote_serverless')
job = transpile_remote_serverless.run(
circuits=qc_random,
backend=backend,
optimization_level=optimization_level
)

job.job_id

Ausgabe

'727e921d-512d-4b7d-af97-fe29e93ce7ea'

Nächste Schritte

Empfehlungen
  • Lies einen Fachartikel, in dem Forscher Qiskit Serverless und quantenzentriertes Supercomputing nutzten, um Quantenchemie zu erforschen.