For quantum computing, as for classical, solving a problem requires that it be formulated in a way the computer and its software understand. D-Wave’s Ocean software development kit includes a suite of open-source Python tools on the D-Wave GitHub repository for solving hard problems with quantum computers. The software stack implements the computations needed to transform an arbitrarily posed problem to a form solvable on a quantum solver.
The Ocean software fits between applications and the compute resources:
- Application: Original problem in its context (the “problem space”) including application data and a clearly defined goal. For example, a circuit-fault diagnosis application in chip manufacturing requires the identification of the minimum set of failed logic gates in a circuit.
- Mapping Methods: Tools that translate the application goal and data into a problem form suitable for quantum computing. They also receive solution samples and translate them back into solutions for the application layer. For example, dwave_networkx helps map structural imbalance analysis into a BQM.
- Uniform Sampler API: Abstraction layer that represents the problem in a form that can access the selected sampler.
- Samplers: Tools that receive a problem in the form of a BQM and return solution samples. Ocean implements several samplers that use the D-Wave QPU as well as classical compute resources. You can use Ocean tools to customize a D-Wave sampler, create your own, or use existing classical ones.
- Compute Resources: The processing hardware on which the problem is solved. This might be a D-Wave QPU but it may also be the CPU of your laptop computer.
While users can submit problems to the system in a number of different ways, ultimately a problem represents a set of values that correspond to the weights of the qubits and the strength of the couplers. The system takes these values along with other user-specified parameters and sends a single QMI to the QPU. Problem solutions correspond to the optimal configuration of qubits found; that is, the lowest points in the energy landscape. These values are returned to the user program over the network.
Because quantum computers are probabilistic rather than deterministic, multiple values can be returned, providing not only the best solution found, but also other very good alternatives from which to choose. Users can specify the number of solutions they want the system to return.
The D-Wave 2000Q system also gives users important control over the quantum computation:
- Virtual graphs: Many optimization and machine learning algorithms are commonly described as graph problems. D-Wave’s virtual graphs feature improves accuracy in the upgraded system, by allowing control over the interaction of groups of qubits, to model a node or link in a complex graph. This new feature has improved success rates by 5 times over earlier D-Wave 2000Q systems, for common hard optimization problems and machine learning models.
- Pause and Quench: In the standard application of quantum annealing in D-Wave systems, qubits evolve according to a predetermined anneal schedule. Some types of research (e.g., quantum simulation), however, may benefit from fine-grained adjustments to the default schedule. In these cases, you can change the shape of the energy waveform by introducing a pause or quench (i.e., abrupt termination). This level of control helps investigate what is happening partway through the annealing process.
- Reverse annealing: This lets users program the system in an entirely new way, harnessing powerful heuristic search algorithms for optimization and machine learning, and applications such as cybersecurity and drug discovery. Reverse annealing allows users to specify the problem they wish to solve along with a predicted solution in order to narrow the search space for the computation. Using reverse annealing, D-Wave researchers observed a 150 times speedup over the current D-Wave 2000Q system.
- Anneal offsets: Certain problems benefit when some qubits anneal slightly before or after others. The anneal offsets feature lets users advance or delay anneal paths to enhance application performance. Algorithms using this feature have shown performance improvements of up to 1000 times for some problem types.