From 470657550c2a77f8ba5eb187532865e27724e304 Mon Sep 17 00:00:00 2001 From: Rathish Cholarajan Date: Fri, 25 Feb 2022 01:16:09 -0500 Subject: [PATCH] Prepare release 0.1.0 (#162) * Prepare release 0.1 * Add prelude for 0.1.0 release * Add release note for renaming get_backend to backend * Fix broken links * Add release note for BackendV2 * Update tutorials * Fix execution count * Add release note for new RuntimeOptions class * Add release note explaining new ability to authenticate using IBM Cloud * Add release note to explain new features in account management * Add release note about automatic hgp selection --- .../01_introduction_cloud_runtime.ipynb | 103 ++++++++---------- qiskit_ibm_runtime/__init__.py | 5 +- qiskit_ibm_runtime/ibm_runtime_service.py | 1 - .../account-management-b9908e0b62dc1d81.yaml | 9 ++ .../0.1/authentication-79b90822d430688f.yaml | 15 +++ .../0.1/backend-v2-15bbe03ff572b6da.yaml | 18 +++ ...ckend-vs-get-backend-18b2dcf4b8434e00.yaml | 9 ++ ...vert-runtime-methods-5d5d76f4d20332f1.yaml | 0 ...encoder-instructions-f99e128a02a10714.yaml | 6 + ...ter-jobs-by-provider-dead04faaf223840.yaml | 0 ...qpy-v3-serialisation-20ddba46e7c6ba09.yaml | 0 .../interim-results-b5a18a3784063d56.yaml | 0 .../0.1/least-busy-4a7040c00f605635.yaml | 5 + .../legacy-optional-hgp-299a0fd8ee029734.yaml | 14 +++ ...umpy-ndarray-encoder-919d6a344e131fee.yaml | 8 ++ ...ptional-backend-name-4d120e2645b5831e.yaml | 6 + ...-program-description-f6e3aceca8223af7.yaml | 0 .../notes/0.1/prelude-96ed7aae53f9932a.yaml | 13 +++ ...backend-requirements-a682e98ded7977d7.yaml | 0 .../0.1/remove-logout-207163e4d4a6adf8.yaml | 5 + .../remove-python-3.6-f7ff43b6d84e4e7c.yaml | 5 + .../remove-run-circuits-6d43cf46e509d55e.yaml | 5 + .../resolve-crn-b2cc1c35f5306bea.yaml | 0 .../0.1/runtime-options-175692ee0417ff30.yaml | 7 ++ .../stream-results-6ff5f240bbe21fc0.yaml | 0 ...encoder-instructions-f99e128a02a10714.yaml | 6 - ...umpy-ndarray-encoder-919d6a344e131fee.yaml | 8 -- 27 files changed, 174 insertions(+), 74 deletions(-) create mode 100644 releasenotes/notes/0.1/account-management-b9908e0b62dc1d81.yaml create mode 100644 releasenotes/notes/0.1/authentication-79b90822d430688f.yaml create mode 100644 releasenotes/notes/0.1/backend-v2-15bbe03ff572b6da.yaml create mode 100644 releasenotes/notes/0.1/backend-vs-get-backend-18b2dcf4b8434e00.yaml rename releasenotes/notes/{ => 0.1}/convert-runtime-methods-5d5d76f4d20332f1.yaml (100%) create mode 100644 releasenotes/notes/0.1/encoder-instructions-f99e128a02a10714.yaml rename releasenotes/notes/{ => 0.1}/filter-jobs-by-provider-dead04faaf223840.yaml (100%) rename releasenotes/notes/{ => 0.1}/fix-qpy-v3-serialisation-20ddba46e7c6ba09.yaml (100%) rename releasenotes/notes/{ => 0.1}/interim-results-b5a18a3784063d56.yaml (100%) create mode 100644 releasenotes/notes/0.1/least-busy-4a7040c00f605635.yaml create mode 100644 releasenotes/notes/0.1/legacy-optional-hgp-299a0fd8ee029734.yaml create mode 100644 releasenotes/notes/0.1/numpy-ndarray-encoder-919d6a344e131fee.yaml create mode 100644 releasenotes/notes/0.1/optional-backend-name-4d120e2645b5831e.yaml rename releasenotes/notes/{ => 0.1}/optional-program-description-f6e3aceca8223af7.yaml (100%) create mode 100644 releasenotes/notes/0.1/prelude-96ed7aae53f9932a.yaml rename releasenotes/notes/{ => 0.1}/print-backend-requirements-a682e98ded7977d7.yaml (100%) create mode 100644 releasenotes/notes/0.1/remove-logout-207163e4d4a6adf8.yaml create mode 100644 releasenotes/notes/0.1/remove-python-3.6-f7ff43b6d84e4e7c.yaml create mode 100644 releasenotes/notes/0.1/remove-run-circuits-6d43cf46e509d55e.yaml rename releasenotes/notes/{ => 0.1}/resolve-crn-b2cc1c35f5306bea.yaml (100%) create mode 100644 releasenotes/notes/0.1/runtime-options-175692ee0417ff30.yaml rename releasenotes/notes/{ => 0.1}/stream-results-6ff5f240bbe21fc0.yaml (100%) delete mode 100644 releasenotes/notes/encoder-instructions-f99e128a02a10714.yaml delete mode 100644 releasenotes/notes/numpy-ndarray-encoder-919d6a344e131fee.yaml diff --git a/docs/tutorials/01_introduction_cloud_runtime.ipynb b/docs/tutorials/01_introduction_cloud_runtime.ipynb index 1541456b6..c19876a64 100644 --- a/docs/tutorials/01_introduction_cloud_runtime.ipynb +++ b/docs/tutorials/01_introduction_cloud_runtime.ipynb @@ -175,10 +175,18 @@ "name": "stdout", "output_type": "stream", "text": [ + "==================================================\n", + "hello-world:\n", + " Name: hello-world\n", + " Description: A sample runtime program.\n", "==================================================\n", "sampler:\n", " Name: sampler\n", - " Description: Sample distributions generated by given circuits executed on the target backend.\n" + " Description: Generates quasi-probabilities by sampling quantum circuits.\n", + "==================================================\n", + "estimator:\n", + " Name: estimator\n", + " Description: Calculates expectation values of quantum operators.\n" ] } ], @@ -218,9 +226,9 @@ "text": [ "sampler:\n", " Name: sampler\n", - " Description: Sample distributions generated by given circuits executed on the target backend.\n", + " Description: Generates quasi-probabilities by sampling quantum circuits.\n", " Creation date: 2021-10-26T14:41:57Z\n", - " Update date: 2021-11-18T16:22:52.023239Z\n", + " Update date: 2022-02-24T22:17:10.144954Z\n", " Max execution time: 10000\n", " Backend requirements:\n", " none\n", @@ -230,12 +238,11 @@ " Description: A single or list of QuantumCircuits.\n", " Type: ['array', 'object']\n", " Required: True\n", - " - return_mitigation_overhead:\n", - " Default: False\n", - " Description: Return mitigation overhead factor. Default is False.\n", - " Type: boolean\n", + " - parameters:\n", + " Description: The parameters to be bound. This can be either a list[float] or list[list[float]]].\n", + " Type: array\n", " Required: False\n", - " - run_config:\n", + " - run_options:\n", " Description: A collection of kwargs passed to backend.run.\n", " Type: object\n", " Required: False\n", @@ -244,35 +251,21 @@ " Description: Skip circuit transpilation. Default is False.\n", " Type: boolean\n", " Required: False\n", - " - transpile_config:\n", + " - transpile_options:\n", " Description: A collection of kwargs passed to transpile.\n", " Type: object\n", " Required: False\n", - " - use_dynamical_decoupling:\n", - " Default: False\n", - " Description: Use dynamical decoupling to improve fidelities.\n", - " Type: boolean\n", - " Required: False\n", - " - use_measurement_mitigation:\n", - " Default: False\n", - " Description: Use measurement mitigation to improve results. Default is False.\n", - " Type: boolean\n", - " Required: False\n", " Interim results:\n", " none\n", " Returns:\n", " Properties:\n", - " - counts:\n", - " Description: List of counts data for each circuit given.\n", - " Type: array\n", - " Required: False\n", - " - mitigation_overhead:\n", - " Description: List of mitigation overhead values for measurement mitigation, if requested.\n", + " - quasi_dists:\n", + " Description: List of quasi-probabilities returned for each circuit.\n", " Type: array\n", " Required: False\n", - " - quasiprobabilities:\n", - " Description: List of quasiprobabilities returned for each circuit if using measurement mitigation.\n", - " Type: array\n", + " - shots:\n", + " Description: Number of shots executed.\n", + " Type: integer\n", " Required: False\n" ] } @@ -335,7 +328,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -346,7 +339,7 @@ } ], "source": [ - "from qiskit import IBMQ, QuantumCircuit\n", + "from qiskit import QuantumCircuit\n", "\n", "N = 6\n", "qc = QuantumCircuit(N)\n", @@ -380,14 +373,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "job id: c7g4h93k7ishllik6i7g\n", - "{'counts': [{'0x21': 68, '0x31': 125, '0x23': 122, '0x3f': 2000, '0x30': 133, '0x33': 219, '0x27': 236, '0x0': 57, '0x3': 126, '0x7': 265, '0x37': 507, '0x20': 73, '0x1': 69}], 'quasiprobabilities': [{'0x0': 0.01425, '0x1': 0.017249999999999998, '0x3': 0.0315, '0x7': 0.06625000000000002, '0x20': 0.018249999999999995, '0x21': 0.016999999999999994, '0x23': 0.030499999999999992, '0x27': 0.05899999999999999, '0x30': 0.03325000000000001, '0x31': 0.031249999999999993, '0x33': 0.05475, '0x37': 0.12674999999999997, '0x3f': 0.5}], 'mitigation_overhead': []}\n" + "Job ID: c8c5s4819ieg4tnjoo0g\n", + "{'quasi_dists': [{'49': 0.0224609375, '32': 0.013671875, '35': 0.0244140625, '1': 0.017578125, '55': 0.1279296875, '63': 0.517578125, '48': 0.0390625, '51': 0.05859375, '39': 0.0537109375, '0': 0.0146484375, '7': 0.060546875, '3': 0.03125, '33': 0.0185546875}], 'shots': 1024}\n" ] } ], "source": [ "# Specify the program inputs here.\n", - "program_inputs = {\"circuits\": qc, \"use_measurement_mitigation\": True}\n", + "program_inputs = {\"circuits\": qc}\n", "\n", "job = service.run(\n", " program_id=\"sampler\",\n", @@ -395,7 +388,7 @@ ")\n", "\n", "# Printing the job ID in case we need to retrieve it later.\n", - "print(f\"job id: {job.job_id}\")\n", + "print(f\"Job ID: {job.job_id}\")\n", "\n", "# Get the job result - this is blocking and control may not return immediately.\n", "result = job.result()\n", @@ -467,7 +460,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "id": "fb97b17e", "metadata": {}, "outputs": [ @@ -481,7 +474,7 @@ " ]" ] }, - "execution_count": 3, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -500,7 +493,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "id": "4fb4eba4", "metadata": {}, "outputs": [ @@ -510,7 +503,7 @@ "[]" ] }, - "execution_count": 4, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -539,7 +532,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "80df2a99", "metadata": {}, "outputs": [ @@ -547,14 +540,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "job id: c7f42jr81hrbu2dji040\n", - "{'counts': [{'0x21': 62, '0x23': 154, '0x31': 134, '0x20': 73, '0x3f': 1964, '0x1': 77, '0x3': 106, '0x7': 254, '0x0': 57, '0x27': 240, '0x33': 259, '0x30': 109, '0x37': 511}], 'quasiprobabilities': [{'0x0': 0.01425, '0x1': 0.01925, '0x3': 0.026499999999999992, '0x7': 0.06350000000000001, '0x20': 0.01825, '0x21': 0.015499999999999996, '0x23': 0.0385, '0x27': 0.059999999999999984, '0x30': 0.02725, '0x31': 0.0335, '0x33': 0.06475, '0x37': 0.12774999999999997, '0x3f': 0.491}], 'mitigation_overhead': []}\n" + "Job ID: c8c5v13fijclu6skr4v0\n", + "{'quasi_dists': [{'33': 0.0146484375, '49': 0.0302734375, '1': 0.017578125, '32': 0.0166015625, '63': 0.4853515625, '55': 0.1318359375, '51': 0.0634765625, '48': 0.037109375, '3': 0.017578125, '7': 0.0693359375, '0': 0.0224609375, '39': 0.05859375, '35': 0.03515625}], 'shots': 1024}\n" ] } ], "source": [ "# Specify the program inputs here.\n", - "program_inputs = {\"circuits\": qc, \"use_measurement_mitigation\": True}\n", + "program_inputs = {\"circuits\": qc}\n", "\n", "# Specify the backend name.\n", "options = {\"backend_name\": \"ibmq_qasm_simulator\"}\n", @@ -566,9 +559,9 @@ ")\n", "\n", "# Printing the job ID in case we need to retrieve it later.\n", - "print(f\"job id: {job.job_id}\")\n", + "print(f\"Job ID: {job.job_id}\")\n", "\n", - "# Get the job result - this is blocking this is blocking and control may not return immediately.\n", + "# Get the job result - this is blocking and control may not return immediately.\n", "result = job.result()\n", "print(result)" ] @@ -591,7 +584,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 9, "id": "4336b881", "metadata": {}, "outputs": [ @@ -599,8 +592,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Job c7evlbj81hrbu2djh1eg is an execution instance of runtime program sample-program.\n", - "This job ran on backend ibmq_qasm_simulator and had input parameters {'iterations': 3}\n" + "Job c8c5v13fijclu6skr4v0 is an execution instance of runtime program sampler.\n", + "This job ran on backend and had input parameters {'circuits': }\n" ] } ], @@ -624,7 +617,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "id": "919862b8", "metadata": {}, "outputs": [ @@ -632,7 +625,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "c618jdik2ih5ha3l6mog\n" + "c8c5v13fijclu6skr4v0\n" ] } ], @@ -660,7 +653,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "id": "b1095852", "metadata": {}, "outputs": [], @@ -692,7 +685,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 12, "id": "4d69df82", "metadata": {}, "outputs": [ @@ -718,9 +711,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "qiskit-ibm-runtime", "language": "python", - "name": "python3" + "name": "qiskit-ibm-runtime" }, "language_info": { "codemirror_mode": { @@ -732,9 +725,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.1" + "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/qiskit_ibm_runtime/__init__.py b/qiskit_ibm_runtime/__init__.py index 7b7ee8ac7..29d086648 100644 --- a/qiskit_ibm_runtime/__init__.py +++ b/qiskit_ibm_runtime/__init__.py @@ -87,7 +87,6 @@ # Set the "sampler" program parameters params = service.program(program_id="sampler").parameters() params.circuits = qc - params.use_measurement_mitigation = True # Configure backend options options = {'backend_name': backend} @@ -100,9 +99,7 @@ # Get runtime job result. result = job.result() -The example above invokes the ``sampler`` program, -which compiles, executes, and optionally applies measurement error mitigation to -the circuit result. +The example above invokes the ``sampler`` program. Runtime Jobs ------------ diff --git a/qiskit_ibm_runtime/ibm_runtime_service.py b/qiskit_ibm_runtime/ibm_runtime_service.py index 5da039b46..00a216d88 100644 --- a/qiskit_ibm_runtime/ibm_runtime_service.py +++ b/qiskit_ibm_runtime/ibm_runtime_service.py @@ -86,7 +86,6 @@ class IBMRuntimeService: # Set the "sampler" program parameters params = service.program(program_id="sampler").parameters() params.circuits = qc - params.use_measurement_mitigation = True # Configure backend options options = {'backend_name': backend} diff --git a/releasenotes/notes/0.1/account-management-b9908e0b62dc1d81.yaml b/releasenotes/notes/0.1/account-management-b9908e0b62dc1d81.yaml new file mode 100644 index 000000000..27459c39f --- /dev/null +++ b/releasenotes/notes/0.1/account-management-b9908e0b62dc1d81.yaml @@ -0,0 +1,9 @@ +--- +upgrade: + - | + `qiskit-ibm-runtime` package no longer uses the `$HOME/.qiskit/qiskitrc` file used by + `qiskit-ibmq-provider` to save credentials. Credentials are now stored in a + JSON format in `$HOME/.qiskit/qiskit-ibm.json` file when you use + :meth:`qiskit_ibm_runtime.IBMRuntimeService.save_account` method. + + You can now save multiple credentials and give an optional `name` for each credential. diff --git a/releasenotes/notes/0.1/authentication-79b90822d430688f.yaml b/releasenotes/notes/0.1/authentication-79b90822d430688f.yaml new file mode 100644 index 000000000..5f1bdbfc5 --- /dev/null +++ b/releasenotes/notes/0.1/authentication-79b90822d430688f.yaml @@ -0,0 +1,15 @@ +--- +upgrade: + - | + Qiskit Runtime service is accessible using an IBM Quantum (`legacy`) account + or an IBM Cloud (`cloud`) account. + `qiskit-ibm-runtime` enables you to connect to either of these accounts:: + + # Legacy + from qiskit_ibm_runtime import IBMRuntimeService + service = IBMRuntimeService(auth="legacy", token="abc") + + # Cloud + from qiskit_ibm_runtime import IBMRuntimeService + service = IBMRuntimeService(auth="cloud", token="abc", instance="IBM Cloud CRN or Service instance name") + diff --git a/releasenotes/notes/0.1/backend-v2-15bbe03ff572b6da.yaml b/releasenotes/notes/0.1/backend-v2-15bbe03ff572b6da.yaml new file mode 100644 index 000000000..63304edeb --- /dev/null +++ b/releasenotes/notes/0.1/backend-v2-15bbe03ff572b6da.yaml @@ -0,0 +1,18 @@ +--- +upgrade: + - | + :class:`qiskit_ibm_runtime.IBMBackend` class now implements the + :class:`qiskit.providers.BackendV2` interface and provides flatter access to the configuration + of a backend, for example:: + + # BackendV1: + backend.configuration().n_qubits + + # BackendV2: + backend.num_qubits + + Only breaking change when compared to `BackendV1` is backend.name is now an attribute + instead of a method. + + Refer to the :class:`qiskit_ibm_runtime.IBMBackend` class doc string for a list of all + available attributes. diff --git a/releasenotes/notes/0.1/backend-vs-get-backend-18b2dcf4b8434e00.yaml b/releasenotes/notes/0.1/backend-vs-get-backend-18b2dcf4b8434e00.yaml new file mode 100644 index 000000000..3d3b3fb75 --- /dev/null +++ b/releasenotes/notes/0.1/backend-vs-get-backend-18b2dcf4b8434e00.yaml @@ -0,0 +1,9 @@ +--- +upgrade: + - | + If you used `qiskit.providers.ibmq.AccountProvider.get_backend` method (for example, + ``provider.get_backend("ibmq_qasm_simulator")``) in the `qiskit-ibmq-provider` package, it's + equivalent method in this new package is :meth:`qiskit_ibm_runtime.IBMRuntimeService.backend`:: + + service = IBMRuntimeService() + backend = service.backend("ibmq_qasm_simulator") diff --git a/releasenotes/notes/convert-runtime-methods-5d5d76f4d20332f1.yaml b/releasenotes/notes/0.1/convert-runtime-methods-5d5d76f4d20332f1.yaml similarity index 100% rename from releasenotes/notes/convert-runtime-methods-5d5d76f4d20332f1.yaml rename to releasenotes/notes/0.1/convert-runtime-methods-5d5d76f4d20332f1.yaml diff --git a/releasenotes/notes/0.1/encoder-instructions-f99e128a02a10714.yaml b/releasenotes/notes/0.1/encoder-instructions-f99e128a02a10714.yaml new file mode 100644 index 000000000..8b57e9285 --- /dev/null +++ b/releasenotes/notes/0.1/encoder-instructions-f99e128a02a10714.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + :class:`qiskit_ibm_runtime.utils.json.RuntimeEncoder` and + :class:`qiskit_ibm_runtime.utils.json.RuntimeDecoder` have been updated to handle + instances of the `Instruction` class. diff --git a/releasenotes/notes/filter-jobs-by-provider-dead04faaf223840.yaml b/releasenotes/notes/0.1/filter-jobs-by-provider-dead04faaf223840.yaml similarity index 100% rename from releasenotes/notes/filter-jobs-by-provider-dead04faaf223840.yaml rename to releasenotes/notes/0.1/filter-jobs-by-provider-dead04faaf223840.yaml diff --git a/releasenotes/notes/fix-qpy-v3-serialisation-20ddba46e7c6ba09.yaml b/releasenotes/notes/0.1/fix-qpy-v3-serialisation-20ddba46e7c6ba09.yaml similarity index 100% rename from releasenotes/notes/fix-qpy-v3-serialisation-20ddba46e7c6ba09.yaml rename to releasenotes/notes/0.1/fix-qpy-v3-serialisation-20ddba46e7c6ba09.yaml diff --git a/releasenotes/notes/interim-results-b5a18a3784063d56.yaml b/releasenotes/notes/0.1/interim-results-b5a18a3784063d56.yaml similarity index 100% rename from releasenotes/notes/interim-results-b5a18a3784063d56.yaml rename to releasenotes/notes/0.1/interim-results-b5a18a3784063d56.yaml diff --git a/releasenotes/notes/0.1/least-busy-4a7040c00f605635.yaml b/releasenotes/notes/0.1/least-busy-4a7040c00f605635.yaml new file mode 100644 index 000000000..9639f5f57 --- /dev/null +++ b/releasenotes/notes/0.1/least-busy-4a7040c00f605635.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + :meth:`qiskit_ibm_runtime.IBMRuntimeService.least_busy` will now allow you find + the least busy backend. diff --git a/releasenotes/notes/0.1/legacy-optional-hgp-299a0fd8ee029734.yaml b/releasenotes/notes/0.1/legacy-optional-hgp-299a0fd8ee029734.yaml new file mode 100644 index 000000000..030a6a7fb --- /dev/null +++ b/releasenotes/notes/0.1/legacy-optional-hgp-299a0fd8ee029734.yaml @@ -0,0 +1,14 @@ +--- +upgrade: + - | + It is now optional to specify a hub/group/project upfront when connecting to the `legacy` IBM + Quantum account. The hub/group/project is selected in the following order. + + - hub/group/project if passed via ``instance`` parameter when initializing + :class:`qiskit_ibm_runtime.IBMRuntimeService` + - the specific hub/group/project required by the backend specified when + calling :meth:`qiskit_ibm_runtime.IBMRuntimeService.run` + - the default set previously via :meth:`qiskit_ibm_runtime.IBMRuntimeService.save_account` + - a premium hub/group/project in your account + - open access hub/group/project + diff --git a/releasenotes/notes/0.1/numpy-ndarray-encoder-919d6a344e131fee.yaml b/releasenotes/notes/0.1/numpy-ndarray-encoder-919d6a344e131fee.yaml new file mode 100644 index 000000000..ed390208c --- /dev/null +++ b/releasenotes/notes/0.1/numpy-ndarray-encoder-919d6a344e131fee.yaml @@ -0,0 +1,8 @@ +--- +fixes: + - | + Fixed an issue where numpy ndarrays with object types could not be + serialized. :class:`qiskit_ibm_runtime.utils.json.RuntimeEncoder` and + :class:`qiskit_ibm_runtime.utils.json.RuntimeDecoder` have been updated + to handle these ndarrays. + diff --git a/releasenotes/notes/0.1/optional-backend-name-4d120e2645b5831e.yaml b/releasenotes/notes/0.1/optional-backend-name-4d120e2645b5831e.yaml new file mode 100644 index 000000000..608d7474d --- /dev/null +++ b/releasenotes/notes/0.1/optional-backend-name-4d120e2645b5831e.yaml @@ -0,0 +1,6 @@ +--- +upgrade: + - | + It is now optional to specify `backend_name` in `options` when executing + :meth:`qiskit_ibm_runtime.IBMRuntimeService.run` method when using `cloud` runtime + (IBM Cloud only). The server will automatically pick a backend and return the name. diff --git a/releasenotes/notes/optional-program-description-f6e3aceca8223af7.yaml b/releasenotes/notes/0.1/optional-program-description-f6e3aceca8223af7.yaml similarity index 100% rename from releasenotes/notes/optional-program-description-f6e3aceca8223af7.yaml rename to releasenotes/notes/0.1/optional-program-description-f6e3aceca8223af7.yaml diff --git a/releasenotes/notes/0.1/prelude-96ed7aae53f9932a.yaml b/releasenotes/notes/0.1/prelude-96ed7aae53f9932a.yaml new file mode 100644 index 000000000..30c049018 --- /dev/null +++ b/releasenotes/notes/0.1/prelude-96ed7aae53f9932a.yaml @@ -0,0 +1,13 @@ +--- +prelude: > + `qiskit-ibm-runtime` is a new Python API client for accessing the quantum programs, + systems and simulators at IBM Quantum via the Qiskit Runtime Service. + + + This new package is built upon the work already done in `qiskit.providers.ibmq.runtime` + module in the `qiskit-ibmq-provider` package and replaces it going forward. The `runtime` + module in `qiskit-ibmq-provider` package is now deprecated. + + + `qiskit-ibm-runtime` is not included as part of `Qiskit` meta package and thereby you have to + install it separately using ``pip install qiskit-ibm-runtime``. diff --git a/releasenotes/notes/print-backend-requirements-a682e98ded7977d7.yaml b/releasenotes/notes/0.1/print-backend-requirements-a682e98ded7977d7.yaml similarity index 100% rename from releasenotes/notes/print-backend-requirements-a682e98ded7977d7.yaml rename to releasenotes/notes/0.1/print-backend-requirements-a682e98ded7977d7.yaml diff --git a/releasenotes/notes/0.1/remove-logout-207163e4d4a6adf8.yaml b/releasenotes/notes/0.1/remove-logout-207163e4d4a6adf8.yaml new file mode 100644 index 000000000..9d83f4f8a --- /dev/null +++ b/releasenotes/notes/0.1/remove-logout-207163e4d4a6adf8.yaml @@ -0,0 +1,5 @@ +--- +upgrade: + - | + `qiskit.providers.ibmq.runtime.IBMRuntimeService.logout` method in `qiskit-ibmq-provider` + which was used to clear authorization cache on the server has been removed. diff --git a/releasenotes/notes/0.1/remove-python-3.6-f7ff43b6d84e4e7c.yaml b/releasenotes/notes/0.1/remove-python-3.6-f7ff43b6d84e4e7c.yaml new file mode 100644 index 000000000..f682b7d37 --- /dev/null +++ b/releasenotes/notes/0.1/remove-python-3.6-f7ff43b6d84e4e7c.yaml @@ -0,0 +1,5 @@ +--- +upgrade: + - | + Python 3.6 has reached end of life and will no longer be supported in the new + `qiskit-ibm-runtime` package. diff --git a/releasenotes/notes/0.1/remove-run-circuits-6d43cf46e509d55e.yaml b/releasenotes/notes/0.1/remove-run-circuits-6d43cf46e509d55e.yaml new file mode 100644 index 000000000..1c807a205 --- /dev/null +++ b/releasenotes/notes/0.1/remove-run-circuits-6d43cf46e509d55e.yaml @@ -0,0 +1,5 @@ +--- +upgrade: + - | + `qiskit.providers.ibmq.runtime.IBMRuntimeService.run_circuits` method in `qiskit-ibmq-provider` + has been removed and will be replaced by the ``Sampler`` primitive program. diff --git a/releasenotes/notes/resolve-crn-b2cc1c35f5306bea.yaml b/releasenotes/notes/0.1/resolve-crn-b2cc1c35f5306bea.yaml similarity index 100% rename from releasenotes/notes/resolve-crn-b2cc1c35f5306bea.yaml rename to releasenotes/notes/0.1/resolve-crn-b2cc1c35f5306bea.yaml diff --git a/releasenotes/notes/0.1/runtime-options-175692ee0417ff30.yaml b/releasenotes/notes/0.1/runtime-options-175692ee0417ff30.yaml new file mode 100644 index 000000000..172b1278b --- /dev/null +++ b/releasenotes/notes/0.1/runtime-options-175692ee0417ff30.yaml @@ -0,0 +1,7 @@ +--- +upgrade: + - | + :meth:`qiskit_ibm_runtime.IBMRuntimeService.run` method now accepts runtime + execution options as :class:`qiskit_ibm_runtime.RuntimeOptions` class in addition to + already supported Dict. `backend_name`, `image` and `log_level` are the + currently available options. diff --git a/releasenotes/notes/stream-results-6ff5f240bbe21fc0.yaml b/releasenotes/notes/0.1/stream-results-6ff5f240bbe21fc0.yaml similarity index 100% rename from releasenotes/notes/stream-results-6ff5f240bbe21fc0.yaml rename to releasenotes/notes/0.1/stream-results-6ff5f240bbe21fc0.yaml diff --git a/releasenotes/notes/encoder-instructions-f99e128a02a10714.yaml b/releasenotes/notes/encoder-instructions-f99e128a02a10714.yaml deleted file mode 100644 index 551c5ef1c..000000000 --- a/releasenotes/notes/encoder-instructions-f99e128a02a10714.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -fixes: - - | - :class:`qiskit_ibm_runtime.utils.RuntimeEncoder` and - :class:`qiskit_ibm_runtime.utils.RuntimeDecoder` have been updated to handle - instances of the `Instruction` class. diff --git a/releasenotes/notes/numpy-ndarray-encoder-919d6a344e131fee.yaml b/releasenotes/notes/numpy-ndarray-encoder-919d6a344e131fee.yaml deleted file mode 100644 index f667c491f..000000000 --- a/releasenotes/notes/numpy-ndarray-encoder-919d6a344e131fee.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -fixes: - - | - Fixed an issue where numpy ndarrays with object types could not be - serialized. :class:`qiskit_ibm_runtime.utils.RuntimeEncoder` and - :class:`qiskit_ibm_runtime.utils.RuntimeDecoder` have been updated - to handle these ndarrays. -