Skip to main content
IBM Quantum Platform

Código de puerto a Qiskit Serverless

Tip

Qiskit Serverless está siendo actualizado y sus características están cambiando rápidamente. Durante esta fase de desarrollo, encontrará las notas de la versión y la documentación más reciente en la página « Qiskit Serverless » (Notas de la versión y documentación) de GitHub.

El siguiente ejemplo muestra cómo portar código existente para aprovechar Qiskit Serverless.

Note

El siguiente código asume que has guardado tus credenciales. Si no lo ha hecho, siga las instrucciones de Configurar su cuenta IBM Cloud para autenticarse con su clave API.


Actualizar el experimento

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)

Subir a Qiskit Serverless

Sigue las instrucciones de la página Introducción a las funciones de Qiskit para autenticarte con tu clave API.

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)

Resultado

'transpile_remote_serverless'

Ejecutar de forma remota en Qiskit Serverless

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

Resultado

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

Próximos pasos

Recomendaciones
  • Lea un artículo en el que los investigadores utilizaron Qiskit Serverless y la supercomputación centrada en la cuántica para explorar la química cuántica.
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.