diff --git a/resource_estimate/ModExp - Finding the optimal window size.ipynb b/resource_estimate/ModExp - Finding the optimal window size.ipynb new file mode 100644 index 0000000..1e3ecd0 --- /dev/null +++ b/resource_estimate/ModExp - Finding the optimal window size.ipynb @@ -0,0 +1,319 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "33959133", + "metadata": {}, + "source": [ + "## Finding the optimal window size for modular exponentiation\n", + "\n", + "In this notebook we find optimal window size for modular exponentiation algorithm described in [this paper](https://arxiv.org/abs/2112.11358), experimentally and theoretically.\n", + "\n", + "Complexity of windowed modular exponentiation is \n", + "\n", + "$$T(n, m)=(c_1 \\cdot 2^m + c_2 \\cdot n^2) \\cdot \\frac{n}{m} = c_1 \\cdot 2^m \\cdot \\frac{n}{m} + c_2 \\cdot \\frac{n^3}{m}.$$\n", + "\n", + "We can fit values $c_1$ and $c_2$ to the experimental data using least squares. Let's use $m=5 \\dots 15$, $n = 2m \\dots 3m$." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "19de9166", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "// Copyright (c) Microsoft Corporation.\n", + "// Licensed under the MIT License.\n", + "\n", + "// This file provides CodeMirror syntax highlighting for Q# magic cells\n", + "// in classic Jupyter Notebooks. It does nothing in other (Jupyter Notebook 7,\n", + "// VS Code, Azure Notebooks, etc.) environments.\n", + "\n", + "// Detect the prerequisites and do nothing if they don't exist.\n", + "if (window.require && window.CodeMirror && window.Jupyter) {\n", + " // The simple mode plugin for CodeMirror is not loaded by default, so require it.\n", + " window.require([\"codemirror/addon/mode/simple\"], function defineMode() {\n", + " let rules = [\n", + " {\n", + " token: \"comment\",\n", + " regex: /(\\/\\/).*/,\n", + " beginWord: false,\n", + " },\n", + " {\n", + " token: \"string\",\n", + " regex: String.raw`^\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S])*(?:\\\"|$)`,\n", + " beginWord: false,\n", + " },\n", + " {\n", + " token: \"keyword\",\n", + " regex: String.raw`(namespace|open|as|operation|function|body|adjoint|newtype|controlled|internal)\\b`,\n", + " beginWord: true,\n", + " },\n", + " {\n", + " token: \"keyword\",\n", + " regex: String.raw`(if|elif|else|repeat|until|fixup|for|in|return|fail|within|apply)\\b`,\n", + " beginWord: true,\n", + " },\n", + " {\n", + " token: \"keyword\",\n", + " regex: String.raw`(Adjoint|Controlled|Adj|Ctl|is|self|auto|distribute|invert|intrinsic)\\b`,\n", + " beginWord: true,\n", + " },\n", + " {\n", + " token: \"keyword\",\n", + " regex: String.raw`(let|set|use|borrow|mutable)\\b`,\n", + " beginWord: true,\n", + " },\n", + " {\n", + " token: \"operatorKeyword\",\n", + " regex: String.raw`(not|and|or)\\b|(w/)`,\n", + " beginWord: true,\n", + " },\n", + " {\n", + " token: \"operatorKeyword\",\n", + " regex: String.raw`(=)|(!)|(<)|(>)|(\\+)|(-)|(\\*)|(/)|(\\^)|(%)|(\\|)|(&&&)|(~~~)|(\\.\\.\\.)|(\\.\\.)|(\\?)`,\n", + " beginWord: false,\n", + " },\n", + " {\n", + " token: \"meta\",\n", + " regex: String.raw`(Int|BigInt|Double|Bool|Qubit|Pauli|Result|Range|String|Unit)\\b`,\n", + " beginWord: true,\n", + " },\n", + " {\n", + " token: \"atom\",\n", + " regex: String.raw`(true|false|Pauli(I|X|Y|Z)|One|Zero)\\b`,\n", + " beginWord: true,\n", + " },\n", + " ];\n", + " let simpleRules = [];\n", + " for (let rule of rules) {\n", + " simpleRules.push({\n", + " token: rule.token,\n", + " regex: new RegExp(rule.regex, \"g\"),\n", + " sol: rule.beginWord,\n", + " });\n", + " if (rule.beginWord) {\n", + " // Need an additional rule due to the fact that CodeMirror simple mode doesn't work with ^ token\n", + " simpleRules.push({\n", + " token: rule.token,\n", + " regex: new RegExp(String.raw`\\W` + rule.regex, \"g\"),\n", + " sol: false,\n", + " });\n", + " }\n", + " }\n", + "\n", + " // Register the mode defined above with CodeMirror\n", + " window.CodeMirror.defineSimpleMode(\"qsharp\", { start: simpleRules });\n", + " window.CodeMirror.defineMIME(\"text/x-qsharp\", \"qsharp\");\n", + "\n", + " // Tell Jupyter to associate %%qsharp magic cells with the qsharp mode\n", + " window.Jupyter.CodeCell.options_default.highlight_modes[\"qsharp\"] = {\n", + " reg: [/^%%qsharp/],\n", + " };\n", + "\n", + " // Force re-highlighting of all cells the first time this code runs\n", + " for (const cell of window.Jupyter.notebook.get_cells()) {\n", + " cell.auto_highlight();\n", + " }\n", + " });\n", + "}\n" + ], + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import qsharp\n", + "import json\n", + "from diskcache import Cache\n", + "import re_utils\n", + "\n", + "re_utils.DEBUG = True\n", + "\n", + "cache = Cache(\"~/quant-arith-cache/re-mod-exp\")\n", + "qsharp.init(project_root=\"../lib/\")\n", + "\n", + "@cache.memoize()\n", + "def estimate_resources_mod_exp(op, n):\n", + " est = qsharp.estimate(f\"EstimateUtils.RunModExp({n},{op})\")\n", + " return json.dumps(est) " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "cfef7f98", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "c1=6.26437e-05, c2=1.01564e-03\n" + ] + } + ], + "source": [ + "import numpy as np \n", + "from matplotlib import pyplot as plt\n", + "\n", + "def T_experiment(n,m):\n", + " op = f\"QuantumArithmetic.LYY2021.ModExpWindowedMontgomery(_,_,_,_,{m})\"\n", + " est = json.loads(estimate_resources_mod_exp(op,n))\n", + " return est['physicalCounts']['runtime']/10**9\n", + " \n", + "X = []\n", + "Y=[]\n", + "for m in range(5, 16):\n", + " for n in range(2*m, 3*m+1):\n", + " X.append([2**m * (n/m), n**3/m])\n", + " Y.append(T_experiment(n,m))\n", + " \n", + "(c1,c2), _, _, _ = np.linalg.lstsq(X, Y, rcond=None)\n", + "print(f\"c1={c1:.5e}, c2={c2:.5e}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "c8e9bc8f", + "metadata": {}, + "source": [ + "Let's verify this prediction." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b4e071df", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAhLBJREFUeJzt3Xd4U+X7x/F3mu69Fy1taQstU4bsDTJlCIgTiiAgsgVE/H3dAxwouHAhOHALiDgQkS17CTJboGV0Mbp3cn5/pAkNbWlT0oaW+3VduUjOyp2Qtp8853meo1IURUEIIYQQohaysnQBQgghhBBVJUFGCCGEELWWBBkhhBBC1FoSZIQQQghRa0mQEUIIIUStJUFGCCGEELWWBBkhhBBC1FoSZIQQQghRa0mQEUIIIUStJUFGCCA5OZkRI0bg5eWFSqVi0aJFli7phkJDQxkzZozh8aZNm1CpVGzatMliNV3v+hpvdWPGjCE0NNTSZRg5deoUffr0wc3NDZVKxerVqy1dUrXo3r073bt3t3QZopaSIFMLfPDBB6hUKtq1a2fpUuqsmTNnsm7dOubNm8eXX35Jv379LF1Sjfjtt994/vnnLV1Gjbl48SLPP/88Bw8etHQplRITE8Phw4d55ZVX+PLLL2nTpk21PdfZs2dRqVSoVCpefvnlMrd56KGHUKlUODs7V1sd19dS1m3BggXV+vy3iv/++497772XBg0a4OjoiLe3N127duWXX34x2k6r1bJ8+XIGDx5McHAwTk5ONG3alJdffpm8vDwLVV9zrC1dgKjYihUrCA0NZffu3cTGxhIREWHpkuqcv//+myFDhjB79mxLl1IlXbt2JTc3F1tbW5P2++2333j//fdvmzBz8eJFXnjhBUJDQ7njjjuM1n3yySdotVrLFFaG3NxcduzYwf/93/8xZcqUGntee3t7vvnmG/73v/8ZLc/Ozubnn3/G3t6+xmp54IEHGDBgQKnlLVu2rLEaLCk+Pp7MzExiYmIIDAwkJyeHn376icGDB/PRRx8xYcIEAHJycnjkkUdo3749jz32GL6+vuzYsYPnnnuODRs28Pfff6NSqSz8aqqPBJlb3JkzZ/jnn39YuXIlEydOZMWKFTz33HOWLqtM2dnZODk5WbqMKklJScHd3b3an6e63iMrK6sa/QNTnYqKitBqtSaHsptlY2NTo89XkdTUVACzfi4r8/kbMGAAK1eu5NChQ7Ro0cKw/Oeff6agoIB+/frx999/m62mG2nVqhUPP/xwjTzXrWjAgAGlgtyUKVNo3bo1b731liHI2Nrasn37djp27GjYbvz48YSGhhrCTO/evWu09pokp5ZucStWrMDDw4OBAwcyYsQIVqxYUeZ2aWlpzJw5k9DQUOzs7AgKCmL06NFcunTJsE1eXh7PP/88DRs2xN7enoCAAIYNG0ZcXBxQfj8LfTPv8uXLDcvGjBmDs7MzcXFxDBgwABcXFx566CEAtm7dyr333kv9+vWxs7MjODiYmTNnkpubW6ru48ePM3LkSHx8fHBwcKBRo0b83//9HwAbN25EpVKxatWqUvt9/fXXqFQqduzYccP37/Tp09x77714enri6OhI+/bt+fXXXw3rly9fjkqlQlEU3n//fUPTdXn078Wbb77J22+/TUhICA4ODnTr1o0jR44YbXuj90ir1bJo0SKaNGmCvb09fn5+TJw4katXrxodQ1EUXn75ZYKCgnB0dKRHjx78999/peoq7/9u165dDBgwAA8PD5ycnGjevDmLFy821Pf+++8DGDXb65m7xorez0WLFhEeHo6dnR1Hjx41/N+cPXu2wtfavXt3mjZtytGjR+nRoweOjo7Uq1eP119/3Wi/O++8E4BHHnnE8Hr1n+vr+8iUrO399983NO/36dOHc+fOoSgKL730EkFBQTg4ODBkyBCuXLlS6jX+/vvvdOnSBScnJ1xcXBg4cGCF78/zzz9PSEgIAHPmzEGlUhnVduDAAfr374+rqyvOzs706tWLnTt3Gh1D//5t3ryZxx9/HF9fX4KCgm74vAAdOnQgLCyMr7/+2mj5ihUr6NevH56enmXu98EHH9CkSRPs7OwIDAxk8uTJpKWlldru448/Jjw8HAcHB9q2bcvWrVsrrKk8f//9N1ZWVjz77LNGy/W/H5YsWWJYplKpmDJlCitWrKBRo0bY29vTunVrtmzZUuXnDw0N5e6772bbtm20bdsWe3t7GjRowBdffFHlY1ZErVYTHBxs9N7a2toahRi9e+65B4Bjx45VWz23AmmRucWtWLGCYcOGYWtrywMPPMCSJUvYs2eP4RcyQFZWFl26dOHYsWOMHTuWVq1acenSJdasWcP58+fx9vZGo9Fw9913s2HDBu6//36mT59OZmYm69ev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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def T_prediction(n,m):\n", + " return (c1*2**m +c2*n**2)*(n/m)\n", + "\n", + "n=32\n", + "T_exp, T_pred=[], []\n", + "m_range = list(range(1,16))\n", + "for m in m_range:\n", + " T_exp.append(T_experiment(n,m))\n", + " T_pred.append(T_prediction(n,m))\n", + " \n", + "plt.plot(m_range, T_exp, label='Resource estimation')\n", + "plt.plot(m_range, T_pred, label='Prediction by formula')\n", + "plt.legend()\n", + "plt.xlabel(\"Window size\")\n", + "plt.ylabel(\"Runtime, seconds\")\n", + "plt.title(f\"Accuracy of predicted runtime for ModExp, n={n}\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "62caf05b", + "metadata": {}, + "source": [ + "Now, we can use the approximate formula for $T$ to find optimal window size for given n. We could use condition $\\frac{\\partial T}{\\partial m}= 0$ and get explicit formula, but it's easier to just numerically optimize it. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "129deff3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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Bg4ODpnGP27cOCZOnKh7TaOjozl69CjHjx+nSZMmGR7Tr18/GjdunKZsy5Yt/PHHHxQuXBjQJldt27Zl79699O3bl/Lly3PmzBmmT5/O5cuXXzrGasaMGfz222+sXbuW2bNn4+DgoHu9xo0bx/jx42ncuDEfffQRly5dYvbs2Rw5coR9+/ZhaWmpa+fx48e0aNGCt99+m3fffRdPT89MHxNArVbTokULgoODmTJlCn/88QcDBw7E3t6ezz//nO7du9OxY0fmzJnD+++/T1BQEH5+fkDWXjvQdi80atSIW7duMXjwYIoUKcLSpUv577//XhqbvvT93HTp0oXSpUszYcIEFEXJtN34+Hjq16/P3bt36devH8WKFWP//v2MHj2a+/fvM2PGDFQqFb/++iuBgYH079+fNWvWADB27FjOnTtHaGhouis+r/reAfjwww9ZsmQJnTt3ZsSIERw6dIiJEydy4cIF1q5dm6a9q1ev0rlzZ3r37k2PHj349ddf6dmzJ9WqVaNixYpZfi7PW7ZsGTExMfTr1w+VSsWUKVPo2LEj169fx9LSkn79+nHv3j22bdvG0qVLX/kaHTlyhP379/P222/j4+PDjRs3mD17NiEhIZw/fx47OzuCg4MZPHgwM2fOZMyYMZQvXx5A9++Lnj17RkhICFevXmXgwIH4+fmxcuVKevbsSWRkJEOGDNHrOeVrisizIiMjFUBp167dS+u1bdtWAZTo6GhFURRl7NixCqC0bds2Tb2PP/5YAZRTp07pyuzt7ZUePXqka3PRokUKoISFhenKihcvrgDK/v37dWVbt25VAMXW1la5efOmrnzu3LkKoOzcuVNXFh8fn+5x/vzzTwVQdu/e/dLHzkjFihWVrl276rarVq2qdOnSRQGUCxcuKIqiKGvWrEn3nIsXL57mOac+XuPGjRWNRqMrHzZsmGJubq5ERkYqiqIoERERipWVldKqVas09caMGaMAadocOnSoAih79uzRlcXExCh+fn5KiRIlFLVarSiKokydOlUxNzfXvXYzZ85UihcvrtSsWVP59NNPFUVRFLVarbi4uCjDhg176fmoXLmy0qpVq5fWSX1vZObKlSuKs7Oz0qRJEyUlJUVRFEVZunSpYmZmlua5KIqizJkzRwGUffv2ZekxHz58qCtLPZdNmzbVnQtFUZSff/5ZAZRff/1VV1a/fn0FUObMmfPSx0nVo0cPBVAmTJigK3v69Klia2urqFQqZfny5bryixcvKoAyduxYXVlWX7sZM2YogLJixQpdvbi4OKVUqVLp3vsvvueef27169fXbYeFhSmAsmjRIl1ZVj83qee5W7duLz0/qb755hvF3t5euXz5cpryzz77TDE3N1du3bqlK0v9PP/+++/KwYMHFXNzc2Xo0KFpjsvq987JkycVQPnwww/T1Bs5cqQCKP/995+uLPU75/nnGRERoVhbWysjRozQ+7mknl83NzflyZMnunrr169XAGXjxo26sgEDBmT6WXnxPZPRa3TgwAEFUH777Tdd2cqVK9O9N1K9+F5IfX/9/vvvurKkpCQlKChIcXBw0H1n6POc8ivpWsrDYmJiAHB0dHxpvdT90dHRacoHDBiQZnvQoEGAdhBbdlWoUIGgoCDddq1atQBo2LAhxYoVS1d+/fp1XZmtra3u/wkJCTx69Ig333wTgOPHj+sdS7169dizZw+gPVenTp2ib9++uLu768r37NmDi4sLlSpVemV7ffv2TfPXbb169VCr1dy8eROA7du3k5SUxKBBg9LUGzp0aLq2/vnnH2rWrJnm0r6DgwN9+/blxo0bnD9/Ps1j7N+/XxdvvXr10jy3s2fPEhkZmelVuVQuLi6cO3eOK1euvPK5ZiQuLo4OHTpQqFAh/vzzT90YqZUrV1K+fHnKlSvHo0ePdD8NGzYEYOfOnXo/Vuq5HDp0aJqB13369MHJySndFUZra2t69eql12N8+OGHuv+7uLhQtmxZ7O3t6dq1q668bNmyuLi4pHmfZvW1++eff/D29qZz5866enZ2drqrm4ai7+emf//+WWp35cqV1KtXj0KFCqV5XRs3boxarU5zpbBv3740a9aMQYMG8d577+Hv78+ECRMybPdV3zup/z7fpQowYsQIgHSvfYUKFdK89z08PChbtmya10yf5wLw1ltvUahQId12avvPt6mP51+j5ORkHj9+TKlSpXBxccnWdxtoz5OXlxfdunXTlVlaWjJ48GBiY2PZtWtXmvqGfk6mRBKZPCw1QUlNaDKTWcJTunTpNNv+/v6YmZm91q1/zycrAM7OzgD4+vpmWP706VNd2ZMnTxgyZAienp7Y2tri4eGhu5wfFRWldyz16tXj/v37XL16lf3796NSqQgKCkqTBOzZs4c6depk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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Max error 2.081\n" + ] + } + ], + "source": [ + "def get_optimal_window_size(n):\n", + " return 1+np.argmin([T_prediction(n,m) for m in range(1,min(300,n+1))])\n", + "\n", + "n_range = re_utils.DEFAULT_N_RANGE\n", + "plt.plot(n_range, [get_optimal_window_size(i) for i in n_range], label='Numerical')\n", + "plt.plot(n_range, 2*np.log2(n_range), label='2 log_2(n)')\n", + "plt.xscale('log')\n", + "plt.xlabel('n')\n", + "plt.ylabel('Optimal window size')\n", + "plt.title('Optimal window size for modular exponentiation')\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "print(\"Max error %.03f\" % max([np.abs(get_optimal_window_size(n)-(2*np.log2(n))) for n in n_range]))" + ] + }, + { + "cell_type": "markdown", + "id": "abdffeb8", + "metadata": {}, + "source": [ + "As we see, the optimal value is very close to $2 \\log_2(n).$\n", + "\n", + "We could get this theoretically as well:\n", + "\n", + "$$\\frac{\\partial T}{\\partial m} = \\frac{c_1 \\cdot 2^m \\cdot n (m \\cdot \\log(2)-1)-c_2 \\cdot n^3}{m^2} =0$$\n", + "\n", + "$$c_1 \\cdot 2^m \\cdot n \\cdot ( m \\cdot \\log(2) -1 ) - c_2 n^3 =0$$\n", + "\n", + "$$ 2^m \\cdot ( m \\cdot \\log(2) -1 ) = \\frac{c_2}{c_1} n^2 =0$$\n", + "\n", + "Take $\\log_2$ of both parts:\n", + "\n", + "$$m + \\log_2(m \\cdot \\log(2) -1) = \\log_2{(c_2/c_1)} + 2 \\log_2(n). $$\n", + "\n", + "From the fitted data, $\\log_2{(c_2/c_1)} \\approx 4.02$. For $m \\in [2, 40]$, $\\log_2(m \\cdot \\log(2) -1) \\in [-1.37, 4.70]$. So, approximately, $m^* \\approx 2 \\log_2(n)$." + ] + } + ], + "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.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/resource_estimate/Resourse estimation for ModExp.ipynb b/resource_estimate/Resourse estimation for ModExp.ipynb index bb43bac..40ad48b 100644 --- a/resource_estimate/Resourse estimation for ModExp.ipynb +++ b/resource_estimate/Resourse estimation for ModExp.ipynb @@ -141,7 +141,8 @@ " (\"QuantumArithmetic.LYY2021.ModExpWindowedOptimal\", \"LYY-W-Opt\", 2**9),\n", " (\"QuantumArithmetic.LYY2021.ModExpWindowedMontgomery(_,_,_,_,1)\", \"LYY-MW-1\", 128),\n", " (\"QuantumArithmetic.LYY2021.ModExpWindowedMontgomery(_,_,_,_,11)\", \"LYY-MW-11\", 2**9),\n", - " (\"QuantumArithmetic.PG2012.EXP_MOD\", \"QFT\", 128) \n", + " (\"QuantumArithmetic.PG2012.EXP_MOD\", \"QFT\", 128), \n", + " (\"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)\", \"CG-2019\", 2**9) \n", "]\n", "\n", "re_utils.run_re_experiments(\n", @@ -167,83 +168,91 @@ "data": { "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 AlgorithmLogical qubitsPhysical qubitsLogical depthRuntime (seconds)AlgorithmLogical qubitsPhysical qubitsLogical depthRuntime (seconds)
0LYY136125174581457295661573.8793130LYY136125174581457295661573.879313
1LYY-W-1670861133717722440541252831.0278501LYY-W-1670861133717722440541252831.027850
2LYY-W-117347975019022193781221.9378102LYY-W-117347975019022193781221.937810
3LYY-W-Opt6310845394019363945193.6394503LYY-W-Opt6310845394019363945193.639450
4LYY-MW-1673511299151022925875103628.0851244LYY-MW-1673511299151022925875103628.085124
5LYY-MW-1176141160101226571302286.9700625LYY-MW-1176141160101226571302286.970062
6QFT2665188584107863275629121.3997196QFT2665188584107863275629121.399719
7CG-20191359226519025935056259.350560
\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -348,6 +357,14 @@ " 7.1299e+03 * n^2.4111\n", " 4.7093e-02 * n^2.5270\n", " \n", + " \n", + " 7\n", + " CG-2019\n", + " 1.3236e+01 * n^0.9567\n", + " 2.5264e+04 * n^0.9361\n", + " 1.1592e+01 * n^3.0134\n", + " 5.5008e-05 * n^3.1621\n", + " \n", " \n", "\n", "" @@ -361,6 +378,7 @@ "4 LYY-MW-1 6.1046e+00 * n^1.9138 3.4278e+03 * n^2.1539 \n", "5 LYY-MW-11 2.6080e+00 * n^1.6654 2.2314e+03 * n^1.7881 \n", "6 QFT 2.4629e+01 * n^0.9642 6.0034e+05 * n^0.7497 \n", + "7 CG-2019 1.3236e+01 * n^0.9567 2.5264e+04 * n^0.9361 \n", "\n", " Logical depth Runtime (seconds) \n", "0 3.4596e+01 * n^3.1330 1.8063e-04 * n^3.2739 \n", @@ -369,7 +387,8 @@ "3 2.3144e+01 * n^2.8054 1.0664e-04 * n^2.9681 \n", "4 1.3265e+02 * n^3.0110 6.8593e-04 * n^3.1885 \n", "5 1.7453e+01 * n^2.9399 8.4112e-05 * n^3.0988 \n", - "6 7.1299e+03 * n^2.4111 4.7093e-02 * n^2.5270 " + "6 7.1299e+03 * n^2.4111 4.7093e-02 * n^2.5270 \n", + "7 1.1592e+01 * n^3.0134 5.5008e-05 * n^3.1621 " ] }, "execution_count": 3, @@ -382,169 +401,6 @@ " ops_and_max_n, \n", " estimate_resources_mod_exp, min_n=16)" ] - }, - { - "cell_type": "markdown", - "id": "33959133", - "metadata": {}, - "source": [ - "## Finding the optimal window size\n", - "\n", - "Complexity of windowed modular exponentiation is \n", - "\n", - "$$T(n, m)=(c_1 \\cdot 2^m + c_2 \\cdot n^2) \\cdot \\frac{n}{m} = c_1 \\cdot 2^m \\cdot \\frac{n}{m} + c_2 \\cdot \\frac{n^3}{m}.$$\n", - "\n", - "We can fit values $c_1$ and $c_2$ to the experimental data using least squares. Let's use $m=5 \\dots 15$, $n = 2m \\dots 3m$." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "cfef7f98", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "c1=6.26437e-05, c2=1.01564e-03\n" - ] - } - ], - "source": [ - "import numpy as np \n", - "from matplotlib import pyplot as plt\n", - "\n", - "def T_experiment(n,m):\n", - " op = f\"QuantumArithmetic.LYY2021.ModExpWindowedMontgomery(_,_,_,_,{m})\"\n", - " est = json.loads(estimate_resources_mod_exp(op,n))\n", - " return est['physicalCounts']['runtime']/10**9\n", - " \n", - "X = []\n", - "Y=[]\n", - "for m in range(5, 16):\n", - " for n in range(2*m, 3*m+1):\n", - " X.append([2**m * (n/m), n**3/m])\n", - " Y.append(T_experiment(n,m))\n", - " #print(m, n)\n", - " \n", - "(c1,c2), _, _, _ = np.linalg.lstsq(X, Y, rcond=None)\n", - "print(f\"c1={c1:.5e}, c2={c2:.5e}\")\n" - ] - }, - { - "cell_type": "markdown", - "id": "c8e9bc8f", - "metadata": {}, - "source": [ - "Let's verify this prediction." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "b4e071df", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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JDw8XPrgLysrE15eXqJv374620RERAg3Nzfpj7XW/fffL37//XchxK0PgI0bN+pss2nTJjFp0iTpcV2DDADpj4IQQqSkpIjc3FxRWloqLl26pLN9YWGhACB+/PHHSs+n/aOltWLFCvH8889Lj7t06SL69euns83EiRPF+vXrRU20x4+NjdVZPmvWLKFQKER8fLzO66lrkFm3bp3O8rlz5wq5XC79sdYet7r36auvvhIAxE8//aRznEceeUTY2tqK/Px8IYQQCxYsEADE6dOndbYbPHhwrb5fU6dOFWZmZiItLU1n2+eee0589NFH0uPqgsxDDz0kFAqFzmtQq9XC19dX54/7wIEDhYeHhygrK5OW5efnC1tb2zoFmccee0xaplKppOCiT5A5cuSItOzgwYMCgPj7778rPWddg8zdd9+tsyw4OFg4OTnpfGg8+eSTol27dtJjpVIpbGxsxMiRI3X23b17twAg1q5dW6mGiqqrNSIiQri6ulb6G9C1a1fRsWNHnWXe3t4iICCg0nFVKlWNz6v93diwYYMAIF588UVp/YoVK8TcuXOFEKLKIKN9Hz/44AOd5evXrxcAxNdffy2EEOLixYtCLpeLefPm6Wy3bt26GoOMp6enzoe8o6Njld/PuLg4YW1tLe666y5x5coV4efnJ/0jcvsxtWFca/ny5QKA2L59e7XvU028vb1FcHCwzrLHH39ctG3bVq/jVWfjxo2iXbt2QiaTiYcfflhkZmbecZ+9e/cKmUym83vR3PHUUhOxb98+9O7dGzY2NgAAhUKBmTNnYv/+/Th37hwAoKCgAP/99x+6d+8OU1NTnf1//PFHqWn1r7/+AgCd86IAMGbMGHz//fd61+jk5IQ2bdpIj93c3GBjYwMTExMkJiZizJgx6Nq1K0JDQ9GnTx8AwOXLl6Xt//rrL1hYWKBbt246x33qqafw9ttvS4+nTZuGffv24cKFCwA0fQX27t2LMWPG1Fif9vghISE6y/v27QuVSoV//vlHvxde7va6w8LCoFarcfDgQZ3l1b1Pf//9NwBgwIABOtt37doVubm5OHz4MABg7969sLS0RJcuXSptVxt//fUXOnToABcXF53l77zzDp544ok77v/333/D19dX5zXIZDIEBwdjz549KC0thUqlwoEDB9C9e3coFAppOysrK/j6+taqTq3g4GDpvlwu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0hLbt28HoGm1qtj3B9D0q5HL5cjKysKRI0fw8MMPV/saDx06hH379gEArl+/ju+++w4vvfSSQWptUHp3NW4mGmrUkhBCvLnlrPCev1ks3Hja4McmouapplEYTdnBgwdFRESEACACAgLEo48+Kq0rKSkR7dq1EwEBAeKVV14RQgjx559/ip49e4revXuL/v37i6VLl0rbb926VURERIiBAweKgQMHiqFDh4pz585J65OTk8V9990nQkJCRLdu3cQDDzwg0tPTdep54403hJ+fnxg6dKj44osvhLe3twgICBArVqwQx48fF+Hh4QKACA8PFytWrNDZNzc3V0yfPl0EBweLQYMGicmTJ4usrCyd5584caIICgoSkZGRYuLEiSIlJaXG96c+r/e///4TAQEBol+/fiImJkacOXNGeq9DQkLEzz//LBYvXiy8vb2Fvb29mDJlijhz5ozOazxz5oyYMmWKsLe3F97e3mLx4sVCCCF+/fVX0alTJxEWFibGjRsnpk2bJszNzUV0dLT0/M8//7zo0qWLCA8PF3v27BHvv/++CAgIEObm5iIiIkLk5uYKIYT4448/RK9evURYWJgIDg7WeV9vry87O1vnNfz99981vn/VMcSoJZkQRj651cCUSiXs7e2Rk5MDOzs7gx77pyNJeP6Xkxjg54Jvpocb9NhE1DwVFRUhISEBHTp0kDqDElHVavp9qe3nN08t1YM0comnloiIiIyCQaYetEEmWVkEZVGpkashIiJqfRhk6sHOwhTudpph12yVISIianwMMvXk76a5IBCDDBERUeNjkKkn9pMhIiIyHgaZemKQISIiMh4GmXrSBplLqbl32JKIiIgMjUGmnvzLg8y1rEIUllQ9FwgRERE1DAaZenK2MYejlSmEAC5zJmwiIqJGxSBjANqRSwwyRNRcHTp0CJGRkZDJZAgMDERkZCT69OmDrl274rPPPmuQ55w+fTo8PDx05v85fPgwPD09UVRUVOvjfPDBB4iNjdVZ9uuvv+rM1t0QLly4IL1nu3btMuixr1y5gsjISAwcOBChoaH47rvvDHp8Q1i+fDkCAwPh4+Nj1DoYZAzAV9tPJoVBhoiap7CwMOnDOCYmBrt27cKBAwewatUqPPHEE/jxxx8N/pxffPEFhg8frrPM1ta2zjMuVxVknJycdCZubAgBAQEGDzBaixYtgo+PD/777z/8/PPPsLGxaZDnqY/Zs2cjJibG2GUwyBiCP0cuEVEL1b9/fwQHB2P9+vWN8nyBgYHYtm0bFApFvY4TGRmpMyN1c3PlyhWppcPf3x933323cQtqwhhkDIAjl4ioJSstLYWpqSni4uKkUylffvklJkyYgK5du8LBwQEAUFZWhvnz5yM0NBQREREYOnQoTp8+rXOs119/Hd7e3oiIiMCzzz4LlerWIImzZ89WeaomJSUF999/P0JDQzFgwABER0dj69atAIChQ4ciOTkZS5YsQWRkJBYuXIgdO3agT58+kMlkuHLlinScS5cuYcSIEejZsye6du2Kp556SjqF9csvvyA0NBQymQybN2/G3XffDX9/f8yaNatW79GFCxdw9913o0ePHujevTuOHj0KAHj22WdhYWGBjh07Yvny5QCApUuXol27dujevTvS0tIqHWv06NE4fvw41qxZg8jISKxZs6ZO9f/xxx8YM2YM2rZti3HjxuHll1+Gj48PIiMj8c477yAqKgr+/v74448/cOLECdx///0ICAjA008/LdWwZMkSaR8AyMnJqdVptKysLEybNg1hYWGIiIjAwIEDsXfv3lq9h3rTa97tZqS204DXx43sAuE9f7PwfWGLKC5VNdjzEFHTV1hYKM6ePSsKCwtvLVSrhSjOa/ybWl3n+gGI1atXS49/+OEHIZPJxN9//62zzbBhw0RRUZFQqVQiLCxMCCHECy+8IAYNGiSKioqEEEJ89913wsXFRSiVSiGEEN9//72ws7MTly9fFkIIceDAAWFjYyOmTp1aqYadO3dKj/v16ydmzJghPX7jjTfE2LFjpcfe3t46NQshREJCggAgEhIShBBCFBUViQ4dOog333xTCCFEcXGxiIiIEI899pi0z86dOwUA8fbbbwshhEhJSRHm5uZix44dd3zPIiIiREFBgRBCiFdffVW0a9dOeh8efPBBMWrUKJ19+vbtK70vVYmIiBALFy6UHtel/ldffVUIIcSlS5fEpEmThBBCLFy4UNjY2Ih///1XCCHEZ599Jtzd3cU777wjhBAiPT1dWFlZiV27dknHW7hwoYiIiKj0Wit+b1avXi28vb2lx6dOnRJ9+/YVpaWlQgghdu/eLZydnUVWVlaVr7PK35dytf38NmnYmNQ6eNhZwMbcBHnFZUjMyIe/u62xSyKipqS0AHir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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def T_prediction(n,m):\n", - " return (c1*2**m +c2*n**2)*(n/m)\n", - "\n", - "n=32\n", - "T_exp, T_pred=[], []\n", - "m_range = list(range(1,16))\n", - "for m in m_range:\n", - " T_exp.append(T_experiment(n,m))\n", - " T_pred.append(T_prediction(n,m))\n", - " \n", - "plt.plot(m_range, T_exp, label='Resource estimation')\n", - "plt.plot(m_range, T_pred, label='Prediction by formula')\n", - "plt.legend()\n", - "plt.xlabel(\"Window size\")\n", - "plt.ylabel(\"Runtime, seconds\")\n", - "plt.title(f\"Accuracy of predicted runtime for ModExp, n={n}\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "62caf05b", - "metadata": {}, - "source": [ - "Now, we can use the approximate formula for $T$ to find optimal window size for given n. We could use condition $\\frac{\\partial T}{\\partial m}= 0$ and get explicit formula, but it's easier to just numerically optimize it. " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "129deff3", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Max error 2.081\n" - ] - } - ], - "source": [ - "def get_optimal_window_size(n):\n", - " return 1+np.argmin([T_prediction(n,m) for m in range(1,min(300,n+1))])\n", - "\n", - "n_range = re_utils.DEFAULT_N_RANGE\n", - "plt.plot(n_range, [get_optimal_window_size(i) for i in n_range], label='Numerical')\n", - "plt.plot(n_range, 2*np.log2(n_range), label='2 log_2(n)')\n", - "plt.xscale('log')\n", - "plt.xlabel('n')\n", - "plt.ylabel('Optimal window size')\n", - "plt.title('Optimal window size for modular exponentiation')\n", - "plt.legend()\n", - "plt.show()\n", - "\n", - "print(\"Max error %.03f\" % max([np.abs(get_optimal_window_size(n)-(2*np.log2(n))) for n in n_range]))" - ] - }, - { - "cell_type": "markdown", - "id": "abdffeb8", - "metadata": {}, - "source": [ - "We could get this theoretically as well:\n", - "\n", - "$$\\frac{\\partial T}{\\partial m} = \\frac{c_1 \\cdot 2^m \\cdot n (m \\cdot \\log(2)-1)-c_2 \\cdot n^3}{m^2} =0$$\n", - "\n", - "$$c_1 \\cdot 2^m \\cdot n \\cdot ( m \\cdot \\log(2) -1 ) - c_2 n^3 =0$$\n", - "\n", - "$$ 2^m \\cdot ( m \\cdot \\log(2) -1 ) = \\frac{c_2}{c_1} n^2 =0$$\n", - "\n", - "Take $\\log_2$ of both parts:\n", - "\n", - "$$m + \\log_2(m \\cdot \\log(2) -1) = \\log_2{(c_2/c_1)} + 2 \\log_2(n). $$\n", - "\n", - "From the fitted data, $\\log_2{(c_2/c_1)} \\approx 4.02$. For $m \\in [2, 40]$, $\\log_2(m \\cdot \\log(2) -1) \\in [-1.37, 4.70]$. So, approximately, $m^* \\approx 2 \\log_2(n)$." - ] } ], "metadata": { diff --git a/resource_estimate/results/estimate_resources_mod_exp.csv b/resource_estimate/results/estimate_resources_mod_exp.csv index 3c3ccc3..2698d15 100644 --- a/resource_estimate/results/estimate_resources_mod_exp.csv +++ b/resource_estimate/results/estimate_resources_mod_exp.csv @@ -1,4 +1,34 @@ op,n,Logical qubits,Physical qubits,Logical depth,"Runtime, seconds" +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",3,33,109026,35,0.000126 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",4,42,81444,76,0.0003344 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",5,72,159856,899,0.0046748 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",6,84,154232,1338,0.0069576 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",7,95,232030,3391,0.020346 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",8,106,236980,4376,0.026256 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",10,128,345600,9630,0.05778 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",11,139,350342,15643,0.1063724 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",13,161,399058,26499,0.1801932 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",16,193,417554,45024,0.3061632 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",19,225,450450,85299,0.6482724 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",23,268,481496,152359,1.1579284 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",27,311,530542,247307,1.8795332 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",32,364,568808,388976,2.9562176 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",38,427,664614,657746,5.5250664 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",45,500,819000,1148387,9.6464508 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",54,594,1156988,1914434,16.0812456 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",64,698,1304924,3202704,29.4648768 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",76,823,1437174,5384604,49.5383568 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",91,978,1601164,9476043,87.1795956 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",108,1153,1974370,15545276,155.45276 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",128,1359,2265190,25935056,259.35056 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",152,1606,2573940,43507496,435.07496 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",181,1903,2945190,74380443,743.80443 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",215,2250,3813620,124602727,1345.7094516 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",256,2669,4457842,208632144,2253.2271552 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",304,3158,5170804,349661184,3776.3407872 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",362,3748,6837256,590828606,6853.6118296 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",431,4449,8116298,1002372943,11627.5261388 +"QuantumArithmetic.CG20192.ModExpWindow(_,_,_,_,2,2)",512,5271,9802182,1673458256,19412.1157696 QuantumArithmetic.LYY2021.ModExp,3,52,162776,513,0.0026676 QuantumArithmetic.LYY2021.ModExp,4,63,166494,348,0.0018096 QuantumArithmetic.LYY2021.ModExp,5,75,236550,3267,0.019602