API Reference: qbraid.runtime.native

Installation & Setup

To interface with the qBraid QIR simulator or any of the 10+ quantum devices supported by qBraid’s managed access, install the relevant qbraid runtime extra(s) based on your device(s) of choice:

pip install 'qbraid[qir]'    # qBraid QIR Simulator
pip install 'qbraid[qubo]'   # NEC Vector Annealer
pip install 'qbraid[quera]'  # QuEra QASM Simulator
pip install qbraid           # Default installation for all other devices

Next, obtain your qBraid API key:

  1. Login or create an account at account.qbraid.com.
  2. Copy your API Key from the Plan info card on the left side of your account page.

Save account to disk

Once you have your API key, you can save it locally in a configuration file ~/.qbraid/qbraidrc, where ~ corresponds to your home ($HOME) directory:

Account credentials are saved in plain text, so only do so if you are using a trusted device.

from qbraid.runtime import QbraidProvider

provider = QbraidProvider(api_key='API_KEY')
provider.save_config()

Once the account is saved on disk, you can instantiate the provider without any arguments:

provider = QbraidProvider()

Load account from environment variables

Alternatively, the qBraid-SDK can discover credentials from environment variables:

export QBRAID_API_KEY='QBRAID_API_KEY'

Basic Usage

Given a qbraid_id, a QbraidDevice object can be created as follows:

from qbraid import QbraidProvider

provider = QbraidProvider()
provider.get_devices()
# [<qbraid.runtime.native.device.QbraidDevice('qbraid_qir_simulator')>]

device = provider.get_device('qbraid_qir_simulator')

type(device)
# <class 'qbraid.runtime.native.device.QbraidDevice'>

From here, class methods are available to get information about the device, execute quantum programs, access the wrapped device object directly, and more.

device.metadata()
# {'device_id': 'qbraid_qir_simulator',
#  'device_type': 'SIMULATOR',
#  'num_qubits': 64,
#  'status': 'ONLINE',
#  'queue_depth': 0}

Then you can submit quantum jobs to the device.

run_input = [qiskit_circuit, braket_circuit, cirq_circuit, qasm3_str]

jobs = device.run(run_input, shots=100)

results = [job.result() for job in jobs]

print(results[0].data.get_counts())
# {'00': 50, '01': 2, '10': 47, '11': 1}

See how to visualize these results in the Visualization section.