انتقل إلى المحتوى الرئيسي

نقل الكود إلى Qiskit Serverless

يوضّح المثال التالي كيفية نقل كود موجود مسبقًا للاستفادة من Qiskit Serverless.

ملاحظة

يفترض الكود التالي أنك قد حفظت بيانات اعتمادك مسبقًا. إن لم تكن قد فعلت ذلك، اتّبع التعليمات الواردة في صفحة إعداد حساب IBM Cloud الخاص بك للمصادقة باستخدام مفتاح API الخاص بك.

تحديث التجربة

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)

الرفع إلى Qiskit Serverless

اتّبع التعليمات الواردة في صفحة مقدمة إلى Qiskit Functions للمصادقة باستخدام مفتاح 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)

الناتج

'transpile_remote_serverless'

التشغيل عن بُعد في 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

الناتج

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

الخطوات التالية

توصيات