-
Notifications
You must be signed in to change notification settings - Fork 177
Add Python script to approximate filtered h-gain waveform #387
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
JoelPasvolsky
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Comment made before you switched to draft. Will review in full once it becomes a non-draft PR again.
docs/quantum_research/annealing.rst
Outdated
| ============================================== | ||
|
|
||
| Time-dependent gain for qubit biases can be used with the standard-anneal | ||
| protocol and reverse annealing ([Vod2025]_, [Pel2023]_). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
docs/quantum_research/annealing.rst
Outdated
|
|
||
| Time-dependent gain for qubit biases can be used with the standard-anneal | ||
| protocol and reverse annealing ([Vod2025]_, [Pel2023]_). | ||
| The :ref:`parameter_qpu_h_gain_schedule` parameter is applied to qubit |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are two alternatives for feature descriptions in the Annealing Implementation and Controls that seem to me to follow good practices:
- Single source these details
- Refer users to h-gain-schedule parameter for the details; e.g., "For details on how to set h-gain for a problem, see the h-gain-schedule parameter"
Having two copies of these details, here and under h-gain-schedule parameter, risks discrepancies and adds maintenance costs.
Currently the Varying the Global Anneal Schedule section follows alternative 1, single sourcing the details with the anneal_schedule parameter. I actually think alternative 2 is better: the Annealing Implementation and Controls should explain what these features are used for and provide technical implementation details while the Solver Parameters section should specify usage rules. The former is for learning about the features and its hardware; the latter is a reference page for programmers.
|
|
||
| Approximating the Filtered h-gain Waveform | ||
| ------------------------------------------ | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The first sentence under this section (or a sentence before this section) needs to explain why we're talking about a filtered waveform:
The I/O system that delivers the h-controlling waveform to a QPU limits bandwidth using a low-pass filter; if you configure a too-rapidly changing curve, even within the supported bounds, expect distorted values of h for your problem
docs/quantum_research/annealing.rst
Outdated
| Approximating the Filtered h-gain Waveform | ||
| ------------------------------------------ | ||
|
|
||
| In this sample Python script, the method ``approximate_filtered_h_gain`` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider the following structure for this section (rough draft). My concern with the current structure is that we have a very long section taken up with code to produce information unneeded by most researchers reading the Annealing Implementation and Controls, which is the critical physics page. To me it makes sense that for the occasional researcher who needs to get the filtered waveform, they can open a dropdown for the code.
QPU-Executed Schedule
A sentence here about how the input (nominal) schedule is filtered by the I/O and so the schedule executed on the QPU is bandwidth limited, as shown in the figure below.
You can use the provided script to approximate the schedule executed on the QPU.
.. dropdown:: Approximating the Filtered h-gain Waveform
Here comes the script.
docs/quantum_research/annealing.rst
Outdated
| >>> from scipy import signal | ||
| >>> import warnings | ||
| >>> | ||
| >>> def approximate_filtered_h_gain (pwl, bandwidth): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Forgot: we should make a PR to add this function to dwave-system, and once that is in the SDK, we would just refer to it here.
8e927e1 to
bdc7c77
Compare
Co-authored-by: Joel Pasvolsky <[email protected]>
Co-authored-by: Joel Pasvolsky <[email protected]>

This PR includes the following updates:
h_gain_schedulesolver parameter to a new section in the QPU annealing topic.h_gain_schedulesolver parameter is experimental only.Question: Does the footnote about the supported slope still apply? (see this comment.)
The HTML for the
h_gain_schedulesolver parameter is here.The HTML for the new section is here.