Ocean Software Stack¶
The Ocean software stack provides a chain of tools that implements the steps needed to solve your problem on a CPU/GPU or a D-Wave system. As described in the Solving Problems on a D-Wave System section, these steps include formulating the problem in a way the quantum computer understands (as a binary quadratic model) and solving the formulated problem by submitting it to a D-Wave system or classical sampler (the component used to minimize a BQM and therefore solve the original problem).
It’s helpful to visualize the tool chain as layers of abstraction, each of which handles one part of the solution procedure.
The Ocean Software Stack graphic above divides Ocean software and its context into the following layers of functionality:
The hardware on which the problem is solved. This might be a D-Wave quantum processor but it can also be the CPU of your laptop computer.
Abstraction layer of the sampler functionality. Ocean tools implement several samplers that use the D-Wave system and classical compute resources. You can use the Ocean tools to customize a D-Wave sampler, create your own sampler, or use existing (classical) samplers to your code as you develop it.
Abstraction layer that represents the problem in a form that can access the selected sampler; for example, a dimod binary quadratic model (BQM) class representing your problem wrapped in a minor-embedding composite that handles the mapping between your problem’s variables and the sampler’s graph.
Original problem in its context (“problem space”); for example, circuit fault diagnosis attempts to identify failed logic gates during chip manufacturing.
Problem-to-Solution Tool Chain¶
As described in the Solving Problems on a D-Wave System section, problems can be posed in a variety of formulations; the D-Wave system solves binary quadratic models. Ocean tools assist you in converting the problem from its original form to a form native to the D-Wave system and sending the compatible problem for solving.
This section will familiarize you with the different tools and how you can fit them together to solve your problem.
Another approach to envisioning how you can map your problem-solving process to Ocean software is to start from the top—your (possibly abstractly defined) problem—and work your way down the Ocean stack.
|State the Problem||Define your problem concretely/mathematically; for example, as a constraint satisfaction problem or a graph problem.|
|Formulate as a BQM||
Reformulate an integer problem to use binary variables, for example, or convert a nonquadratic (high-order) polynomial to a QUBO.
Allocate large problems to classical and quantum resources.
Ocean’s dwave-hybrid provides a framework and building blocks to help you create hybrid workflows.
|Embed||Consider whether your problem has repeated elements, such as logic gates, when
deciding what tool to use to minor-embed your BQM on the QPU. You might
start with fully automated embedding (using
|Configure the QPU||Use spin-reversal transforms to reduce errors, for example, or examine the annealing with reverse anneal. See the sysdocs for more information of features that improve performance.|