Skip to main content
haiqu.run() This notebook demonstrates how to use haiqu.run() to execute your circuits on quantum hardware or simulators. Haiqu SDK currently supports devices available via IBM Quantum and AWS Braket. It is also possible to simulate quantum circuits using noisy simulators of some IBM devices and Qiskit Aer simulator Having a bug or an issue? Submit feedback haiqu.run() What does it do? This function does exactly what you’d expect: it runs your quantum circuits on available quantum hardware or simulators. How do I use it? Pass a quantum circuit along with necessary parameters (like the device and the number of shots) to haiqu.run() to create a run job, then retrieve results with job.result(). What are the options? Optional parameters include observables, parameters, options, and use_mitigation for enabling quantum error mitigation. Which option do you recommend? Start with running single circuits, then explore measuring observables, using parameterized circuits, and enabling error mitigation as needed. Initialize the example Import the necessary libraries, initialize the Haiqu SDK, and create an adder circuit to demonstrate circuit execution. The adder circuit adds two integers m and k.
import qiskit
import numpy as np
from qiskit.circuit.library import QFT
from haiqu.sdk import haiqu
from haiqu.sdk.wiz.drawer import Drawer

haiqu.login()
haiqu.init("Run Job Tutorial")

def build_adder_circuit(num_qubits, m, k):
    """
    Builds a quantum circuit that adds integer k to m using the QFT.
    
    Parameters:
    - num_qubits (int): Number of qubits.
    - m (int): Initial value.
    - k (int): Value to add.
    
    Returns:
    - QuantumCircuit implementing |m⟩ -> |m + k⟩ with measurement.
    - Binary strings for m and m+k (for verification).
    """
    m_binary = f"{m:0{num_qubits}b}"
    m_plus_k_binary = f"{m + k:0{num_qubits}b}"
    adder = qiskit.QuantumCircuit(num_qubits)
    for i in range(num_qubits):
        if m_binary[i] == "1":
            adder.x(num_qubits - 1 - i)
    adder.compose(QFT(num_qubits), inplace=True)
    for i in range(num_qubits):
        adder.rz(k * np.pi / 2 ** i, num_qubits - i - 1)
    adder.compose(QFT(num_qubits).inverse(), inplace=True)
    adder.measure_all()
    return adder, m_binary, m_plus_k_binary

adder, m_binary, m_plus_k_binary = build_adder_circuit(num_qubits=10, m=343, k=19)
haiqu.draw(adder)
Execute the quantum circuit First, we will list available devices, then run the adder circuit on a selected device using haiqu.run(). Finally, we will retrieve and display the results.
haiqu.list_devices()
To run on a particular quantum device, we need to specify our credentials in the options parameter of the haiqu.run() function. We will use fake_torino as a device for demonstration purposes, but you can replace it with the real ibm_torino from the list obtained earlier, as long as you have access to it.
device_id = "fake_torino"
options = {}

# Uncomment the following lines to run on the actual IBM Quantum device
# device_id = "ibm_torino"  

# options = {
#     "ibm_quantum_token": "YOUR_IBM_QUANTUM_TOKEN",  # Replace with your IBM Quantum API key
#     "ibm_quantum_instance": "YOUR_IBM_QUANTUM_INSTANCE_ID",  # Replace with your IBM Quantum instance ID if needed
# }

job = haiqu.run(
    adder,
    device_id=device_id,
    shots=1024,
    options=options,
)

result = job.result()
You can visualize the circuit using Haiqu’s Drawer utility. In the plot, you can hover over individual bins to see the exact value and the bitstring associated with it.
print(f"Expected result is {m_plus_k_binary}")
print(f"Probability of measuring the correct result: {result[0].get(m_plus_k_binary, 0):.4f}")

drawer = Drawer()

drawer.plot_histogram(result, title="Adder Circuit Results", labels=[device_id])
drawer.show()
💡 Good to Know: Instead of using device_id it is possible to pass a device parameter, for instance if you already have a device object from haiqu.get_device(). Get in Touch Documentation portal docs.haiqu.ai Contact Support feedback.haiqu.ai Follow Us on LinkedIn latest news on LinkedIn Visit Our Website Learn more about Haiqu Inc. on haiqu.ai Business Inquiries Contact us at info@haiqu.ai