{ "cells": [ { "cell_type": "markdown", "id": "92c948f0-6dd3-4955-b4eb-2926a79ecf7e", "metadata": { "tags": [] }, "source": [ "# Introduction to Aquila\n", "\n", "In the previous notebook, we have introduced the concept of Analog Hamiltonian Simulation (AHS) and how to run an AHS program on the neutral atom local simulator. In this notebook, we illustrate how to run an AHS program on QuEra's Aquila, a Rydberg based QPU, via Amazon Braket. \n" ] }, { "cell_type": "markdown", "id": "f4df5b53", "metadata": {}, "source": [ "## QuEra's Aquila\n", "\n", "In order to use the Aquila device, let us first connect to it, and query its parameters with its unique Amazon Resource Number (ARN)." ] }, { "cell_type": "markdown", "id": "57ac4e1c", "metadata": {}, "source": [ "
\n", "Note: You need to pip install the Braket SDK. If you are new to Amazon Braket, make sure you have completed the necessary Get Started steps. If you are using a Braket hosted notebook instance, this SDK comes pre-installed with the notebooks.\n", "
\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "6f3c3385", "metadata": {}, "outputs": [], "source": [ "# Use Braket SDK Cost Tracking to estimate the cost to run this example\n", "from braket.tracking import Tracker\n", "tracker = Tracker().start()" ] }, { "cell_type": "markdown", "id": "7175daec", "metadata": {}, "source": [ "In this notebook, we will use `matplotlib` package and `ahs_utils.py` module in the current working directory for visualization purposes and other functionalities." ] }, { "cell_type": "code", "execution_count": 2, "id": "3cd780d0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'braketSchemaHeader': {'name': 'braket.device_schema.quera.quera_ahs_paradigm_properties',\n", " 'version': '1'},\n", " 'lattice': {'area': {'height': Decimal('0.000076'),\n", " 'width': Decimal('0.000075')},\n", " 'geometry': {'numberSitesMax': 256,\n", " 'positionResolution': Decimal('1E-7'),\n", " 'spacingRadialMin': Decimal('0.000004'),\n", " 'spacingVerticalMin': Decimal('0.000004')}},\n", " 'performance': {'lattice': {'positionErrorAbs': Decimal('1E-7')},\n", " 'rydberg': {'rydbergGlobal': {'rabiFrequencyErrorRel': Decimal('0.02')}}},\n", " 'qubitCount': 256,\n", " 'rydberg': {'c6Coefficient': Decimal('5.42E-24'),\n", " 'rydbergGlobal': {'detuningRange': (Decimal('-125000000.0'),\n", " Decimal('125000000.0')),\n", " 'detuningResolution': Decimal('0.2'),\n", " 'detuningSlewRateMax': Decimal('2500000000000000.0'),\n", " 'phaseRange': (Decimal('-99.0'),\n", " Decimal('99.0')),\n", " 'phaseResolution': Decimal('5E-7'),\n", " 'rabiFrequencyRange': (Decimal('0.0'),\n", " Decimal('15800000.0')),\n", " 'rabiFrequencyResolution': Decimal('400.0'),\n", " 'rabiFrequencySlewRateMax': Decimal('250000000000000.0'),\n", " 'timeDeltaMin': Decimal('5E-8'),\n", " 'timeMax': Decimal('0.000004'),\n", " 'timeMin': Decimal('0.0'),\n", " 'timeResolution': Decimal('1E-9')}}}\n" ] } ], "source": [ "from braket.aws import AwsDevice \n", "from pprint import pprint as pp\n", "\n", "device = AwsDevice(\"arn:aws:braket:us-east-1::device/qpu/quera/Aquila\")\n", "capabilities = device.properties.paradigm\n", "pp(capabilities.dict())" ] }, { "cell_type": "markdown", "id": "ea413e47", "metadata": {}, "source": [ "The preceding numbers represent numerical capabilities and constraints for which AHS programs can be run on Aquila. In the following sections, we will go through these device capabilities and build an AHS program that complies with these constraints." ] }, { "cell_type": "markdown", "id": "a0b5f568", "metadata": {}, "source": [ "## Building an AHS program for Aquila\n", "\n", "We have seen the basic components of an AHS program in the previous example, including the register, the driving and shifting fields. In order to run an AHS program on Aquila, however, these components have to meet certain requirements. Particularly, the first version of Aquila does not support shifting field. In this section, we introduce other constraints via building up a valid program for Aquila step by step. " ] }, { "cell_type": "markdown", "id": "6535a209", "metadata": {}, "source": [ "### Register\n", "In contrast to the local simulator which can only simulate a handful of atoms (qubits), Aquila can simulate systems with a few hundred. The coordinates of the atoms (qubits), however, have to meet certain constraints. We can check the requirements as follows" ] }, { "cell_type": "code", "execution_count": 3, "id": "edf0d67c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'area': {'height': Decimal('0.000076'), 'width': Decimal('0.000075')},\n", " 'geometry': {'numberSitesMax': 256,\n", " 'positionResolution': Decimal('1E-7'),\n", " 'spacingRadialMin': Decimal('0.000004'),\n", " 'spacingVerticalMin': Decimal('0.000004')}}\n" ] } ], "source": [ "lattice_constraints = capabilities.lattice\n", "pp(lattice_constraints.dict())" ] }, { "cell_type": "markdown", "id": "7dadd661", "metadata": {}, "source": [ "The detailed description of these sections can be inspected as follows" ] }, { "cell_type": "code", "execution_count": 4, "id": "409362f9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " The area of the FOV\n", " Attributes:\n", " width (Decimal): Largest allowed difference between x\n", " coordinates of any two sites (measured in meters)\n", " height (Decimal): Largest allowed difference between y\n", " coordinates of any two sites (measured in meters)\n", " \n", "\n", " Spacing or number of sites or rows\n", " Attributes:\n", " spacingRadialMin (Decimal): Minimum radial spacing between any\n", " two sites in the lattice (measured in meters)\n", " spacingVerticalMin (Decimal): Minimum spacing between any two\n", " rows in the lattice (measured in meters)\n", " positionResolution (Decimal): Resolution with which site positions\n", " can be specified (measured in meters)\n", " numberSitesMax (int): Maximum number of sites that can be placed\n", " in the lattice\n", " \n" ] } ], "source": [ "print(lattice_constraints.area.__doc__)\n", "print(lattice_constraints.geometry.__doc__)" ] }, { "cell_type": "markdown", "id": "b15d2f13", "metadata": {}, "source": [ "As we can see, the requirements for the setup in an AHS program can be summarized as follows\n", "1. The number of sites in the setup cannot be greater than `capabilities.lattice.geometry.numberSitesMax`\n", "2. The atoms have to be separated by at least `capabilities.lattice.geometry.spacingRadialMin` meters\n", "3. The rows in the setup have to be separated by at least `capabilities.lattice.geometry.spacingVerticalMin` meters\n", "4. The resolution for the coordinates of the atoms cannot be greater than `capabilities.lattice.geometry.positionResolution` meters\n", "5. The setup cannot be wider than `capabilities.lattice.area.width` meters\n", "6. The setup cannot be taller than `capabilities.lattice.area.height` meters\n", "\n", "Below, we demonstrate a valid setup that meets these requirements, which has 105 atoms grouped as 35 equilateral triangles that are well separated from each other." ] }, { "cell_type": "code", "execution_count": 5, "id": "487a6b5e", "metadata": {}, "outputs": [ { "data": { "image/png": "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22XcmxoZmq2V4xKaWibzbHe+869bIeX4JfsZmN3C9YHkGIWGWHtu3da/P7z+OphxOP/jY46gA5PZgtl+PLOVvy9RUCZMgAXzmUlbfmd7juR9PuAYPxaL+fsfvfpqcI+XLOVyPIghfMFBdGICrZnvx0PKcRpbM51tOI43eYu+fixFctyHr/iWfdmBcWzGIj8eUo6/sx0zaUt/XuUV/unHUiTHXnzPD+xON0bTjGV+PMgcSzIE+JWOzKMVE+hKJ36NdoawVo49GMVoutODUTRmpR8PKccJdGExzZnKdrTjz2rlGIVbt6XXdAF/mTzZ74MADVlFK+axeWkzBFi9OtjHW50HwJbMYjlNaEC5+eNxmDIl2MdLlnI5NmE5rZlb1gwhtBzb8SeraEg9CsvGUiTH5ixhc2aXNUMILcetmUY+9UinqGwsRXJsySK25M+yZgjB5liSIcC2TKURK6jDGv+LKGcIa+WYyXzaMaOsGUJoOW7H7zSjBY6SN05Rz7EiYbztrNIh0379/HHq8oeKSn9iMbP+/Ss/Z216vGRRjsFQjsFI5nalaoZmKZEjEThkWnsaYrlj5Ov8hPSZTVIfL1mUYzCUYzCSuV2pmqFZSuSohlhZpWdRle6dhH2GWLIfL1mUYzCUYzCSuV2pmqFZ5HOMQkOsPSfVlBoxAgYP9sepO3SAAQOgV69gC6zJx0sW5RgM5RiMZG5XqmYIkc4xCifV1L6GKCIiKScKDXET/85zERERTw1RREQENUQRERFADVFERARQQxQREQHUEEVERAA1RBEREUANUUREBFBDFBERAdQQRUREADVEERERQA1RREQEUEMUEREB1BBFREQANUQRERFADVFERARQQxQREQHUEEVERAA1RBEREUANUUREBFBDFBERAdQQRUREADVEERERQA1RREQEUEMUEREB1BBFREQANUQRERFADVFERARQQxQREQHUEEVERAA1RBEREUANUUREBFBDFBERAdQQRUREADVEERERQA1RREQEUEMUEREBID2RhZxz04AVQDFQZGY9wyxKREQk2RJqiCX2N7OFoVUiIiJSg3TIVEREhMQbogFDnHOjnHNnr28B59zZzrlc51zuggULgqtQREQkCRJtiHuaWQ/gUOB859w+f1/AzJ4ys55m1jMzMzPQIkVERMKWUEM0s9kl/50PvAvsGmZRIiIiyVZh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N73bbv6dYmmO4/pcbmlpcTvvvJquMBoWLDBr1szswAP9kYvSHEccdJ2B2VVXJbceNcSQPf+834IXXlh37Mkn/dhrryWllEh76CGf1bvvrjt2771+7KOPkl5W5Nx2m8/qiy/WHbv+ej82fHjy64qaK67wWY0cue7YRRf5N96jRye9rMg55xyztDSzX35Zd+y008zq1DGbPDl59aghhmjZMrPWrc169fLvFP+uqMise3eztm3NVq4MvZzImj/f70UedND6300XFJhlZZl16OD/LOs3Y4b/SOa449Y/vnKlfy527+6fm7J+kyb5F+ozzlj/+OLFZi1bmu29t47+bMxPP/nr8C++eP3jc+aYNW5sdvjhyatJDTFEl1/u/4evby+y1PDhfguvvz70ciLr7LPN0tPNJkzY8DKffOJzvOee5NUVNf36mWVkmP3xx4aXee01n+OTTyatrEiJx8369DFr0sRs7twNL/fUUz7HV19NXm1REo+b7bmnWWam2ZIlG17uvvt8jh9+mJy61BBDMnGifxE/88yKl/3nP83q1TP7/fdQS4qk3Fy/U3HJJRUve+SRZo0amc2eHX5dUfPVV/5f0o03bny5eNxs333NNtvMbNGiZFQWLf/7n8/xgQc2vlxRkVmPHmZbbmm2YkVyaouSl1/2OT799MaXKygw69jRH/3Jzw+/LjXEEMTjZocc4vci582rePmZM80aNjQ7+ujQSoqkeNxs993NWrUyW7q04uWnTDGrW9fslFPCry1K1qwx22kns623NsvLq3j5sWP9Z2AXXBB6aZGSn2+23XZmnTubFRZWvHzp0Z9rrw2/tihZvtxs883NevZc/0dJf1d69Ofuu8OvTQ0xBB984Kt+8MHE17nzTr/Op5+GVlbkvPSSz+SZZxJf55pr/Drffx9eXVHz6KM+k7feSnyd88/3TfHnn8OrK2pK/40OGZL4Ov/6l99J++238OqKmquvrvy/0aOO8kd/Zs0Kry6zaDRE5+sMVs+ePS03NzfwefPzoWtXyMiAMWOgTp3E1isogB12gLQ0+PlnqFs38NIiZcUK6NgR2rb13wITS/B+RStXQqdO0KYN/PCDz3NTtmgRdOgA3bvDF1+Ac4mtt3ixX2+nneDLLxNfL1XNmuWfjwcdBO++m/h6s2f79Xr3hvffD6++qJgyxb/O9esHL7yQ+Hq//+5fV084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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from braket.ahs.atom_arrangement import AtomArrangement\n", "from ahs_utils import show_register\n", "\n", "separation = 5e-6\n", "block_separation = 15e-6\n", "k_max = 5\n", "m_max = 5\n", "\n", "register = AtomArrangement()\n", "for k in range(k_max):\n", " for m in range(m_max):\n", " register.add((block_separation*m, block_separation*k + separation/np.sqrt(3)))\n", " register.add((block_separation*m-separation/2, block_separation*k - separation/(2*np.sqrt(3))))\n", " register.add((block_separation*m+separation/2, block_separation*k - separation/(2*np.sqrt(3)))) \n", "\n", "show_register(register, show_atom_index=False, blockade_radius= 1.5 * separation)" ] }, { "cell_type": "markdown", "id": "62acf66e", "metadata": {}, "source": [ "In the above figure, each blue link connects a pair of atoms that blockade each other. Since the triangles are well separated from each other, and the driving field (see below) is acting on all atoms uniformly, effectively we are repeating the same experiment on the same setup (an equilateral triangle) 35 times in one shot. If the setup of interest is small and contains only a few atoms, we could try to fit in a few identical copies of the setup in the bounding box while avoiding the interference between them. In this way, we are effectively taking more shots for the AHS program of interest." ] }, { "cell_type": "markdown", "id": "75e18060", "metadata": {}, "source": [ "### Driving field\n", "\n", "Recall that Aquila can simulate the following Hamiltonian \n", "\n", "\\begin{align}\n", "H(t) = \\sum_{k=1}^N H_{\\text{drive}, k}(t) + \\sum_{j=1}^{N-1}\\sum_{k = j+1}^N H_{\\text{vdW}, j, k}.\n", "\\end{align}\n", "Here the second term is the van der Waals interaction term which is fixed once the setup is defined. The first term is the driving field,\n", "\\begin{align}\n", "H_{\\text{drive}, k}(t) = \\frac{\\Omega(t)}{2}\\left(e^{i\\phi(t)}|g_k\\rangle\\langle r_k| + e^{-i\\phi(t)}|r_k\\rangle\\langle g_k|\\right) - \\Delta_\\text{global}(t)n_k,\n", "\\end{align}\n", "which act on all the atoms in the setup. Here $n_k = |r_k\\rangle\\langle r_k|$ is the number operator of atom $k$. The specification of the driving field has to satisfy several conditions, which can be queried as follows" ] }, { "cell_type": "code", "execution_count": 6, "id": "91e004b1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'c6Coefficient': Decimal('5.42E-24'),\n", " 'rydbergGlobal': {'detuningRange': (Decimal('-125000000.0'),\n", " Decimal('125000000.0')),\n", " 'detuningResolution': Decimal('0.2'),\n", " 'detuningSlewRateMax': Decimal('2500000000000000.0'),\n", " 'phaseRange': (Decimal('-99.0'), Decimal('99.0')),\n", " 'phaseResolution': Decimal('5E-7'),\n", " 'rabiFrequencyRange': (Decimal('0.0'),\n", " Decimal('15800000.0')),\n", " 'rabiFrequencyResolution': Decimal('400.0'),\n", " 'rabiFrequencySlewRateMax': Decimal('250000000000000.0'),\n", " 'timeDeltaMin': Decimal('5E-8'),\n", " 'timeMax': Decimal('0.000004'),\n", " 'timeMin': Decimal('0.0'),\n", " 'timeResolution': Decimal('1E-9')}}\n" ] } ], "source": [ "rydberg = capabilities.rydberg\n", "pp(rydberg.dict())" ] }, { "cell_type": "markdown", "id": "4b67aec2", "metadata": {}, "source": [ "`c6Coefficient` is the constant for the interaction strength between two Rydberg atoms. The detailed description for the `rydbergGlobal` section can be inspected as follows" ] }, { "cell_type": "code", "execution_count": 7, "id": "d0bca3f4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Parameters determining the limitations on the driving field that drives the\n", " ground-to-Rydberg transition uniformly on all atoms\n", " Attributes:\n", " rabiFrequencyRange (Tuple[Decimal,Decimal]): Achievable Rabi frequency\n", " range for the global Rydberg drive waveform (measured in rad/s)\n", " rabiFrequencyResolution (Decimal): Resolution with which global Rabi\n", " frequency amplitude can be specified (measured in rad/s)\n", " rabiFrequencySlewRateMax (Decimal): Maximum slew rate for changing the\n", " global Rabi frequency (measured in (rad/s)/s)\n", " detuningRange(Tuple[Decimal,Decimal]): Achievable detuning range for\n", " the global Rydberg pulse (measured in rad/s)\n", " detuningResolution(Decimal): Resolution with which global detuning can\n", " be specified (measured in rad/s)\n", " detuningSlewRateMax (Decimal): Maximum slew rate for detuning (measured in (rad/s)/s)\n", " phaseRange(Tuple[Decimal,Decimal]): Achievable phase range for the global\n", " Rydberg pulse (measured in rad)\n", " phaseResolution(Decimal): Resolution with which global Rabi frequency phase\n", " can be specified (measured in rad)\n", " timeResolution(Decimal): Resolution with which times for global Rydberg drive\n", " parameters can be specified (measured in s)\n", " timeDeltaMin(Decimal): Minimum time step with which times for global Rydberg\n", " drive parameters can be specified (measured in s)\n", " timeMin (Decimal): Minimum duration of Rydberg drive (measured in s)\n", " timeMax (Decimal): Maximum duration of Rydberg drive (measured in s)\n", " \n" ] } ], "source": [ "print(rydberg.rydbergGlobal.__doc__)" ] }, { "cell_type": "markdown", "id": "a0f2d5a4", "metadata": {}, "source": [ "As we can see, the requirements for the driving field in the AHS program can be summarized as follows\n", "\n", "1. The Rabi frequency $\\Omega(t)$ has to be within the range `rydberg.rydbergGlobal.rabiFrequencyRange`, in the unit of rad/s\n", "2. The resolution for the Rabi frequency cannot be greater than `rydberg.rydbergGlobal.rabiFrequencyResolution` rad/s\n", "3. The slew rate for the Rabi frequency cannot be greater than `rydberg.rydbergGlobal.rabiFrequencySlewRateMax` (rad/s)/s\n", "\n", "4. The phase $\\phi(t)$ has to be within the range `rydberg.rydbergGlobal.phaseRange`, in the unit of rad\n", "5. The resolution for the phase cannot be greater than `rydberg.rydbergGlobal.phaseResolution` rad\n", "\n", "6. The detuning $\\Delta(t)$ has to be within the range `rydberg.rydbergGlobal.detuningRange`, in the unit of rad\n", "7. The resolution for the detuning cannot be greater than `rydberg.rydbergGlobal.detuningResolution` rad\n", "8. The slew rate for the detuning cannot be greater than `rydberg.rydbergGlobal.detuningSlewRateMax` rad/s\n", "\n", "9. The duration of the driving field cannot be less than `rydberg.rydbergGlobal.timeMin` seconds\n", "10. The duration of the driving field cannot be more than `rydberg.rydbergGlobal.timeMax` seconds\n", "11. The time points have to be separated by at least `rydberg.rydbergGlobal.timeDeltaMin` seconds\n", "12. The resolution for the time points cannot be greater than `rydberg.rydbergGlobal.timeResolution` seconds\n", "\n", "Besides, there are a few additional requirements\n", "1. The Rabi frequency $\\Omega(t)$ has to start with 0 rad/s\n", "2. The Rabi frequency $\\Omega(t)$ has to end with 0 rad/s\n", "3. The phase $\\phi(t)$ has to start with 0 rad\n", "4. All the fields in the driving field have to have the same duration" ] }, { "cell_type": "markdown", "id": "cbf846fd", "metadata": {}, "source": [ "In this example, we are interested in driving the atoms with constant Rabi frequency $\\Omega_\\text{const}=1.5\\times10^7$ rad/s for a duration of $T_\\text{const}=\\frac{\\pi}{\\sqrt{3}\\Omega}\\approx2.09\\times10^{-7}$ seconds such that each atom has average Rydberg density equal to 1/3. Since the Rabi frequency corresponds to blockade radius $R_b\\approx8.44\\times10^{-6}$ meters, which is greater than the sides of the equilateral triangles ($5\\times10^{-6}$ meters), the atoms of the same triangle blockade one another. On the other hand, $R_b$ is smaller than the distance between nearest atoms of neighboring triangles, which is around $10\\times10^{-6}$ meters, hence the neighboring triangles are not interacting with each other, as desired. \n", "\n", "However, for the AHS program submitted to Aquila, the Rabi frequency cannot be a constant because of the constraint that it has to start and end with 0 rad/s. Hence we will need to create a time series $\\Omega(t)$ such that $\\int_0^T\\Omega(t)dt=\\Omega_\\text{const}T_\\text{const}=\\frac{\\pi}{\\sqrt{3}}$, while satisfying $\\Omega(0)=\\Omega(T)=0$. This could be achieved via the utility function `rabi_pulse` below where we demonstrate how to create the desired driving field for Aquila." ] }, { "cell_type": "code", "execution_count": 8, "id": "11bd0f7e", "metadata": {}, "outputs": [], "source": [ "from braket.timings.time_series import TimeSeries\n", "from braket.ahs.driving_field import DrivingField\n", "from ahs_utils import rabi_pulse, constant_time_series\n", "\n", "omega_const = 1.5e7 # rad / s\n", "rabi_pulse_area = np.pi/np.sqrt(3) # rad\n", "omega_slew_rate_max = float(rydberg.rydbergGlobal.rabiFrequencySlewRateMax) # rad/s^2\n", "\n", "time_points, amplitude_values = rabi_pulse(rabi_pulse_area, omega_const, 0.99 * omega_slew_rate_max)\n", "\n", "amplitude = TimeSeries()\n", "for t, v in zip(time_points, amplitude_values):\n", " amplitude.put(t, v)\n", "\n", "detuning = constant_time_series(amplitude, 0.0) \n", "phase = constant_time_series(amplitude, 0.0) \n", "\n", " \n", "drive = DrivingField(\n", " amplitude=amplitude, \n", " detuning=detuning, \n", " phase=phase\n", ")" ] }, { "cell_type": "markdown", "id": "3efaeb42", "metadata": {}, "source": [ "We can inspect the driving field in the following way " ] }, { "cell_type": "code", "execution_count": 9, "id": "5db7e231", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from ahs_utils import show_global_drive\n", "show_global_drive(drive);" ] }, { "cell_type": "markdown", "id": "9c84b2ad", "metadata": {}, "source": [ "Here we used constant-zero phase and detuning, but, for more involved programs, its time series can be customized similarly to how we set the amplitude of the Rabi frequency here." ] }, { "cell_type": "markdown", "id": "7d37e943", "metadata": {}, "source": [ "### AHS program\n", "\n", "We can assemble the register and Hamiltonian to an AHS program " ] }, { "cell_type": "code", "execution_count": 10, "id": "4d5ab540", "metadata": {}, "outputs": [], "source": [ "from braket.ahs.hamiltonian import Hamiltonian\n", "from braket.ahs.analog_hamiltonian_simulation import AnalogHamiltonianSimulation\n", "\n", "ahs_program = AnalogHamiltonianSimulation(\n", " register=register, \n", " hamiltonian=drive\n", ")" ] }, { "cell_type": "markdown", "id": "6bbedb27-3568-4803-a1ed-7b26dc60c946", "metadata": {}, "source": [ "### Task \n", "\n", "Before submitting the AHS program to Aquila, we need to discretize the program to ensure that it complies with resolution-specific validation rules. " ] }, { "cell_type": "code", "execution_count": 11, "id": "59fb7f60", "metadata": {}, "outputs": [], "source": [ "discretized_ahs_program = ahs_program.discretize(device)" ] }, { "cell_type": "markdown", "id": "09b11fc2", "metadata": {}, "source": [ "We note that the number of shots has to be within the range specified by `device.properties.service.shotsRange`. " ] }, { "cell_type": "code", "execution_count": 12, "id": "46d2da98", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 1000)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "device.properties.service.shotsRange" ] }, { "cell_type": "markdown", "id": "4895c99a", "metadata": {}, "source": [ "The AHS program can be submitted to the device to create a quantum task on the Braket service." ] }, { "cell_type": "markdown", "id": "825eda10", "metadata": {}, "source": [ "
\n", "Note: Some atoms may be missing even if the shot was successful. We recommend comparing pre_sequence of each shot with the requested atom filling in the AHS program specification. \n", "
" ] }, { "cell_type": "code", "execution_count": 13, "id": "0e6528d5", "metadata": {}, "outputs": [], "source": [ "n_shots = 100" ] }, { "cell_type": "code", "execution_count": 14, "id": "c395c2a1-8ce2-4521-8d92-16efad87ac9e", "metadata": {}, "outputs": [], "source": [ "task = device.run(discretized_ahs_program, shots=n_shots)" ] }, { "cell_type": "markdown", "id": "60c6be46", "metadata": {}, "source": [ "The task metadata can be inspected in the following way" ] }, { "cell_type": "code", "execution_count": 15, "id": "158f1044-4cfa-4fc1-a26e-5581900f8783", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ARN: arn:aws:braket:us-east-1:545821822555:quantum-task/0f934b5d-fc5c-4b77-85c0-7ef0d2a8cf41\n", "status: CREATED\n" ] } ], "source": [ "metadata = task.metadata()\n", "task_arn = metadata['quantumTaskArn']\n", "task_status = metadata['status']\n", "\n", "print(f\"ARN: {task_arn}\")\n", "print(f\"status: {task_status}\")" ] }, { "cell_type": "markdown", "id": "54a39bff", "metadata": {}, "source": [ "It is suggested to save the task ARN for retrieving the task result in a later time. For example if the saved task ARN reads `arn:aws:braket:us-east-1:545821822555:quantum-task/12345`, the task can be retrieved as follows.\n", " \n", "```\n", "from braket.aws import AwsQuantumTask\n", "task = AwsQuantumTask(arn=\"arn:aws:braket:us-east-1:545821822555:quantum-task/12345\") \n", "```\n", "\n", "\n", "\n", "Alternatively, we can access the tasks through [the tasks page of Amazon Braket console](https://us-east-1.console.aws.amazon.com/braket/home?region=us-east-1#/tasks)." ] }, { "cell_type": "markdown", "id": "d496c2bb-89ec-4475-bf7d-ae75ef13cdde", "metadata": {}, "source": [ "## Analyzing the result from Aquila\n", "\n", "The results (once the task is completed) can be downloaded directly into an object in the python session." ] }, { "cell_type": "code", "execution_count": 16, "id": "d8176e09-deeb-485d-96e9-5046f9d03fc5", "metadata": {}, "outputs": [], "source": [ "result = task.result()" ] }, { "cell_type": "markdown", "id": "ae5eac68", "metadata": {}, "source": [ "The call `task.result()` is blocking execution until the task is completed and results are loaded from Amazon Braket. After the task is completed, the measurement result is saved in `result.measurements` which is a list of `ShotResult`, as shown below." ] }, { "cell_type": "code", "execution_count": 17, "id": "afb85bab", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ShotResult(status=, pre_sequence=array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1]), post_sequence=array([0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1,\n", " 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1,\n", " 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0,\n", " 1, 0, 1, 1, 1, 1, 1, 1, 0]))" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result.measurements[0]" ] }, { "cell_type": "markdown", "id": "91a9823b", "metadata": {}, "source": [ "`ShotResult` contains three pieces of information\n", "\n", "1. `status` indicates if the shot is successful\n", "2. `pre_sequence` contains the measurement result *before* running the AHS program. Here `0` indicates an empty site, while `1` indicates a filled site with an atom in the ground state\n", "3. `post_sequence` contains the measurement result *after* running the AHS program. Here `0` indicates an empty site, or an atom in the Rydberg state, while `1` indicates an atom in the ground state\n" ] }, { "cell_type": "markdown", "id": "88687ac9", "metadata": {}, "source": [ "
\n", "Note: Some atoms may be missing even if the shot was successful. We recommend comparing pre_sequence of each shot with the requested atom filling in the AHS program specification. \n", "
" ] }, { "cell_type": "markdown", "id": "c0d7eade", "metadata": {}, "source": [ "To confirm that at the end of the AHS program, the average Rydberg density for the atoms in the triangles are around 1/3 for each atom, we can first collect the measurement result and aggregate over all triangles" ] }, { "cell_type": "code", "execution_count": 18, "id": "4ed4a31c", "metadata": {}, "outputs": [], "source": [ "from ahs_utils import get_counts\n", "\n", "counts = get_counts(result)\n", "average_density = [0, 0, 0]\n", "average_num_triangles = [0, 0, 0, 0]\n", "for key, val in counts.items():\n", " for i in range(0, 3*k_max*m_max, 3):\n", " short_seq = key[i:i+3]\n", " for j in range(3):\n", " if short_seq[j]==\"r\":\n", " average_density[j] += val \n", " \n", " \n", " average_num_triangles[short_seq.count('r')] += val\n", " \n", " \n", "average_density = np.array(average_density) / (k_max * m_max * n_shots)\n", "average_num_triangles = np.array(average_num_triangles) / n_shots" ] }, { "cell_type": "markdown", "id": "15d35f76", "metadata": {}, "source": [ "Note that although we only perform 100 shots for the given AHS program, since we have made the full usage of the area in the Aquila device, effectively, we have made 3,500 shots for the experiment of interest! We can plot the result as follows" ] }, { "cell_type": "code", "execution_count": 19, "id": "8fa10c84", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))\n", "ax1.bar(range(len(average_density)), average_density)\n", "ax1.set_xticks(range(3))\n", "ax1.set_xticklabels(range(3))\n", "ax1.set_xlabel(\"Indices of atoms\")\n", "ax1.set_ylabel(\"Average Rydberg density\")\n", "\n", "ax2.bar(range(len(average_num_triangles)), average_num_triangles)\n", "ax2.set_xlabel(\"Number of Rydberg atoms\")\n", "ax2.set_ylabel(\"Average number of triangles\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "e73773e1", "metadata": {}, "source": [ "In the left panel, we show the average Rydberg density for each atom in the triangles. We see that indeed the average Rydberg density for the atoms in the triangles are around 1/3 as expected. In the right panel, we show the number of triangles with certain number of Rydberg atoms (0, 1, 2 or 3) averaged over the shots. It can be seen that almost no triangle has more than 1 Rydberg atoms since the atoms in the same triangle blockade each other. \n", "\n", "In summary, in this notebook we have demonstrated how to connect to QuEra's Aquila device, and define a valid AHS program for the device. " ] }, { "cell_type": "code", "execution_count": 20, "id": "9180c117", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Task Summary\n", "{'arn:aws:braket:us-east-1::device/qpu/quera/Aquila': {'shots': 100, 'tasks': {'COMPLETED': 1}}}\n", "Note: Charges shown are estimates based on your Amazon Braket simulator and quantum processing unit (QPU) task usage. Estimated charges shown may differ from your actual charges. Estimated charges do not factor in any discounts or credits, and you may experience additional charges based on your use of other services such as Amazon Elastic Compute Cloud (Amazon EC2).\n", "Estimated cost to run this example: 1.30 USD\n" ] } ], "source": [ "print(\"Task Summary\")\n", "print(tracker.quantum_tasks_statistics())\n", "print('Note: Charges shown are estimates based on your Amazon Braket simulator and quantum processing unit (QPU) task usage. Estimated charges shown may differ from your actual charges. Estimated charges do not factor in any discounts or credits, and you may experience additional charges based on your use of other services such as Amazon Elastic Compute Cloud (Amazon EC2).')\n", "print(f\"Estimated cost to run this example: {tracker.qpu_tasks_cost() + tracker.simulator_tasks_cost():.2f} USD\")" ] }, { "cell_type": "code", "execution_count": null, "id": "a9a8a075", "metadata": {}, "outputs": [], "source": [] } ], "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.9.7" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }