job: add a persistence mechanism to local disk #77
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This patch adds the possibility to persist
AQTJob
handles to local disk. This should help writing more resilient Qiskit scripts.Details and comments
The default storage is the user cache directory for the package, including its version. Since the storage should be relatively short lived, this is not a serious limitation for the end user and makes sure we can modify the storage model in backwards-incomaptible ways in future releases.
The serialization of Qiskit circuits is provided by qiskit.qpy. This is in principle only required for offline simulator jobs, but users may rely on having access to the job details (including the exact
QuantumCircuit
s) from the job handle. This data cannot be faithfully reconstructed from the data served by the cloud portal.The functionality has two caveats when handling jobs that run on offline simulators:
job_id
and varying results for each call toAQTJob.restore
. This surprising behavior is clearly indicated in the API reference and the user guide.Breaking change: as part of refactoring the resource initializers, renamed
OfflineSimulatorResource.noisy
toOfflineSimulatorResource.with_noise_model
. This addresses #72 (comment).