Sampling from the D-Wave QPU

Sampling from energy-based distributions is a computationally intensive task that is an excellent match for the way that the D-Wave system solves problems; that is, by seeking low-energy states. Samples from the D-Wave QPU can be obtained quickly and provide an advantage over sampling from classical distributions.

When training a probabilistic model, we need a well-characterized distribution; otherwise, it is difficult to calculate gradients and we have no guarantee of convergence. While both classical Boltzmann and quantum Boltzmann distributions are well characterized, all but the smallest problems solved by the QPU should undergo postprocessing to bring them closer to a Boltzmann distribution.

The D-Wave QPU follows a predetermined quantum annealing schedule, described in detail in Technical Description of the D-Wave Quantum Processing Unit. You obtain samples by sending problems to the D-Wave QPU via the Solver API (SAPI) for solution.

QPU Topology

Understanding the logical layout of the D-Wave QPU is critical to translating a QUBO or Ising objective function into a format that a D-Wave system can solve. Before we can send a graph that represents a problem to the QPU for solution, we must perform embedding to translate the problem graph into a structure that fits on the physical architecture.

Chimera graph.  qubits are arranged in unit cells that form bipartite connections.

Fig. 124 Chimera graph. Qubits are arranged in unit cells.

The D-Wave QPU is a lattice of interconnected qubits. While some qubits connect to others via couplers, the D-Wave QPU is not fully connected. Instead, the qubits of D-Wave 2000Q and earlier generations of QPUs interconnect in a topology known as Chimera while Advantage QPUs incorporate the Pegasus topology.

In a D-Wave QPU, the set of qubits and couplers that are available for computation is known as the working graph. The yield of a working graph is typically less than the total number of qubits and couplers that are fabricated and physically present in the QPU.

A given logical problem defined on a general graph can be mapped to a physical problem defined on the working graph using chains. A chain is a collection of qubits bound together to represent a single logical node. The association between the logical problem and the physical problem is carried out by minor embedding. For more details on minor embedding, see D-Wave Problem-Solving Handbook.

The qubits, denoted \(q_i\), implement the Ising spins. Their physical connectivity determines which couplings, \(J_{i,j}\), can be set to nonzero values. The allowed connectivity is described with a Chimera or Pegasus graph..

For further details, see the Getting Started with the D-Wave System guide.

Interfacing with the QPU: Solver API

When sampling from the D-Wave QPU, make calls to the Solver API (SAPI).

SAPI is the programmatic interface between the client libraries that programmers use to interact with the system and the D-Wave QPU itself. SAPI connects to backend servers, including the quantum server that sends problems to and returns results from the QPU via a fiber interface, and postprocessing servers that (optionally) run postprocessing algorithms on the raw results returned from the QPU.

The client libraries allow you to go through SAPI to:

  • Query available solvers and solver properties
  • Submit problems
  • Cancel previously submitted problems
  • Retrieve problem status
  • Fetch results if successful
  • Retrieve errors if unsuccessful

The client libraries use a traditional client/server request/response paradigm, where the application code runs on a client system, and the client commands are translated to REST/HTTP calls and then transmitted from the client to the server. All requests are initiated by the client.

Factors Affecting Results

This section briefly discusses several factors that may affect results.


Sampling from the D-Wave QPU yields results that are useful for training small PML models. However, it may be necessary to bring the raw results closer to a Boltzmann distribution by running a low-treewidth postprocessing algorithm. D-Wave provides such an algorithm that you (optionally) enable when you submit the problem to D-Wave 2000Q systems. See Postprocessing Methods on D-Wave Systems for more information on the available algorithms.

Use the postprocess SAPI parameter with the sampling option to run this algorithm when using D-Wave 2000Q systems.

Temperature Effects

The D-Wave QPU operates at cryogenic temperatures, nominally \(15\) mK, which can be translated to a scale parameter \(\beta\). The effective value of \(\beta\) varies from QPU to QPU and in fact from problem to problem since the D-Wave QPU samples are not Boltzmann and time-varying phenomena may affect samples. Therefore, to attain Boltzmann samples, run the Gibbs chain for a number of iterations starting from quantum computer samples. The objective is to further anneal the samples to the correct temperature of interest \(T = 1/{\beta}\), where \(\beta = 1.0\).

You can control these factors using the beta and postprocess SAPI parameters.


As in statistical mechanics, \(\beta\) represents inverse temperature: \(1/(k_B T)\), where \(T\) is the thermodynamic temperature in kelvin and \(k_B\) is Boltzmann’s constant. In the D-Wave software, postprocessing refines the returned solutions to target a Boltzmann distribution characterized by \(\beta\), which is represented by a floating point number without units. When choosing a value for \(\beta\), be aware that lower values result in samples less constrained to the lowest energy states. For more information on \(\beta\) and how it is used in the sampling postprocessing algorithm, see Postprocessing Methods on D-Wave Systems.

Problem Scaling

In training a model, the parameter \(\theta\) is not regularized, which means it can either grow or shrink in magnitude. However, when submitting problems to the QPU, recall that there are hard thresholds for the biases and weights.[1] Unless we explicitly disable scaling, the D-Wave software automatically adjusts the biases and weights of a problem to use the entire range available before sending it to the QPU. When the energies and objective values are reported at the end of the runs, we see the prescaling values.

[1]Check the h_range and j_range solver properties for your system.

The auto_scale SAPI parameter controls this behavior; it is enabled by default.

Spin-Reversal Transforms

To compensate for integrated control errors (ICE) that may affect the QPU,[2] we can transform the problems by randomly flipping the qubits before we send them to the QPU. To maintain the total energy unchanged, we can flip the biases and couplers corresponding to the qubits. This technique is called a spin-reversal transform. Note that when samples are gathered from the QPU, the qubits that have been flipped need to be flipped again to undo the spin-reversal transform.

The num_spin_reversal_transforms SAPI parameter allows you to apply one or more transforms when submitting a problem.

[2]For more on ICE effects, see Technical Description of the D-Wave Quantum Processing Unit.