Preface

This manual describes how to use Digital Annealer service and operation management procedures.

Intended Audience

This manual is intended for users who develop programs and applications to solve combinatorial optimization problems on Digital Annealer and who execute those programs and applications.
To fully benefit from this manual, the following knowledge is required:

  • Basic knowledge related to combinatorial optimization problems

  • Basic knowledge related to algorithms for combinatorial optimization problems such as quantum annealing and simulated annealing

  • Basic knowledge of Web APIs

Conventions

This manual uses abbreviations and symbols.

Product/Technology Name Abbreviations
Product/Technology Name Abbreviation

Google Chrome™ browser

Google Chrome

About Symbols
Symbol Meaning

" "

If the reference destination is another manual, the manual name is enclosed in " "

In addition, the following markings are used.
CAUTION
NOTE
Glossary

Explanation of terms used in this manual.

Term Description

Digital Annealer

The quantum-inspired digital technology architecture, capable of performing parallel, real-time optimization calculations at speed, with precision and on a scale classical computing cannot.

Problem scale

The number of variables that make up a combinatorial optimization problem.

FujitsuDA3Solver

The 3rd generation and 4th generation Digital Annealer solver which can handle large scale problem. The maximum problem scale can be solved is 100K (100,000) bits.

Higher Order Binary Optimization (HOBO)

An expression of combinatorial optimization problems with high-order monomials or high-order polynomials.

Quadratic Unconstrained Binary Optimization (QUBO)

An expression of combinatorial optimization problems with quadratic polynomials.

Web API

An interface used between applications and between systems for calling over a network using the HTTP protocol.

Azure Blob Storage

Object storage provided by Microsoft. FujitsuDA3Solver can calclulate the problem data (QUBO) uploaded to the Azure BLob Storage. The maximum size of the problem data (QUBO) is 20GB. You have to make the contract for Micorsoft Azure to use Azure Blob Storage.

Type ID

The Type ID is the "type" + "four-digit number" ID that is notified when the Premium-3c or Premium-4c service starts. (e.g. type1234)

Export Control Regulations

Exportation/release of this document may require necessary procedures in accordance with the regulations of your resident country and/or US export control laws.

High Risk Activity

The Customer acknowledges and agrees that the Service is designed, developed and manufactured as contemplated for general use, including without limitation, general office use, personal use, household use, and ordinary industrial use, but is not designed, developed and manufactured as contemplated for use accompanying fatal risks or dangers that, unless extremely high safety is secured, could lead directly to death, personal injury, severe physical damage or other loss (hereinafter "High Safety Required Use"), including without limitation, nuclear reaction control in nuclear facility, aircraft flight control, air traffic control, mass transport control, medical life support system, missile launch control in weapon system.
The Customer, shall not use the Service without securing the sufficient safety required for the High Safety Required Use. In addition, Fujitsu (or other affiliate’s name) shall not be liable against the Customer and/or any third party for any claims or damages arising in connection with the High Safety Required Use of the Service.

Trademarks
  • Google is a trademark or registered trademark of Google Inc.

  • Microsoft, Azure are trademarks or registered trademarks of Microsft Corporation.

  • Other company names and product names are trade names, registered trademarks, or trademarks of their respective companies.

  • Trademark symbols are not always added to names such as company names, system names, and product names.

1. Overview

This chapter describes an overview of Digital Annealer.


1.1. What Is Digital Annealer?

Digital Annealer is a digital circuit designed with inspiration from a computation method that uses quantum phenomena. Using annealing methods enables it to solve large-scale combinatorial optimization problems rapidly. Unlike conventional computers, programming is not required, and computation is enabled only by setting parameters. In addition, adoption of a fully connected architecture enabling any element to freely exchange signals has enabled calculation of computationally intensive and complicated problems that have been difficult to solve with classical computers or quantum annealing machines.

Digital Annealer has Quadratic Unconstrained Binary Optimization (QUBO) as its input data and searches for combinations to minimize the following evaluation function (energy).

  \(\displaystyle{E(x) = \sum_{i} \sum_{j>i} J_{ij}x_{i}x_{j} + \sum_{i}h_{i}x_{i} + c}\)

The condition of the combination is represented by a binary variable \(x \; (x \in \{0, 1\})\).

2. Starting the Use of Services

This chapter describes how to start the use of Digital Annealer service.


2.1. Account Registration

To use the Digital Annealer service, access the Digital Annealer account creation page at the following URL in the Digital Annealer portal and register an account.

  • To access the Digital Annealer portal, use Google Chrome.
    It is recommended that the screen resolution is 1366 \(\times\) 768 pixels or higher.

3. Using Services

This chapter describes how to use Digital Annealer service and other points to be noted.


3.1. Provided APIs

The APIs provided in the Web API service are as follows:

3.1.1. QUBO APIs

ContractType API Type Description

Developer-4c
Developer-3c

qubo/hobo2qubo

Synchronous (sync)

Converts Higher Order Binary Optimization (HOBO) to Quadratic Unconstrained Binary Optimization (QUBO)

async/qubo/solve

Asynchronous (async)

Registers a job to find optimal solution for QUBO using FujitsuDA3Solver. The problem scale that can be calculated is 100K (100,000) bits or less.

async/jobs

Retrieves a list of jobs

async/jobs/result/{Job_ID}

Retrieves or deletes the result of a job. Specify the Job D in {Job_ID}.

async/jobs/cancel

Cancels a job

Premium-4c
Premium-3c

{Type_ID}/hobo2qubo

Synchronous (sync)

Converts Higher Order Binary Optimization (HOBO) to Quadratic Unconstrained Binary Optimization (QUBO). Specify the Type ID in {Type_ID}.

{Type_ID}/async/solve

Asynchronous (async)

Registers a job to find optimal solution for QUBO using FujitsuDA3Solver. The problem scale that can be calculated is 100K (100,000) bits or less. Specify the Type ID in {Type_ID}.

{Type_ID}/async/jobs

Retrieves a list of jobs. Specify the Type ID in {Type_ID}.

{Type_ID}/async/jobs/result/{Job_ID}

Retrieves or deletes the result of a job. Specify the Type ID in {Type_ID}. Specify the Job D in {Job_ID}.

{Type_ID}/async/jobs/cancel

Cancels a job. Specify the Type ID in {Type_ID}.

  • QUBO size

    • The maximum size of the QUBO API request body is 2GB. It is possible to calculate QUBO up to 2GB.

    • If you made the contract for QUBO API V4 or QUBO API V3c (Premium-4c, Premium-3c, Developer-4c, or Developer-3c), it is possible to calculate QUBO up to 20GB by using Azure Blob Storage Storage. You have to make the contract for Micorsoft Azure to use Azure Blob Storage.

  • Problem scale

    • If you made the contract for Premium-4c, Premium-3c, Developer-4c, or Developer-3c, the problem scale that can be calculated is as follows.
        Asynchronous (async): 100K (100,000) bits or less

  • Monthly fixed contract

    • If you made the monthly fixed contract for Developer-4c or Developer-3c, upper limits are set for the amount of usage time.
      Upper limits are set for asynchronous services, and you cannot exceed the limits.

    • If you made the monthly fixed contract for Developer-4c, you can not use both QUBO API V3c and QUBO API V4 if the sum of QUBO API V3c and QUBO API V4 usage time exceeds the monthly usage time limit.

  • Multiple requests

    • You can issue up to 2 requests using a synchronous qubo/hobo2qubo request from the same account at the same time.

    • You can issue up to 16 requests using an asynchronous async/qubo/solve request from the same account.

    • Note that this limitation also applies to the quantity of async/qubo/solve processing results. So, please delete unnecessary processing results.

    • If you made the contract for Developer-4c, you can issu up to 16 concurrent QUBO API V3c and QUBO API V4 requests.

  • List of asynchronous jobs

    • When using async/jobs to retrieve a list of jobs, you can view up to 16 job information.

    • If you made the contract for Developer-4c, when using async/jobs to retrieve a list of jobs, you can see job information for both QUBO API V3c and QUBO API V4, with a maximum total of 16 jobs for QUBO API V3c and QUBO API V4.

  • API Reference

    • For details about the QUBO API, refer to "Digital Annealer API Reference (QUBO API V3c/V4 for Premium)", "Digital Annealer API Reference (QUBO API V4)", or "Digital Annealer API Reference (QUBO API V3c)."

    • If you made the contract for QUBO API V3c/V4 for Premium (Premium-4c or Premium-3c), please refer to "Digital Annealer API Reference (QUBO API V3c/V4 for Premium)."

    • If you made the contract for QUBO API V4 (Developer-4c), please refer to "Digital Annealer API Reference (QUBO API V4)."

    • If you made the contract for QUBO API V3c (Developer-4c or Developer-3c), please refer to "Digital Annealer API Reference (QUBO API V3c)."

4. How to Use the QUBO APIs

This chapter describes the procedure to solve combinatorial optimization problems using mathematical models.


4.1. Calculation Precision of Digital Annealer

Digital Annealer encodes the coefficient of a binary quadratic polynomial as an integer.
Calculation precision of Digital Annealer is as follows. To find the optimal solution, it is recommended to specify coefficients in a QUBO expression within the range of calculation precision of Digital Annealer.

Solver Scale of the Problem Quadratic Term Linear Term

FujitsuDA3Solver

Up to 100,000 bits

64 bits signed integer (*1)

76 bits signed integer

  *1: The available range is \(-2^{63} + 1\) to \(2^{63} - 1\)

4.1.1. Scaling and Rounding

This is a feature that automatically converts a QUBO that has one or more terms whose coefficient is out of the calculation precision range of Digital Annealer or not an integer into a QUBO that has only terms whose coefficient is integers in the calculation precision range of Digital Annealer.
If FujitsuDA3Solver is used, this function is enabled for annealing.

For the range of coefficients in a QUBO expression that can be specified for async/qubo/solve, refer to "Digital Annealer API Reference (QUBO API V3c/V4 for Premium)", "Digital Annealer API Reference (QUBO API V4)", or "Digital Annealer API Reference (QUBO API V3c)."

4.2. API Usage

For details about the specification and usage of the provided APIs, refer to "Digital Annealer API Reference (QUBO API V3c/V4 for Premium)", "Digital Annealer API Reference (QUBO API V4)", or "Digital Annealer API Reference (QUBO API V3c)."

4.2.1. Azure Blob Storage

If you made the contract for QUBO API V4 or QUBO API V3c (Premium-4c, Premium-3c, Developer-4c, or Developer-3c), it is possible to calculate QUBO up to 20GB by using Azure Blob Storage Storage. You have to make the contract for Micorsoft Azure to use Azure Blob Storage. If you use the Azure Blob Storage with Digital Annnealer, the following specification is recommended.

item value

Performance/Access tires

Standard/Hot or more higher

Redundancy(replication)

Locally redundant storage(LRS) or higher

Region

Japan East


Overview of how to use Azure Blob Storage is as shown below

  1. Upload problem data (QUBO) to Azure Blob Storage

  2. Send a reqauest with specifying Azure Blob Storage storage account and SAS token

    Example: Register a job to solve the uploaded problem with QUBO API V4
        Specify the storage account name in X-Storage-Account-Name of the request header.
        Specify the container name in bucket_name of the request body.
        Specify the BLOB SAS token in X-Blob-Sas-Token of the request header.
    Storage Account Name: samplestorage
    Bucket Name (Container Name): sample
    BLOB SAS Token: sp=racwdl&st=2021-07-20T11:58:45Z&se=2021-07-20T19:58:45Z&spr=https&sv=2020-08-04&sr=c&sig=Gf3coiBWO0Y8FrGnw82OI0zBB1jpDTRJF8o%2FdGYNEM0%3D
    $ cat sample-qubo.json
    {
      "fujitsuDA3": {
        "time_limit_sec": 10
      },
      "object_format": "json",
      "bucket_name": "sample",
      "binary_polynomial_object_name": "sample-binary-polynomial",
      "penalty_binary_polynomial_object_name": "sample-penalty-binary-polynomial"
    }
    $ curl -v -k -X POST https://api.aispf.global.fujitsu.com/da/v4/async/qubo/solve \
    -H 'Content-Type: application/json' \
    -H 'X-Access-Token: 6470a9c268cfbe17cd7ad744c12cbc9f0129462aae818156b5224826f4ef0591' \
    -H 'X-Storage-Account-Name: samplestorage' \
    -H 'X-Blob-Sas-Token: sp=racwdl&st=2021-07-20T11:58:45Z&se=2021-07-20T19:58:45Z&spr=https&sv=2020-08-04&sr=c&sig=Gf3coiBWO0Y8FrGnw82OI0zBB1jpDTRJF8o%2FdGYNEM0%3D' \
    -d @sample-qubo.json
    {"job_id":"b2374563-3e80-425c-bffb-c6eeeff3c4df-212012224838091"}
  3. Access control using Azure Blob Storage storage account and SAS token

  4. Download problem data (QUBO) from Azure Blob Storage

  5. Send result

Azure Blob Storage
Figure 1. Overview of how to use Azure Blob Storage

4.3. Notes

This section describes the points to be noted to use the QUBO APIs.

  • When a request is issued, even though the wrong parameter name (key) is specified (including spelling errors), the specified parameter is ignored and the process may continue. For this reason, an unexpected processing result may be obtained. Be careful to specify parameters.

  • A running job cannot be stopped after a synchronous qubo/hobo2qubo request is issued.
    Even though a request is issued by mistake or a process takes a long time, please wait until the process ends.
    However, if you use an asynchronous async/qubo/solve request, then you can cancel the job before it is executed (by using async/jobs/cancel).

  • When using FujitsuDA3Solver, the calculation time (solve_time) is determined by the value (in seconds) specified in the following parameter that specifies the upper limit of execution time.

    • time_limit_sec parameter

  • If the problem scale (the number of bits) is large, the scaling process, recalculation of energy, and other calculations that use CPU may take some time. The amount of time depends on the setting values that you specified for the solver and parameter.


Document History
Edition Date Modified location Description

First

January 2020

Whole document

Newly created

Second

January 2021

Whole document

Added descriptions about FujitsuDA3Solver

Third

August 2021

Whole document

Updated descriptions about QUBO API V3

Forth

May 2022

Whole document

Added descriptions about QUBO API V4

Fifth

December 2022

Whole document

Added descriptions about QUBO API V3c

Sixth

June 2023

Whole document

Added descriptions about Premium-3c and Premium-4c

Seventh

July 2023

Whole document

Added descriptions about Developer-3c

Eighth

April 2024

Whole document

Deleted descriptions about QUBO API V2, QUBO API V3 and Optimization Solutions API