{ "cells": [ { "cell_type": "markdown", "id": "a078254c", "metadata": {}, "source": [ "# How-to: access AWS Braket devices\n", "\n", "In order to get access to AWS Braket devices through Qiskit you need to import `AWSBraketProvider` provider. \\\n", "Provider gives you access to Braket backends." ] }, { "cell_type": "code", "execution_count": 1, "id": "5e768d55", "metadata": {}, "outputs": [], "source": [ "from pprint import pprint\n", "\n", "from qiskit_braket_provider import AWSBraketProvider" ] }, { "cell_type": "code", "execution_count": 2, "id": "200f52ee", "metadata": {}, "outputs": [], "source": [ "provider = AWSBraketProvider()" ] }, { "cell_type": "markdown", "id": "e2ddd301", "metadata": {}, "source": [ "### Exploring all backends by Braket provider" ] }, { "cell_type": "code", "execution_count": 3, "id": "906ecc1a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[BraketBackend[Aria 1],\n", " BraketBackend[Aspen-10],\n", " BraketBackend[Aspen-11],\n", " BraketBackend[Aspen-8],\n", " BraketBackend[Aspen-9],\n", " BraketBackend[Aspen-M-1],\n", " BraketBackend[Aspen-M-2],\n", " BraketBackend[Aspen-M-3],\n", " BraketBackend[Harmony],\n", " BraketBackend[Lucy],\n", " BraketBackend[SV1],\n", " BraketBackend[TN1],\n", " BraketBackend[dm1]]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "backends = provider.backends()\n", "backends" ] }, { "cell_type": "code", "execution_count": 4, "id": "8c8672a6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'backend version': 2,\n", " 'description': 'AWS Device: IonQ Aria 1.',\n", " 'name': 'Aria 1',\n", " 'number of qubits': 25,\n", " 'online date': datetime.datetime(2023, 6, 7, 11, 12, 40, tzinfo=datetime.timezone.utc),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='x', num_qubits=1, num_clbits=0, params=[]),\n", " Instruction(name='y', num_qubits=1, num_clbits=0, params=[]),\n", " Instruction(name='z', num_qubits=1, num_clbits=0, params=[]),\n", " Instruction(name='rx', num_qubits=1, num_clbits=0, params=[Parameter(theta)])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Rigetti Aspen-10.',\n", " 'name': 'Aspen-10',\n", " 'number of qubits': 38,\n", " 'online date': datetime.datetime(2021, 12, 15, 19, 48, 30, tzinfo=datetime.timezone.utc),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Rigetti Aspen-11.',\n", " 'name': 'Aspen-11',\n", " 'number of qubits': 48,\n", " 'online date': datetime.datetime(2022, 8, 17, 21, 25, 7, tzinfo=datetime.timezone.utc),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Rigetti Aspen-8.',\n", " 'name': 'Aspen-8',\n", " 'number of qubits': 38,\n", " 'online date': None,\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Rigetti Aspen-9.',\n", " 'name': 'Aspen-9',\n", " 'number of qubits': 38,\n", " 'online date': datetime.datetime(2021, 11, 18, 16, 13, 30, tzinfo=datetime.timezone.utc),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Rigetti Aspen-M-1.',\n", " 'name': 'Aspen-M-1',\n", " 'number of qubits': 148,\n", " 'online date': datetime.datetime(2022, 6, 17, 20, 13, 38, tzinfo=datetime.timezone.utc),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Rigetti Aspen-M-2.',\n", " 'name': 'Aspen-M-2',\n", " 'number of qubits': 148,\n", " 'online date': datetime.datetime(2023, 1, 20, 19, 31, 9, tzinfo=datetime.timezone.utc),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Rigetti Aspen-M-3.',\n", " 'name': 'Aspen-M-3',\n", " 'number of qubits': 148,\n", " 'online date': datetime.datetime(2023, 6, 13, 21, 35, 32, tzinfo=datetime.timezone.utc),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='h', num_qubits=1, num_clbits=0, params=[])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: IonQ Harmony.',\n", " 'name': 'Harmony',\n", " 'number of qubits': 11,\n", " 'online date': datetime.datetime(2023, 6, 8, 11, 0, 4, tzinfo=datetime.timezone.utc),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='x', num_qubits=1, num_clbits=0, params=[]),\n", " Instruction(name='y', num_qubits=1, num_clbits=0, params=[]),\n", " Instruction(name='z', num_qubits=1, num_clbits=0, params=[]),\n", " Instruction(name='rx', num_qubits=1, num_clbits=0, params=[Parameter(theta)])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Oxford Lucy.',\n", " 'name': 'Lucy',\n", " 'number of qubits': 8,\n", " 'online date': datetime.datetime(2023, 6, 13, 21, 0, 8, tzinfo=datetime.timezone.utc),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='cy', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Amazon Braket SV1.',\n", " 'name': 'SV1',\n", " 'number of qubits': 34,\n", " 'online date': datetime.datetime(2022, 6, 22, 10, 18),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='cy', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Amazon Braket TN1.',\n", " 'name': 'TN1',\n", " 'number of qubits': 50,\n", " 'online date': datetime.datetime(2022, 6, 22, 10, 18),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='cy', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[])]}\n", "{'backend version': 2,\n", " 'description': 'AWS Device: Amazon Braket dm1.',\n", " 'name': 'dm1',\n", " 'number of qubits': 17,\n", " 'online date': datetime.datetime(2022, 6, 22, 10, 18),\n", " 'operations': [Instruction(name='measure', num_qubits=1, num_clbits=1, params=[]),\n", " Instruction(name='cx', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cp', num_qubits=2, num_clbits=0, params=[Parameter(theta)]),\n", " Instruction(name='cy', num_qubits=2, num_clbits=0, params=[]),\n", " Instruction(name='cz', num_qubits=2, num_clbits=0, params=[])]}\n" ] } ], "source": [ "for backend in backends:\n", " pprint(\n", " {\n", " \"name\": backend.name,\n", " \"description\": backend.description,\n", " \"online date\": backend.online_date,\n", " \"number of qubits\": backend.num_qubits,\n", " \"operations\": backend.operations[:5],\n", " \"backend version\": backend.version,\n", " }\n", " )" ] }, { "cell_type": "markdown", "id": "51b565f6", "metadata": {}, "source": [ "### Quering for specific backend" ] }, { "cell_type": "code", "execution_count": 5, "id": "c1e408c4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "BraketBackend[SV1]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# state vector simulator\n", "state_vector_simulator_backend = provider.get_backend(\"SV1\")\n", "state_vector_simulator_backend" ] }, { "cell_type": "code", "execution_count": 6, "id": "97112d3e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "BraketBackend[Harmony]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# IonQ device\n", "ionq_backend = provider.get_backend(\"Harmony\")\n", "ionq_backend" ] }, { "cell_type": "code", "execution_count": 7, "id": "32545fd3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "BraketBackend[Aspen-11]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Rigetti device\n", "rigetti_aspen_backend = provider.get_backend(\"Aspen-11\")\n", "rigetti_aspen_backend" ] }, { "cell_type": "code", "execution_count": 8, "id": "9c99034e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "BraketBackend[Lucy]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# OQC Lucy device\n", "lucy_backend = provider.get_backend(\"Lucy\")\n", "lucy_backend" ] }, { "cell_type": "markdown", "id": "f2530143", "metadata": {}, "source": [ "### Query options\n", "\n", "To get a full list of possible query options refer to [Braket SDK get_device documentation](https://amazon-braket-sdk-python.readthedocs.io/en/latest/_apidoc/braket.aws.aws_device.html?highlight=get_devices#braket.aws.aws_device.AwsDevice.get_devices)" ] }, { "cell_type": "code", "execution_count": 9, "id": "f29a72eb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[BraketBackend[SV1], BraketBackend[TN1], BraketBackend[dm1]]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "online_simulators_backends = provider.backends(statuses=[\"ONLINE\"], types=[\"SIMULATOR\"])\n", "online_simulators_backends" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }