Just as the classical computing world needed a software ecosystem to build a broad community of application developers and users, the quantum computing world does as well. D-Wave, quantum software companies, D-Wave customers, and users are starting to develop system software, higher level tools, and applications that leverage the power of the D-Wave system. 


Software Architecture

The D-Wave 2000Q system provides a standard Internet API (based on RESTful services), with client libraries available for C/C++, Python, and MATLAB. This interface allows users to access the system either as a cloud resource over a network, or integrated into their high-performance computing (HPC) environments and data centers. Access is also available through D-Wave’s hosted cloud service. Using   D-Wave’s development tools and client libraries, developers can create algorithms and applications within their existing environments using industry-standard tools. 


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 quantum machine instruction (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.

Users can submit problems to the D-Wave quantum computer in several ways:

  • Using a program in C, C++, Python, or MATLAB to create and execute QMIs
  • Using a D-Wave tool such as:
    • QSage, a translator designed for optimization problems
    • ToQ, a high level language translator used for constraint satisfaction problems and designed to let users “speak” in the language of their problem domain
    • qbsolv, an open-source, hybrid partitioning optimization solver for problems that are larger than will fit natively on the QPU. Qbsolv can be downloaded here. 
    • dw, which executes QMIs created via a text editor
  • By directly programming the system via QMIs

Download this white paper to learn more about the programming model for a D-Wave system.