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:
qbraid versions <0.11 are not compatible with qBraid API V2. See migration guide.To ensure compatibility with the new platform, use qbraid ≥ 0.11.0.
Next, obtain your qBraid API key:
- Login or create an account at account.qbraid.com.
- Navigate to Account > API Keys in the left-sidebar, and then click “Create API Key”.
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 device “QRN” (qBraid Resource Name), a QbraidDevice object can be created as follows:
from qbraid import QbraidProvider
provider = QbraidProvider()
provider.get_devices()
# [<qbraid.runtime.native.device.QbraidDevice('qbraid:qbraid:sim:qir-sv')>]
device = provider.get_device('qbraid:qbraid:sim:qir-sv')
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:qbraid:sim:qir-sv',
# '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.