{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import sys\n", "import time\n", "import pandas as pd\n", "import numpy as np\n", "\n", "# QCGPU Imports\n", "import qcgpu\n", "\n", "# ProjectQ Imports\n", "from projectq import MainEngine\n", "import projectq.ops as ops\n", "from projectq.backends import Simulator\n", "from projectq.types import Qureg\n", "\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def bench_qcgpu(n, depth):\n", " state = qcgpu.State(n)\n", "\n", " h = qcgpu.gate.h()\n", " x = qcgpu.gate.x()\n", " sqrt_x = qcgpu.gate.sqrt_x()\n", "\n", " print('started')\n", " start = time.time()\n", "\n", " for level in range(depth):\n", " for q in range(n):\n", " \n", " state.apply_gate(h, q)\n", " state.apply_gate(sqrt_x, q)\n", "\n", " if q != 0:\n", " state.apply_controlled_gate(x, q, 0)\n", " \n", " runtime = time.time() - start\n", " print('ended: ', runtime)\n", " return runtime\n", " \n", "def bench_projectq(n, depth):\n", " eng = MainEngine(backend=Simulator(gate_fusion=True), engine_list=[])\n", " qbits = eng.allocate_qureg(n)\n", "\n", " print('started')\n", " start = time.time()\n", "\n", " for level in range(depth):\n", " print(depth-level)\n", " for q in qbits:\n", " ops.H | q\n", " ops.SqrtX | q\n", " if q != qbits[0]:\n", " ops.CNOT | (q, qbits[0])\n", "\n", " runtime = time.time() - start\n", " print('ended: ', runtime)\n", "\n", " for q in qbits:\n", " ops.Measure | q\n", " eng.flush()\n", " return runtime\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "started\n", "('ended: ', 202.95192885398865)\n" ] }, { "data": { "text/plain": [ "202.95192885398865" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bench_qcgpu(28,100)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "started\n", "100\n", "99\n", "98\n", "97\n", "96\n", "95\n", "94\n", "93\n", "92\n", "91\n", "90\n", "89\n", "88\n", "87\n", "86\n", "85\n", "84\n", "83\n", "82\n", "81\n", "80\n", "79\n", "78\n", "77\n", "76\n", "75\n", "74\n", "73\n", "72\n", "71\n", "70\n", "69\n", "68\n", "67\n", "66\n", "65\n", "64\n", "63\n", "62\n", "61\n", "60\n", "59\n", "58\n", "57\n", "56\n", "55\n", "54\n", "53\n", "52\n", "51\n", "50\n", "49\n", "48\n", "47\n", "46\n", "45\n", "44\n", "43\n", "42\n", "41\n", "40\n", "39\n", "38\n", "37\n", "36\n", "35\n", "34\n", "33\n", "32\n", "31\n", "30\n", "29\n", "28\n", "27\n", "26\n", "25\n", "24\n", "23\n", "22\n", "21\n", "20\n", "19\n", "18\n", "17\n", "16\n", "15\n", "14\n", "13\n", "12\n", "11\n", "10\n", "9\n", "8\n", "7\n", "6\n", "5\n", "4\n", "3\n", "2\n", "1\n", "('ended: ', 971.3228080272675)\n" ] }, { "data": { "text/plain": [ "971.3228080272675" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bench_projectq(28,100)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15rc1" } }, "nbformat": 4, "nbformat_minor": 2 }