{ "cells": [ { "cell_type": "markdown", "id": "319042fa", "metadata": {}, "source": [ "# GPU Acceleration" ] }, { "cell_type": "markdown", "id": "5cab7f3e", "metadata": {}, "source": [ "If you have an NVIDIA GPU, you can accelerate large and challenging optimization problems with the GPU. For this, install the RydOpt software with GPU support via `pip install rydopt[cuda12]` and set the JAX_PLATFORMS environment variable as follows:" ] }, { "cell_type": "code", "execution_count": 1, "id": "0fc8be86", "metadata": {}, "outputs": [], "source": [ "# %pip install -q --progress-bar off rydopt[cuda12] # Uncomment for installation on Colab\n", "\n", "import os\n", "\n", "os.environ[\"JAX_PLATFORMS\"] = \"cuda,cpu\"" ] }, { "cell_type": "markdown", "id": "56d8fda4", "metadata": {}, "source": [ "Optionally, if you do not need double precision, you can set JAX_ENABLE_X64 to false for further accelerating the optimization. " ] }, { "cell_type": "code", "execution_count": 2, "id": "4128432e", "metadata": {}, "outputs": [], "source": [ "os.environ[\"JAX_ENABLE_X64\"] = \"false\"" ] }, { "cell_type": "markdown", "id": "b14d0ebf", "metadata": {}, "source": [ "Afterwards, you can write your code as usual. To profit from the GPU acceleration, the optimization problem should be challenging enough. Thus, as an example problem, we search for a symmetric time-optimal pulse realizing a CCCZ gate." ] }, { "cell_type": "code", "execution_count": null, "id": "4ca63c1f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Started optimization using 1 process\n", "\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6aa5d95077644f0daee4ead5ff44a596", "version_major": 2, "version_minor": 0 }, "text/plain": [ "proc00: 0%| …" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "=== Optimization finished using multi-start Adam ===\n", "\n", "Duration: 247.088 seconds\n", "Gates with infidelity below tol=1.0e-05: 51\n", "\n", "Slowest gate:\n", "> infidelity <= tol\n", "> parameters = (16.854398727416992, [ 0.0510807 -0.28171003 -0.10378191 -0.57882023 -0.04444465 -0.36159739\n", " 1.73398614 -1.59906983 1.51256466], [], [])\n", "> duration = 16.854398727416992\n", "\n", "Fastest gate:\n", "> infidelity <= tol\n", "> parameters = (12.405502319335938, [-0.93978846 0.73926961 1.39783883 -1.33574069 1.41905308 -2.03244734\n", " 0.43103045 -0.73191214 -1.05958152], [], [])\n", "> duration = 12.405502319335938\n", "> one-sided bootstrap error on duration: 0.1\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import rydopt as ro\n", "import numpy as np\n", "\n", "# Want a CCCZ gate on four atoms in the perfect blockade regime; no Rydberg state decay\n", "gate = ro.gates.FourQubitGatePyramidal(\n", " phi=None,\n", " theta=np.pi,\n", " theta_prime=np.pi,\n", " lamb=np.pi,\n", " lamb_prime=np.pi,\n", " kappa=np.pi,\n", " Vnn=float(\"inf\"),\n", " Vnnn=float(\"inf\"),\n", " decay=0.0,\n", ")\n", "\n", "# Pulse ansatz: constant offset plus cosine CRAB detuning ansatz\n", "pulse_ansatz = ro.pulses.PulseAnsatz(detuning_ansatz=ro.pulses.ConstCosCrab(9))\n", "\n", "# Initial pulse parameter guess:\n", "# duration, detuning parameters, phase parameters, Rabi parameters\n", "min_initial_params = ro.pulses.PulseParams(\n", " 11.0,\n", " [-2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0, -2.0],\n", " [],\n", " [],\n", ")\n", "max_initial_params = ro.pulses.PulseParams(\n", " 13.0,\n", " [2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0],\n", " [],\n", " [],\n", ")\n", "\n", "# Optimize the pulse parameters\n", "opt_result = ro.optimization.multi_start_optimize(\n", " gate,\n", " pulse_ansatz,\n", " min_initial_params,\n", " max_initial_params,\n", " num_steps=1000,\n", " tol=1e-5,\n", " num_initializations=10000,\n", " min_converged_initializations=50,\n", ")\n", "optimized_params = opt_result.params\n", "\n", "# Plot the pulse\n", "ro.characterization.plot_pulse(pulse_ansatz, optimized_params);" ] } ], "metadata": { "kernelspec": { "display_name": "rydopt (3.14.3)", "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.14.3" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "0a3fa1263ac64e6daabdbc6fca8954e5": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "0ba9e20e13144f3aa31b41aadc51c1bf": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "display": "inline-flex", "flex_flow": "row wrap", "width": "100%" } }, "0dd86e54912f44a7a21737bda9e29ce9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } }, "38fa54ede6a1462592469ef35c60978f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_0a3fa1263ac64e6daabdbc6fca8954e5", "style": "IPY_MODEL_af16c36041b1488aad985173f6b5e534", "value": "proc00: 100%" } }, "454877f8265946c1aa98e96361d00a54": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "5be3d222feac419ca1fbd435e94cee42": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "flex": "2" } }, "69d37372ab2f4904a0b3b50f65cf957f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_454877f8265946c1aa98e96361d00a54", "style": "IPY_MODEL_91911ef0344a43dc9419da1735bf1be6", "value": " 1000/1000 [03:54<00:00,  4.26it/s, infidelity=2.98e-06, converged=51/50]" } }, "6aa5d95077644f0daee4ead5ff44a596": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_38fa54ede6a1462592469ef35c60978f", "IPY_MODEL_8fac8cb11e0c4c28b9aa8994e9f3f909", "IPY_MODEL_69d37372ab2f4904a0b3b50f65cf957f" ], "layout": "IPY_MODEL_0ba9e20e13144f3aa31b41aadc51c1bf" } }, "8fac8cb11e0c4c28b9aa8994e9f3f909": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "bar_style": "success", "layout": "IPY_MODEL_5be3d222feac419ca1fbd435e94cee42", "max": 1000, "style": "IPY_MODEL_0dd86e54912f44a7a21737bda9e29ce9", "value": 1000 } }, "91911ef0344a43dc9419da1735bf1be6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "af16c36041b1488aad985173f6b5e534": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }