D-Wave's Ocean Software
Ocean software stack provides a chain of tools on GitHub that implements the computations needed to transform an arbitrarily posed problem to a form solvable on a quantum solver.
An overview on using Ocean software, with both end-to-end usage examples and simple examples to get you started, and links to each tool's documentation.
Log in to solve problems on D-Wave systems and to learn more about quantum computing.
Check out D-Wave Systems, the leader in the development and delivery of quantum computing systems and software, and the world's only commercial supplier of quantum computers.
Solve a constraint satisfaction problem on a quantum computer

The following code sends a satisfiability problem to the D-Wave system specified in your local configuration file.

import dwavebinarycsp
from dwave.system.samplers import DWaveSampler
from dwave.system.composites import EmbeddingComposite

sampler = EmbeddingComposite(DWaveSampler())

csp = dwavebinarycsp.factories.random_2in4sat(10, 7)
bqm = dwavebinarycsp.stitch(csp)

solution = sampler.sample(bqm)

Currently Available Tools
Ocean Software
Tool Description
dimod (repo)

Shared API for binary quadratic samplers.

dimod provides a binary quadratic model (BQM) class that contains Ising and quadratic unconstrained binary optimization (QUBO) models used by samplers such as the D-Wave system. It also provides utilities for constructing new samplers and composed samplers.

dwavebinarycsp (repo) Library to construct a binary quadratic model from a constraint satisfaction problem with small constraints over binary variables.
dwave-cloud-client (repo) Minimal implementation of the REST interface used to communicate with D-Wave Sampler API (SAPI) servers.
dwave-hybrid (repo)

A general, minimal Python framework for building hybrid asynchronous decomposition samplers for quadratic unconstrained binary optimization (QUBO) problems. It facilitates experimentation with structures and parameters for tailoring a decomposition solver to a problem.

The framework enables rapid development and insight into expected performance of productized versions of its experimental prototypes. It does not provide real-time performance.

dwave-neal (repo) An implementation of a simulated annealing sampler.
dwave_networkx (repo)

Extension of NetworkX—a Python language package for exploration and analysis of networks and network algorithms—for users of D-Wave Systems.

dwave_networkx provides tools for working with Chimera graphs and implementations of graph-theory algorithms on the D-Wave system and other binary quadratic model samplers.

dwave-ocean-sdk (repo) Installer for D-Wave Ocean Tools.
dwave-system (repo)

Basic API for easily incorporating the D-Wave system as a sampler in the D-Wave Ocean software stack.

It includes DWaveSampler, a dimod sampler that accepts and passes system parameters such as system identification and authentication down the stack. It also includes several useful composites—layers of pre- and post-processing—that can be used with DWaveSampler to handle minor-embedding, optimize chain strength, etc.

minorminer (repo)

A tool for finding graph minor-embeddings, developed to embed Ising problems onto quantum annealers (QA).

While it can be used to find minors in arbitrary graphs, it is particularly geared towards the state of the art in QA: problem graphs of a few to a few hundred variables, and hardware graphs of a few thousand qubits.

penaltymodel (repo)

An approach to solve a constraint satisfaction problem (CSP) using an Ising model or a QUBO, is to map each individual constraint in the CSP to a ‘small’ Ising model or QUBO.

Includes a local cache for penalty models and a factory that generates penalty models using SMT solvers.

qbsolv (repo) A decomposing solver, finds a minimum value of a large quadratic unconstrained binary optimization (QUBO) problem by splitting it into pieces solved either via a D-Wave system or a classical tabu solver.
Third-Party Software
Tool Description

Quantum macro assembler for D-Wave systems.

The D-WIG toolset is used to generate binary quadratic programs based on a specific D-Wave QPU. A key motivation for generating problems on a specific QPU is that these problems do not require an embedding step to test them on the hardware.


Python DSL for constructing QUBOs from mathematical expressions.

PyQUBO allows you to create QUBOs or Ising models from flexible mathematical expressions easily.


Quantum macro assembler for D-Wave systems.

QMASM fills a gap in the software ecosystem for D-Wave's adiabatic quantum computers by shielding the programmer from having to know system-specific hardware details while still enabling programs to be expressed at a fairly low level of abstraction. It is therefore analogous to a conventional macro assembler and can be used in much the same way: as a target either for programmers who want a great deal of control over the hardware or for compilers that implement higher-level languages.

Copyright Ⓒ D-Wave Systems Inc.