IBM Quantum and Amazon Braket Interfaces¶
The Ket quantum programming platform provides seamless integration with
industry-leading quantum cloud providers. By using the
IBMDevice and AmazonBraket classes,
you can execute Ket quantum circuits on Quantum Processing Units (QPUs)
or simulators provided by IBM Quantum and Amazon Web Services (AWS).
Important
Execution Model
Prerequisites¶
Before using these integrations, install the required dependencies.
IBM Quantum:
pip install ket-lang[ibm]
Amazon Braket:
pip install ket-lang[amazon]
IBM Quantum Interface (IBMDevice)¶
The IBMDevice class provides integration with the Qiskit ecosystem.
Account setup:
Create an account and retrieve your token: https://quantum.ibm.com/
Setup instructions: https://docs.quantum.ibm.com/start/setup-channel
Basic Usage: Bell State (Local Simulator)¶
from ket import *
from ket.ibm import IBMDevice
from math import sqrt
device = IBMDevice()
process = Process(device)
a, b = process.alloc(2)
X(a + b)
CNOT(H(a), b)
with obs():
a0 = Z(a)
a1 = X(a)
b0 = -(X(b) + Z(b)) / sqrt(2)
b1 = (X(b) - Z(b)) / sqrt(2)
h = a0 * b0 + a0 * b1 + a1 * b0 - a1 * b1
print(exp_value(h).get())
Advanced Usage: Noisy Local Simulation¶
You can provide a custom Qiskit backend to IBMDevice
to emulate realistic hardware noise.
from ket import *
from ket.ibm import IBMDevice
from qiskit_aer import AerSimulator
from qiskit_ibm_runtime.fake_provider import FakeBrisbane
backend = FakeBrisbane()
simulator = AerSimulator.from_backend(backend)
device = IBMDevice(simulator)
process = Process(device)
# Continue building your circuit...
Amazon Braket Interface (AmazonBraket)¶
The AmazonBraket class connects Ket to AWS Braket,
allowing execution on local simulators, managed cloud simulators, and QPUs.
Cloud setup:
To use AWS resources, configure your AWS account with the required permissions.
Enable Amazon Braket: https://docs.aws.amazon.com/braket/latest/developerguide/braket-enable-overview.html
Targeting AWS Resources¶
If no ARN is provided, AmazonBraket defaults to a local simulator.
To target specific backends, provide the device ARN.
from ket import *
from ket.amazon import AmazonBraket
from math import sqrt
# Local simulator (default)
device = AmazonBraket()
# Cloud simulators
# device = AmazonBraket('arn:aws:braket:::device/quantum-simulator/amazon/tn1')
# device = AmazonBraket('arn:aws:braket:::device/quantum-simulator/amazon/dm1')
# Real QPUs
# device = AmazonBraket('arn:aws:braket:us-east-1::device/qpu/ionq/Aria-1')
# device = AmazonBraket('arn:aws:braket:us-east-1::device/qpu/ionq/Forte-1')
# device = AmazonBraket('arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet')
# device = AmazonBraket('arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3')
process = Process(device)
a, b = process.alloc(2)
X(a + b)
CNOT(H(a), b)
with obs():
a0 = Z(a)
a1 = X(a)
b0 = -(X(b) + Z(b)) / sqrt(2)
b1 = (X(b) - Z(b)) / sqrt(2)
h = a0 * b0 + a0 * b1 + a1 * b0 - a1 * b1
print(exp_value(h).get())