author | description | ms.author | ms.date | ms.service | ms.subservice | ms.topic | title | uid |
---|---|---|---|---|---|---|---|---|
KittyYeungQ |
This document provides an overview of available optimization solvers in Azure Quantum. |
kitty |
02/01/2021 |
azure-quantum |
optimization |
conceptual |
Overview of optimization solvers |
microsoft.quantum.optimization.solver-overview |
The Microsoft QIO provider comes with a variety of optimization solvers. These solvers solve problems on classical CPUs or on field-programmable gate arrays (FPGA). The following table lists the solvers and provides a brief comparison between them.
Name | Description | Best applicable scenario |
---|---|---|
Parallel tempering | Rephrases the optimization problem as a thermodynamic system and runs multiple copies of a system, randomly initialized, at different temperatures. Then, based on a specific protocol, exchanges configurations at different temperatures to find the optimal configuration. |
|
Simulated annealing | Rephrases the optimization problem as a thermodynamic system and considers the energy of a single system. Changes to the system are accepted if they decrease the energy or meet a criterion based on decreasing temperature. |
|
Quantum Monte Carlo | Similar to simulated annealing but the changes are by simulating quantum-tunneling through barriers rather than using thermal energy jumps. |
|
Tabu search | Tabu search looks at neighboring configurations. It can accept worsening moves if no improving moves are available and prohibit moves to previously-visited solutions |
|
For some solvers we offer two versions: an unlabeled version that runs on traditional CPUs and a labeled FPGA version. In the following table you can see the pros and cons of using FPGA solvers:
Pros/Cons | FPGA solvers |
---|---|
Pros |
|
Cons |
|
FPGA solvers use the same parameters as their corresponding CPU solvers, but for the best performance, please tune the parameters of FPGA solvers, instead of just directly using CPU solvers' parameters. For example, in FPGA solvers, we build about 200 parallel pipelines, and each pipeline can handle one restart, so the restarts of FPGA shall be no less than 200.
FPGA solvers have an initialization time that may take a large percentage of the total runtime for small problems. If your problem can be solved on a CPU solver within a number of seconds, then you will likely not see a performance gain by switching to an FPGA. We recommend using FPGA solvers when the execution timing on CPU is at least a couple minutes.