Source code for kosmos.circuit_runner.ibm_runtime_utils
from qiskit import QuantumCircuit
from qiskit.providers import QiskitBackendNotFoundError
from qiskit_ibm_runtime import IBMBackend, QiskitRuntimeService
[docs]
def qiskit_remote_backend(
qiskit_runtime_service: QiskitRuntimeService,
backend_name: str | None = None,
min_num_qubits: int | None = None,
) -> IBMBackend:
"""Return a remote backend.
Args:
qiskit_runtime_service (QiskitRuntimeService): The Qiskit Runtime service instance.
backend_name (str | None): The name of the backend. Returns the least busy backend if None.
Defaults to None.
min_num_qubits (int | None): The minimum number of qubits. Defaults to None.
Returns:
IBMBackend: The remote backend.
"""
if backend_name is None:
return qiskit_runtime_service.least_busy(min_num_qubits=min_num_qubits, operational=True)
backends = qiskit_runtime_service.backends(name=backend_name, min_num_qubits=min_num_qubits)
if not backends:
msg = "No backend matches the criteria."
raise QiskitBackendNotFoundError(msg)
return backends[0]
[docs]
def available_backends_list(qiskit_runtime_service: QiskitRuntimeService) -> str:
"""Human-readable list of available backends, including pending jobs.
Args:
qiskit_runtime_service (QiskitRuntimeService): The Qiskit Runtime service instance.
Returns:
str: Human-readable list of available backends, including pending jobs.
"""
backends = qiskit_runtime_service.backends()
descr = ""
for backend in backends:
descr += f"{backend.name}, pending jobs: {backend.status().pending_jobs}\n"
if not backends:
descr = "No backends available.\n"
return descr
[docs]
def cancel_job(qiskit_runtime_service: QiskitRuntimeService, job_id: str) -> None:
"""Cancel a runtime job.
Args:
qiskit_runtime_service (QiskitRuntimeService): The Qiskit Runtime service instance.
job_id (str): The job ID.
"""
job = qiskit_runtime_service.job(job_id)
job.cancel()
[docs]
def cancel_all_jobs(qiskit_runtime_service: QiskitRuntimeService) -> None:
"""Cancel all runtime jobs.
Args:
qiskit_runtime_service (QiskitRuntimeService): The Qiskit Runtime service instance.
"""
for job in qiskit_runtime_service.jobs():
job.cancel()
[docs]
def minimal_circuit() -> QuantumCircuit:
"""Return a minimal Qiskit circuit suitable to test basic execution.
The circuit uses one qubit and one classical bit, applies an X gate, and measures the outcome.
Returns:
QuantumCircuit: The minimal quantum circuit.
"""
qc = QuantumCircuit(1, 1)
qc.x(0)
qc.measure(0, 0)
return qc