-
Notifications
You must be signed in to change notification settings - Fork 21
Home
Sqaod is a collection of solvers for simulated quantum annealing, providing a high-performance and stable implementation. This package is intended for researchers and engineers to explore various problems on quantum computing with conventional workstations and servers. Sqaod is also available for deployment in commercial use-cases.
Here's a list of useful links for starters:
Version 1.0.3 includes one bug fix that was not fixed in 1.0.2. Please update to 1.0.3 if you're using older versions.
- Fix: QUBO energy was not correctly calculated and in SA algorithms in CUDA-based solver.
- This version is only for deb and rpm packages. Python packages stay at 1.0.2.
Version 1.0.2 includes miscellaneous bug fixes, which affect annealing behavior. Please update to 1.0.2 if you're using older versions.
- getSystemE() is added to solvers to calculate system energy during annealing. [#60]
- sqaod.algorithm.sa_default is added to select default SA algorithms in annealers. [#61]
- calculate_E() and make_solutions() are not required to get QUBO energy and solutions. These functions are for caching energies and solutions. [#63]
- Python solvers return copies of objects.[#62]
- Fix: anneal_one_step() for SA algorithm did not work, since parameters are not correctly passed. [#65]
- Fix: QUBO energy was not correctly calculated and beta was not correctly applied in SQA algorithms. [#64]
- Fix: symmetrize() was not correctly handled. [#66]
- Version 1.1 planning is undergoing. Please file your requests to Version 1.1 planning(Issue #55).
Please visit the 'Release history' page for changes and updates.
Solving annealing problems with simple mathematical definitions.
All solvers are callable from python 2.7 and python 3.3 or later.
Sqaod is capable to deal with two graphs of dense graph and bipartite graph. These graphs have simple mathematical representations, and directly solved without any modifications.
- Dense graph is the most generic form of QUBO, and utilized for problems such as TSP.
- Bipartite graph is for problems that have input and output nodes in graph. An example is RBM.
Two solver algorithm, monte-carlo-based simulated quantum annealer and brute-force search are implemented.
- Monte-carlo based simulated quantum annealer is to get approximated solutions for problems with larger number of bits. One can solve problems with thousands of bits for dense graph and bipartite graph with simulated quantum annealers.
- Brute-force search is for getting strict solutions for problems with smaller number of bits. With brute-force solvers, strict solutions for problems with 30 bits or larger can be obtained within tens of seconds when high-end GPUs are utilized.
Since sqaod solvers are based on numerical calculation, one can reproduce simulation when parameters are defined.
Sqaod solvers have CUDA(NVIDIA-GPU)-based and CPU(multicore)-based backends for acceleration.
- Multi-core CPUs with OpenMP are utilized for CPU-based solvers.
- NVIDIA GPUs by using CUDA are utilized for GPU-based solvers.
Since sqaod is a pure software implementation, solvers are able to deal with problems with a large number of bits as long as memory capacity allows. Sqaod is also accelerated by modern high-performance devices such as CPUs and GPUs, and able to solve large sized problems.
Sqaod has 3 sub packages for solvers.
language | python package | description |
---|---|---|
python | sqaod.py | Provided to show algorithm. |
CPU | sqaod.cpu | CPU-based solvers, parallelized and accelerated by OpenMP. |
CUDA | sqaod.cuda | GPU solvers, parallelized and accelerated by CUDA. |
Please visit example directory. Examples are provided to show typical procedure to solve optimization problem defined by QUBO.
File name | graph | algorithm |
---|---|---|
dense_graph_annealer.py | dense graph | simulated quantum annealing |
bipartite_graph_annealer.py | bipartite graph | simulated quantum annealing |
dense_graph_bf_searcher.py | dense graph | brute-force searcher |
bipartite_graph_bf_searcher.py | bipartite graph | brute-force searcher |