{ "cells": [ { "cell_type": "markdown", "source": [ "# How-to: run circuit on Braket device using verbatim mode" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 1, "outputs": [], "source": [ "from qiskit import QuantumCircuit\n", "from qiskit.visualization import plot_histogram\n", "from qiskit_braket_provider import AWSBraketProvider" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } } }, { "cell_type": "markdown", "source": [ "Some AWS backends support running circuits using verbatim mode and/or with disabled qubit rewiring. If you are not familiar with those concepts, refer to the [documentation](https://aws.amazon.com/about-aws/whats-new/2021/09/amazon-braket-verbatim-compilation-quantum-circuits/), here we'll constrain ourselves to a short reminder:\n", "\n", "- `verbatim box` is a part of the circuit that *will not* be compiled by Braket. Hence, it needs to comprise only gates that are native to particular device.\n", "- `qubit rewiring` is a process in which logical qubits in submitted circuits are mapped into concrete physical qubits on actual device.\n", "\n", "Typically, one wants to design circuits using high-level concepts, without worrying about qubit placement or gate compilation. However, in some cases it might be desirable to have a precise control of the circuits being submitted.\n", "\n", "We will start this how-to by defining a simple circuit comprising `cnot(0, 1)` gate and running it on Aspem-M-3 device.\n" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 2, "outputs": [ { "data": { "text/plain": "
", "image/png": "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\n" }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "provider = AWSBraketProvider()\n", "aspen = provider.get_backend(\"Aspen-M-3\")\n", "\n", "circuit = QuantumCircuit(2)\n", "circuit.cnot(0, 1)\n", "\n", "result = aspen.run(circuit, shots=10)\n", "\n", "plot_histogram(result.result().get_counts())" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } } }, { "cell_type": "markdown", "source": [ "Our circuit run perfectly fine. Since Rigetti devices don't support CNOT gate natively, we deduce that the circuit was compiled by Braket and our CNOT gate got decomposed into some equivalent sequence of gates.\n", "\n", "We will now see what happens if we pass `verbatim=True` and `disable_qubit_rewiring=True` options.\n" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 3, "outputs": [ { "ename": "ValidationException", "evalue": "An error occurred (ValidationException) when calling the CreateQuantumTask operation: Backend ARN, arn:aws:braket:us-west-1::device/qpu/rigetti/Aspen-M-3, does not support the operation cnot as a native gate. Supported operations for this Backend ARN are ['rz', 'cz', 'xy', 'rx', 'cphaseshift'].", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValidationException\u001b[0m Traceback (most recent call last)", "Input \u001b[0;32mIn [3]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43maspen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcircuit\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mverbatim\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdisable_qubit_rewiring\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/Projects/qiskit-braket-provider/qiskit_braket_provider/providers/braket_backend.py:251\u001b[0m, in \u001b[0;36mAWSBraketBackend.run\u001b[0;34m(self, run_input, **options)\u001b[0m\n\u001b[1;32m 248\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m options\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mverbatim\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m 249\u001b[0m braket_circuits \u001b[38;5;241m=\u001b[39m wrap_circuits_in_verbatim_box(braket_circuits)\n\u001b[0;32m--> 251\u001b[0m batch_task: AwsQuantumTaskBatch \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_device\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_batch\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 252\u001b[0m \u001b[43m \u001b[49m\u001b[43mbraket_circuits\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43moptions\u001b[49m\n\u001b[1;32m 253\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 254\u001b[0m tasks: List[AwsQuantumTask] \u001b[38;5;241m=\u001b[39m batch_task\u001b[38;5;241m.\u001b[39mtasks\n\u001b[1;32m 255\u001b[0m job_id \u001b[38;5;241m=\u001b[39m TASK_ID_DIVIDER\u001b[38;5;241m.\u001b[39mjoin(task\u001b[38;5;241m.\u001b[39mid \u001b[38;5;28;01mfor\u001b[39;00m task \u001b[38;5;129;01min\u001b[39;00m tasks)\n", "File \u001b[0;32m~/.virtualenvs/pyqbench/lib/python3.9/site-packages/braket/aws/aws_device.py:208\u001b[0m, in \u001b[0;36mAwsDevice.run_batch\u001b[0;34m(self, task_specifications, s3_destination_folder, shots, max_parallel, max_connections, poll_timeout_seconds, poll_interval_seconds, *aws_quantum_task_args, **aws_quantum_task_kwargs)\u001b[0m\n\u001b[1;32m 165\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrun_batch\u001b[39m(\n\u001b[1;32m 166\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 167\u001b[0m task_specifications: List[Union[Circuit, Problem, OpenQasmProgram, BlackbirdProgram]],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 175\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39maws_quantum_task_kwargs,\n\u001b[1;32m 176\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m AwsQuantumTaskBatch:\n\u001b[1;32m 177\u001b[0m \u001b[38;5;124;03m\"\"\"Executes a batch of tasks in parallel\u001b[39;00m\n\u001b[1;32m 178\u001b[0m \n\u001b[1;32m 179\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 206\u001b[0m \u001b[38;5;124;03m `braket.aws.aws_quantum_task_batch.AwsQuantumTaskBatch`\u001b[39;00m\n\u001b[1;32m 207\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 208\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mAwsQuantumTaskBatch\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 209\u001b[0m \u001b[43m \u001b[49m\u001b[43mAwsSession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcopy_session\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_aws_session\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmax_connections\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmax_connections\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 210\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_arn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 211\u001b[0m \u001b[43m \u001b[49m\u001b[43mtask_specifications\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 212\u001b[0m \u001b[43m \u001b[49m\u001b[43ms3_destination_folder\u001b[49m\n\u001b[1;32m 213\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 214\u001b[0m \u001b[43m \u001b[49m\u001b[43mAwsSession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparse_s3_uri\u001b[49m\u001b[43m(\u001b[49m\u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43menviron\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mAMZN_braket_job_RESULTS_S3_URI\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 215\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mAMZN_braket_job_RESULTS_S3_URI\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43menviron\u001b[49m\n\u001b[1;32m 216\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\n\u001b[1;32m 217\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 218\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_aws_session\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdefault_bucket\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtasks\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 219\u001b[0m \u001b[43m \u001b[49m\u001b[43mshots\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mshots\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_default_shots\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 220\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_parallel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmax_parallel\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mmax_parallel\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_default_max_parallel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 221\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_workers\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmax_connections\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 222\u001b[0m \u001b[43m \u001b[49m\u001b[43mpoll_timeout_seconds\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpoll_timeout_seconds\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 223\u001b[0m \u001b[43m \u001b[49m\u001b[43mpoll_interval_seconds\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpoll_interval_seconds\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 224\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43maws_quantum_task_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 225\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43maws_quantum_task_kwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 226\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/.virtualenvs/pyqbench/lib/python3.9/site-packages/braket/aws/aws_quantum_task_batch.py:83\u001b[0m, in \u001b[0;36mAwsQuantumTaskBatch.__init__\u001b[0;34m(self, aws_session, device_arn, task_specifications, s3_destination_folder, shots, max_parallel, max_workers, poll_timeout_seconds, poll_interval_seconds, *aws_quantum_task_args, **aws_quantum_task_kwargs)\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 44\u001b[0m aws_session: AwsSession,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39maws_quantum_task_kwargs,\n\u001b[1;32m 55\u001b[0m ):\n\u001b[1;32m 56\u001b[0m \u001b[38;5;124;03m\"\"\"Creates a batch of quantum tasks.\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \n\u001b[1;32m 58\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[38;5;124;03m `braket.aws.aws_quantum_task.AwsQuantumTask.create()`.\u001b[39;00m\n\u001b[1;32m 82\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 83\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tasks \u001b[38;5;241m=\u001b[39m \u001b[43mAwsQuantumTaskBatch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_execute\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 84\u001b[0m \u001b[43m \u001b[49m\u001b[43maws_session\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 85\u001b[0m \u001b[43m \u001b[49m\u001b[43mdevice_arn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 86\u001b[0m \u001b[43m \u001b[49m\u001b[43mtask_specifications\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 87\u001b[0m \u001b[43m \u001b[49m\u001b[43ms3_destination_folder\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 88\u001b[0m \u001b[43m \u001b[49m\u001b[43mshots\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 89\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_parallel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 90\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_workers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 91\u001b[0m \u001b[43m \u001b[49m\u001b[43mpoll_timeout_seconds\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[43m \u001b[49m\u001b[43mpoll_interval_seconds\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 93\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43maws_quantum_task_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 94\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43maws_quantum_task_kwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 95\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 96\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_aws_session \u001b[38;5;241m=\u001b[39m aws_session\n\u001b[1;32m 97\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", "File \u001b[0;32m~/.virtualenvs/pyqbench/lib/python3.9/site-packages/braket/aws/aws_quantum_task_batch.py:151\u001b[0m, in \u001b[0;36mAwsQuantumTaskBatch._execute\u001b[0;34m(aws_session, device_arn, task_specifications, s3_destination_folder, shots, max_parallel, max_workers, poll_timeout_seconds, poll_interval_seconds, *args, **kwargs)\u001b[0m\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m ThreadPoolExecutor(max_workers\u001b[38;5;241m=\u001b[39mmax_threads) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 135\u001b[0m task_futures \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 136\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 137\u001b[0m AwsQuantumTaskBatch\u001b[38;5;241m.\u001b[39m_create_task,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 149\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m task \u001b[38;5;129;01min\u001b[39;00m task_specifications\n\u001b[1;32m 150\u001b[0m ]\n\u001b[0;32m--> 151\u001b[0m tasks \u001b[38;5;241m=\u001b[39m [future\u001b[38;5;241m.\u001b[39mresult() \u001b[38;5;28;01mfor\u001b[39;00m future \u001b[38;5;129;01min\u001b[39;00m task_futures]\n\u001b[1;32m 152\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m tasks\n", "File \u001b[0;32m~/.virtualenvs/pyqbench/lib/python3.9/site-packages/braket/aws/aws_quantum_task_batch.py:151\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m ThreadPoolExecutor(max_workers\u001b[38;5;241m=\u001b[39mmax_threads) \u001b[38;5;28;01mas\u001b[39;00m executor:\n\u001b[1;32m 135\u001b[0m task_futures \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 136\u001b[0m executor\u001b[38;5;241m.\u001b[39msubmit(\n\u001b[1;32m 137\u001b[0m AwsQuantumTaskBatch\u001b[38;5;241m.\u001b[39m_create_task,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 149\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m task \u001b[38;5;129;01min\u001b[39;00m task_specifications\n\u001b[1;32m 150\u001b[0m ]\n\u001b[0;32m--> 151\u001b[0m tasks \u001b[38;5;241m=\u001b[39m [\u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m future \u001b[38;5;129;01min\u001b[39;00m task_futures]\n\u001b[1;32m 152\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m tasks\n", "File \u001b[0;32m/usr/lib64/python3.9/concurrent/futures/_base.py:439\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 437\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n\u001b[1;32m 438\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[0;32m--> 439\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__get_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 441\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_condition\u001b[38;5;241m.\u001b[39mwait(timeout)\n\u001b[1;32m 443\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;129;01min\u001b[39;00m [CANCELLED, CANCELLED_AND_NOTIFIED]:\n", "File \u001b[0;32m/usr/lib64/python3.9/concurrent/futures/_base.py:391\u001b[0m, in \u001b[0;36mFuture.__get_result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception:\n\u001b[1;32m 390\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 391\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\n\u001b[1;32m 392\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 393\u001b[0m \u001b[38;5;66;03m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[1;32m 394\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", "File \u001b[0;32m/usr/lib64/python3.9/concurrent/futures/thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", "File \u001b[0;32m~/.virtualenvs/pyqbench/lib/python3.9/site-packages/braket/aws/aws_quantum_task_batch.py:166\u001b[0m, in \u001b[0;36mAwsQuantumTaskBatch._create_task\u001b[0;34m(remaining, aws_session, device_arn, task_specification, s3_destination_folder, shots, poll_interval_seconds, *args, **kwargs)\u001b[0m\n\u001b[1;32m 154\u001b[0m \u001b[38;5;129m@staticmethod\u001b[39m\n\u001b[1;32m 155\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_create_task\u001b[39m(\n\u001b[1;32m 156\u001b[0m remaining,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[1;32m 165\u001b[0m ):\n\u001b[0;32m--> 166\u001b[0m task \u001b[38;5;241m=\u001b[39m \u001b[43mAwsQuantumTask\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 167\u001b[0m \u001b[43m \u001b[49m\u001b[43maws_session\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 168\u001b[0m \u001b[43m \u001b[49m\u001b[43mdevice_arn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 169\u001b[0m \u001b[43m \u001b[49m\u001b[43mtask_specification\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 170\u001b[0m \u001b[43m \u001b[49m\u001b[43ms3_destination_folder\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 171\u001b[0m \u001b[43m \u001b[49m\u001b[43mshots\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 172\u001b[0m \u001b[43m \u001b[49m\u001b[43mpoll_interval_seconds\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpoll_interval_seconds\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 173\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 174\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 175\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 177\u001b[0m remaining\u001b[38;5;241m.\u001b[39mpop()\n\u001b[1;32m 179\u001b[0m \u001b[38;5;66;03m# If the task hits a terminal state before all tasks have been created,\u001b[39;00m\n\u001b[1;32m 180\u001b[0m \u001b[38;5;66;03m# it can be returned immediately\u001b[39;00m\n", "File \u001b[0;32m~/.virtualenvs/pyqbench/lib/python3.9/site-packages/braket/aws/aws_quantum_task.py:147\u001b[0m, in \u001b[0;36mAwsQuantumTask.create\u001b[0;34m(aws_session, device_arn, task_specification, s3_destination_folder, shots, device_parameters, disable_qubit_rewiring, tags, *args, **kwargs)\u001b[0m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(task_specification, Circuit) \u001b[38;5;129;01mand\u001b[39;00m task_specification\u001b[38;5;241m.\u001b[39mparameters:\n\u001b[1;32m 143\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 144\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot execute circuit with unbound parameters: \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 145\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtask_specification\u001b[38;5;241m.\u001b[39mparameters\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 146\u001b[0m )\n\u001b[0;32m--> 147\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_create_internal\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 148\u001b[0m \u001b[43m \u001b[49m\u001b[43mtask_specification\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 149\u001b[0m \u001b[43m \u001b[49m\u001b[43maws_session\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 150\u001b[0m \u001b[43m \u001b[49m\u001b[43mcreate_task_kwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 151\u001b[0m \u001b[43m \u001b[49m\u001b[43mdevice_arn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 152\u001b[0m \u001b[43m \u001b[49m\u001b[43mdevice_parameters\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m{\u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 153\u001b[0m \u001b[43m \u001b[49m\u001b[43mdisable_qubit_rewiring\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 154\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 155\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 156\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m/usr/lib64/python3.9/functools.py:888\u001b[0m, in \u001b[0;36msingledispatch..wrapper\u001b[0;34m(*args, **kw)\u001b[0m\n\u001b[1;32m 884\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m args:\n\u001b[1;32m 885\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfuncname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m requires at least \u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 886\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m1 positional argument\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m--> 888\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdispatch\u001b[49m\u001b[43m(\u001b[49m\u001b[43margs\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;18;43m__class__\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkw\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/.virtualenvs/pyqbench/lib/python3.9/site-packages/braket/aws/aws_quantum_task.py:496\u001b[0m, in \u001b[0;36m_\u001b[0;34m(circuit, aws_session, create_task_kwargs, device_arn, device_parameters, disable_qubit_rewiring, *args, **kwargs)\u001b[0m\n\u001b[1;32m 489\u001b[0m device_parameters \u001b[38;5;241m=\u001b[39m GateModelSimulatorDeviceParameters(\n\u001b[1;32m 490\u001b[0m paradigmParameters\u001b[38;5;241m=\u001b[39mparadigm_parameters\n\u001b[1;32m 491\u001b[0m )\n\u001b[1;32m 493\u001b[0m create_task_kwargs\u001b[38;5;241m.\u001b[39mupdate(\n\u001b[1;32m 494\u001b[0m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maction\u001b[39m\u001b[38;5;124m\"\u001b[39m: circuit\u001b[38;5;241m.\u001b[39mto_ir()\u001b[38;5;241m.\u001b[39mjson(), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdeviceParameters\u001b[39m\u001b[38;5;124m\"\u001b[39m: device_parameters\u001b[38;5;241m.\u001b[39mjson()}\n\u001b[1;32m 495\u001b[0m )\n\u001b[0;32m--> 496\u001b[0m task_arn \u001b[38;5;241m=\u001b[39m \u001b[43maws_session\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_quantum_task\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mcreate_task_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 497\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m AwsQuantumTask(task_arn, aws_session, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", "File \u001b[0;32m~/.virtualenvs/pyqbench/lib/python3.9/site-packages/braket/aws/aws_session.py:180\u001b[0m, in \u001b[0;36mAwsSession.create_quantum_task\u001b[0;34m(self, **boto3_kwargs)\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m job_token:\n\u001b[1;32m 179\u001b[0m boto3_kwargs\u001b[38;5;241m.\u001b[39mupdate({\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mjobToken\u001b[39m\u001b[38;5;124m\"\u001b[39m: job_token})\n\u001b[0;32m--> 180\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbraket_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_quantum_task\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mboto3_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 181\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mquantumTaskArn\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", "File \u001b[0;32m~/.virtualenvs/pyqbench/lib/python3.9/site-packages/botocore/client.py:508\u001b[0m, in \u001b[0;36mClientCreator._create_api_method.._api_call\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 504\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\n\u001b[1;32m 505\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpy_operation_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m() only accepts keyword arguments.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 506\u001b[0m )\n\u001b[1;32m 507\u001b[0m \u001b[38;5;66;03m# The \"self\" in this scope is referring to the BaseClient.\u001b[39;00m\n\u001b[0;32m--> 508\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_api_call\u001b[49m\u001b[43m(\u001b[49m\u001b[43moperation_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/.virtualenvs/pyqbench/lib/python3.9/site-packages/botocore/client.py:915\u001b[0m, in \u001b[0;36mBaseClient._make_api_call\u001b[0;34m(self, operation_name, api_params)\u001b[0m\n\u001b[1;32m 913\u001b[0m error_code \u001b[38;5;241m=\u001b[39m parsed_response\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mError\u001b[39m\u001b[38;5;124m\"\u001b[39m, {})\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCode\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 914\u001b[0m error_class \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexceptions\u001b[38;5;241m.\u001b[39mfrom_code(error_code)\n\u001b[0;32m--> 915\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error_class(parsed_response, operation_name)\n\u001b[1;32m 916\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 917\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parsed_response\n", "\u001b[0;31mValidationException\u001b[0m: An error occurred (ValidationException) when calling the CreateQuantumTask operation: Backend ARN, arn:aws:braket:us-west-1::device/qpu/rigetti/Aspen-M-3, does not support the operation cnot as a native gate. Supported operations for this Backend ARN are ['rz', 'cz', 'xy', 'rx', 'cphaseshift']." ] } ], "source": [ "aspen.run(circuit, verbatim=True, disable_qubit_rewiring=True)" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } } }, { "cell_type": "markdown", "source": [ "As expected, we obtained a `ValidationException`. As a last step, let us verify that running circuit with native gates and matching topology is possible.\n" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "native_circuit = QuantumCircuit(2)\n", "native_circuit.cz(0, 1)\n", "\n", "result = aspen.run(native_circuit, verbatim=True, disable_qubit_rewiring=True).result()\n", "plot_histogram(result.get_counts())" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } } } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.6" } }, "nbformat": 4, "nbformat_minor": 0 }