How-to: access AWS Braket devices¶
In order to get access to AWS Braket devices through Qiskit you need to import
AWSBraketProvider
provider.Provider gives you access to Braket backends.
[ ]:
from pprint import pprint
from qiskit_braket_provider import AWSBraketProvider
[4]:
provider = AWSBraketProvider()
Exploring all backends by Braket provider¶
[52]:
backends = provider.backends()
backends
[52]:
[BraketBackend[Aspen-10],
BraketBackend[Aspen-11],
BraketBackend[Aspen-8],
BraketBackend[Aspen-9],
BraketBackend[Aspen-M-1],
BraketBackend[IonQ Device],
BraketBackend[Lucy],
BraketBackend[SV1],
BraketBackend[TN1],
BraketBackend[dm1]]
[40]:
for backend in backends:
pprint(
{
"name": backend.name,
"description": backend.description,
"online date": backend.online_date,
"number of qubits": backend.num_qubits,
"operations": backend.operations[:5],
"backend version": backend.version,
}
)
{'backend version': 2,
'description': 'AWS Device: Rigetti Aspen-10.',
'name': 'Aspen-10',
'number of qubits': 38,
'online date': datetime.datetime(2021, 12, 15, 19, 48, 30, tzinfo=datetime.timezone.utc),
'operations': [Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),
Instruction(name='h', num_qubits=1, num_clbits=0, params=[]),
Instruction(name='id', num_qubits=1, num_clbits=0, params=[])]}
{'backend version': 2,
'description': 'AWS Device: Rigetti Aspen-11.',
'name': 'Aspen-11',
'number of qubits': 48,
'online date': datetime.datetime(2022, 3, 4, 20, 18, 30, tzinfo=datetime.timezone.utc),
'operations': [Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),
Instruction(name='h', num_qubits=1, num_clbits=0, params=[]),
Instruction(name='id', num_qubits=1, num_clbits=0, params=[])]}
{'backend version': 2,
'description': 'AWS Device: Rigetti Aspen-8.',
'name': 'Aspen-8',
'number of qubits': 38,
'online date': None,
'operations': [Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),
Instruction(name='h', num_qubits=1, num_clbits=0, params=[]),
Instruction(name='id', num_qubits=1, num_clbits=0, params=[])]}
{'backend version': 2,
'description': 'AWS Device: Rigetti Aspen-9.',
'name': 'Aspen-9',
'number of qubits': 38,
'online date': datetime.datetime(2021, 11, 18, 16, 13, 30, tzinfo=datetime.timezone.utc),
'operations': [Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),
Instruction(name='h', num_qubits=1, num_clbits=0, params=[]),
Instruction(name='id', num_qubits=1, num_clbits=0, params=[])]}
{'backend version': 2,
'description': 'AWS Device: Rigetti Aspen-M-1.',
'name': 'Aspen-M-1',
'number of qubits': 148,
'online date': datetime.datetime(2022, 4, 18, 17, 3, 38, tzinfo=datetime.timezone.utc),
'operations': [Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),
Instruction(name='h', num_qubits=1, num_clbits=0, params=[]),
Instruction(name='id', num_qubits=1, num_clbits=0, params=[])]}
{'backend version': 2,
'description': 'AWS Device: IonQ IonQ Device.',
'name': 'IonQ Device',
'number of qubits': 11,
'online date': datetime.datetime(2022, 4, 13, 18, 51, 48, 328000, tzinfo=datetime.timezone.utc),
'operations': [Instruction(name='x', num_qubits=1, num_clbits=0, params=[]),
Instruction(name='y', num_qubits=1, num_clbits=0, params=[]),
Instruction(name='z', num_qubits=1, num_clbits=0, params=[]),
Instruction(name='rx', num_qubits=1, num_clbits=0, params=[Parameter(theta)]),
Instruction(name='ry', num_qubits=1, num_clbits=0, params=[Parameter(theta)])]}
{'backend version': 2,
'description': 'AWS Device: Oxford Lucy.',
'name': 'Lucy',
'number of qubits': 8,
'online date': datetime.datetime(2022, 4, 18, 17, 0, 8, tzinfo=datetime.timezone.utc),
'operations': [Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),
Instruction(name='cy', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}
{'backend version': 2,
'description': 'AWS Device: Amazon Braket SV1.',
'name': 'SV1',
'number of qubits': 34,
'online date': datetime.datetime(2022, 1, 28, 17, 18, 44, 525122),
'operations': [Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),
Instruction(name='cy', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}
{'backend version': 2,
'description': 'AWS Device: Amazon Braket TN1.',
'name': 'TN1',
'number of qubits': 50,
'online date': datetime.datetime(2022, 1, 28, 17, 19, 33, 143757),
'operations': [Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),
Instruction(name='cy', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}
{'backend version': 2,
'description': 'AWS Device: Amazon Braket dm1.',
'name': 'dm1',
'number of qubits': 17,
'online date': datetime.datetime(2022, 3, 1, 22, 53, 1, 476669),
'operations': [Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),
Instruction(name='cy', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),
Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}
Quering for specific backend¶
[42]:
# state vector simulator
state_vector_simulator_backend = provider.get_backend("SV1")
state_vector_simulator_backend
[42]:
BraketBackend[SV1]
[45]:
# IonQ device
ionq_backend = provider.get_backend("IonQ Device")
ionq_backend
[45]:
BraketBackend[IonQ Device]
[46]:
# Rigetti device
rigetti_aspen_backend = provider.get_backend("Aspen-11")
rigetti_aspen_backend
[46]:
BraketBackend[Aspen-11]
[47]:
# OQC Lucy device
lucy_backend = provider.get_backend("Lucy")
lucy_backend
[47]:
BraketBackend[Lucy]
Query options¶
To get a full list of possible query options refer to Braket SDK get_device documentation
[51]:
online_simulators_backends = provider.backends(statuses=["ONLINE"], types=["SIMULATOR"])
online_simulators_backends
[51]:
[BraketBackend[SV1], BraketBackend[TN1], BraketBackend[dm1]]
[ ]: