# About Amplify SDK¶

Amplify SDK, developed by Fixters Corporation, is a middleware library for Ising machines. Here, Ising machines are machines specialized in solving optimization problems described by quadratic polynomials of binary variables. Currently, there are many Ising machines implemented on FPGAs, ASICs, GPUs, etc., including the quantum annealing machine by D-Wave Systems. As an intermediate layer between hardware and applications that use the Ising machines, the Amplify SDK provides a variety of functions that make the Ising machines more useful and help efficient development of application software.

Amplify is a project name, and it is intended that this library will “amplify” the Annealing Machine Platform, helping to expand the availability of the Ising machines and accelerate application development by enhanced usability.

## Core Functions¶

### Supporting Variety of Formats¶

Amplify SDK supports the following inputs. It will automatically convert the input format depending on the annealing machine to be used.

QUBO Model (0/1 binary variable)

Ising Model (+/-1 Ising variable)

QUBO Matrix

Ising Matrix

Higher Order Polynomial (Binary Variable)

Higher Order Polynomial (Ising Variable)

Logic Formula

### Formulation Support / Computer Algebra¶

Amplify SDK provides auxiliary functions for expressing the formulation of optimization problems in program code.

Operators for polynomials in binary Ising variables and fast mathematical processing specialized in each algebraic law.

Functions corresponding to mathematical symbols such as sum and product \(\left(\sum_{i \in V},\,\sum_{ \left(i, j \right)\in E},\,\prod_{i}\right)\).

Logical operators and computer algebra for logical expressions and conversion of binary variables to polynomials.

Functions corresponding to mathematical symbols that perform multiple logical operations.

### Management of Constraint Conditions¶

Amplify SDK abstracts and manages the constraint conditions imposed on input variables.

Generalized penalty functions

Equality constraints on sum of multiple variables

Interface for managing and checking constraint conditions

### Hardware Abstraction¶

Amplify SDK provides an interface to the abstracted Ising machine.

Client interface standardized across all supported Ising machines

Parameterization properties specialized for each Ising machine

Automatic optimal graph embedding for sparsely coupled Ising machines

Automatic parameter tuning (for some Ising machines)

### Input and Output Processing¶

Amplify SDK assists in mapping input variables to output values.

Centralized management of input variables

Fixing the values of the input variables

Automatic mapping between input variables and output values

Automatic check for the satisfaction of constraint conditions and filter for output solutions

## Supported Ising Machines¶

The following Ising machines are supported.

Fixstars GPU annealer

D-Wave 2000Q / Advantage / Leap Hybrid Solver

Fujitsu Digital Annealer / DA2

Toshiba Simulated Bifurcation Machine

Hitachi CMOS annealing machine

## Operating Environment¶

- Python
3.6

3.7

3.8

3.9

- OS
Ubuntu 16.04 / 18.04 / 20.04

CentOS 7 / 8

Windows 10 (WSL1/2)

macOS Catalina / Big Sur (Intel)

## Development Language¶

C++17 (Core Function)

Python 3 (Interface)