JP7004937B2 - Optimization device, optimization device control method, and optimization device control program - Google Patents

Optimization device, optimization device control method, and optimization device control program Download PDF

Info

Publication number
JP7004937B2
JP7004937B2 JP2020546656A JP2020546656A JP7004937B2 JP 7004937 B2 JP7004937 B2 JP 7004937B2 JP 2020546656 A JP2020546656 A JP 2020546656A JP 2020546656 A JP2020546656 A JP 2020546656A JP 7004937 B2 JP7004937 B2 JP 7004937B2
Authority
JP
Japan
Prior art keywords
bit
unit
scale
bits
accuracy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020546656A
Other languages
Japanese (ja)
Other versions
JPWO2020054061A1 (en
Inventor
健 三品
義政 谷
聡 松浦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2020054061A1 publication Critical patent/JPWO2020054061A1/en
Application granted granted Critical
Publication of JP7004937B2 publication Critical patent/JP7004937B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/08Computing arrangements based on specific mathematical models using chaos models or non-linear system models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/06Power analysis or power optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Complex Calculations (AREA)

Description

本発明は最適化装置、最適化装置の制御方法および最適化装置の制御プログラムに関する。 The present invention relates to an optimization device, a control method of the optimization device, and a control program of the optimization device.

ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置(イジングマシンまたはボルツマンマシンと呼ばれる場合もある)がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。 As a method of solving a multivariable optimization problem that Neumann computers are not good at, there is an optimization device using an Ising-type energy function (sometimes called an Ising machine or a Boltzmann machine). The optimizer replaces the problem to be calculated with the Ising model, which is a model representing the spin behavior of a magnetic material, and calculates.

最適化装置は、例えば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビット(スピンビット)のそれぞれが、他のビットと自身のビットとの相互作用の大きさを示す重み係数(結合係数とも呼ばれる)とに応じて0または1を出力するニューロンとして機能する。最適化装置は、例えば、シミュレーテッド・アニーリングなどの確率的探索法により、上記のようなエネルギー関数(コスト関数、目的関数とも呼ばれる)の値(エネルギーと言う)の最小値が得られる各ビットの値の組合せを、解として求める。 The optimizer can also be modeled using, for example, a neural network. In that case, each of the multiple bits (spin bits) corresponding to the multiple spins included in the Ising model has a weighting coefficient (also called a coupling coefficient) indicating the magnitude of the interaction between the other bit and its own bit. Functions as a neuron that outputs 0 or 1 depending on the. The optimizer obtains the minimum value (called energy) of the energy function (also called cost function or objective function) as described above by a stochastic search method such as simulated annealing for each bit. Find the combination of values as a solution.

例えば、スピンに対応する単位素子を複数搭載する半導体チップを用いてイジングモデルの基底状態を探索する半導体システムの提案がある。提案の半導体システムでは、大規模な問題に対応可能な半導体チップを実現するに際しては、ある程度の数の単位素子が搭載された半導体チップを複数使用して構築する。 For example, there is a proposal of a semiconductor system for searching the ground state of the Ising model using a semiconductor chip equipped with a plurality of unit elements corresponding to spins. In the proposed semiconductor system, in order to realize a semiconductor chip capable of dealing with a large-scale problem, a plurality of semiconductor chips equipped with a certain number of unit elements are used for construction.

国際公開第2017/037903号International Publication No. 2017/037903

最適化装置では、解くべき問題に応じて、利用されるスピンビット数(問題の規模に相当)や重み係数のビット数(問題における条件表現の精度に相当)が変わり得る。例えば、ある分野の問題では、スピンビット数が比較的多く用いられ、重み係数のビット数が比較的少なくてよいことがある。一方、他の分野の問題では、スピンビット数が比較的少なくてよいが、重み係数のビット数が比較的多く用いられることがある。しかし、各問題に適合したスピンビット数と重み係数のビット数とを備えた最適化装置を、問題毎に個別に製造するのは非効率である。 In the optimizer, the number of spin bits used (corresponding to the scale of the problem) and the number of bits of the weighting factor (corresponding to the accuracy of the conditional expression in the problem) may change depending on the problem to be solved. For example, in a problem in a certain field, the number of spin bits may be relatively large, and the number of bits of the weighting factor may be relatively small. On the other hand, in problems in other fields, the number of spin bits may be relatively small, but the number of weight coefficient bits may be relatively large. However, it is inefficient to manufacture an optimization device having the number of spin bits and the number of weighting coefficient bits suitable for each problem individually for each problem.

1つの側面では、本発明は、規模と精度とを可変にできる最適化装置、最適化装置の制御方法および最適化装置の制御プログラムを提供することを目的とする。 In one aspect, it is an object of the present invention to provide an optimizer, a control method for the optimizer, and a control program for the optimizer, which can vary in scale and accuracy.

1つの態様では、最適化装置が提供される。最適化装置は、記憶部と複数のビット演算回路と選択回路部と設定変更部とを有する。記憶部は、イジングモデルの状態を表すビット列のうちのビット間の相互作用の大きさを示す係数を記憶する。複数のビット演算回路の各々は、ビット列のうちの何れかのビットが反転されると、記憶部から読み出した反転されたビットと自ビットとに対応する係数を用いたイジングモデルのエネルギー変化の計算に応じて、自ビットの反転可否を示す信号を出力する。選択回路部は、複数のビット演算回路のうちビット列の第1のビット数のビット演算回路の各々から出力された反転可否を示す信号に基づいて選択したビット列のうち反転させるビットを示す信号を、第1のビット数のビット演算回路の各々に出力する。設定変更部は、選択回路部に対する第1のビット数の変更、および、第1のビット数のビット演算回路の各々に対する係数の第2のビット数の変更を行う。 In one aspect, an optimization device is provided. The optimization device has a storage unit, a plurality of bit operation circuits, a selection circuit unit, and a setting change unit. The storage unit stores a coefficient indicating the magnitude of the interaction between the bits in the bit string representing the state of the Ising model. In each of the plurality of bit arithmetic circuits, when any bit in the bit string is inverted, the energy change of the Ising model is calculated using the coefficient corresponding to the inverted bit read from the storage unit and its own bit. A signal indicating whether or not the own bit can be inverted is output according to the above. The selection circuit unit outputs a signal indicating the bit to be inverted among the selected bit strings based on the signal indicating whether or not the inversion is possible output from each of the bit operation circuits having the first number of bits of the bit string among the plurality of bit operation circuits. It is output to each of the bit operation circuits having the first number of bits. The setting change unit changes the number of first bits for the selection circuit unit and changes the number of second bits of the coefficient for each of the bit operation circuits having the first number of bits.

また、1つの態様では、最適化装置が提供される。最適化装置は、入力部と変換部と制御部と表示部とを有する。入力部は、解くべき問題と動作条件とを入力する。変換部は、入力した問題をイジングモデルの基底状態の探索問題に変換するとともに、探索問題の規模を示す規模情報と、探索問題の表現の精度を表す精度情報と、探索問題のエネルギーの初期値を表すエネルギー情報と、規模および精度に応じた規模精度モード情報とを生成する。制御部は、規模情報と、精度情報と、エネルギー情報を入力するとともに動作条件と規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力する。表示部は、制御部による基底状態の探索の結果として得られた解を表示する。 Also, in one aspect, an optimization device is provided. The optimization device has an input unit, a conversion unit, a control unit, and a display unit. The input unit inputs the problem to be solved and the operating conditions. The conversion unit converts the input problem into a search problem in the base state of the search problem, scale information indicating the scale of the search problem, accuracy information indicating the accuracy of the expression of the search problem, and the initial value of the energy of the search problem. The energy information representing the above and the scale accuracy mode information according to the scale and accuracy are generated. The control unit inputs scale information, accuracy information, energy information, operating conditions, and scale accuracy mode information, executes an operation for searching the ground state, and outputs a solution. The display unit displays the solution obtained as a result of the search for the ground state by the control unit.

また、1つの態様では、最適化装置の制御方法が提供される。
また、1つの態様では、最適化装置の制御プログラムが提供される。
Also, in one aspect, a method of controlling the optimizer is provided.
Also, in one aspect, a control program for the optimizer is provided.

1つの側面では、規模と精度とを可変にできる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
On one side, scale and accuracy can be variable.
The above and other objects, features and advantages of the invention will be apparent by the following description in connection with the accompanying drawings representing preferred embodiments of the invention.

第1の実施の形態の最適化装置を示す図である。It is a figure which shows the optimization apparatus of 1st Embodiment. 第2の実施の形態の情報処理システムの例を示す図である。It is a figure which shows the example of the information processing system of the 2nd Embodiment. 情報処理装置のハードウェア例を示すブロック図である。It is a block diagram which shows the hardware example of an information processing apparatus. 情報処理システムにおけるハードウェアの関係の例を示す図である。It is a figure which shows the example of the relationship of hardware in an information processing system. 制御部のハードウェア例を示すブロック図である。It is a block diagram which shows the hardware example of a control part. 組合せ最適化問題の例を示す図である。It is a figure which shows the example of the combinatorial optimization problem. 最少エネルギーとなるバイナリ値の探索例を示す図である。It is a figure which shows the search example of the binary value which becomes the minimum energy. 最適化装置の回路構成例を示す図である。It is a figure which shows the circuit configuration example of the optimization apparatus. ランダムセレクタ部の回路構成例を示す図である。It is a figure which shows the circuit configuration example of a random selector part. 規模と精度とのトレードオフ関係の例を示す図である。It is a figure which shows the example of the trade-off relationship between scale and accuracy. 重み係数の格納例(その1)を示す図である。It is a figure which shows the storage example (the 1) of the weighting coefficient. 重み係数の格納例(その2)を示す図である。It is a figure which shows the storage example (the 2) of the weighting coefficient. 重み係数の格納例(その3)を示す図である。It is a figure which shows the storage example (the 3) of the weighting coefficient. 重み係数の格納例(その4)を示す図である。It is a figure which shows the storage example (the 4) of the weighting coefficient. 初期化処理の例を示すフローチャートである。It is a flowchart which shows the example of the initialization process. 演算処理の例を示すフローチャートである。It is a flowchart which shows the example of the arithmetic processing. 結合係数の格納例(その5)を示す図である。It is a figure which shows the storage example (the 5) of the coupling coefficient. 第3の実施の形態の最適化装置の例を示す図である。It is a figure which shows the example of the optimization apparatus of the 3rd Embodiment. LFBの回路構成例を示す図である。It is a figure which shows the circuit configuration example of LFB. 規模結合回路の回路構成例を示す図である。It is a figure which shows the circuit structure example of the scale coupling circuit. 問題毎の規模/精度の必要範囲の例を示す図である。It is a figure which shows the example of the required range of scale / accuracy for each problem. 規模精度の選択可能範囲の例を示す図である。It is a figure which shows the example of the selectable range of scale accuracy. LFEの使用パターンの例を示す図である。It is a figure which shows the example of the use pattern of LFE. 最適化装置の利用フローの例を示す図である。It is a figure which shows the example of the utilization flow of the optimization apparatus.

以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
Hereinafter, the present embodiment will be described with reference to the drawings.
[First Embodiment]
The first embodiment will be described.

図1は、第1の実施の形態の最適化装置を示す図である。
最適化装置1は、計算対象の問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のビット(スピンビット)のそれぞれの値の組合せ(状態)のうち、エネルギー関数が最小値となるときの各ビットの値(基底状態)を探索する。
FIG. 1 is a diagram showing an optimization device according to the first embodiment.
In the optimization device 1, the energy function is the minimum value among the combinations (states) of the values of the plurality of bits (spin bits) corresponding to the plurality of spins included in the Ising model obtained by transforming the problem to be calculated. Search for the value (ground state) of each bit at the time.

イジング型のエネルギー関数E(x)は、例えば、以下の式(1)で定義される。 The Ising-type energy function E (x) is defined by, for example, the following equation (1).

Figure 0007004937000001
Figure 0007004937000001

右辺第1項は、イジングモデルに含まれる全ビットから選択可能な2つのビットの全組合せについて、漏れと重複なく、2つのビットの値(0または1)と結合係数との積を積算したものである。イジングモデルに含まれる全ビット数をK個(Kは2以上の整数)とする。また、i,jの各々を、0以上K-1以下の整数とする。xは、i番目のビットの値を表す変数(状態変数とも呼ばれる)である。xは、j番目のビットの値を表す変数である。Wijは、i番目とj番目のビットの相互作用の大きさを示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(すなわち、重み係数による係数行列は対称行列である場合が多い)。The first term on the right-hand side is the sum of the products of the two bit values (0 or 1) and the coupling coefficient for all combinations of the two bits that can be selected from all the bits included in the Ising model, without omission or duplication. Is. The total number of bits included in the Ising model is K (K is an integer of 2 or more). Further, each of i and j is an integer of 0 or more and K-1 or less. x i is a variable (also called a state variable) representing the value of the i-th bit. x j is a variable representing the value of the jth bit. W ij is a weighting coefficient indicating the magnitude of the interaction between the i-th and j-th bits. In addition, Wii = 0. In addition, W ij = W ji in many cases (that is, the coefficient matrix based on the weighting coefficient is often a symmetric matrix).

右辺第2項は、全ビットのそれぞれのバイアス係数とビットの値との積の総和を求めたものである。bは、i番目のビットのバイアス係数を示している。
また、変数xの値が変化して1-xとなると、変数xの増加分は、Δx=(1-x)-x=1-2xと表せる。したがって、スピン反転(値の変化)に伴うエネルギー変化ΔEは、以下の式(2)で表される。
The second term on the right-hand side is the sum of the products of the bias coefficients of all the bits and the values of the bits. b i indicates the bias coefficient of the i-th bit.
Further, when the value of the variable x i changes to 1-x i , the increase of the variable x i can be expressed as Δx i = (1-x i ) −x i = 1-2x i . Therefore, the energy change ΔE i accompanying the spin inversion (change in value) is expressed by the following equation (2).

Figure 0007004937000002
Figure 0007004937000002

はローカルフィールド(局所場)と呼ばれ、式(3)で表される。 hi is called a local field and is expressed by the equation (3).

Figure 0007004937000003
Figure 0007004937000003

Δxに応じてローカルフィールドhに符号(+1または-1)を乗じたものがエネルギー変化ΔEとなる。ローカルフィールドhの変化分Δhは式(4)で表される。The energy change ΔE i is obtained by multiplying the local field h i by a code (+1 or -1) according to Δx i . The change Δh i of the local field h i is expressed by the equation (4).

Figure 0007004937000004
Figure 0007004937000004

ある変数xが変化したときのローカルフィールドhを更新する処理は並列に行われる。
最適化装置1は、例えば、1チップの半導体集積回路であり、FPGA(Field Programmable Gate Array)などを用いて実現される。最適化装置1は、ビット演算回路1a1,…,1aK,…,1aN(複数のビット演算回路)、選択回路部2、閾値生成部3、乱数生成部4、設定変更部5および制御部6を有する。ここで、Nは、最適化装置1が備えるビット演算回路の総数である。Nは、K以上の整数である。ビット演算回路1a1,…,1aK,…,1aNの各々には、識別情報(index=0,…,K-1,…,N-1)が対応付けられている。
The process of updating the local field h i when a certain variable x j changes is performed in parallel.
The optimization device 1 is, for example, a one-chip semiconductor integrated circuit, and is realized by using an FPGA (Field Programmable Gate Array) or the like. The optimization device 1 includes bit operation circuits 1a1, ..., 1aK, ..., 1aN (a plurality of bit operation circuits), a selection circuit unit 2, a threshold value generation unit 3, a random number generation unit 4, a setting change unit 5, and a control unit 6. Have. Here, N is the total number of bit operation circuits included in the optimization device 1. N is an integer greater than or equal to K. Identification information (index = 0, ..., K-1, ..., N-1) is associated with each of the bit operation circuits 1a1, ..., 1aK, ..., 1aN.

ビット演算回路1a1,…,1aK,…,1aNは、イジングモデルの状態を表すビット列に含まれる1ビットを提供する単位素子である。当該ビット列は、スピンビット列や状態ベクトルなどと呼ばれてもよい。ビット演算回路1a1,…,1aK,…,1aNの各々は、自ビットと他ビットの間の重み係数を記憶し、重み係数に基づいて他ビットの反転に応じた自ビットの反転可否を判定し、自ビットの反転可否を示す信号を選択回路部2に出力する。 The bit operation circuits 1a1, ..., 1aK, ..., 1aN are unit elements that provide one bit included in a bit string representing the state of the Ising model. The bit string may be called a spin bit string, a state vector, or the like. Each of the bit operation circuits 1a1, ..., 1aK, ..., 1aN stores the weighting coefficient between the own bit and the other bit, and determines whether or not the own bit can be inverted according to the inversion of the other bit based on the weighting coefficient. , A signal indicating whether or not the own bit can be inverted is output to the selection circuit unit 2.

選択回路部2は、スピンビット列のうち、反転させるビット(反転ビット)を選択する。具体的には、選択回路部2は、ビット演算回路1a1,…,1aK,…,1aNのうち、イジングモデルの基底状態の探索に用いられているビット演算回路1a1,…,1aKの各々から出力された反転可否の信号を受け付ける。選択回路部2は、ビット演算回路1a1,…,1aKのうち、反転可の信号を出力したビット演算回路に対応するビットを優先的に1つ選択し、反転ビットとする。例えば、選択回路部2は、乱数生成部4により出力される乱数ビットに基づいて当該反転ビットの選択を行う。選択回路部2は、選択した反転ビットを示す信号を、ビット演算回路1a1,…,1aKに出力する。反転ビットを示す信号は、反転ビットの識別情報(index=j)と、反転可否を示すフラグ(flg=1)と、反転ビットの現在の値q(今回の反転前の値)とを示す信号を含む。ただし、何れのビットも反転されないこともある。何れのビットも反転されない場合、選択回路部2は、flg=0を出力する。The selection circuit unit 2 selects a bit (inverted bit) to be inverted from the spin bit strings. Specifically, the selection circuit unit 2 outputs from each of the bit operation circuits 1a1, ..., 1aK, ..., 1aN used for searching the ground state of the Ising model among the bit operation circuits 1a1, ..., 1aK, ..., 1aN. Accepts the inversion enable / disable signal. The selection circuit unit 2 preferentially selects one bit corresponding to the bit operation circuit that outputs the inverting signal from the bit operation circuits 1a1, ..., 1aK, and uses it as an inversion bit. For example, the selection circuit unit 2 selects the inverting bit based on the random number bit output by the random number generation unit 4. The selection circuit unit 2 outputs a signal indicating the selected inverting bit to the bit calculation circuits 1a1, ..., 1aK. The signal indicating the inversion bit includes the identification information of the inversion bit (index = j), the flag indicating whether or not the inversion is possible (flg j = 1), and the current value q j of the inversion bit (the value before the inversion this time). Includes the indicated signal. However, none of the bits may be inverted. If neither bit is inverted, the selection circuit unit 2 outputs flg j = 0.

閾値生成部3は、ビット演算回路1a1,…,1aK,…,1aNの各々に対し、ビットの反転可否を判定する際に用いられる閾値を生成する。ビット演算回路1a1,…,1aK,…,1aNの各々に当該閾値を示す信号を出力する。後述するように、閾値生成部3は、閾値の生成に、温度を示すパラメータ(温度パラメータ)Tと乱数とを用いる。閾値生成部3は、当該乱数を発生させる乱数発生器を有する。閾値生成部3は、ビット演算回路1a1,…,1aK,…,1aNの各々に対して個別に乱数発生器を有し、個別に閾値の生成と供給とを行うことが好ましい。ただし、閾値生成部3は、所定数のビット演算回路で乱数発生器を共用してもよい。 The threshold value generation unit 3 generates a threshold value used for determining whether or not the bit can be inverted for each of the bit calculation circuits 1a1, ..., 1aK, ..., 1aN. A signal indicating the threshold value is output to each of the bit operation circuits 1a1, ..., 1aK, ..., 1aN. As will be described later, the threshold value generation unit 3 uses a parameter (temperature parameter) T indicating a temperature and a random number to generate the threshold value. The threshold value generation unit 3 has a random number generator that generates the random number. It is preferable that the threshold value generation unit 3 has a random number generator individually for each of the bit calculation circuits 1a1, ..., 1aK, ..., 1aN, and individually generates and supplies the threshold value. However, the threshold generation unit 3 may share a random number generator with a predetermined number of bit operation circuits.

乱数生成部4は、乱数ビットを生成し、選択回路部2に出力する。乱数生成部4により生成された乱数ビットは、選択回路部2による反転ビットの選択に用いられる。
設定変更部5は、ビット演算回路1a1,…,1aK,…,1aNのうち、計算対象のイジングモデルの状態を表すビット列(スピンビット列)の第1のビット数(スピンビット数)の変更を行う。また、設定変更部5は、第1のビット数のビット演算回路の各々に対する、重み係数の第2のビット数の変更を行う。
The random number generation unit 4 generates random number bits and outputs them to the selection circuit unit 2. The random number bits generated by the random number generation unit 4 are used for selection of the inverting bit by the selection circuit unit 2.
The setting changing unit 5 changes the first bit number (spin bit number) of the bit string (spin bit string) representing the state of the Ising model to be calculated among the bit calculation circuits 1a1, ..., 1aK, ..., 1aN. .. Further, the setting changing unit 5 changes the number of second bits of the weighting coefficient for each of the bit arithmetic circuits having the first number of bits.

制御部6は、温度パラメータTやビット演算回路1a1,…,1aNの各々の記憶部に対する重み係数の設定を行い、ビット演算回路1a1,…,1aNによる演算の開始や終了を制御する。制御部6は、演算結果の出力を行う。例えば、制御部6は、ビット演算回路1a1,…,1aKを用いた演算が終了すると、ビット演算回路1a1,…,1aKに保持されるスピンビット列を読み出して出力する。 The control unit 6 sets the weighting coefficient for each storage unit of the temperature parameter T and the bit calculation circuits 1a1, ..., 1aN, and controls the start and end of the calculation by the bit calculation circuits 1a1, ..., 1aN. The control unit 6 outputs the calculation result. For example, when the operation using the bit operation circuits 1a1, ..., 1aK is completed, the control unit 6 reads out and outputs the spin bit strings held in the bit operation circuits 1a1, ..., 1aK.

次に、ビット演算回路の回路構成を説明する。ビット演算回路1a1(index=0)を主に説明するが、他のビット演算回路も同様の回路構成で実現される(例えば、X番目(Xは1以上N以下の整数)のビット演算回路に対して、index=X-1とすればよい)。 Next, the circuit configuration of the bit operation circuit will be described. The bit operation circuit 1a1 (index = 0) will be mainly described, but other bit operation circuits can be realized by the same circuit configuration (for example, in the Xth (X is an integer of 1 or more and N or less) bit operation circuit). On the other hand, index = X-1 may be set).

ビット演算回路1a1は、記憶部11、精度切替回路12、反転判定部13、ビット保持部14、エネルギー変化計算部15および状態遷移判定部16を有する。
記憶部11は、例えば、レジスタやSRAM(Static Random Access Memory)などである。記憶部11は、スピンビット列のうちのビット間の相互作用の大きさを示す係数を記憶する。より具体的には、記憶部11は、自ビット(ここでは、index=0のビット)と他ビットとの間の重み係数を記憶する。ここで、スピンビット数(第1のビット数)Kに対して、重み係数の総数はKである。記憶部11には、index=0のビットに対して、K個の重み係数W00,W01,…,W0,K-1が記憶される。ここで、重み係数は第2のビット数Lで表される。したがって、記憶部11では重み係数を格納するために、K×Lビットが所要される。なお、記憶部11は、ビット演算回路1a1の外部であって、最適化装置1の内部に設けられてもよい(他のビット演算回路の記憶部も同様)。
The bit calculation circuit 1a1 includes a storage unit 11, an accuracy switching circuit 12, an inversion determination unit 13, a bit holding unit 14, an energy change calculation unit 15, and a state transition determination unit 16.
The storage unit 11 is, for example, a register, a SRAM (Static Random Access Memory), or the like. The storage unit 11 stores a coefficient indicating the magnitude of the interaction between the bits in the spin bit string. More specifically, the storage unit 11 stores the weighting coefficient between the own bit (here, the bit of index = 0) and the other bit. Here, the total number of weighting coefficients is K2 with respect to the number of spin bits (the number of first bits) K. The storage unit 11 stores K weight coefficients W 00 , W 01 , ..., W 0, K-1 for bits of index = 0. Here, the weighting coefficient is represented by the second bit number L. Therefore, in the storage unit 11, K × L bits are required to store the weighting coefficient. The storage unit 11 may be provided outside the bit operation circuit 1a1 and inside the optimization device 1 (the same applies to the storage unit of other bit operation circuits).

精度切替回路12は、スピンビット列の何れかのビットが反転されると反転されたビットに対する重み係数を自身の(ビット演算回路1a1の)記憶部11から読み出し、読み出した重み係数をエネルギー変化計算部15に出力する。すなわち、精度切替回路12は、選択回路部2から反転ビットの識別情報を受け付け、記憶部11から反転ビットと自ビットとの組に対応する重み係数を読み出して、エネルギー変化計算部15に出力する。 When any bit of the spin bit string is inverted, the precision switching circuit 12 reads out the weighting coefficient for the inverted bit from its own storage unit 11 (of the bit operation circuit 1a1), and reads out the weighting coefficient in the energy change calculation unit. Output to 15. That is, the accuracy switching circuit 12 receives the identification information of the inverting bit from the selection circuit unit 2, reads the weighting coefficient corresponding to the pair of the inverting bit and the own bit from the storage unit 11, and outputs the weighting coefficient to the energy change calculation unit 15. ..

このとき、精度切替回路12は、設定変更部5により設定された第2のビット数で表される重み係数の読み出しを行う。精度切替回路12は、設定変更部5による第2のビット数の変更に応じて、記憶部11から読み出す係数の第2のビット数を変更する。 At this time, the precision switching circuit 12 reads out the weighting coefficient represented by the second number of bits set by the setting changing unit 5. The precision switching circuit 12 changes the number of second bits of the coefficient read from the storage unit 11 according to the change of the number of second bits by the setting changing unit 5.

例えば、精度切替回路12は、記憶部11から所定ビット数のビット列を読み出すセレクタを有する。セレクタが読み出す所定ビット数が、第2のビット数よりも大きい場合、精度切替回路12は、当該セレクタにより反転ビットに対応する重み係数を含む単位ビット列を読み出し、読み出した単位ビット列から第2のビット数で表される重み係数を抽出する。あるいは、精度切替回路12は、セレクタが読み出す所定ビット数が、第2のビット数よりも小さい場合、当該セレクタにより読み出された複数のビット列を結合することで、第2のビット数で表される重み係数を記憶部11から抽出してもよい。 For example, the precision switching circuit 12 has a selector that reads out a bit string having a predetermined number of bits from the storage unit 11. When the predetermined number of bits read by the selector is larger than the number of second bits, the precision switching circuit 12 reads the unit bit string including the weighting coefficient corresponding to the inverting bit by the selector, and the second bit from the read unit bit string. Extract the weighting factor represented by a number. Alternatively, when the predetermined number of bits read by the selector is smaller than the number of second bits, the precision switching circuit 12 is represented by the number of second bits by combining a plurality of bit strings read by the selector. The weighting coefficient may be extracted from the storage unit 11.

反転判定部13は、選択回路部2により出力されたindex=jとflgとを示す信号を受け付け、当該信号に基づいて反転ビットとして自ビットが選択されたか否かを判定する。反転ビットとして自ビットが選択された場合(すなわち、index=jが自ビットを示し、flgが反転可を示す場合)、反転判定部13は、ビット保持部14に記憶されたビットを反転させる。すなわち、ビット保持部14に保持されたビットが0の場合、当該ビットを1に変更する。また、ビット保持部14に保持されたビットが1の場合、当該ビットを0に変更する。The inversion determination unit 13 receives the signals indicating index = j and flg j output by the selection circuit unit 2, and determines whether or not the own bit is selected as the inversion bit based on the signals. When the own bit is selected as the inversion bit (that is, when index = j indicates the own bit and flg j indicates inversion possible), the inversion determination unit 13 inverts the bit stored in the bit holding unit 14. .. That is, when the bit held in the bit holding unit 14 is 0, the bit is changed to 1. Further, when the bit held in the bit holding unit 14 is 1, the bit is changed to 0.

ビット保持部14は、1ビットを保持するレジスタである。ビット保持部14は、保持するビットをエネルギー変化計算部15および選択回路部2に出力する。
エネルギー変化計算部15は、記憶部11から読み出した重み係数を用いたイジングモデルのエネルギー変化値ΔEを計算し、状態遷移判定部16に出力する。具体的には、エネルギー変化計算部15は、反転ビットの値(今回の反転前の値)を選択回路部2から受け付け、反転ビットが、1から0、または、0から1のどちらに反転するかに応じて、式(4)により、Δhを計算する。そして、エネルギー変化計算部15は、前回のhにΔhを加算することで、hを更新する。エネルギー変化計算部15は、hを保持するレジスタを有し、当該レジスタにより更新後のhを保持する。
The bit holding unit 14 is a register that holds one bit. The bit holding unit 14 outputs the held bits to the energy change calculation unit 15 and the selection circuit unit 2.
The energy change calculation unit 15 calculates the energy change value ΔE 0 of the rising model using the weighting coefficient read from the storage unit 11, and outputs the energy change value ΔE 0 to the state transition determination unit 16. Specifically, the energy change calculation unit 15 receives the value of the inversion bit (the value before the inversion this time) from the selection circuit unit 2, and the inversion bit is inverted from 1 to 0 or from 0 to 1. According to the equation (4), Δh 0 is calculated. Then, the energy change calculation unit 15 updates h 0 by adding Δh 0 to the previous h 0 . The energy change calculation unit 15 has a register that holds h 0 , and holds h 0 after being updated by the register.

更に、エネルギー変化計算部15は、ビット保持部14より現在の自ビットを受け付け、自ビットが0であれば0から1へ、自ビットが1であれば1から0へ、反転する場合のイジングモデルのエネルギー変化値ΔEを式(2)により計算する。エネルギー変化計算部15は、計算したエネルギー変化値ΔEを、状態遷移判定部16に出力する。Further, the energy change calculation unit 15 receives the current own bit from the bit holding unit 14, and if the own bit is 0, it is inverted from 0 to 1, and if the own bit is 1, it is inverted from 1 to 0. The energy change value ΔE 0 of the model is calculated by the equation (2). The energy change calculation unit 15 outputs the calculated energy change value ΔE 0 to the state transition determination unit 16.

状態遷移判定部16は、エネルギー変化計算部15によるエネルギー変化の計算に応じて、自ビットの反転可否を示す信号flgを選択回路部2に出力する。具体的には、状態遷移判定部16は、エネルギー変化計算部15により計算されたエネルギー変化値ΔEを受け付け、閾値生成部3により生成された閾値との比較に応じて、自ビットの反転可否を判定する比較器である。ここで、状態遷移判定部16による判定について説明する。The state transition determination unit 16 outputs a signal flg 0 indicating whether or not the own bit can be inverted to the selection circuit unit 2 in response to the calculation of the energy change by the energy change calculation unit 15. Specifically, the state transition determination unit 16 receives the energy change value ΔE 0 calculated by the energy change calculation unit 15, and whether or not the own bit can be inverted according to the comparison with the threshold value generated by the threshold value generation unit 3. It is a comparator that determines. Here, the determination by the state transition determination unit 16 will be described.

シミュレーテッド・アニーリングでは、あるエネルギー変化ΔEを引き起こす状態遷移の許容確率p(ΔE,T)を以下の式(5)のように決めれば、時刻(反復回数)無限大の極限で状態が最適解(基底状態)に到達することが知られている。 In simulated annealing, if the permissible probability p (ΔE, T) of the state transition that causes a certain energy change ΔE is determined by the following equation (5), the state is the optimum solution at the limit of the time (number of iterations) infinity. It is known to reach (ground state).

Figure 0007004937000005
Figure 0007004937000005

式(5)においてTは、前述の温度パラメータTである。ここで、関数fとして、式(6)(メトロポリス法)、または、式(7)(ギブス法)が用いられる。 In equation (5), T is the temperature parameter T described above. Here, the equation (6) (Metropolis method) or the equation (7) (Gibbs method) is used as the function f.

Figure 0007004937000006
Figure 0007004937000006

Figure 0007004937000007
Figure 0007004937000007

温度パラメータTは、例えば、式(8)で表される。すなわち、温度パラメータTは、反復回数tに対して対数的に減少する関数で与えられる。例えば、定数cは問題に応じて決定される。 The temperature parameter T is represented by, for example, the equation (8). That is, the temperature parameter T is given by a function that decreases logarithmically with respect to the number of iterations t. For example, the constant c is determined according to the problem.

Figure 0007004937000008
Figure 0007004937000008

ここで、Tは、初期温度値であり問題に応じて十分に大きくとることが望ましい。
式(5)で表される許容確率p(ΔE,T)を用いた場合、ある温度における状態遷移の十分な反復後に定常状態に達したとすると、当該状態はボルツマン分布に従って生成される。すなわち、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布に従う。よって、ある温度でボルツマン分布に従った状態を生成し、その後、当該温度よりも低い温度でボルツマン分布に従った状態を生成し、というように徐々に温度を下げていくことで、各温度におけるボルツマン分布に従った状態を追えることになる。そして、温度0としたときに、温度0でのボルツマン分布により最低エネルギーの状態(基底状態)が高確率で実現される。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法はシミュレーテッド・アニーリングと呼ばれる。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
Here, T 0 is an initial temperature value, and it is desirable to take it sufficiently large depending on the problem.
When the permissible probability p (ΔE, T) expressed by the equation (5) is used and the steady state is reached after sufficient repetition of the state transition at a certain temperature, the state is generated according to the Boltzmann distribution. That is, the occupancy probability of each state follows the Boltzmann distribution for the thermal equilibrium state in thermodynamics. Therefore, a state according to the Boltzmann distribution is generated at a certain temperature, and then a state according to the Boltzmann distribution is generated at a temperature lower than the temperature, and so on, by gradually lowering the temperature, at each temperature. It will be possible to follow the state according to the Boltzmann distribution. Then, when the temperature is 0, the state of the lowest energy (ground state) is realized with high probability by the Boltzmann distribution at the temperature of 0. This method is called simulated annealing because this is very similar to the state change when the material is annealed. At this time, the probabilistic state transition in which the energy rises corresponds to thermal excitation in physics.

例えば、許容確率p(ΔE,T)でエネルギー変化ΔEを引き起こす状態遷移を許容することを示すフラグ(flg=1)を出力する回路は、f(-ΔE/T)と、区間[0,1)の値をとる一様乱数uとの比較に応じた値を出力する比較器により実現できる。 For example, a circuit that outputs a flag (flg = 1) indicating that a state transition that causes an energy change ΔE with an allowable probability p (ΔE, T) is allowed has f (−ΔE / T) and an interval [0,1]. ) Can be realized by a comparator that outputs a value corresponding to the comparison with a uniform random number u.

ただし、次のような変形を行っても同じ機能を実現可能である。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって、比較器の2つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。例えば、f(-ΔE/T)に作用させる単調増加関数としてf(-ΔE/T)の逆関数f-1(-ΔE/T)、一様乱数uに作用させる単調増加関数としてf-1(-ΔE/T)の-ΔE/Tをuとしたf-1(u)を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、-ΔE/Tがf-1(u)より大きいとき1を出力する回路でよい。更に、温度パラメータTが正であることから、状態遷移判定部16は、-ΔEがT・f-1(u)より大きいとき(あるいは、ΔEが-(T・f-1(u))より小さいとき)、flg=1を出力する回路でよい。However, the same function can be realized by making the following modifications. Even if the same monotonically increasing function is applied to two numbers, the magnitude relationship does not change. Therefore, even if the same monotonically increasing function is applied to the two inputs of the comparator, the output of the comparator does not change. For example, the inverse function f -1 (-ΔE / T) of f (-ΔE / T) as a monotonic increase function acting on f (-ΔE / T), and f -1 as a monotonic increase function acting on a uniform random number u. It is possible to use f -1 (u) in which −ΔE / T of (−ΔE / T) is u. In that case, the circuit having the same function as the above-mentioned comparator may be a circuit that outputs 1 when −ΔE / T is larger than f -1 (u). Further, since the temperature parameter T is positive, the state transition determination unit 16 determines that −ΔE is larger than T · f -1 (u) (or ΔE is − (T · f -1 (u))). (When small), a circuit that outputs flg 0 = 1 may be used.

閾値生成部3は、一様乱数uを生成し、上記のf-1(u)の値に変換する変換テーブルを用いて、f-1(u)の値を出力する。メトロポリス法が適用される場合、f-1(u)は、式(9)で与えられる。また、ギブス法が適用される場合、f-1(u)は、式(10)で与えられる。The threshold value generation unit 3 outputs the value of f -1 (u) by using the conversion table that generates a uniform random number u and converts it into the value of f -1 (u) described above. When the metropolis method is applied, f -1 (u) is given by equation (9). Further, when the Gibbs method is applied, f -1 (u) is given by the equation (10).

Figure 0007004937000009
Figure 0007004937000009

Figure 0007004937000010
Figure 0007004937000010

変換テーブルは、例えば、閾値生成部3に接続されたRAM(Random Access Memory)、フラッシュメモリなどのメモリ(図示を省略している)に記憶される。閾値生成部3は、温度パラメータTと、f-1(u)との積(T・f-1(u))を閾値として出力する。ここで、T・f-1(u)は、熱励起エネルギーに相当する。The conversion table is stored in, for example, a memory (not shown) such as a RAM (Random Access Memory) or a flash memory connected to the threshold generation unit 3. The threshold value generation unit 3 outputs the product (T · f -1 (u)) of the temperature parameter T and f -1 (u) as a threshold value. Here, T. f -1 (u) corresponds to the thermal excitation energy.

なお、選択回路部2から状態遷移判定部16に対してflgを入力し、当該flgが状態遷移を許容しないことを示すとき(つまり状態遷移が生じないとき)、状態遷移判定部16により-ΔEにオフセット値を加算してから、閾値との比較を行ってもよい。また、状態遷移判定部16は、状態遷移が生じないことが継続する場合に、加算するオフセット値を増加させてもよい。一方、状態遷移判定部16は、flgが、状態遷移を許容することを示すとき(つまり状態遷移が生じるとき)には、オフセット値を0にする。-ΔEへのオフセット値の加算やオフセット値の増加により、状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。When flg j is input from the selection circuit unit 2 to the state transition determination unit 16 and the flg j indicates that the state transition is not allowed (that is, when the state transition does not occur), the state transition determination unit 16 determines. After adding the offset value to −ΔE 0 , the comparison with the threshold value may be performed. Further, the state transition determination unit 16 may increase the offset value to be added when the state transition does not continue to occur. On the other hand, the state transition determination unit 16 sets the offset value to 0 when flg j indicates that the state transition is allowed (that is, when the state transition occurs). -Addition of the offset value to ΔE 0 and increase of the offset value make it easier to tolerate the state transition, and when the current state is in the local solution, escape from the local solution is promoted.

こうして、温度パラメータTが徐々に小さく設定され、例えば、温度パラメータTの値を所定回数、小さくした場合(または、温度パラメータTが最小値に達した場合)のスピンビット列が、ビット演算回路1a1,…,1aKに保持される。最適化装置1は、温度パラメータTの値を所定回数、小さくした場合(または、温度パラメータTが最小値に達した場合)のスピンビット列を解として出力する。 In this way, the temperature parameter T is gradually set to be smaller, and for example, the spin bit string when the value of the temperature parameter T is reduced a predetermined number of times (or when the temperature parameter T reaches the minimum value) is the bit operation circuit 1a1, ..., held at 1aK. The optimization device 1 outputs a spin bit string as a solution when the value of the temperature parameter T is reduced a predetermined number of times (or when the temperature parameter T reaches the minimum value).

最適化装置1では、前述の設定変更部5により、イジングモデルのスピンビット数(第1のビット数)と、ビット間の重み係数のビット数(第2のビット数)とを変更可能である。ここで、スピンビット数は、イジングモデルを実現する回路の規模(問題の規模)に相当する。規模が大きいほど、多数の組合せ候補をもつ組合せ最適化問題に最適化装置1を適用できる。また、重み係数のビット数は、ビット間の相互関係の表現の精度(問題における条件表現の精度)に相当する。精度が高いほど、スピン反転時のエネルギー変化ΔEに対する条件を詳細に設定できる。ある問題では、スピンビット数が大きく、重み係数を表すビット数が小さいことがある。あるいは、別の問題では、スピンビット数が小さく、重み係数を表すビット数が大きいこともある。一方、問題に応じて、各問題に適合した最適化装置を個別に製造することは非効率である。 In the optimization device 1, the number of spin bits (number of first bits) of the rising model and the number of bits of the weighting coefficient between bits (number of second bits) can be changed by the setting change unit 5 described above. .. Here, the number of spin bits corresponds to the scale of the circuit (the scale of the problem) that realizes the Ising model. The larger the scale, the more the optimization device 1 can be applied to the combination optimization problem having a large number of combination candidates. Further, the number of bits of the weighting coefficient corresponds to the accuracy of the expression of the mutual relationship between the bits (the accuracy of the conditional expression in the problem). The higher the accuracy, the more detailed the conditions for the energy change ΔE at the time of spin inversion can be set. In some problems, the number of spin bits is large and the number of bits representing the weighting factor is small. Alternatively, another problem is that the number of spin bits is small and the number of bits representing the weighting factor is large. On the other hand, it is inefficient to individually manufacture an optimization device suitable for each problem according to the problem.

そこで、最適化装置1では、設定変更部5によりイジングモデルの状態を表すスピンビット数と重み係数のビット数との設定を可能とすることで、規模と精度とを可変にできる。その結果、1つの最適化装置1において、問題に合った規模および精度を実現できる。 Therefore, in the optimization device 1, the scale and accuracy can be changed by enabling the setting change unit 5 to set the number of spin bits representing the state of the Ising model and the number of bits of the weighting coefficient. As a result, one optimization device 1 can realize the scale and accuracy suitable for the problem.

より具体的には、ビット演算回路1a1,…,1aK,…,1aNの各々は、精度切替回路を有し、当該精度切替回路によって、設定変更部5の設定に応じて、自身の記憶部から読み出す重み係数のビット長を切り替える。また、選択回路部2は、設定変更部5により設定されたスピンビット数に相当する数(例えば、K個)のビット演算回路に対して、反転ビットを示す信号を入力し、当該数(K個)のビット演算回路に対応するビットの中から反転ビットを選択する。これにより、問題に応じた規模および精度を備えた最適化装置を個別に製造しなくても、1つの最適化装置1によって、問題に応じた規模および精度でイジングモデルを実現できる。 More specifically, each of the bit operation circuits 1a1, ..., 1aK, ..., 1aN has a precision switching circuit, and the precision switching circuit can be used from its own storage unit according to the setting of the setting changing unit 5. Switch the bit length of the weighting factor to be read. Further, the selection circuit unit 2 inputs a signal indicating an inverting bit to a bit operation circuit having a number (for example, K) corresponding to the number of spin bits set by the setting change unit 5, and the number (K). Select the inverting bit from the bits corresponding to the bit operation circuit. As a result, the Ising model can be realized with the scale and accuracy according to the problem by one optimization device 1 without individually manufacturing the optimization device having the scale and accuracy according to the problem.

ここで、前述のように、ビット演算回路1a1,…,1aNの各々が備える記憶部は、SRAMなどの比較的小容量の記憶デバイスにより実現される。このため、スピンビット数が増えると、重み係数のビット数によっては、記憶部の容量が不足することも考えられる。一方、最適化装置1によれば、設定変更部5により、記憶部の容量の制限を満たすように、規模および精度を設定することも可能になる。具体的には、設定変更部5は、スピンビット数が増えるほど、重み係数のビット数を減らすように設定することが考えられる。また、設定変更部5は、重み係数のビット数が増えるほど、スピンビット数を減らすように設定することも考えられる。 Here, as described above, the storage unit included in each of the bit operation circuits 1a1, ..., 1aN is realized by a storage device having a relatively small capacity such as SRAM. Therefore, as the number of spin bits increases, the capacity of the storage unit may be insufficient depending on the number of bits of the weighting coefficient. On the other hand, according to the optimization device 1, the setting changing unit 5 can also set the scale and accuracy so as to satisfy the limitation of the capacity of the storage unit. Specifically, it is conceivable that the setting changing unit 5 is set to reduce the number of bits of the weighting coefficient as the number of spin bits increases. Further, it is conceivable that the setting changing unit 5 is set to reduce the number of spin bits as the number of bits of the weighting coefficient increases.

また、上記の例では、N個のビット演算回路のうちのK個を、イジングモデルに使用するものとした。最適化装置1は、残りのN-K個のビット演算回路を不使用としてもよい。その場合、選択回路部2は、残りのN-K個のビット演算回路により出力されるフラグflgを全て、強制的に0に設定し、残りのN-K個のビット演算回路に対応するビットが反転候補として選択されないようにしてもよい。 Further, in the above example, K of the N bit operation circuits are used for the Ising model. The optimization device 1 may not use the remaining NK bit operation circuits. In that case, the selection circuit unit 2 forcibly sets all the flags flag output by the remaining NK bit operation circuits to 0, and the bits corresponding to the remaining NK bit operation circuits. May not be selected as an inversion candidate.

あるいは、最適化装置1は、N-K≧Kの場合、残りのN-K個のビット演算回路のうちのK個のビット演算回路により、前述のイジングモデルと同じイジングモデルを実現し、両イジングモデルにより同一問題処理の並列度を高めて計算を高速化してもよい。 Alternatively, when NK ≧ K, the optimizing device 1 realizes the same Ising model as the above-mentioned Ising model by the K bit operation circuit of the remaining NK bit operation circuits, and both. The Ising model may be used to increase the degree of parallelism in processing the same problem to speed up the calculation.

更に、最適化装置1は、残りのN-K個のビット演算回路のうちの一部を用いて、他の問題に対応する他のイジングモデルを実現し、前述のイジングモデルで表される問題と並列に、当該他の問題の演算を行ってもよい。 Further, the optimization device 1 realizes another Ising model corresponding to another problem by using a part of the remaining NK bit arithmetic circuits, and the problem represented by the above-mentioned Ising model. In parallel with, the operation of the other problem may be performed.

以下では、最適化装置1を用いる情報処理システムを例示し、最適化装置1の機能を更に詳細に説明する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
In the following, an information processing system using the optimization device 1 will be illustrated, and the functions of the optimization device 1 will be described in more detail.
[Second Embodiment]
Next, a second embodiment will be described.

図2は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、情報処理装置20とクライアント30とを有する。情報処理装置20およびクライアント30は、ネットワーク40に接続されている。ネットワーク40は、例えば、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどでもよい。
FIG. 2 is a diagram showing an example of an information processing system according to a second embodiment.
The information processing system of the second embodiment includes an information processing device 20 and a client 30. The information processing device 20 and the client 30 are connected to the network 40. The network 40 may be, for example, a LAN (Local Area Network), a WAN (Wide Area Network), the Internet, or the like.

情報処理装置20は、組合せ最適化問題をイジングモデルに置き換え、イジングモデルの基底状態の探索により、組合せ最適化問題を高速に解く機能を提供する。
クライアント30は、ユーザにより使用されるクライアントコンピュータであり、ユーザが解くべき問題の、情報処理装置20への入力に用いられる。
The information processing apparatus 20 provides a function of replacing a combinatorial optimization problem with an Ising model and solving the combinatorial optimization problem at high speed by searching for the ground state of the Ising model.
The client 30 is a client computer used by the user and is used to input a problem to be solved by the user to the information processing apparatus 20.

図3は、情報処理装置のハードウェア例を示すブロック図である。
情報処理装置20は、CPU(Central Processing Unit)21、DRAM(Dynamic Random Access Memory)22、記憶装置23、NIC(Network Interface Card)24、最適化装置25および媒体リーダ28を有する。
FIG. 3 is a block diagram showing a hardware example of the information processing apparatus.
The information processing device 20 includes a CPU (Central Processing Unit) 21, a DRAM (Dynamic Random Access Memory) 22, a storage device 23, a NIC (Network Interface Card) 24, an optimization device 25, and a medium reader 28.

CPU21、DRAM22、記憶装置23、NIC24、最適化装置25および媒体リーダ28は、情報処理装置20のバス29に接続されている。バス29は、例えば、PCIe(Peripheral Component Interconnect Express)バスである。 The CPU 21, DRAM 22, the storage device 23, the NIC 24, the optimization device 25, and the medium reader 28 are connected to the bus 29 of the information processing device 20. The bus 29 is, for example, a PCIe (Peripheral Component Interconnect Express) bus.

CPU21は、DRAM22に格納されたプログラムの命令を実行するプロセッサである。CPU21は、記憶装置23に記憶されたプログラムやデータの少なくとも一部をDRAM22にロードし、プログラムを実行する。CPU21は、当該プログラムを実行することで発揮される機能により、最適化装置25に対する設定や動作の制御を行う。 The CPU 21 is a processor that executes a program instruction stored in the DRAM 22. The CPU 21 loads at least a part of the programs and data stored in the storage device 23 into the DRAM 22 and executes the program. The CPU 21 controls the setting and operation of the optimization device 25 by the function exhibited by executing the program.

DRAM22は、情報処理装置20の主記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを一時的に記憶する。
記憶装置23は、情報処理装置20の補助記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを記憶する。記憶装置23は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などである。
The DRAM 22 is the main storage device of the information processing device 20, and temporarily stores programs executed by the CPU 21 and data set in the optimization device 25.
The storage device 23 is an auxiliary storage device of the information processing device 20, and stores programs executed by the CPU 21 and data set in the optimization device 25. The storage device 23 is, for example, an SSD (Solid State Drive) or an HDD (Hard Disk Drive).

NIC24は、ネットワーク40に接続され、ネットワーク40を介してクライアント30と通信する通信インタフェースである。NIC24は、例えば、ネットワーク40に属するスイッチやルータなどの通信装置とケーブルで接続される。 The NIC 24 is a communication interface that is connected to the network 40 and communicates with the client 30 via the network 40. The NIC 24 is connected to, for example, a communication device such as a switch or a router belonging to the network 40 by a cable.

最適化装置25は、CPU21の制御により、イジングモデルの基底状態を探索する。最適化装置25は、例えば、1チップの半導体集積回路であり、FPGAなどにより実現される。最適化装置25は、第1の実施の形態の最適化装置1の一例である。 The optimization device 25 searches for the ground state of the Ising model under the control of the CPU 21. The optimization device 25 is, for example, a one-chip semiconductor integrated circuit, and is realized by an FPGA or the like. The optimization device 25 is an example of the optimization device 1 of the first embodiment.

媒体リーダ28は、記録媒体41に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体41として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。 The medium reader 28 is a reading device that reads programs and data recorded on the recording medium 41. As the recording medium 41, for example, a magnetic disk, an optical disk, a magneto-optical disk (MO: Magneto-Optical disk), a semiconductor memory, or the like can be used. The magnetic disk includes a flexible disk (FD) and an HDD. Optical discs include CDs (Compact Discs) and DVDs (Digital Versatile Discs).

媒体リーダ28は、例えば、記録媒体41から読み取ったプログラムやデータを、DRAM22や記憶装置23などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU21によって実行される。なお、記録媒体41は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体41や記憶装置23を、コンピュータ読み取り可能な記録媒体と言うことがある。 The medium reader 28 copies, for example, a program or data read from the recording medium 41 to another recording medium such as the DRAM 22 or the storage device 23. The read program is executed by, for example, the CPU 21. The recording medium 41 may be a portable recording medium and may be used for distribution of programs and data. Further, the recording medium 41 and the storage device 23 may be referred to as a computer-readable recording medium.

なお、クライアント30はCPU、主記憶装置、補助記憶装置、NIC、マウスやキーボードなどの入力デバイスおよびディスプレイを有する。
図4は、情報処理システムにおけるハードウェアの関係の例を示す図である。
The client 30 has a CPU, a main storage device, an auxiliary storage device, an NIC, an input device such as a mouse and a keyboard, and a display.
FIG. 4 is a diagram showing an example of the relationship between hardware in an information processing system.

クライアント30は、ユーザプログラム31を実行する。ユーザプログラム31は、情報処理装置20への各種データ(例えば、解くべき問題の内容や最適化装置25の利用スケジュールなどの動作条件)の入力、および、最適化装置25による演算結果の表示などを行う。クライアント30と、NIC24とにより、情報処理装置20への各種データを入力する入力部および基底状態探索の結果として得られた解を、そのまま通知したり、或いは、ユーザに分かり易い結果情報(例えば、結果をグラフとして可視化した表示画面の情報)として表示する表示部が実現される。 The client 30 executes the user program 31. The user program 31 inputs various data (for example, operating conditions such as the content of the problem to be solved and the usage schedule of the optimization device 25) to the information processing device 20, and displays the calculation result by the optimization device 25. conduct. The client 30 and the NIC 24 notify the input unit for inputting various data to the information processing apparatus 20 and the solution obtained as a result of the base state search as they are, or result information that is easy for the user to understand (for example, for example). A display unit that displays the result as information on the display screen visualized as a graph is realized.

CPU21は、ライブラリ21aおよびドライバ21bを実行するプロセッサ(演算部)である。ライブラリ21aのプログラム、および、ドライバ21bのプログラムは、記憶装置23に格納されており、CPU21による実行時にDRAM22にロードされる。 The CPU 21 is a processor (arithmetic unit) that executes the library 21a and the driver 21b. The program of the library 21a and the program of the driver 21b are stored in the storage device 23, and are loaded into the DRAM 22 at the time of execution by the CPU 21.

ライブラリ21aは、ユーザプログラム31により入力された各種データを受け付け、ユーザが解くべき問題を、イジングモデルの最低エネルギー状態を探索する問題に変換する。ライブラリ21aは、変換後の問題に関する情報(例えば、スピンビット数、重み係数を表すビット数、重み係数の値、温度パラメータの初期値など)を、ドライバ21bに提供する。また、ライブラリ21aは、最適化装置25による解の探索結果をドライバ21bから取得し、当該探索結果をユーザに分かり易い結果情報に変換して、ユーザプログラム31に提供する。 The library 21a receives various data input by the user program 31 and converts the problem to be solved by the user into a problem of searching for the lowest energy state of the Ising model. The library 21a provides the driver 21b with information about the problem after conversion (eg, the number of spin bits, the number of bits representing the weighting factor, the value of the weighting factor, the initial value of the temperature parameter, and the like). Further, the library 21a acquires the search result of the solution by the optimization device 25 from the driver 21b, converts the search result into result information that is easy for the user to understand, and provides the search result to the user program 31.

ドライバ21bは、ライブラリ21aから提供された情報を最適化装置25に供給する。また、ドライバ21bは、イジングモデルによる解の探索結果を最適化装置25から取得し、ライブラリ21aに提供する。 The driver 21b supplies the information provided by the library 21a to the optimization device 25. Further, the driver 21b acquires the search result of the solution by the Ising model from the optimization device 25 and provides it to the library 21a.

最適化装置25は、ハードウェアとして、制御部25aおよびLFB(Local Field Block)50を有する。
制御部25aは、ドライバ21bから受け付けたLFB50の動作条件を記憶するRAMを有し、当該動作条件に基づいてLFB50による演算を制御する。また、制御部25aは、LFB50が備える各種のレジスタへの初期値の設定、SRAMへの重み係数の格納、および、演算終了後のスピンビット列(探索結果)の読み出しなどを行う。制御部25aは、例えば、FPGAにおける回路などによって実現される。
The optimization device 25 has a control unit 25a and an LFB (Local Field Block) 50 as hardware.
The control unit 25a has a RAM for storing the operating conditions of the LFB50 received from the driver 21b, and controls the calculation by the LFB50 based on the operating conditions. Further, the control unit 25a sets initial values in various registers provided in the LFB 50, stores the weighting coefficient in the SRAM, reads out the spin bit string (search result) after the calculation is completed, and the like. The control unit 25a is realized by, for example, a circuit in FPGA.

LFB50は、複数のLFE(Local Field Element)を有する。LFEは、スピンビットに対応する単位素子である。1つのLFEは、1つのスピンビットに対応する。後述するように、最適化装置25は、複数のLFBを有してもよい。 The LFB 50 has a plurality of LFEs (Local Field Elements). The LFE is a unit element corresponding to a spin bit. One LFE corresponds to one spin bit. As will be described later, the optimization device 25 may have a plurality of LFBs.

図5は、制御部のハードウェア例を示すブロック図である。
制御部25aは、CPU入出力部25a1、制御レジスタ25a2、LFB送信部25a3およびLFB受信部25a4を有する。
FIG. 5 is a block diagram showing a hardware example of the control unit.
The control unit 25a includes a CPU input / output unit 25a1, a control register 25a2, an LFB transmission unit 25a3, and an LFB reception unit 25a4.

CPU入出力部25a1は、CPU21から受け付けたデータを、制御レジスタ25a2またはLFB50に入力する。例えば、CPU入出力部25a1は、CPU21により入力された規模や精度や各パラメータの初期値や結合定数などの設定データやLFB50の動作条件のデータを、制御レジスタ25a2を介してLFB50に入力することもできるし、LFB50内の各レジスタやRAMに入力することもできる。 The CPU input / output unit 25a1 inputs the data received from the CPU 21 to the control register 25a2 or the LFB 50. For example, the CPU input / output unit 25a1 inputs setting data such as the scale and accuracy input by the CPU 21, initial values of each parameter, coupling constants, and operating condition data of the LFB 50 to the LFB 50 via the control register 25a 2. It can also be input to each register or RAM in the LFB50.

制御レジスタ25a2は、CPU入出力部25a1によるLFB50に対する各種の設定データを保持し、LFB送信部25a3に出力する。また、制御レジスタ25a2は、LFB受信部25a4によりLFB50から受信されたデータを保持し、CPU入出力部25a1に出力する。 The control register 25a2 holds various setting data for the LFB 50 by the CPU input / output unit 25a1 and outputs the setting data to the LFB transmission unit 25a3. Further, the control register 25a2 holds the data received from the LFB 50 by the LFB receiving unit 25a4 and outputs the data to the CPU input / output unit 25a1.

LFB送信部25a3は、制御レジスタ25a2に保持された設定データを、LFB50に送信する。
LFB受信部25a4は、LFB50からデータ(演算結果などのデータ)を受信し、制御レジスタ25a2に格納する。
The LFB transmission unit 25a3 transmits the setting data held in the control register 25a2 to the LFB 50.
The LFB receiving unit 25a4 receives data (data such as a calculation result) from the LFB 50 and stores it in the control register 25a2.

図6は、組合せ最適化問題の例を示す図である。
組合せ最適化問題の一例として、巡回セールスマン問題を考える。ここでは、簡単のため、A都市,B都市,C都市,D都市,E都市の5つの都市を、最少コスト(距離や料金など)で回る経路を求めるとする。グラフ201は、都市をノード、都市間の移動をエッジとした1つの経路を示す。この経路は、例えば、行を回る順番、列を都市に対応付けた行列202で表される。行列202は、行の小さい順に、ビット「1」が設定された都市を回ることを示す。更に、行列202は、スピンビット列に相当するバイナリ値203に変換できる。行列202の例では、バイナリ値203は、5×5=25ビットとなる。バイナリ値203(スピンビット列)のビット数は、巡回対象の都市が増すほど増加する。すなわち、組合せ最適化問題の規模が大きくなれば、より多くのスピンビットが所要され、スピンビット列のビット数(規模)が大きくなる。
FIG. 6 is a diagram showing an example of a combinatorial optimization problem.
As an example of the combinatorial optimization problem, consider the traveling salesman problem. Here, for the sake of simplicity, it is assumed that a route that goes around the five cities of A city, B city, C city, D city, and E city at the minimum cost (distance, fare, etc.) is found. Graph 201 shows one route with a city as a node and movement between cities as an edge. This route is represented by, for example, a matrix 202 in which the order of going around the rows and the columns are associated with the cities. The matrix 202 indicates to go around the city in which the bit "1" is set, in ascending order of rows. Further, the matrix 202 can be converted into a binary value 203 corresponding to a spin bit string. In the example of the matrix 202, the binary value 203 is 5 × 5 = 25 bits. The number of bits of the binary value 203 (spin bit string) increases as the number of cities to be visited increases. That is, as the scale of the combinatorial optimization problem increases, more spin bits are required, and the number of bits (scale) of the spin bit string increases.

次に、最少エネルギーとなるバイナリ値の探索例を説明する。
図7は、最少エネルギーとなるバイナリ値の探索例を示す図である。
まず、バイナリ値221のうちの1ビットを反転させる前(スピン反転前)のエネルギーをEinitとする。
Next, an example of searching for a binary value that is the minimum energy will be described.
FIG. 7 is a diagram showing an example of searching for a binary value that is the minimum energy.
First, the energy before inverting one bit of the binary value 221 (before spin inverting) is defined as E init .

最適化装置25は、バイナリ値221の任意の1ビットを反転させたときのエネルギー変化量ΔEを計算する。グラフ211は、横軸をバイナリ値、縦軸をエネルギーとして、エネルギー関数に応じた1ビット反転に対するエネルギー変化を例示している。最適化装置25は、式(2)によりΔEを求める。 The optimization device 25 calculates the energy change amount ΔE when inverting any one bit of the binary value 221. Graph 211 illustrates an energy change with respect to 1-bit inversion according to an energy function, where the horizontal axis is a binary value and the vertical axis is energy. The optimization device 25 obtains ΔE by the equation (2).

最適化装置25は、上記の計算を、バイナリ値221の全ビットに適用し、各々のビットの反転に対して、エネルギー変化量ΔEを計算する。例えば、バイナリ値221のビット数がNのとき、反転パターン222はN個になる。グラフ212は、反転パターン毎のエネルギー変化の様子を例示する。 The optimization device 25 applies the above calculation to all the bits of the binary value 221 and calculates the energy change amount ΔE for the inversion of each bit. For example, when the number of bits of the binary value 221 is N, the number of inversion patterns 222 is N. Graph 212 exemplifies the state of energy change for each inversion pattern.

最適化装置25は、反転パターン毎のΔEに基づいて、反転条件(閾値とΔEとの所定の判定条件)を満たした反転パターン222のうちからランダムで1つを選択する。最適化装置25は、選択された反転パターンに対応するΔEを、スピン反転前のEinitに加減算し、スピン反転後のエネルギー値Eを計算する。最適化装置は、求めたエネルギー値EをEinitとし、スピン反転後のバイナリ値223を用いて、上記の手順を繰り返し行う。The optimization device 25 randomly selects one of the inversion patterns 222 that satisfy the inversion conditions (predetermined determination conditions of the threshold value and ΔE) based on ΔE for each inversion pattern. The optimization device 25 adds / subtracts ΔE corresponding to the selected inversion pattern to the E init before the spin inversion, and calculates the energy value E after the spin inversion. The optimization device repeats the above procedure using the obtained energy value E as E init and the binary value 223 after spin inversion.

ここで、前述のように、式(2),(3)で用いられるWの1要素は、ビット間の相互作用の大きさを示すスピン反転の重み係数である。重み係数を表すビット数を精度と呼ぶ。精度が高いほど、スピン反転時のエネルギー変化量ΔEに対する条件を詳細に設定できる。例えば、Wの総サイズは、スピンビット列に含まれる2つのビットの全結合に対して「精度×スピンビット数×スピンビット数」である。一例として、スピンビット数が8k(=8192)の場合、Wの総サイズは、「精度×8k×8k」ビットとなる。 Here, as described above, one element of W used in the equations (2) and (3) is a spin inversion weighting coefficient indicating the magnitude of the interaction between the bits. The number of bits representing the weighting factor is called precision. The higher the accuracy, the more detailed the conditions for the energy change amount ΔE at the time of spin inversion can be set. For example, the total size of W is "precision x number of spin bits x number of spin bits" for the total coupling of two bits included in the spin bit string. As an example, when the number of spin bits is 8k (= 8192), the total size of W is “precision × 8k × 8k” bits.

次に、図7で例示した探索を行う最適化装置25の回路構成を説明する。
図8は、最適化装置の回路構成例を示す図である。
最適化装置25(あるいは、最適化装置25のLFB50)は、LFE51a1,51a2,…,51an、ランダムセレクタ部52、閾値生成部53、乱数生成部54、モード設定レジスタ55、加算器56およびE格納レジスタ57を有する。
Next, the circuit configuration of the optimization device 25 that performs the search illustrated in FIG. 7 will be described.
FIG. 8 is a diagram showing a circuit configuration example of the optimization device.
The optimization device 25 (or LFB50 of the optimization device 25) includes LFE51a1, 51a2, ..., 51an, a random selector unit 52, a threshold value generation unit 53, a random number generation unit 54, a mode setting register 55, an adder 56, and E storage. It has a register 57.

LFE51a1,51a2,…,51anの各々は、スピンビットの1ビットとして用いられる。nは、2以上の整数であり、LFB50が備えるLFEの数を示す。LFE51a1,51a2,…,51anの各々には、LFEの識別情報(index)が対応付けられている。LFE51a1,51a2,…,51anの各々に対して、index=0,1,…,n-1である。LFE51a1,51a2,…,51anは、第1の実施の形態のビット演算回路1a1,…,1aNの一例である。 Each of LFE51a1, 51a2, ..., 51an is used as one bit of the spin bit. n is an integer of 2 or more and indicates the number of LFEs included in the LFB 50. LFE identification information (index) is associated with each of LFE51a1, 51a2, ..., 51an. For each of LFE51a1, 51a2, ..., 51an, index = 0,1, ..., N-1. LFE51a1, 51a2, ..., 51an are examples of the bit operation circuits 1a1, ..., 1aN of the first embodiment.

以下では、LFE51a1の回路構成を説明する。LFE51a2,…,51anも、LFE51a1と同様の回路構成により実現される。LFE51a2,…,51anの回路構成の説明については、以下の説明における各要素の符号の末尾の「a1」の部分を、「a2」,…,「an」の各々に置換して(例えば、「60a1」の符号を「60an」のように置換して)読み替えればよい。また、h,q,ΔE,Wなどの各値の添え字についても、「a2」,…,「an」の各々に対応する添え字に置換して読み替えればよい。 Hereinafter, the circuit configuration of the LFE51a1 will be described. LFE51a2, ..., 51an are also realized by the same circuit configuration as LFE51a1. Regarding the description of the circuit configuration of LFE51a2, ..., 51an, the "a1" part at the end of the code of each element in the following description is replaced with each of "a2", ..., "An" (for example, "an". The code of "60a1" may be replaced with "60an"). Further, the subscripts of each value such as h, q, ΔE, and W may be replaced with the subscripts corresponding to each of "a2", ..., And "an".

LFE51a1は、SRAM60a1、精度切替回路61a1、Δh生成部62a1、加算器63a1、h格納レジスタ64a1、反転判定部65a1、ビット格納レジスタ66a1、ΔE生成部67a1、判定部68a1を有する。 The LFE51a1 has an SRAM 60a1, an accuracy switching circuit 61a1, a Δh generation unit 62a1, an adder 63a1, an h storage register 64a1, an inversion determination unit 65a1, a bit storage register 66a1, a ΔE generation unit 67a1, and a determination unit 68a1.

SRAM60a1は、重み係数Wを格納する。SRAM60a1は、第1の実施の形態の記憶部11に対応する。SRAM60a1には、全スピンビットの重み係数Wのうち、LFE51a1で使用される分だけ格納される。このため、スピンビット数をK(Kは2以上n以下の整数)とすると、SRAM60a1に格納される全重み係数のサイズは、「精度×K」ビットとなる。図8では、一例として、スピンビット数K=nの場合を例示している。この場合、SRAM60a1には、重み係数W00,W01,…,W0,n-1が格納される。SRAM 60a1 stores the weighting factor W. The SRAM 60a1 corresponds to the storage unit 11 of the first embodiment. The SRAM 60a1 stores only the weight coefficient W of all spin bits used in the LFE51a1. Therefore, assuming that the number of spin bits is K (K is an integer of 2 or more and n or less), the size of the total weighting factor stored in the SRAM 60a1 is “precision × K” bits. In FIG. 8, as an example, the case where the number of spin bits K = n is illustrated. In this case, the weight coefficients W 00 , W 01 , ..., W 0, n-1 are stored in the SRAM 60a1.

精度切替回路61a1は、反転ビットの識別情報であるindexと反転可を示すフラグFとをランダムセレクタ部52から取得し、反転ビットに対応する重み係数をSRAM60a1から抽出する。精度切替回路61a1は、抽出した重み係数を、Δh生成部62a1に出力する。例えば、精度切替回路61a1は、ランダムセレクタ部52によりSRAM60a1に格納されたindexとフラグFとを、SRAM60a1から取得してもよい。あるいは、精度切替回路61a1は、ランダムセレクタ部52からindexとフラグFとの供給を受ける信号線を有してもよい(図示を省略している)。 The precision switching circuit 61a1 acquires the index, which is the identification information of the inverting bit, and the flag F indicating inversion possible from the random selector unit 52, and extracts the weighting coefficient corresponding to the inverting bit from the SRAM 60a1. The precision switching circuit 61a1 outputs the extracted weighting factor to the Δh generation unit 62a1. For example, the precision switching circuit 61a1 may acquire the index and the flag F stored in the SRAM 60a1 by the random selector unit 52 from the SRAM 60a1. Alternatively, the precision switching circuit 61a1 may have a signal line to be supplied with the index and the flag F from the random selector unit 52 (not shown).

ここで、精度切替回路61a1は、モード設定レジスタ55に設定された重み係数のビット数(精度)の設定を受け付け、当該設定に応じて、SRAM60a1から読み出す重み係数のビット数を切り替える。 Here, the precision switching circuit 61a1 accepts the setting of the number of bits (precision) of the weighting coefficient set in the mode setting register 55, and switches the number of bits of the weighting coefficient read from the SRAM 60a1 according to the setting.

具体的には、精度切替回路61a1は、SRAM60a1から所定の単位ビット数のビット列(単位ビット列)を読み出すセレクタを有する。精度切替回路61a1は、当該セレクタにより反転ビットに対応する重み係数を含むビット数rの単位ビット列を読み出す。例えば、当該セレクタが読み出す単位ビット数rが、重み係数のビット数zよりも大きい場合、精度切替回路12は、読み出したビット列に対して、反転ビットに対応する重み係数を示すビット部分をLSB(Least Significant Bit)側にシフトさせ、それ以外のビット部分に0を代入することで、重み係数の読み出しを行う。あるいは、単位ビット数rが、モード設定レジスタ55により設定されたビット数zより小さい場合も考えられる。この場合、精度切替回路61a1は、当該セレクタにより読み出された複数の単位ビット列を結合することで、設定されたビット数zでの重み係数を抽出してもよい。 Specifically, the precision switching circuit 61a1 has a selector for reading a bit string (unit bit string) having a predetermined number of unit bits from the SRAM 60a1. The precision switching circuit 61a1 reads out a unit bit string of the number of bits r including the weighting coefficient corresponding to the inverting bit by the selector. For example, when the number of unit bits r read by the selector is larger than the number of bits z of the weighting coefficient, the precision switching circuit 12 sets the bit portion indicating the weighting coefficient corresponding to the inverting bit to the read bit string as LSB. By shifting to the Least Significant Bit) side and substituting 0 for the other bit parts, the weighting coefficient is read out. Alternatively, it is conceivable that the unit bit number r is smaller than the bit number z set by the mode setting register 55. In this case, the precision switching circuit 61a1 may extract the weighting coefficient at the set number of bits z by combining a plurality of unit bit strings read by the selector.

なお、精度切替回路61a1は、LFE51a2が備えるSRAM60a2にも接続される。後述するように、精度切替回路61a1は、SRAM60a2から重み係数を読み出すことも可能である。 The precision switching circuit 61a1 is also connected to the SRAM 60a2 included in the LFE51a2. As will be described later, the precision switching circuit 61a1 can also read the weighting factor from the SRAM 60a2.

Δh生成部62a1は、ランダムセレクタ部52から反転ビットの現在のビット値(今回の反転前のビット値)を受け付け、精度切替回路61a1から取得した重み係数を用いて、式(4)により、ローカルフィールドhの変化量Δhを計算する。Δh生成部62a1は、Δhを加算器63a1に出力する。The Δh generation unit 62a1 receives the current bit value of the inversion bit (the bit value before the inversion this time) from the random selector unit 52, and uses the weighting coefficient acquired from the precision switching circuit 61a1 to localize according to the equation (4). The amount of change Δh 0 in the field h 0 is calculated. The Δh generation unit 62a1 outputs Δh 0 to the adder 63a1.

加算器63a1は、h格納レジスタ64a1に格納されたローカルフィールドhにΔhを加算し、h格納レジスタ64a1に出力する。
h格納レジスタ64a1は、図示しないクロック信号に同期して、加算器63a1が出力する値(ローカルフィールドh)を取り込む。h格納レジスタ64a1は、例えば、フリップフロップである。なお、h格納レジスタ64a1に格納されるローカルフィールドhの初期値は、バイアス係数bである。当該初期値は、制御部25aにより設定される。
The adder 63a1 adds Δh 0 to the local field h 0 stored in the h storage register 64a1 and outputs it to the h storage register 64a1.
The storage register 64a1 captures a value (local field h 0 ) output by the adder 63a1 in synchronization with a clock signal (not shown). h The storage register 64a1 is, for example, a flip-flop. The initial value of the local field h 0 stored in the h storage register 64a1 is the bias coefficient b 0 . The initial value is set by the control unit 25a.

反転判定部65a1は、反転ビットのindex=jと、反転可否を示すフラグFとをランダムセレクタ部52から受け付け、自ビットが反転ビットとして選択されたか否かを判定する。自ビットが反転ビットとして選択された場合、反転判定部65a1は、ビット格納レジスタ66a1に格納されたスピンビットを反転させる。The inversion determination unit 65a1 receives the inversion bit index = j and the flag Fj indicating whether or not the inversion is possible from the random selector unit 52, and determines whether or not the own bit is selected as the inversion bit. When the own bit is selected as the inverting bit, the inverting determination unit 65a1 inverts the spin bit stored in the bit storage register 66a1.

ビット格納レジスタ66a1は、LFE51a1に対応するスピンビットを保持する。ビット格納レジスタ66a1は、例えば、フリップフロップである。ビット格納レジスタ66a1に格納されたスピンビットは、反転判定部65a1により反転される。ビット格納レジスタ66a1は、ΔE生成部67a1およびランダムセレクタ部52にスピンビットを出力する。 The bit storage register 66a1 holds a spin bit corresponding to LFE51a1. The bit storage register 66a1 is, for example, a flip-flop. The spin bits stored in the bit storage register 66a1 are inverted by the inversion determination unit 65a1. The bit storage register 66a1 outputs spin bits to the ΔE generation unit 67a1 and the random selector unit 52.

ΔE生成部67a1は、h格納レジスタ64a1のローカルフィールドhおよびビット格納レジスタ66a1のスピンビットに基づいて、自ビットの反転に応じたイジングモデルのエネルギー変化量ΔEを、式(2)により計算する。ΔE生成部67a1は、エネルギー変化量ΔEを、判定部68a1およびランダムセレクタ部52に出力する。The ΔE generation unit 67a1 calculates the energy change amount ΔE 0 of the Ising model according to the inversion of its own bit by the equation (2) based on the local field h 0 of the h storage register 64a1 and the spin bit of the bit storage register 66a1. do. The ΔE generation unit 67a1 outputs the energy change amount ΔE 0 to the determination unit 68a1 and the random selector unit 52.

判定部68a1は、ΔE生成部67a1により出力されたエネルギー変化量ΔEと、閾値生成部53により生成された閾値との比較により、自ビットの反転を許容するか否かを示す(自ビットの反転可否を示す)フラグFを、ランダムセレクタ部52に出力する。具体的には、判定部68a1は、ΔEが閾値-(T・f-1(u))より小さいときF=1(反転可)を出力し、ΔEが閾値-(T・f-1(u))以上のときF=0(反転不可)を出力する。ここで、f-1(u)は、適用法則に応じて、式(9),(10)の何れかで与えられる関数である。また、uは、区間[0,1)の一様乱数である。The determination unit 68a1 indicates whether or not to allow inversion of the own bit by comparing the energy change amount ΔE 0 output by the ΔE generation unit 67a1 with the threshold value generated by the threshold value generation unit 53 (of the own bit). The flag F0 (indicating whether or not inversion is possible) is output to the random selector unit 52. Specifically, the determination unit 68a1 outputs F 0 = 1 (reversible) when ΔE 0 is smaller than the threshold value − (T · f -1 (u)), and ΔE 0 is the threshold value − (T · f ). When 1 (u)) or more, F 0 = 0 (non-reversible) is output. Here, f -1 (u) is a function given by any of the equations (9) and (10) according to the applicable law. Further, u is a uniform random number in the interval [0,1).

ランダムセレクタ部52は、LFE51a1,51a2,…,51anの各々から、エネルギー変化量、スピンビットの反転可否を示すフラグおよびスピンビットを受け付け、反転可であるスピンビットのうち反転させるビット(反転ビット)を選択する。 The random selector unit 52 receives from each of LFE51a1, 51a2, ..., 51an an energy change amount, a flag indicating whether or not the spin bit can be inverted, and a spin bit, and among the invertable spin bits, the bit (inverted bit) to be inverted. Select.

ランダムセレクタ部52は、選択した反転ビットの現在のビット値(ビットq)を、LFE51a1,51a2,…,51anが備えるΔh生成部62a1,62a2,…,62anに供給する。ランダムセレクタ部52は、第1の実施の形態の選択回路部2の一例である。The random selector unit 52 supplies the current bit value (bit qj) of the selected inverted bit to the Δh generation unit 62a1 , 62a2, ..., 62an included in the LFE 51a1, 51a2, ..., 51an. The random selector unit 52 is an example of the selection circuit unit 2 of the first embodiment.

ランダムセレクタ部52は、反転ビットのindex=jと、反転可否を示すフラグFとを、LFE51a1,51a2,…,51anが備えるSRAM60a1,60a2,…,60anに出力する。なお、ランダムセレクタ部52は、前述のように、反転ビットのindex=jと、反転可否を示すフラグFとを、LFE51a1,51a2,…,51anが備える精度切替回路61a1,61a2,…,61anに出力してもよい。The random selector unit 52 outputs the index = j of the inversion bit and the flag F j indicating whether or not the inversion is possible to the SRAMs 60a1, 60a2, ..., 60an included in the LFE 51a1, 51a2, ..., 51an. As described above, the random selector unit 52 includes the inversion bit index = j and the flag F j indicating whether or not the inversion is possible in the precision switching circuits 61a1, 61a2, ..., 61an provided in the LFE 51a1, 51a2, ..., 51an. It may be output to.

また、ランダムセレクタ部52は、反転ビットのindex=jと、反転可否を示すフラグFとを、LFE51a1,51a2,…,51anが備える反転判定部65a1,65a2,…,65anに供給する。Further, the random selector unit 52 supplies the inversion bit index = j and the flag F j indicating whether or not the inversion is possible to the inversion determination units 65a1, 65a2, ..., 65an provided in the LFE 51a1, 51a2, ..., 51an.

更に、ランダムセレクタ部52は、選択した反転ビットに対応するΔEを、加算器56に供給する。
ここで、ランダムセレクタ部52は、あるイジングモデルにおけるスピンビット数(すなわち、使用するLFEの数)の設定を、モード設定レジスタ55から受け付ける。例えば、ランダムセレクタ部52は、indexの小さい方から順に、設定されたスピンビット数に相当する数のLFEを使用して、解の探索が行われるようにする。例えば、ランダムセレクタ部52は、n個のLFEのうち、K個のLFEを用いる場合、LFE51a1,…,LFE51aKのLFEに対応するスピンビット列から反転ビットを選択する。このとき、ランダムセレクタ部52は、例えば、使用しないn-K個のLFE51a(K-1),…,51anの各々から出力されるフラグFを、強制的に0に設定することが考えられる。
Further, the random selector unit 52 supplies ΔEj corresponding to the selected inversion bit to the adder 56.
Here, the random selector unit 52 accepts the setting of the number of spin bits (that is, the number of LFEs to be used) in a certain Ising model from the mode setting register 55. For example, the random selector unit 52 makes it possible to search for a solution by using a number of LFEs corresponding to the set number of spin bits in order from the smallest index. For example, when using K LFEs out of n LFEs, the random selector unit 52 selects inversion bits from the spin bit strings corresponding to the LFEs of LFE51a1, ..., LFE51aK. At this time, it is conceivable that the random selector unit 52 forcibly sets the flags F output from each of the unused n—K LFE51a (K-1), ..., 51an to 0.

閾値生成部53は、LFE51a1,51a2,…,51anが備える判定部68a1,68a2,…,68anに対して、エネルギー変化量ΔEとの比較に用いられる閾値を生成し、供給する。前述のように、閾値生成部53は、温度パラメータTと、区間[0,1)の一様乱数uと、式(9)または式(10)で示されるf-1(u)とを用いて、閾値を生成する。閾値生成部53は、例えば、LFE毎に個別に、乱数発生器を有し、LFE毎の乱数uを用いて閾値を生成する。ただし、幾つかのLFEで乱数発生器が共有されてもよい。温度パラメータTの初期値やシミュレーテッド・アニーリングにおける温度パラメータTの減少サイクルや減少量などは、制御部25aによって制御される。The threshold value generation unit 53 generates and supplies a threshold value used for comparison with the energy change amount ΔE to the determination units 68a1, 68a2, ..., 68an included in the LFE 51a1, 51a2, ..., 51an. As described above, the threshold generation unit 53 uses the temperature parameter T, the uniform random number u in the interval [0, 1), and f -1 (u) represented by the equation (9) or the equation (10). To generate a threshold. The threshold value generation unit 53 has, for example, a random number generator for each LFE individually, and generates a threshold value using the random number u for each LFE. However, the random number generator may be shared by some LFEs. The initial value of the temperature parameter T, the decrease cycle and the decrease amount of the temperature parameter T in simulated annealing, and the like are controlled by the control unit 25a.

乱数生成部54は、ランダムセレクタ部52における反転ビットの選択に用いられる乱数ビットを生成し、ランダムセレクタ部52に供給する。
モード設定レジスタ55は、LFE51a1,51a2,…,51anが備える精度切替回路61a1,61a2,61anに対して、重み係数のビット数(すなわち、精度)を示す信号を供給する。また、モード設定レジスタ55は、ランダムセレクタ部52に対して、スピンビット数(すなわち、規模)を示す信号を供給する。モード設定レジスタ55に対するスピンビット数や重み係数のビット数の設定は、制御部25aにより行われる。モード設定レジスタ55は、第1の実施の形態の設定変更部5の一例である。
The random number generation unit 54 generates random number bits used for selecting the inversion bit in the random selector unit 52, and supplies the random number bits to the random selector unit 52.
The mode setting register 55 supplies a signal indicating the number of bits of the weighting factor (that is, accuracy) to the accuracy switching circuits 61a1, 61a2, 61an included in the LFE 51a1, 51a2, ..., 51an. Further, the mode setting register 55 supplies a signal indicating the number of spin bits (that is, scale) to the random selector unit 52. The control unit 25a sets the number of spin bits and the number of weight coefficient bits for the mode setting register 55. The mode setting register 55 is an example of the setting changing unit 5 of the first embodiment.

加算器56は、ランダムセレクタ部52により出力されたエネルギー変化量ΔEを、E格納レジスタ57に格納されたエネルギー値Eに加算し、E格納レジスタ57に出力する。The adder 56 adds the energy change amount ΔEj output by the random selector unit 52 to the energy value E stored in the E storage register 57, and outputs the energy value to the E storage register 57.

E格納レジスタ57は、図示しないクロック信号に同期して、加算器56が出力するエネルギー値Eを取り込む。E格納レジスタ57は、例えば、フリップフロップである。なお、エネルギー値Eの初期値は、制御部25aによって式(1)を用いて計算され、E格納レジスタ57に設定される。 The E storage register 57 takes in the energy value E output by the adder 56 in synchronization with a clock signal (not shown). The E storage register 57 is, for example, a flip-flop. The initial value of the energy value E is calculated by the control unit 25a using the equation (1) and set in the E storage register 57.

例えば、解の探索にK個のLFEが用いられる場合、制御部25aはビット格納レジスタ66a1,…,66aKの各スピンビットを読み出すことで、スピンビット列を得る。
図9は、ランダムセレクタ部の回路構成例を示す図である。
For example, when K LFEs are used to search for a solution, the control unit 25a obtains a spin bit string by reading each spin bit of the bit storage registers 66a1, ..., 66aK.
FIG. 9 is a diagram showing a circuit configuration example of the random selector unit.

ランダムセレクタ部52は、フラグ制御部52aと複数段にわたってツリー状に接続された複数の選択回路とを有する。
フラグ制御部52aは、モード設定レジスタ55のスピンビット数の設定に応じて、初段の選択回路52a1,52a2,52a3,52a4,…,52aqの各々に入力されるフラグの値を制御する。図9では、選択回路52aqの1つの入力(LFE51anの出力に相当)に対するフラグの値を制御する部分回路52xnが例示されている。部分回路52xnのフラグ設定部52ynは、使用しないLFE51anから出力されるフラグFnを強制的に0に設定するスイッチである。
The random selector unit 52 has a flag control unit 52a and a plurality of selection circuits connected in a tree shape over a plurality of stages.
The flag control unit 52a controls the value of the flag input to each of the selection circuits 52a1, 52a2, 52a3, 52a4, ..., 52aq of the first stage according to the setting of the number of spin bits of the mode setting register 55. FIG. 9 illustrates a partial circuit 52xn that controls the value of the flag for one input of the selection circuit 52aq (corresponding to the output of the LFE51an). The flag setting unit 52yn of the partial circuit 52xn is a switch that forcibly sets the flag Fn output from the unused LFE51an to 0.

初段の選択回路52a1,52a2,52a3,52a4,…,52aqの各々には、LFE51a1,51a2,…,51anのそれぞれが出力する変数qとFとΔEの組が2組ずつ入力される。例えば、選択回路52a1には、LFE51a1が出力する変数qとFとΔEによる組と、LFE51a2が出力する変数qとFとΔEによる組とが入力される。また、選択回路52a2には、変数qとFとΔEによる組と変数qとFとΔEによる組が入力され、選択回路52a3には、変数qとFとΔEによる組と変数qとFとΔEによる組が入力される。更に、選択回路52a4には、変数qとFとΔEによる組と変数qとFとΔEによる組が入力され、選択回路52aqには、変数qn-2とFn-2とΔEn-2による組と変数qn-1とFn-1とΔEn-1による組が入力される。Two sets of variables q i , Fi and ΔE i output by each of the LFE 51a 1, 51a 2, ..., 51an are input to each of the selection circuits 52a1, 52a2, 52a3, 52a4, ..., 52aq in the first stage. .. For example, a set of variables q 0 , F 0 , and ΔE 0 output by LFE 51a 1 and a set of variables q 1 , F 1 , and ΔE 1 output by LFE 51a 2 are input to the selection circuit 52a 1. Further, a set of variables q 2 and F 2 and ΔE 2 and a set of variables q 3 and F 3 and ΔE 3 are input to the selection circuit 52a 2, and the variables q 4 and F 4 and ΔE 4 are input to the selection circuit 52a 3. And the set of variables q 5 and F 5 and ΔE 5 are input. Further, a set of variables q 6 and F 6 and ΔE 6 and a set of variables q 7 and F 7 and ΔE 7 are input to the selection circuit 52a 4, and the variables q n-2 and F n − are input to the selection circuit 52 aq. The set of 2 and ΔE n-2 and the set of variables q n-1 and F n-1 and ΔE n-1 are input.

そして、選択回路52a1,…,52aqの各々は、入力された2組の変数qとFとΔEと、乱数生成部54が出力する1ビット乱数に基づいて、一方の組の変数qとFとΔEを選択する。このとき、選択回路52a1,…,52aqの各々は、Fが1である組を優先的に選択し、両方の組が1の場合には1ビット乱数に基づいて何れか一方の組を選択する(他の選択回路も同様)。ここで、乱数生成部54は、1ビット乱数を選択回路毎に個別に生成し、各選択回路に供給する。また、選択回路52a1,…,52aqの各々は、どちらの組の変数qとFとΔEを選択したかを示す1ビットの識別値を生成し、選択した変数qとFとΔEと識別値とを含む信号(状態信号と言う)を出力する。なお、初段の選択回路52a1~52aqの数は、LFE51a1,…,51anの数の1/2、つまり、n/2である。Then, each of the selection circuits 52a1, ..., 52aq is based on two sets of input variables q i , Fi and ΔE i , and a one-bit random number output by the random number generation unit 54, and one set of variables q. Select i , Fi, and ΔE i . At this time, each of the selection circuits 52a1, ..., 52aq preferentially selects the set in which Fi is 1, and when both sets are 1, one of the sets is selected based on the 1-bit random number. (Same for other selection circuits). Here, the random number generation unit 54 individually generates a 1-bit random number for each selection circuit and supplies it to each selection circuit. Further, each of the selection circuits 52a1, ..., 52aq generates a 1-bit identification value indicating which set of variables qi, Fi and ΔE i is selected , and the selected variables qi and Fi A signal (referred to as a state signal) including ΔEi and an identification value is output. The number of selection circuits 52a1 to 52aq in the first stage is ½ of the numbers of LFE51a1, ..., 51an, that is, n / 2.

2段目の選択回路52b1,52b2,…,52brの各々には、選択回路52a1,…,52aqが出力する状態信号が2つずつ入力される。例えば、選択回路52b1には、選択回路52a1,52a2が出力する状態信号が入力され、選択回路52b2には、選択回路52a3,52a4が出力する状態信号が入力される。 Two state signals output by the selection circuits 52a1, ..., 52aq are input to each of the selection circuits 52b1, 52b2, ..., 52br in the second stage. For example, a state signal output by the selection circuits 52a1 and 52a2 is input to the selection circuit 52b1, and a state signal output by the selection circuits 52a3 and 52a4 is input to the selection circuit 52b2.

そして、選択回路52b1,…,52brの各々は、2つの状態信号と、乱数生成部54が出力する1ビット乱数に基づいて、2つの状態信号の何れか一方を選択する。また、選択回路52b1,…,52brのそれぞれは、選択した状態信号に含まれる識別値について何れの状態信号を選択したかを示すように1ビットを付加して更新し、選択した状態信号を出力する。 Then, each of the selection circuits 52b1, ..., 52br selects one of the two state signals based on the two state signals and the 1-bit random number output by the random number generation unit 54. Further, each of the selection circuits 52b1, ..., 52br is updated by adding 1 bit so as to indicate which state signal is selected for the identification value included in the selected state signal, and the selected state signal is output. do.

3段目以降の選択回路においても同様の処理が行われ、各段の選択回路で1ビットずつ識別値のビット幅が増えていき、最後段の選択回路52pから、ランダムセレクタ部52の出力である状態信号が出力される。ランダムセレクタ部52が出力する状態信号に含まれる識別値が、2進数で表された、反転ビットを示すindexである。 The same processing is performed in the selection circuit of the third and subsequent stages, the bit width of the identification value is increased by 1 bit in the selection circuit of each stage, and the output of the random selector unit 52 is output from the selection circuit 52p of the last stage. A certain state signal is output. The identification value included in the state signal output by the random selector unit 52 is an index represented by a binary number indicating an inverted bit.

ただし、ランダムセレクタ部52は、各LFEからフラグFとともに当該LFEに対応するindexを受け付け、変数qとFとΔEと同様に、各選択回路によりindexの選択を行うことで、反転ビットに対応するindexを出力してもよい。この場合、各LFEは、index格納用のレジスタを有し、当該レジスタからランダムセレクタ部52へindexを出力する。However, the random selector unit 52 accepts the index corresponding to the LFE together with the flag F from each LFE, and selects the index by each selection circuit in the same manner as the variables q i , Fi, and ΔE i , so that the inverting bit is used. The index corresponding to may be output. In this case, each LFE has a register for storing index, and outputs index from the register to the random selector unit 52.

このように、ランダムセレクタ部52は、LFE51a1,…,51anのうち、設定されたスピンビット数KのLFE51a1,…,51aK以外の他のLFE51a(K+1),…,51anにより出力された反転可否を示す信号を強制的に反転不可に設定する。ランダムセレクタ部52は、LFE51a1,…,51aKにより出力された反転可否を示す信号およびLFE51a(K+1),…,51anに対して設定した反転不可を示す信号に基づいて、反転ビットを選択する。ランダムセレクタ部52は、反転ビットを示す信号を、LFE51a1,…,51aKに加えてLFE51a(K+1),…,51anにも出力する。 In this way, the random selector unit 52 determines whether or not the inversion output is possible by the LFE51a (K + 1), ..., 51an other than the LFE51a1, ..., 51aK having the set spin bit number K among the LFE51a1, ..., 51an. Forcibly set the indicated signal so that it cannot be inverted. The random selector unit 52 selects an inversion bit based on the signal output by LFE51a1, ..., 51aK indicating whether or not inversion is possible and the signal indicating non-inversion set for LFE51a (K + 1), ..., 51an. The random selector unit 52 outputs a signal indicating an inverting bit to LFE51a (K + 1), ..., 51an in addition to LFE51a1, ..., 51aK.

こうして、フラグ制御部52aの制御により、使用されないLFEのフラグFが強制的に0に設定されるので、スピンビット列に使用されないLFEに対応するビットを反転候補から除外できる。 In this way, the flag F of the unused LFE is forcibly set to 0 by the control of the flag control unit 52a, so that the bit corresponding to the LFE not used in the spin bit string can be excluded from the inversion candidates.

次に、LFE51a1,…,51anの各々のSRAM60a1,60a2,…,60anに対する重み係数の格納例を説明する。まず、SRAM容量に対する規模と精度とのトレードオフ関係について説明する。 Next, an example of storing weighting coefficients for SRAMs 60a1, 60a2, ..., 60an of LFE51a1, ..., 51an will be described. First, the trade-off relationship between scale and accuracy with respect to SRAM capacity will be described.

図10は、規模と精度とのトレードオフ関係の例を示す図である。
前述したように、組合せ最適化問題の一例として、巡回セールスマン問題が挙げられる。巡回セールスマン問題は、巡回する都市数が多く、巡回条件(移動時間、移動距離、移動費等)が少なければ、低精度の問題となり、巡回条件が多い場合は高精度が必要となる。他にも、比較的低精度となる最適化問題として、エイトクイーン問題や四色問題といった、条件がある程度定まっている問題が挙げられる。一方、ポートフォリオ最適化問題は、金額や期間など条件が多くあるため、高精度が求められる。
FIG. 10 is a diagram showing an example of a trade-off relationship between scale and accuracy.
As mentioned above, the traveling salesman problem is an example of the combinatorial optimization problem. The traveling salesman problem is a low-precision problem if the number of cities to be visited is large and the traveling conditions (travel time, travel distance, travel cost, etc.) are small, and if there are many traveling conditions, high accuracy is required. Other optimization problems with relatively low accuracy include problems with certain conditions, such as the eight queens problem and the four-color problem. On the other hand, the portfolio optimization problem requires high accuracy because there are many conditions such as amount and period.

LFE毎のSRAMの容量に制限があると、規模と精度とにトレードオフ関係が生ずる。グラフ300は、LFE毎のSRAMにおいて重み係数の格納のための容量の上限が128k(キロ)ビットである場合の規模と精度とのトレードオフ関係を示している。ここで、1k(キロ)=1024とする。グラフ300の横軸は規模(kビット)であり、縦軸は精度(ビット)である。なお、一例として、n=8192であるとする。 If there is a limit to the capacity of SRAM for each LFE, there is a trade-off relationship between scale and accuracy. Graph 300 shows a trade-off relationship between scale and accuracy when the upper limit of the capacity for storing the weighting factor is 128 k (kilo) bits in the SRAM for each LFE. Here, 1k (kilo) = 1024. The horizontal axis of the graph 300 is the scale (k bits), and the vertical axis is the accuracy (bits). As an example, it is assumed that n = 8192.

この場合、規模1kビットに対して、精度は最大128ビットである。また、規模2kビットに対して、精度は最大64ビットである。規模4kビットに対して、精度は最大32ビットである。規模8kビットに対して、精度は最大16ビットである。 In this case, the maximum accuracy is 128 bits for a scale of 1 kbit. The maximum accuracy is 64 bits for a scale of 2 kbits. The maximum accuracy is 32 bits for a scale of 4 kbits. The accuracy is up to 16 bits for a scale of 8 kbits.

そこで、最適化装置25では、例えば、次の4つのモードを利用可能にする。第1のモードは、規模1kビット/精度128ビットのモードである。第2のモードは、規模2kビット/精度64ビットのモードである。第3のモードは、規模4kビット/精度32ビットのモードである。第4のモードは、規模8kビット/精度16ビットのモードである。次に、これら4種のモードの各々に応じた重み係数の格納例を説明する。重み係数は、制御部25aにより、SRAM60a1,60a2,…,60anの各々に格納される。なお、精度切替回路61a1,61a2,…,61anの各々のセレクタによりSRAM60a1,60a2,…,60anから読み出される単位ビット数は、一例として、128ビットであるとする。 Therefore, in the optimization device 25, for example, the following four modes are made available. The first mode is a mode with a scale of 1 kbit / precision of 128 bits. The second mode is a mode with a scale of 2 kbits and a precision of 64 bits. The third mode is a mode having a scale of 4 kbits and a precision of 32 bits. The fourth mode is a mode with a scale of 8 kbits and a precision of 16 bits. Next, an example of storing the weighting coefficient corresponding to each of these four modes will be described. The weighting coefficient is stored in each of the SRAMs 60a1, 60a2, ..., 60an by the control unit 25a. The number of unit bits read from the SRAMs 60a1, 60a2, ..., 60an by the selectors of the precision switching circuits 61a1, 61a2, ..., 61an is assumed to be 128 bits as an example.

図11は、重み係数の格納例(その1)を示す図である。
前述の第1のモード(規模1kビット/精度128ビット)を用いる場合、重み係数Wは式(11)で表される。
FIG. 11 is a diagram showing an example of storing the weighting factor (No. 1).
When the above-mentioned first mode (scale 1 kbit / precision 128 bits) is used, the weighting coefficient W is expressed by the equation (11).

Figure 0007004937000011
Figure 0007004937000011

データ1d1,1d2,…,1dsは、前述の第1のモード(規模1kビット/精度128ビット)を用いる場合のSRAM60a1,60a2,…,60asに対する重み係数の格納例を示す。ここで、s=1024である。データ1d1,1d2,…,1dsは、各々、SRAM60a1,60a2,…,60asに格納される。このモードでは、LFEは1k個(=1024個)使用される。なお、図中、LFE51a1,…,51asを、各々の識別番号を用いて、LFE0,…,LFE1023のように表記することがある(以降の図も同様)。 Data 1d1, 1d2, ..., 1ds show an example of storing weighting coefficients for SRAMs 60a1, 60a2, ..., 60as when the above-mentioned first mode (scale 1 kbit / precision 128 bits) is used. Here, s = 1024. The data 1d1, 1d2, ..., 1ds are stored in the SRAMs 60a1, 60a2, ..., 60as, respectively. In this mode, 1k (= 1024) LFEs are used. In the figure, LFE51a1, ..., 51as may be expressed as LFE0, ..., LFE1023 by using their respective identification numbers (the same applies to the following figures).

データ1d1は、LFE51a1(LFE0)のSRAM60a1に格納されるW0,0~W0,1023を示す。データ1d2は、LFE51a2(LFE1)のSRAM60a2に格納されるW1,0~W1,1023を示す。データ1dsは、LFE51as(LFE1023)のSRAM60asに格納されるW1023,0~W1023,1023を示す。1つの重み係数Wijのビット数は128ビットである。The data 1d1 indicates W0,0 to W0,1023 stored in the SRAM 60a1 of the LFE51a1 (LFE0). The data 1d2 show W 1,0 to W 1,1023 stored in the SRAM 60a2 of the LFE51a2 (LFE1). The data 1ds indicate W 1023, 0 to W 1023 , 1023 stored in the SRAM 60as of the LFE 51as (LFE 1023). The number of bits of one weighting coefficient Wij is 128 bits.

図12は、重み係数の格納例(その2)を示す図である。
前述の第2のモード(規模2kビット/精度64ビット)を用いる場合、重み係数Wは式(12)で表される。
FIG. 12 is a diagram showing an example of storing the weighting factor (No. 2).
When the above-mentioned second mode (scale 2 kbit / precision 64 bits) is used, the weighting coefficient W is expressed by the equation (12).

Figure 0007004937000012
Figure 0007004937000012

データ2d1,2d2,…,2dtは、前述の第2のモード(規模2kビット/精度64ビット)を用いる場合のSRAM60a1,60a2,…,60atに対する重み係数の格納例を示す。ここで、t=2048である。データ2d1,2d2,…,2dtは、各々、SRAM60a1,60a2,…,60atに格納される。このモードでは、LFEは2k個(=2048個)使用される。 The data 2d1, 2d2, ..., 2dt show an example of storing weighting coefficients for SRAMs 60a1, 60a2, ..., 60at when the above-mentioned second mode (scale 2 kbit / precision 64 bits) is used. Here, t = 2048. The data 2d1, 2d2, ..., 2dt are stored in the SRAMs 60a1, 60a2, ..., 60at, respectively. In this mode, 2k (= 2048) LFEs are used.

データ2d1は、LFE51a1(LFE0)のSRAM60a1に格納されるW0,0~W0,2047を示す。データ2d2は、LFE51a2(LFE1)のSRAM60a2に格納されるW1,0~W1,2047を示す。データ2dtは、LFE51at(LFE2047)のSRAM60atに格納されるW2047,0~W2047,2047を示す。1つの重み係数Wijのビット数は64ビットである。The data 2d1 indicates W0,0 to W0,2047 stored in the SRAM 60a1 of the LFE51a1 (LFE0). The data 2d2 show W 1,0 to W 1,2047 stored in the SRAM 60a2 of the LFE51a2 (LFE1). The data 2dt indicates W 2047, 0 to W 2047 , 2047 stored in the SRAM 60 at of the LFE 51at (LFE 2047). The number of bits of one weighting coefficient Wij is 64 bits.

図13は、重み係数の格納例(その3)を示す図である。
前述の第3のモード(規模4kビット/精度32ビット)を用いる場合、重み係数Wは式(13)で表される。
FIG. 13 is a diagram showing an example of storing the weighting factor (No. 3).
When the above-mentioned third mode (scale 4 kbits / precision 32 bits) is used, the weighting coefficient W is expressed by the equation (13).

Figure 0007004937000013
Figure 0007004937000013

データ3d1,3d2,…,3duは、前述の第3のモード(規模4kビット/精度32ビット)を用いる場合のSRAM60a1,60a2,…,60auに対する重み係数の格納例を示す。ここで、u=4096である。データ3d1,3d2,…,3duは、各々、SRAM60a1,60a2,…,60auに格納される。このモードでは、LFEは4k個(=4096個)使用される。 The data 3d1, 3d2, ..., 3du show an example of storing weighting coefficients for SRAMs 60a1, 60a2, ..., 60au when the above-mentioned third mode (scale 4 kbit / precision 32 bits) is used. Here, u = 4096. The data 3d1, 3d2, ..., 3du are stored in the SRAMs 60a1, 60a2, ..., 60au, respectively. In this mode, 4k (= 4096) LFEs are used.

データ3d1は、LFE51a1(LFE0)のSRAM60a1に格納されるW0,0~W0,4095を示す。データ3d2は、LFE51a2(LFE1)のSRAM60a2に格納されるW1,0~W1,4095を示す。データ3duは、LFE51au(LFE4095)のSRAM60auに格納されるW4095,0~W4095,4095を示す。1つの重み係数Wijのビット数は32ビットである。The data 3d1 indicates W0,0 to W0,4095 stored in the SRAM 60a1 of the LFE51a1 (LFE0). The data 3d2 show W 1,0 to W 1,4095 stored in the SRAM 60a2 of the LFE51a2 (LFE1). The data 3du indicates W 4095, 0 to W 4095 , 4095 stored in the SRAM 60au of the LFE51au (LFE4095). The number of bits of one weighting coefficient Wij is 32 bits.

図14は、重み係数の格納例(その4)を示す図である。
前述の第4のモード(規模8kビット/精度16ビット)を用いる場合、重み係数Wは式(14)で表される。
FIG. 14 is a diagram showing an example of storing the weighting factor (No. 4).
When the above-mentioned fourth mode (scale 8 kbits / precision 16 bits) is used, the weighting coefficient W is expressed by the equation (14).

Figure 0007004937000014
Figure 0007004937000014

データ4d1,4d2,…,4dnは、前述の第4のモード(規模8kビット/精度16ビット)を用いる場合のSRAM60a1,60a2,…,60anに対する重み係数の格納例を示す。ここで、n=8192である。データ4d1,4d2,…,4dnは、各々、SRAM60a1,60a2,…,60anに格納される。このモードでは、LFEは8k個(=8192個)使用される。 The data 4d1, 4d2, ..., 4dn show an example of storing the weighting coefficient for the SRAMs 60a1, 60a2, ..., 60an when the above-mentioned fourth mode (scale 8 kbit / precision 16 bit) is used. Here, n = 8192. The data 4d1, 4d2, ..., 4dn are stored in the SRAMs 60a1, 60a2, ..., 60an, respectively. In this mode, 8k (= 8192) LFEs are used.

データ4d1は、LFE51a1(LFE0)のSRAM60a1に格納されるW0,0~W0,8191を示す。データ4d2は、LFE51a2(LFE1)のSRAM60a2に格納されるW1,0~W1,8191を示す。データ4dnは、LFE51an(LFE8191)のSRAM60anに格納されるW8191,0~W8191,8191を示す。1つの重み係数Wijのビット数は16ビットである。The data 4d1 indicates W0,0 to W0.8191 stored in the SRAM 60a1 of the LFE51a1 (LFE0). The data 4d2 show W 1,0 to W 1,8911 stored in the SRAM 60a2 of the LFE51a2 (LFE1). The data 4dn shows W 8191,0 to W 8191 , 8191 stored in the SRAM 60an of the LFE51an (LFE8911). The number of bits of one weighting coefficient Wij is 16 bits.

次に、最適化装置25の処理手順を説明する。まず、最適化装置25の初期化処理の例を説明する。
図15は、初期化処理の例を示すフローチャートである。
Next, the processing procedure of the optimization device 25 will be described. First, an example of the initialization process of the optimization device 25 will be described.
FIG. 15 is a flowchart showing an example of the initialization process.

(S10)CPU21は、問題に応じた初期値および動作条件を最適化装置25に入力する。初期値は、例えば、エネルギー値E、ローカルフィールドh、スピンビットq、温度パラメータTの初期値および重み係数Wなどを含む。また、動作条件は、1つの温度パラメータでの状態の更新回数N1、温度パラメータの変更回数N2および温度パラメータの下げ幅などを含む。制御部25aは、入力された初期値および重み係数を、前述の各LFEのレジスタおよびSRAMに設定する。なお、制御部25aは、使用されないLFEがある場合、当該LFEのSRAMに、Wとして、例えば全て0を設定する。スピンビット間の重み係数Wは、問題に応じた精度に対応するビット数で表される。(S10) The CPU 21 inputs the initial value and the operating condition according to the problem to the optimization device 25. The initial value includes, for example, an energy value E, a local field hi, a spin bit qi , an initial value of the temperature parameter T, a weighting coefficient W, and the like. Further, the operating conditions include the number of times the state is updated N1 with one temperature parameter, the number of times the temperature parameter is changed N2, the amount of decrease in the temperature parameter, and the like. The control unit 25a sets the input initial value and the weighting coefficient in the register and SRAM of each of the above-mentioned LFEs. If there is an unused LFE, the control unit 25a sets, for example, all 0s as W in the SRAM of the LFE. The weighting coefficient W between the spin bits is represented by the number of bits corresponding to the accuracy according to the problem.

(S11)CPU21は、問題に応じたスピンビット数(規模)および重み係数のビット数(精度)を、最適化装置25に入力する。制御部25aは、CPU21からスピンビット数および重み係数のビット数を受け付け、モード設定レジスタ55に入力する。モード設定レジスタ55に入力された重み係数のビット数は、各LFEの精度切替回路に入力される。また、モード設定レジスタ55に入力されたスピンビット数は、ランダムセレクタ部52に入力される。 (S11) The CPU 21 inputs the number of spin bits (scale) and the number of weight coefficient bits (precision) according to the problem to the optimization device 25. The control unit 25a receives the number of spin bits and the number of weight coefficient bits from the CPU 21 and inputs them to the mode setting register 55. The number of bits of the weighting coefficient input to the mode setting register 55 is input to the accuracy switching circuit of each LFE. Further, the number of spin bits input to the mode setting register 55 is input to the random selector unit 52.

(S12)CPU21は、最適化装置25に演算開始フラグ(例えば、演算開始フラグ=1)を入力する。制御部25aは、演算開始フラグの入力を受け付け、LFB50による演算を開始する。こうして、初期化処理が終了する。 (S12) The CPU 21 inputs a calculation start flag (for example, a calculation start flag = 1) to the optimization device 25. The control unit 25a accepts the input of the calculation start flag and starts the calculation by the LFB 50. In this way, the initialization process is completed.

図16は、演算処理の例を示すフローチャートである。
ここで、図16の説明では、index=iに対応するLFEをLFE51ax(1番目のLFEはLFE51a1であり、n番目のLFEは51anである)と表記する。LFE51axに含まれる各部についても、例えば、SRAM60axのように、符号の末尾に「x」を付して表記する。LFE51a1,…,LFE51anの各々による演算は並列に実行される。
FIG. 16 is a flowchart showing an example of arithmetic processing.
Here, in the description of FIG. 16, the LFE corresponding to index = i is referred to as LFE51ax (the first LFE is LFE51a1 and the nth LFE is 51an). Each part included in the LFE51ax is also described by adding "x" to the end of the reference numeral, for example, SRAM 60ax. The operations by each of LFE51a1, ..., LFE51an are executed in parallel.

(S20)ΔE生成部67axは、h格納レジスタ64axに格納されたローカルフィールドhおよびビット格納レジスタ66axに格納されたビットqに基づいて、当該ビットqを反転させた場合のエネルギー変化量ΔEを生成する。ΔEの生成には、式(2)が用いられる。(S20) The ΔE generation unit 67ax is the amount of energy change when the bit q i is inverted based on the local field h i stored in the h storage register 64 ax and the bit q i stored in the bit storage register 66 ax. Generate ΔE i . Equation (2) is used to generate ΔE i .

(S21)判定部68axは、ΔE生成部67axにより生成されたエネルギー変化量ΔEと、閾値生成部53により生成された閾値(=-(T・f-1(u)))とを比較し、閾値>ΔEであるか否かを判定する。閾値>ΔEの場合、ステップS22に処理が進む。閾値≦ΔEの場合、ステップS23に処理が進む。(S21) The determination unit 68ax compares the energy change amount ΔE i generated by the ΔE generation unit 67ax with the threshold value (= − (T · f -1 (u))) generated by the threshold value generation unit 53. , It is determined whether or not the threshold value> ΔE i . When the threshold value> ΔE i , the process proceeds to step S22. When the threshold value ≤ ΔE i , the process proceeds to step S23.

(S22)判定部68axは、反転候補信号(F=1)をランダムセレクタ部52に出力する。そして、ステップS24に処理が進む。
(S23)判定部68axは、非反転信号(F=0)をランダムセレクタ部52に出力する。そして、ステップS24に処理が進む。
(S22) The determination unit 68ax outputs an inversion candidate signal (Fi = 1) to the random selector unit 52. Then, the process proceeds to step S24.
(S23) The determination unit 68ax outputs a non-inverting signal (Fi = 0) to the random selector unit 52. Then, the process proceeds to step S24.

(S24)ランダムセレクタ部52は、LFE51a1,…,LFE51anの各々から出力された全反転候補(F=1であるLFEに対応するビット)から、反転ビットを1つ選択する。ランダムセレクタ部52は、選択した反転ビットに対応するindex=j、F、qをLFE51a1,…,LFE51anに出力する。また、ランダムセレクタ部52は、選択した反転ビットに対応するΔEを、加算器56に出力する。すると、次のステップS25(エネルギー更新処理),S26(状態更新処理)が並列に開始される。(S24) The random selector unit 52 selects one inversion bit from all inversion candidates (bits corresponding to LFE with Fi = 1) output from each of LFE51a1 , ..., LFE51an. The random selector unit 52 outputs index = j, F j , q j corresponding to the selected inversion bit to LFE51a1, ..., LFE51an. Further, the random selector unit 52 outputs ΔEj corresponding to the selected inversion bit to the adder 56. Then, the next steps S25 (energy update process) and S26 (state update process) are started in parallel.

(S25)加算器56は、反転ビットに対応するエネルギー変化量ΔEを、エネルギー値Eに加算することで、E格納レジスタ57に格納されたエネルギー値Eを更新する。すなわち、E=E+ΔEである。そして、エネルギー更新処理が終了する。 (S25) The adder 56 updates the energy value E stored in the E storage register 57 by adding the energy change amount ΔE corresponding to the inverting bit to the energy value E. That is, E = E + ΔE. Then, the energy update process is completed.

(S26)精度切替回路61axは、反転ビットに対応するindex=jとフラグFとを取得し、当該反転ビットに対応する重み係数を含む単位ビット列をSRAM60axから読み出す。単位ビット列とは、精度切替回路61axのセレクタが、SRAM60axから一度に読み出すビット列の単位である。単位ビット列のビット数(単位ビット数)は、一例では、128ビットである(他の値でもよい)。この場合、ステップS26ではSRAM60axから128ビットの単位ビット列が読み出される。(S26) The precision switching circuit 61ax acquires index = j corresponding to the inverting bit and the flag Fj, and reads a unit bit string including a weighting coefficient corresponding to the inverting bit from the SRAM 60ax. The unit bit string is a unit of a bit string read from the SRAM 60ax at a time by the selector of the precision switching circuit 61ax. The number of bits (number of unit bits) of the unit bit string is 128 bits in one example (other values may be used). In this case, in step S26, a 128-bit unit bit string is read from the SRAM 60ax.

例えば、精度として、128/a(a=1,2,4,8)ビットが選択されている場合、精度切替回路61axは、SRAM60axの先頭(先頭を0番目とする)の単位ビット列から数えて「Integer(j/a)」番目の単位ビット列を読み出す。ここで、Integer(j/a)は、(j/a)の値から整数部を抽出する関数である。 For example, when 128 / a (a = 1, 2, 4, 8) bits are selected as the precision, the precision switching circuit 61ax counts from the unit bit string at the beginning of the SRAM 60ax (the beginning is the 0th). Read the "Integer (j / a)" th unit bit string. Here, Integer (j / a) is a function that extracts an integer part from the value of (j / a).

(S27)精度切替回路61axは、ステップS26で読み出された単位ビット列から、モード設定レジスタ55により設定されたモード選択に応じたビット数の重み係数(反転ビットqに対応する重み係数)Wijを抽出する。例えば、精度切替回路61axは、128ビットの単位ビット列からzビットのビット列を抽出する場合、前述のように反転ビットに対応するzビットのビット範囲をLSB側へシフトし、それ以外の上位ビットに0を設定することで、zビットの重み係数を抽出する。(S27) The precision switching circuit 61ax has a weight coefficient (weight coefficient corresponding to the inverted bit q j ) W of the number of bits corresponding to the mode selection set by the mode setting register 55 from the unit bit string read in step S26. Extract ij . For example, when the precision switching circuit 61ax extracts a z-bit bit string from a 128-bit unit bit string, the precision switching circuit 61ax shifts the z-bit bit range corresponding to the inverting bit to the LSB side as described above, and shifts the z-bit bit range to the other high-order bits. By setting 0, the weighting coefficient of the z-bit is extracted.

なお、精度切替回路61axは、ステップS26で読み出した単位ビット列を、先頭から精度に応じたビット長の区画に分けたときに、反転ビットに対応するビット範囲が先頭(0番目)から何番目の区画に対応するかにより当該ビット範囲を特定する。 In the accuracy switching circuit 61ax, when the unit bit string read in step S26 is divided into bit length sections corresponding to the accuracy from the beginning, the bit range corresponding to the inverting bit is the number from the beginning (0th). The bit range is specified depending on whether it corresponds to a partition.

図12~図14の例によれば、精度64ビットの場合、jが偶数のときに0番目の区画、jが奇数のときに1番目の区画である。また、精度32ビットの場合、mod(j,4)番目=0のときに0番目の区画、mod(j,4)=1のときに1番目の区画、mod(j,4)=2のときに2番目の区画、mod(j,4)=3のときに3番目の区画である。ここで、mod(u,v)は、uをvで除したときの剰余を示す関数である。更に、精度16ビットの場合も同様に、読み出した128ビットの単位ビット列の先頭から「mod(j,8)」番目の区画が、反転ビットに対応するビット範囲となる。なお、精度128ビットの場合、精度切替回路61axは、ステップS26で読み出された128ビットの単位ビット列を、そのまま反転ビットに対応する重み係数とする。 According to the examples of FIGS. 12 to 14, in the case of a precision of 64 bits, when j is an even number, it is the 0th partition, and when j is an odd number, it is the 1st partition. In the case of a precision of 32 bits, the 0th partition when mod (j, 4) th = 0, the 1st partition when mod (j, 4) = 1, and mod (j, 4) = 2. Sometimes it is the second section, and when mod (j, 4) = 3, it is the third section. Here, mod (u, v) is a function indicating the remainder when u is divided by v. Further, in the case of a precision of 16 bits, similarly, the "mod (j, 8)" th section from the beginning of the read 128-bit unit bit string is the bit range corresponding to the inverting bit. In the case of a precision of 128 bits, the precision switching circuit 61ax uses the 128-bit unit bit string read in step S26 as a weighting coefficient corresponding to the inverting bit as it is.

上記の例では、128/a(a=1,2,4,8)ビットの精度に対し、ステップS26で読み出された128ビットの単位ビット列の先頭から「mod(j,a)」番目の区画(1区画のサイズは128/aビット)が、反転ビットに対応する重み係数を示すビット範囲である。 In the above example, for the accuracy of 128 / a (a = 1, 2, 4, 8) bits, the 128-bit unit bit string read in step S26 is the "mod (j, a)" th from the beginning. The partition (the size of one partition is 128 / a bit) is a bit range indicating the weighting factor corresponding to the inverting bit.

(S28)Δh生成部62axは、反転ビットの反転方向と、精度切替回路61axにより抽出された重み係数Wijとに基づいて、Δhを生成する。Δhの生成には、式(4)が用いられる。また、反転ビットの反転方向は、ランダムセレクタ部52により出力される反転ビットq(今回の反転前のビット)により判別される。(S28) The Δh generation unit 62ax generates Δh i based on the inversion direction of the inversion bit and the weighting coefficient Wij extracted by the accuracy switching circuit 61ax. Equation (4) is used to generate Δh i . Further, the inversion direction of the inversion bit is determined by the inversion bit q j (bit before the inversion this time) output by the random selector unit 52.

(S29)加算器63axは、Δh生成部62axにより生成されたΔhを、h格納レジスタ64axに格納されたローカルフィールドhに加算することで、h格納レジスタ64axに格納されたローカルフィールドhを更新する。また、反転判定部65axは、ランダムセレクタ部52により出力されたindex=jおよびフラグFに基づいて、自ビットが反転ビットとして選択されたか否かを判定する。反転判定部65axは、自ビットが反転ビットとして選択された場合、ビット格納レジスタ66axに格納されたスピンビットを反転させ、自ビットが反転ビットとして選択されなかった場合、ビット格納レジスタ66axのスピンビットを維持する。ここで、自ビットが反転ビットとして選択された場合とは、ランダムセレクタ部52により出力された信号について、index=j=i、かつ、F=1の場合である。(S29) The adder 63ax adds the Δh i generated by the Δh generation unit 62ax to the local field h i stored in the h storage register 64ax, so that the local field h i stored in the h storage register 64ax. To update. Further, the inversion determination unit 65ax determines whether or not the own bit is selected as the inversion bit based on the index = j and the flag F j output by the random selector unit 52. The inverting determination unit 65ax inverts the spin bit stored in the bit storage register 66ax when the own bit is selected as the inverting bit, and when the own bit is not selected as the inverting bit, the spin bit of the bit storage register 66ax. To maintain. Here, the case where the own bit is selected as the inverting bit is the case where the signal output by the random selector unit 52 has index = j = i and F j = 1.

(S30)制御部25aは、現在の温度パラメータTにおいて、LFE51a1,…,LFE51anに保持される各スピンビットの更新処理回数がN1に達したか(更新処理回数=N1であるか)否かを判定する。更新処理回数がN1に達した場合、ステップS31に処理が進む。更新処理回数がN1に達していない場合、制御部25aは、更新処理回数に1を加算して、ステップS20に処理を進める。 (S30) The control unit 25a determines whether or not the number of update processes of each spin bit held in the LFE51a1, ..., LFE51an has reached N1 (the number of update processes = N1) in the current temperature parameter T. judge. When the number of update processes reaches N1, the process proceeds to step S31. If the number of update processes has not reached N1, the control unit 25a adds 1 to the number of update processes and proceeds to step S20.

(S31)制御部25aは、温度パラメータTの変更回数がN2に達したか(温度変更回数=N2であるか)否かを判定する。温度変更回数がN2に達した場合、ステップS33に処理が進む。温度変更回数がN2に達していない場合、制御部25aは、温度変更回数に1を加算して、ステップS32に処理を進める。 (S31) The control unit 25a determines whether or not the number of changes in the temperature parameter T has reached N2 (whether the number of temperature changes = N2). When the number of temperature changes reaches N2, the process proceeds to step S33. If the number of temperature changes has not reached N2, the control unit 25a adds 1 to the number of temperature changes and proceeds to step S32.

(S32)制御部25aは、温度パラメータTを変更する。具体的には、制御部25aは、動作条件に応じた下げ幅で、温度パラメータTの値を減少させる(温度を下げることに相当する)。そして、ステップS20に処理が進む。 (S32) The control unit 25a changes the temperature parameter T. Specifically, the control unit 25a reduces the value of the temperature parameter T (corresponding to lowering the temperature) by a lowering width according to the operating conditions. Then, the process proceeds to step S20.

(S33)制御部25aは、ビット格納レジスタ66axに格納されたスピンビットを読み出し、演算結果として出力する。具体的には、制御部25aは、モード設定レジスタ55により設定されたスピンビット数Kに対応するビット格納レジスタ66a1,…,66aKの各々に格納されたスピンビットを読み出し、CPU21に出力する。すなわち、制御部25aは、読み出したスピンビット列をCPU21に供給する。そして、演算処理が終了する。 (S33) The control unit 25a reads out the spin bits stored in the bit storage register 66ax and outputs them as an operation result. Specifically, the control unit 25a reads out the spin bits stored in each of the bit storage registers 66a1, ..., 66aK corresponding to the number of spin bits K set by the mode setting register 55, and outputs the spin bits to the CPU 21. That is, the control unit 25a supplies the read spin bit string to the CPU 21. Then, the arithmetic processing is completed.

なお、ステップS24において、ランダムセレクタ部52は、モード設定レジスタ55の設定に応じて、使用されないLFEにより出力されるFの値を、強制的に0に設定することで、使用されないLFEをビット反転の候補から除外することができる。 In step S24, the random selector unit 52 forcibly sets the value of F output by the unused LFE to 0 according to the setting of the mode setting register 55, thereby bit-inverting the unused LFE. Can be excluded from the candidates.

最適化装置25によれば、モード設定レジスタ55によりイジングモデルの状態を表すスピンビット数と重み係数のビット数との設定を可能とし、1チップの最適化装置25において、問題に合った規模および精度を実現できる。 According to the optimization device 25, the mode setting register 55 enables setting of the number of spin bits representing the state of the Ising model and the number of bits of the weighting factor, and in the one-chip optimization device 25, the scale and the scale suitable for the problem are set. Achieve accuracy.

より具体的には、精度切替回路61axは、モード設定レジスタ55の設定に応じて、SRAM60axから読み出す重み係数のビット長を切り替える。精度切替回路61axを用いることで、ステップS27で示したように、精度切替回路61axのセレクタがSRAM60axから読み出す単位ビット数を変更せずに、種々の精度を実現できる。例えば、精度切替回路61axのセレクタによるSRAM60axからの単位ビット数分の読み出し用の信号線の作り変えを要さずに、精度を可変にできる。 More specifically, the precision switching circuit 61ax switches the bit length of the weighting coefficient read from the SRAM 60ax according to the setting of the mode setting register 55. By using the precision switching circuit 61ax, as shown in step S27, various precisions can be realized without changing the number of unit bits read from the SRAM 60ax by the selector of the precision switching circuit 61ax. For example, the accuracy can be made variable without the need to remake the signal line for reading from the SRAM 60ax by the selector of the accuracy switching circuit 61ax for the number of unit bits.

また、ランダムセレクタ部52は、モード設定レジスタ55により設定されたスピンビット数に相当する数(例えば、K個)のLFEに対して、反転ビットを示す信号を入力し、当該数(K個)のLFEに対応するビットの中から反転ビットを選択する。ランダムセレクタ部52は、使用されないn-K個のLFEにも反転ビットを示す信号を入力するが、当該n-K個のLFEから出力されるフラグFを強制的に0(反転不可)に設定することで、使用されないLFEを反転ビットの選択候補から除外する。 Further, the random selector unit 52 inputs a signal indicating an inverting bit to a number (for example, K) of LFEs corresponding to the number of spin bits set by the mode setting register 55, and the number (K). Select the inverting bit from the bits corresponding to the LFE of. The random selector unit 52 inputs a signal indicating an inverting bit to the unused n—K LFEs, but forcibly sets the flag F output from the n—K LFEs to 0 (non-invertable). By doing so, unused LFEs are excluded from the selection candidates of the inversion bit.

これにより、問題に応じた規模および精度を備えた最適化装置を個別に製造しなくても、1つの最適化装置25によって、問題に応じた規模および精度でイジングモデルを実現できる。 As a result, the Ising model can be realized with the scale and accuracy according to the problem by one optimization device 25 without individually manufacturing the optimization device having the scale and accuracy according to the problem.

次に、モード設定の他の例を説明する。例えば、最適化装置25は、次のようにSRAM60a1,…,60anに重み係数を格納することで、前述の4種類のモードに加え、規模4kビット/精度64ビットの第5のモードを提供することもできる。 Next, another example of mode setting will be described. For example, the optimization device 25 provides a fifth mode having a scale of 4 kbits / precision of 64 bits in addition to the above-mentioned four modes by storing weighting coefficients in SRAMs 60a1, ..., 60an as follows. You can also do it.

図17は、結合係数の格納例(その5)を示す図である。
データ5d1,5d2,…,5dnは、前述の第5のモード(規模4kビット/精度64ビット)を用いる場合のSRAM60a1,60a2,…,60anに対する重み係数の格納例を示す。ここで、n=8192である。データ5d1,5d2,…,5dnは、各々、SRAM60a1,60a2,…,60anに格納される。このモードでは、スピンビット列として、LFEは4k個(=4096個)使用され、重み係数の格納のみの用途として、更に4k個(=4096個)のLFEが使用される。
FIG. 17 is a diagram showing an example of storing the coupling coefficient (No. 5).
The data 5d1, 5d2, ..., 5dn show an example of storing weighting coefficients for SRAMs 60a1, 60a2, ..., 60an when the above-mentioned fifth mode (scale 4 kbit / precision 64 bits) is used. Here, n = 8192. The data 5d1, 5d2, ..., 5dn are stored in the SRAMs 60a1, 60a2, ..., 60an, respectively. In this mode, 4k (= 4096) LFEs are used as spin bit strings, and an additional 4k (= 4096) LFEs are used only for storing weighting factors.

データ5d1は、LFE51a1(LFE0)のSRAM60a1に格納されるW0,0~W0,2047を示す。データ5d2は、LFE51a2(LFE1)のSRAM60a2に格納されるW0,2048~W0,4095を示す。データ5dnは、LFE51an(LFE8191)のSRAM60anに格納されるW4095,2048~W4095,4095を示す。1つの重み係数Wijのビット数は64ビットである。The data 5d1 indicates W0,0 to W0,2047 stored in the SRAM 60a1 of the LFE51a1 (LFE0). The data 5d2 show W0,2048 to W0,4095 stored in the SRAM 60a2 of the LFE51a2 (LFE1). The data 5dn shows W 4095, 2048 to W 4095, 4095 stored in SRAM 60an of LFE51an (LFE8911). The number of bits of one weighting coefficient Wij is 64 bits.

ここで、前述のように、LFE51a1の精度切替回路61a1は、LFE51a2のSRAM60a2からも重み係数を取得することができる。すなわち、精度切替回路61a1は、例えば、隣接するLFE51a2のSRAM60a2からの読み出し経路を利用することで、LFE51a2のSRAM60a2以外の機能を停止させ、SRAM60a2の容量をLFE51a1に貸し出す方法を採れる。例えば、奇数番目(先頭を1番目とする)のLFEにより偶数番目のLFEのSRAMを利用可能にする(あるいは、先頭を0番目とした場合は偶数番目のLFEにより奇数番目のLFEのSRAMを利用可能にするとも言える)。 Here, as described above, the accuracy switching circuit 61a1 of the LFE51a1 can also acquire the weighting coefficient from the SRAM 60a2 of the LFE51a2. That is, the precision switching circuit 61a1 can, for example, use a read path from the SRAM 60a2 of the adjacent LFE51a2 to stop the functions of the LFE51a2 other than the SRAM 60a2 and lend the capacity of the SRAM 60a2 to the LFE51a1. For example, the odd-numbered (first is the first) LFE enables the even-numbered LFE SRAM (or, if the first is the 0th, the even-numbered LFE uses the odd-numbered LFE SRAM. It can be said that it is possible).

このように、精度切替回路61a1,…,61anは、重み係数のビット数の変更に応じて、自ビットと他ビットとに関する重み係数のうちの一部を、スピンビットとして使用されない他のLFEが有するSRAMから読み出す。この場合、ランダムセレクタ部52は、例えば、スピンビットとして使用されない他のLFEから出力されるフラグFを強制的に0(反転不可)に設定することで、当該他のLFEに対応するビットを反転ビットの選択候補から除外してもよい。 As described above, in the precision switching circuits 61a1, ..., 61an, in response to the change in the number of bits of the weighting coefficient, a part of the weighting coefficient relating to the own bit and the other bit is used by another LFE that is not used as a spin bit. Read from the SRAM that has. In this case, the random selector unit 52 inverts the bits corresponding to the other LFE by forcibly setting the flag F output from another LFE that is not used as a spin bit to 0 (non-invertable). It may be excluded from the bit selection candidates.

これにより、規模4kビット/精度64ビットの第5のモードを実現できる。同様に、規模を小さくすることで、更に大きな精度を実現することもできる。このように、最適化装置25によれば、問題に応じて、規模および精度をより柔軟に変更することができる。 This makes it possible to realize a fifth mode having a scale of 4 kbits and an accuracy of 64 bits. Similarly, by reducing the scale, even greater accuracy can be achieved. Thus, according to the optimizer 25, the scale and accuracy can be changed more flexibly according to the problem.

[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
[Third Embodiment]
Next, a third embodiment will be described. The matters different from the second embodiment described above will be mainly described, and the description of common matters will be omitted.

第3の実施の形態では、第2の実施の形態の機能に加え、LFEを効率的に利用可能にする機能を提供する。
ここで、第3の実施の形態の情報処理システムの装置構成および情報処理装置20のハードウェア構成は、図2,図3と同様であるため、説明を省略する。第3の実施の形態の最適化装置は、第2の実施の形態の最適化装置25と回路構成の一部が異なる。
The third embodiment provides a function of efficiently using LFE in addition to the function of the second embodiment.
Here, since the device configuration of the information processing system and the hardware configuration of the information processing device 20 according to the third embodiment are the same as those in FIGS. 2 and 3, the description thereof will be omitted. The optimization device of the third embodiment is partially different from the optimization device 25 of the second embodiment in the circuit configuration.

図18は、第3の実施の形態の最適化装置の例を示す図である。
最適化装置26は、例えば、1チップの半導体集積回路であり、FPGAなどにより実現される。最適化装置26は、第1の実施の形態の最適化装置1の一例である。最適化装置26は、複数のLFBを有する。最適化装置26は、当該複数のLFBを制御する制御部25aを有する(図示を省略している)。
FIG. 18 is a diagram showing an example of an optimization device according to a third embodiment.
The optimization device 26 is, for example, a one-chip semiconductor integrated circuit, and is realized by an FPGA or the like. The optimization device 26 is an example of the optimization device 1 of the first embodiment. The optimization device 26 has a plurality of LFBs. The optimization device 26 has a control unit 25a that controls the plurality of LFBs (not shown).

第3の実施の形態では、一例として、1つのLFBに属するLFEの数をm個(mは2以上の整数)とし、最適化装置26は、LFB70a,70b,70c,70d,70e,70f,70g,70hを有するものとする。この場合、最適化装置26は、合計で8m個のLFEを有し、最大規模8mビットを実現可能である。ただし、最適化装置26が備えるLFBの個数は、8個に限らず、他の個数でもよい。 In the third embodiment, as an example, the number of LFEs belonging to one LFB is m (m is an integer of 2 or more), and the optimizer 26 has LFB70a, 70b, 70c, 70d, 70e, 70f, It shall have 70 g and 70 h. In this case, the optimization device 26 has a total of 8 m LFEs and can realize a maximum scale of 8 m bits. However, the number of LFBs included in the optimization device 26 is not limited to eight, and may be another number.

LFB70a,…,70hが備える複数のLFEは、第1の実施の形態のビット演算回路1a1,…,1aNの一例である。LFB70a,…,70hの各々は、所定数(m個)のLFEを要素に含む、LFEの1つのグループであると言える。また、LFB70a,…,70hの各々には、識別番号#0~#7が割り当てられている。 The plurality of LFEs included in the LFB 70a, ..., 70h are examples of the bit operation circuits 1a1, ..., 1aN of the first embodiment. It can be said that each of LFB70a, ..., 70h is one group of LFEs including a predetermined number (m pieces) of LFEs as elements. Further, identification numbers # 0 to # 7 are assigned to each of the LFB 70a, ..., 70h.

最適化装置26は、更に、規模結合回路91、モード設定レジスタ92、加算器93a,93b,93c,93d,93e,93f,93g,93hおよびE格納レジスタ94a,94b,94c,94d,94e,94f,94g,94hを有する。 The optimization device 26 further includes a scale coupling circuit 91, a mode setting register 92, adders 93a, 93b, 93c, 93d, 93e, 93f, 93g, 93h and E storage registers 94a, 94b, 94c, 94d, 94e, 94f. , 94 g, 94 h.

ここで、LFB70aは、LFE71a1,…,LFE71am、ランダムセレクタ部72、閾値生成部73、乱数生成部74およびモード設定レジスタ75を有する。LFE71a1,…,LFE71am、ランダムセレクタ部72、閾値生成部73、乱数生成部74およびモード設定レジスタ75は、図8で説明した第2の実施の形態の同名のハードウェアに相当するため、説明を省略する。ただし、ランダムセレクタ部72は、選択した反転ビットに対する状態信号(フラグFx0、スピンビットqx0およびエネルギー変化量ΔEx0)の組を、規模結合回路91に出力する。また、ランダムセレクタ部72は、フラグ制御部52aを有さなくてよい(ただし、有してもよい)。例えば、ランダムセレクタ部72では、各LFEからの状態信号が、フラグ制御部52aを介さずに、ランダムセレクタ部72の初段の各選択回路に2つずつ入力される。なお、LFB70b,…,70hも、LFB70aと同様の回路構成を有する。Here, the LFB 70a has LFE71a1, ..., LFE71am, a random selector unit 72, a threshold value generation unit 73, a random number generation unit 74, and a mode setting register 75. The LFE71a1, ..., LFE71am, the random selector unit 72, the threshold value generation unit 73, the random number generation unit 74, and the mode setting register 75 correspond to the hardware of the same name in the second embodiment described with reference to FIG. Omit. However, the random selector unit 72 outputs a set of state signals (flag F x0 , spin bit q x0 , and energy change amount ΔE x0 ) for the selected inversion bit to the scale coupling circuit 91. Further, the random selector unit 72 does not have to have (but may have) the flag control unit 52a. For example, in the random selector unit 72, two state signals from each LFE are input to each selection circuit in the first stage of the random selector unit 72 without going through the flag control unit 52a. The LFB70b, ..., 70h also have the same circuit configuration as the LFB70a.

規模結合回路91は、LFB70a,…,70hの各々から状態信号を受け付け、状態信号に基づいて反転ビットの選択を行う。規模結合回路91は、反転ビットに関する信号を、LFB70a,…,70hの各LFEに供給する。 The scale coupling circuit 91 receives a state signal from each of the LFB 70a, ..., 70h, and selects an inverting bit based on the state signal. The scale coupling circuit 91 supplies a signal relating to the inverting bit to each LFE of LFB70a, ..., 70h.

具体的には、規模結合回路91は、フラグFy0、ビットqy0および反転ビットを示すindex=y0をLFB70a1のLFE71a1,…,71amに出力する。ここで、以降の図では、ランダムセレクタ部72および規模結合回路91により出力される「index=x0」などの表記を「x0」のように略記することがある。規模結合回路91は、エネルギー変化量ΔEy0を加算器93aに出力する。Specifically, the scale coupling circuit 91 outputs the flag F y0 , the bit q y0 , and index = y0 indicating the inverting bit to the LFE71a1, ..., 71am of the LFB70a1. Here, in the following figures, the notation such as “index = x0” output by the random selector unit 72 and the scale coupling circuit 91 may be abbreviated as “x0”. The scale coupling circuit 91 outputs the energy change amount ΔE y0 to the adder 93a.

また、規模結合回路91は、フラグFy1、ビットqy1および反転ビットを示すindex=y1をLFB70bの各LFEに供給する。エネルギー変化量ΔEy1を加算器93bに出力する。Further, the scale coupling circuit 91 supplies the flag F y1 , the bit q y1 , and the index = y1 indicating the inverting bit to each LFE of the LFB 70b. The energy change amount ΔE y1 is output to the adder 93b.

規模結合回路91は、フラグFy2、ビットqy2および反転ビットを示すindex=y2をLFB70cの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy2を加算器93cに出力する。The scale coupling circuit 91 outputs the flag F y2 , the bit q y2 , and index = y2 indicating the inverting bit to each LFE of the LFB 70c. The scale coupling circuit 91 outputs the energy change amount ΔEy2 to the adder 93c.

規模結合回路91は、フラグFy3、ビットqy3および反転ビットを示すindex=y3をLFB70dの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy3を加算器93dに出力する。The scale coupling circuit 91 outputs the flag F y3 , the bit q y3 , and index = y3 indicating the inverting bit to each LFE of the LFB 70d. The scale coupling circuit 91 outputs the energy change amount ΔEy3 to the adder 93d.

規模結合回路91は、フラグFy4、ビットqy4および反転ビットを示すindex=y4をLFB70eの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy4を加算器93eに出力する。The scale coupling circuit 91 outputs the flag F y4 , the bit q y4 , and index = y4 indicating the inverting bit to each LFE of the LFB 70e. The scale coupling circuit 91 outputs the energy change amount ΔE y4 to the adder 93e.

規模結合回路91は、フラグFy5、ビットqy5および反転ビットを示すindex=y5をLFB70fの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy5を加算器93fに出力する。The scale coupling circuit 91 outputs the flag F y5 , the bit q y5 , and index = y5 indicating the inverting bit to each LFE of the LFB 70f. The scale coupling circuit 91 outputs the energy change amount ΔE y5 to the adder 93f.

規模結合回路91は、フラグFy6、ビットqy6および反転ビットを示すindex=y6をLFB70gの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy6を加算器93gに出力する。The scale coupling circuit 91 outputs the flag F y6 , the bit q y6 , and index = y6 indicating the inverting bit to each LFE of the LFB 70 g. The scale coupling circuit 91 outputs the energy change amount ΔE y6 to the adder 93 g.

規模結合回路91は、フラグFy7、ビットqy7および反転ビットを示すindex=y7をLFB70hの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy7を加算器93hに出力する。The scale coupling circuit 91 outputs the flag F y7 , the bit q y7 , and index = y7 indicating the inverting bit to each LFE of the LFB 70h. The scale coupling circuit 91 outputs the energy change amount ΔE y7 to the adder 93h.

LFB70a,…,70hの各々が有するランダムセレクタ部(ランダムセレクタ部72を含む)および規模結合回路91は、第1の実施の形態の選択回路部2の一例である。
モード設定レジスタ92は、規模結合回路91に対する動作モードの設定を行う。モード設定レジスタ92は、モード設定レジスタ75によりLFE71a1,…,71amおよびランダムセレクタ部72に設定される動作モードと同じ動作モードを規模結合回路91に設定する。モード設定レジスタ75,92によるモード設定の詳細は後述される。LFB70a,…,70hの各々が有するモード設定レジスタ(モード設定レジスタ75を含む)およびモード設定レジスタ92は、第1の実施の形態の設定変更部5の一例である。
The random selector unit (including the random selector unit 72) and the scale coupling circuit 91 of each of the LFB 70a, ..., 70h are examples of the selection circuit unit 2 of the first embodiment.
The mode setting register 92 sets the operation mode for the scale coupling circuit 91. The mode setting register 92 sets the same operation mode as the operation mode set in the LFE71a1, ..., 71am and the random selector unit 72 by the mode setting register 75 in the scale coupling circuit 91. Details of the mode setting by the mode setting registers 75 and 92 will be described later. The mode setting register (including the mode setting register 75) and the mode setting register 92 of each of the LFB 70a, ..., 70h are examples of the setting change unit 5 of the first embodiment.

加算器93aは、ΔEy0を、E格納レジスタ94aに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94aは、例えば、クロック信号(図示を省略している)に同期して(他のE格納レジスタも同様)、加算器93aにより計算されたエネルギー値Eを取り込む。The adder 93a updates the energy value E 0 by adding ΔE y0 to the energy value E 0 stored in the E storage register 94a. The E storage register 94a takes in the energy value E 0 calculated by the adder 93a, for example, in synchronization with a clock signal (not shown) (as well as other E storage registers).

加算器93bは、ΔEy1を、E格納レジスタ94bに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94bは、加算器93bにより計算されたエネルギー値Eを取り込む。The adder 93b updates the energy value E 1 by adding ΔE y1 to the energy value E 1 stored in the E storage register 94b. The E storage register 94b takes in the energy value E1 calculated by the adder 93b.

加算器93cは、ΔEy2を、E格納レジスタ94cに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94cは、加算器93cにより計算されたエネルギー値Eを取り込む。The adder 93c updates the energy value E 2 by adding ΔE y2 to the energy value E 2 stored in the E storage register 94c. The E storage register 94c takes in the energy value E 2 calculated by the adder 93c.

加算器93dは、ΔEy3を、E格納レジスタ94dに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94dは、加算器93dにより計算されたエネルギー値Eを取り込む。The adder 93d updates the energy value E 3 by adding ΔE y3 to the energy value E 3 stored in the E storage register 94d. The E storage register 94d takes in the energy value E3 calculated by the adder 93d.

加算器93eは、ΔEy4を、E格納レジスタ94eに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94eは、加算器93eにより計算されたエネルギー値Eを取り込む。The adder 93e updates the energy value E 4 by adding ΔE y4 to the energy value E 4 stored in the E storage register 94e. The E storage register 94e takes in the energy value E4 calculated by the adder 93e .

加算器93fは、ΔEy5を、E格納レジスタ94fに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94fは、加算器93fにより計算されたエネルギー値Eを取り込む。The adder 93f updates the energy value E 5 by adding ΔE y5 to the energy value E 5 stored in the E storage register 94f. The E storage register 94f takes in the energy value E5 calculated by the adder 93f .

加算器93gは、ΔEy6を、E格納レジスタ94gに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94gは、加算器93gにより計算されたエネルギー値Eを取り込む。The adder 93g updates the energy value E 6 by adding ΔE y6 to the energy value E 6 stored in the E storage register 94g. The E storage register 94 g takes in the energy value E 6 calculated by the adder 93 g.

加算器93hは、ΔEy7を、E格納レジスタ94hに格納されているエネルギー値Eに加算することで、当該エネルギー値Eを更新する。E格納レジスタ94hは、加算器93hにより計算されたエネルギー値Eを取り込む。The adder 93h updates the energy value E 7 by adding ΔE y7 to the energy value E 7 stored in the E storage register 94h. The E storage register 94h takes in the energy value E7 calculated by the adder 93h .

E格納レジスタ94a,…,94hの各々は、例えば、フリップフロップである。
次に、LFB70aの回路構成例を説明する。LFB70b,…,70hもLFB70aと同様の回路構成である。
Each of the E storage registers 94a, ..., 94h is, for example, a flip-flop.
Next, a circuit configuration example of the LFB 70a will be described. The LFB70b, ..., 70h also have the same circuit configuration as the LFB70a.

図19は、LFBの回路構成例を示す図である。
LFE71a1,71a2,…,71amの各々は、スピンビットの1ビットとして用いられる。mは、2以上の整数であり、LFB70aが備えるLFEの数を示す。図19では、一例として、m=1024としている。ただし、mは他の値でもよい。
FIG. 19 is a diagram showing an example of an LFB circuit configuration.
Each of LFE71a1, 71a2, ..., 71am is used as one bit of the spin bit. m is an integer of 2 or more, and indicates the number of LFEs included in the LFB70a. In FIG. 19, m = 1024 is set as an example. However, m may be another value.

LFE71a1,71a2,…,71amの各々には、識別情報(index)が対応付けられている。LFE71a1,71a2,…,71amの各々に対して、index=0,1,…,1023である。 Identification information (index) is associated with each of LFE71a1, 71a2, ..., 71am. For each of LFE71a1, 71a2, ..., 71am, index = 0,1, ..., 1023.

以下では、LFE71a1の回路構成を説明する。LFE71a2,…,71amも、LFE71a1と同様の回路構成により実現される。LFE71a2,…,71amの回路構成の説明については、以下の説明における各要素の符号の末尾の「a1」の部分を、「a2」,…,「am」の各々に置換して(例えば、「80a1」の符号を「80am」のように置換して)読み替えればよい。 Hereinafter, the circuit configuration of the LFE71a1 will be described. LFE71a2, ..., 71am are also realized by the same circuit configuration as LFE71a1. Regarding the description of the circuit configuration of LFE71a2, ..., 71am, the "a1" part at the end of the code of each element in the following description is replaced with each of "a2", ..., "Am" (for example, "a2", ..., "am". The code of "80a1" may be replaced with "80am").

LFE71a1は、SRAM80a1、精度切替回路81a1、Δh生成部82a1、加算器83a1、h格納レジスタ84a1、反転判定部85a1、ビット格納レジスタ86a1、ΔE生成部87a1、判定部88a1を有する。 The LFE71a1 has an SRAM 80a1, an accuracy switching circuit 81a1, a Δh generation unit 82a1, an adder 83a1, an h storage register 84a1, an inversion determination unit 85a1, a bit storage register 86a1, a ΔE generation unit 87a1, and a determination unit 88a1.

ここで、SRAM80a1、精度切替回路81a1、Δh生成部82a1、加算器83a1、h格納レジスタ84a1、反転判定部85a1、ビット格納レジスタ86a1、ΔE生成部87a1、判定部88a1は、各々、図8で説明した同名のハードウェアと同様の機能を有する。ただし、SRAM80a1(または精度切替回路81a1)および反転判定部85a1には、規模結合回路91により出力されたindex=y0および反転可否を示すフラグFy0が供給される。また、Δh生成部82a1には、規模結合回路91により出力された反転ビットqy0が供給される。Here, the SRAM 80a1, the precision switching circuit 81a1, the Δh generation unit 82a1, the adder 83a1, the h storage register 84a1, the inversion determination unit 85a1, the bit storage register 86a1, the ΔE generation unit 87a1, and the determination unit 88a1 are described with reference to FIG. 8, respectively. It has the same function as the hardware of the same name. However, the SRAM 80a1 (or the precision switching circuit 81a1) and the inversion determination unit 85a1 are supplied with index = y0 output by the scale coupling circuit 91 and a flag Fy0 indicating whether or not inversion is possible. Further, the inverting bit q y0 output by the scale coupling circuit 91 is supplied to the Δh generation unit 82a1.

モード設定レジスタ75は、精度切替回路81a1,81a2,…,81amに対する重み係数のビット数(精度)の設定を行う。モード設定レジスタ75は、ランダムセレクタ部72に対して設定を行う信号線を有していない(ただし、当該信号線を有してもよい)。第3の実施の形態では、一例として、第2の実施の形態で示した次の5種類のモードを利用可能である。 The mode setting register 75 sets the number of bits (precision) of the weighting coefficient for the precision switching circuits 81a1, 81a2, ..., 81am. The mode setting register 75 does not have a signal line for setting the random selector unit 72 (however, the mode setting register 75 may have the signal line). In the third embodiment, as an example, the following five types of modes shown in the second embodiment can be used.

第1のモードは、規模1kビット/精度128ビットのモードである。規模1kビット/精度128ビットのモードは、LFBを1個使用する。当該モードは、LFB70a,…,70hの何れか1個だけで実現可能である。 The first mode is a mode with a scale of 1 kbit / precision of 128 bits. The 1 kbit scale / 128 bit precision mode uses one LFB. The mode can be realized with only one of LFB70a, ..., 70h.

第2のモードは、規模2kビット/精度64ビットのモードである。規模2kビット/精度64ビットのモードは、LFBを2個使用する。例えば、当該モードは、LFB70a,70bの組合せ、LFB70c,70dの組合せ、LFB70e,70fの組合せ、および、LFB70g,70hの組合せのうちの何れか1つの組合せで実現可能である。 The second mode is a mode with a scale of 2 kbits and a precision of 64 bits. The 2 kbit scale / 64 bit precision mode uses two LFBs. For example, the mode can be realized by any one of a combination of LFB70a and 70b, a combination of LFB70c and 70d, a combination of LFB70e and 70f, and a combination of LFB70g and 70h.

第3のモードは、規模4kビット/精度32ビットのモードである。規模4kビット/精度32ビットのモードは、LFBを4個使用する。例えば、当該モードは、LFB70a,70b,70c,70dの組合せ、および、LFB70e,70f,70g,70hの組合せのうちの何れか1つの組合せで実現可能である。 The third mode is a mode having a scale of 4 kbits and a precision of 32 bits. The 4 kbit scale / 32 bit precision mode uses four LFBs. For example, the mode can be realized by any one combination of LFB70a, 70b, 70c, 70d and LFB70e, 70f, 70g, 70h.

第4のモードは、規模4kビット/精度64ビットのモードである。規模4kビット/精度64ビットのモードは、LFBを8個使用する。当該モードは、LFB70a,…,70hの組合せを用いて実現可能である。ただし、図17で説明したように、1つのLFBにおいて使用されるLFEの数は、LFB1つが備えるLFEの数の半分となる。 The fourth mode is a mode having a scale of 4 kbits and a precision of 64 bits. The 4 kbit scale / 64 bit precision mode uses eight LFBs. The mode can be realized by using a combination of LFB70a, ..., 70h. However, as described with reference to FIG. 17, the number of LFEs used in one LFB is half the number of LFEs included in one LFB.

第5のモードは、規模8kビット/精度16ビットのモードである。規模8kビット/精度16ビットのモードは、LFBを8個使用する。当該モードは、LFB70a,…,70hの組合せを用いて実現可能である。 The fifth mode is a mode with a scale of 8 kbits and a precision of 16 bits. The 8 kbit scale / 16 bit precision mode uses eight LFBs. The mode can be realized by using a combination of LFB70a, ..., 70h.

また、第3の実施の形態の最適化装置26は、上記の規模1kビット/精度128ビットのモード、規模2kビット/精度64ビットのモード、規模4kビット/精度32ビットのモードを組合せて、同一問題または他の問題の演算を並列に実行可能にする。 Further, the optimization device 26 of the third embodiment combines the above-mentioned scale 1 kbit / precision 128 bit mode, scale 2 kbit / precision 64 bit mode, and scale 4 kbit / precision 32 bit mode. Allows operations on the same or other problems to be performed in parallel.

そのため、規模結合回路91は、複数のLFB(LFBの組合せ)に対し、モード設定レジスタ92によるスピンビット数の変更に応じて、スピンビット数に相当する数のLFEを含むように、組合せるLFB数(組合せるグループ数)を選択する。規模結合回路91は、例えば次の回路構成を有する。 Therefore, the scale coupling circuit 91 combines a plurality of LFBs (combination of LFBs) so as to include a number of LFEs corresponding to the number of spin bits according to the change of the number of spin bits by the mode setting register 92. Select the number (number of groups to combine). The scale coupling circuit 91 has, for example, the following circuit configuration.

図20は、規模結合回路の回路構成例を示す図である。
規模結合回路91は、複数段にわたってツリー状に接続された選択回路91a1,91a2,91a3,91a4,91b1,91b2,91c1と、乱数生成部91dと、モード選択回路91e1,91e2,91e3,91e4,91e5,91e6,91e7,91e8を有する。
FIG. 20 is a diagram showing a circuit configuration example of a scale coupling circuit.
The scale coupling circuit 91 includes a selection circuit 91a1, 91a2, 91a3, 91a4, 91b1, 91b2, 91c1 connected in a tree shape over a plurality of stages, a random number generation unit 91d, and a mode selection circuit 91e1, 91e2, 91e3, 91e4, 91e5. , 91e6, 91e7, 91e8.

初段の選択回路91a1,…,91a4の各々には、LFB70a,…,70hのそれぞれが出力する変数qとFとΔEとindex=iの組(状態信号)が2組ずつ入力される。例えば、選択回路91a1には、LFB70a(#0)が出力する(qx0,Fx0,ΔEx0,index=x0)の組と、LFB70b(#1)が出力する(qx1,Fx1,ΔEx1,index=x1)の組が入力される。また、選択回路91a2には、LFB70c(#2)が出力する(qx2,Fx2,ΔEx2,index=x2)の組とLFB70d(#3)が出力する(qx3,Fx3,ΔEx3,index=x3)の組が入力される。選択回路91a3には、LFB70e(#4)が出力する(qx4,Fx4,ΔEx4,index=x4)の組とLFB70f(#5)が出力する(qx5,Fx5,ΔEx5,index=x5)の組が入力される。選択回路91a4には、LFB70g(#6)が出力する(qx6,Fx6,ΔEx6,index=x6)の組とLFB70h(#7)が出力する(qx7,Fx7,ΔEx7,index=x7)の組が入力される。Two sets (state signals) of variables qi, Fi, ΔE i , and index = i output by each of the LFB70a, ..., 70h are input to each of the selection circuits 91a1, ..., 91a4 in the first stage. .. For example, the selection circuit 91a1 has a set of (q x0 , F x0 , ΔE x0 , index = x0) output by LFB70a (# 0) and a set (q x1 , F x1 , ΔE) output by LFB70b (# 1). The set of x1 , index = x1) is input. Further, in the selection circuit 91a2, a set of (q x2 , F x2 , ΔE x2 , index = x2) output by LFB70c (# 2) and a set (q x3 , F x3 , ΔE x3 ) output by LFB70d (# 3) are output. , Index = x3) is input. The selection circuit 91a3 has a set of (q x4 , F x4 , ΔE x4 , index = x4) output by LFB70e (# 4) and a set (q x5 , F x5 , ΔE x5 , index) output by LFB70f (# 5). = The set of x5) is input. In the selection circuit 91a4, a set of (q x6 , F x6 , ΔE x6 , index = x6) output by LFB70g (# 6) and a set (q x7 , F x7 , ΔE x7 , index) output by LFB70h (# 7) = The set of x7) is input.

そして、選択回路91a1,…,91a4の各々は、乱数生成部91dが出力する1ビット乱数に基づいて、2組のうちの一方の組の(x,F,ΔE,index=i)を選択する。このとき、選択回路91a1,…,91a4の各々は、Fが1である組を優先的に選択し、両方の組が1の場合には1ビット乱数に基づいて何れか一方の組を選択する(なお、選択回路91b1,91b2,91c1も同様)。ここで、乱数生成部91dは、1ビット乱数を選択回路毎に個別に生成し、各選択回路に供給する。また、選択回路91a1,…,91a4の各々は、どちらの組を選択したかを示す識別値を、両組に含まれるindexに基づいて生成し、選択した変数qとFとΔEと識別値とを含む状態信号を出力する。なお、選択回路91a1,…,91a4の各々が出力する識別値は、入力されたindexよりも1ビット増える。Then, each of the selection circuits 91a1, ..., 91a4 is one of the two sets (x i , Fi, ΔE i , index = i ) based on the 1-bit random number output by the random number generation unit 91d. Select. At this time, each of the selection circuits 91a1, ..., 91a4 preferentially selects the set in which Fi is 1, and when both sets are 1, one of the sets is selected based on the 1-bit random number. (The same applies to the selection circuits 91b1, 91b2, 91c1). Here, the random number generation unit 91d individually generates a 1-bit random number for each selection circuit and supplies it to each selection circuit. Further, each of the selection circuits 91a1, ..., 91a4 generates an identification value indicating which set is selected based on the index included in both sets, and the selected variables q i , Fi and ΔE i are used. Outputs a status signal including the identification value. The identification value output by each of the selection circuits 91a1, ..., 91a4 is increased by 1 bit from the input index.

2段目の選択回路91b1,91b2の各々には、選択回路91a1,…,91a4が出力する状態信号が2つずつ入力される。例えば、選択回路91b1には、選択回路91a1,91a2が出力する状態信号が入力され、選択回路91b2には、選択回路91a3,91a4が出力する状態信号が入力される。 Two state signals output by the selection circuits 91a1, ..., 91a4 are input to each of the selection circuits 91b1 and 91b2 in the second stage. For example, a state signal output by the selection circuits 91a1 and 91a2 is input to the selection circuit 91b1, and a state signal output by the selection circuits 91a3 and 91a4 is input to the selection circuit 91b2.

そして、選択回路91b1,91b2の各々は、2つの状態信号と、乱数生成部91dが出力する1ビット乱数に基づいて、2つの状態信号の何れか一方を選択する。また、選択回路91b1,91b2の各々は、選択した状態信号に含まれる識別値について、何れの状態信号を選択したかを示すように1ビットを付加して更新し、選択した状態信号を出力する。 Then, each of the selection circuits 91b1 and 91b2 selects one of the two state signals based on the two state signals and the 1-bit random number output by the random number generation unit 91d. Further, each of the selection circuits 91b1 and 91b2 updates the identification value included in the selected state signal by adding 1 bit so as to indicate which state signal is selected, and outputs the selected state signal. ..

最終段の選択回路91c1には、選択回路91b1,91b2が出力する状態信号が2つ入力される。選択回路91c1は、2つの状態信号と乱数生成部91dが出力する1ビット乱数に基づいて、2つの状態信号の何れか一方を選択する。また、選択回路91c1は、選択した状態信号に含まれる識別値について、何れの状態信号を選択したかを示すように1ビットを付加して更新し、選択した状態信号を出力する。 Two state signals output by the selection circuits 91b1 and 91b2 are input to the selection circuit 91c1 in the final stage. The selection circuit 91c1 selects one of the two state signals based on the two state signals and the 1-bit random number output by the random number generation unit 91d. Further, the selection circuit 91c1 updates the identification value included in the selected state signal by adding 1 bit so as to indicate which state signal is selected, and outputs the selected state signal.

前述のように、識別値はindexに相当する。規模結合回路91は、変数qとFとΔEと同様にして、各選択回路により、各ランダムセレクタ部から入力されたindexの選択を行うことで、反転ビットに対応するindexを出力してもよい。この場合、各ランダムセレクタ部は、各LFEから変数qやフラグFと共にindexの供給を受けることになる。制御部25aは、各LFEの所定のindex格納用のレジスタに対してLFBの組合せに応じたindexの設定を行うことが考えられる。As mentioned above, the identification value corresponds to index. The scale coupling circuit 91 outputs the index corresponding to the inverting bit by selecting the index input from each random selector unit by each selection circuit in the same manner as the variables q i , Fi, and ΔE i . You may. In this case, each random selector unit receives an index from each LFE together with the variable q and the flag F. It is conceivable that the control unit 25a sets the index according to the combination of LFB for the predetermined index storage register of each LFE.

モード選択回路91e1,…,91e8の各々は、規模(すなわち、1kビット、2kビット、4kビットおよび8kビット)に応じた入力端子を有する。図中、モード選択回路91e1,…,91e8の各々に表記された「1」は規模1kビットに対応する入力端子を示す。同「2」は規模2kビットに対応する入力端子を示す。同「4」は規模4kビット(ただし、精度32ビット)に対応する入力端子を示す。同「8」は規模8kビット(または規模4kビット/精度64ビット)に対応する入力端子を示す。 Each of the mode selection circuits 91e1, ..., 91e8 has an input terminal according to the scale (that is, 1 kbit, 2 kbit, 4 k bit, and 8 kbit). In the figure, "1" represented in each of the mode selection circuits 91e1, ..., 91e8 indicates an input terminal corresponding to a scale of 1 kbit. The “2” indicates an input terminal corresponding to a scale of 2 kbits. The “4” indicates an input terminal corresponding to a scale of 4 kbits (however, an accuracy of 32 bits). The “8” indicates an input terminal corresponding to a scale of 8 kbits (or a scale of 4 kbits / precision of 64 bits).

モード選択回路91e1の規模1kビットの入力端子には、LFB70a(#0)が出力する状態信号が入力される。モード選択回路91e2の規模1kビットの入力端子には、LFB70b(#1)が出力する状態信号が入力される。モード選択回路91e3の規模1kビットの入力端子には、LFB70c(#2)が出力する状態信号が入力される。モード選択回路91e4の規模1kビットの入力端子には、LFB70d(#3)が出力する状態信号が入力される。モード選択回路91e5の規模1kビットの入力端子には、LFB70e(#4)が出力する状態信号が入力される。モード選択回路91e6の規模1kビットの入力端子には、LFB70f(#5)が出力する状態信号が入力される。モード選択回路91e7の規模1kビットの入力端子には、LFB70g(#6)が出力する状態信号が入力される。モード選択回路91e8の規模1kビットの入力端子には、LFB70h(#7)が出力する状態信号が入力される。 A status signal output by LFB70a (# 0) is input to the input terminal of the scale 1 kbit of the mode selection circuit 91e1. A status signal output by LFB70b (# 1) is input to the input terminal of the scale 1 kbit of the mode selection circuit 91e2. A status signal output by LFB70c (# 2) is input to the input terminal of the scale 1 kbit of the mode selection circuit 91e3. A status signal output by LFB70d (# 3) is input to the input terminal of the scale 1 kbit of the mode selection circuit 91e4. A status signal output by the LFB70e (# 4) is input to the input terminal of the scale 1 kbit of the mode selection circuit 91e5. A status signal output by LFB70f (# 5) is input to the input terminal of the scale 1 kbit of the mode selection circuit 91e6. A status signal output by LFB70g (# 6) is input to the input terminal of the scale 1 kbit of the mode selection circuit 91e7. A status signal output by LFB70h (# 7) is input to the input terminal of the scale 1 kbit of the mode selection circuit 91e8.

モード選択回路91e1,91e2の各々の規模2kビットの入力端子には、選択回路91a1が出力する状態信号が入力される。モード選択回路91e3,91e4の各々の規模2kビットの入力端子には、選択回路91a2が出力する状態信号が入力される。モード選択回路91e5,91e6の各々の規模2kビットの入力端子には、選択回路91a3が出力する状態信号が入力される。モード選択回路91e7,91e8の各々の規模2kビットの入力端子には、選択回路91a4が出力する状態信号が入力される。 The status signal output by the selection circuit 91a1 is input to the input terminal of each scale 2 kbit of the mode selection circuits 91e1 and 91e2. The status signal output by the selection circuit 91a2 is input to the input terminal of each scale 2 kbit of the mode selection circuits 91e3 and 91e4. The status signal output by the selection circuit 91a3 is input to the input terminal of each scale 2 kbit of the mode selection circuits 91e5 and 91e6. The status signal output by the selection circuit 91a4 is input to the input terminal of each scale 2 kbit of the mode selection circuits 91e7 and 91e8.

モード選択回路91e1,91e2,91e3,91e4の各々の規模4kビットの入力端子には、選択回路91b1が出力する状態信号が入力される。モード選択回路91e5,91e6,91e7,91e8の各々の規模4kビットの入力端子には、選択回路91b2が出力する状態信号が入力される。 The status signal output by the selection circuit 91b1 is input to the input terminals of each of the scale 4 kbits of the mode selection circuits 91e1, 91e2, 91e3, 91e4. The status signal output by the selection circuit 91b2 is input to the input terminals of each of the mode selection circuits 91e5, 91e6, 91e7, 91e8 with a scale of 4 kbits.

モード選択回路91e1,…,91e8の各々の規模8kビットの入力端子には、選択回路91c1が出力する状態信号が入力される。
モード選択回路91e1,…,91e8の各々は、モード設定レジスタ92による規模(スピンビット数)の設定を受け付ける。ただし、図20では、モード設定レジスタ92からモード選択回路91e2,…,91e8の各々に対する信号線を「…」の表記により略記している。モード選択回路91e1,…,91e8の各々は、設定された規模に応じた入力端子に入力された状態信号を選択して、(x,F,index=j)をLFB70a,…,70hへ出力し、ΔEを加算器93a,…,93hへ出力する。
The status signal output by the selection circuit 91c1 is input to the input terminals of the mode selection circuits 91e1, ..., 91e8 having a scale of 8 kbits.
Each of the mode selection circuits 91e1, ..., 91e8 accepts the setting of the scale (number of spin bits) by the mode setting register 92. However, in FIG. 20, the signal lines for each of the mode selection circuits 91e2, ..., 91e8 from the mode setting register 92 are abbreviated by the notation of "...". Each of the mode selection circuits 91e1, ..., 91e8 selects the state signal input to the input terminal according to the set scale, and shifts (x j , F j , index = j) to LFB70a, ..., 70h. Output and output ΔE j to the adders 93a, ..., 93h.

例えば、モード選択回路91e1は、(xy0,Fy0,index=y0)をLFB70aへ出力し、ΔEy0を加算器93aへ出力する。加算器93aは、ΔEy0を基にEを更新する。モード選択回路91e2は、(xy1,Fy1,index=y1)をLFB70bへ出力し、ΔEy1を加算器93bへ出力する。加算器93bは、ΔEy1を基にEを更新する。モード選択回路91e3は、(xy2,Fy2,index=y2)をLFB70cへ出力し、ΔEy2を加算器93cへ出力する。加算器93cは、ΔEy2を基にEを更新する。モード選択回路91e4は、(xy3,Fy3,index=y3)をLFB70dへ出力し、ΔEy3を加算器93dへ出力する。加算器93dは、ΔEy3を基にEを更新する。モード選択回路91e5は、(xy4,Fy4,index=y4)をLFB70eへ出力し、ΔEy4を加算器93eへ出力する。加算器93eは、ΔEy4を基にEを更新する。モード選択回路91e6は、(xy5,Fy5,index=y5)をLFB70fへ出力し、ΔEy5を加算器93fへ出力する。加算器93fは、ΔEy5を基にEを更新する。モード選択回路91e7は、(xy6,Fy6,index=y6)をLFB70gへ出力し、ΔEy6を加算器93gへ出力する。加算器93gは、ΔEy6を基にEを更新する。モード選択回路91e8は、(xy7,Fy7,index=y7)をLFB70hへ出力し、ΔEy7を加算器93hへ出力する。加算器93hは、ΔEy7を基にEを更新する。For example, the mode selection circuit 91e1 outputs (x y0 , F y0 , index = y0) to the LFB70a and outputs ΔE y0 to the adder 93a. The adder 93a updates E 0 based on ΔE y0 . The mode selection circuit 91e2 outputs (x y1 , F y1 , index = y1) to the LFB 70b and outputs ΔE y1 to the adder 93b. The adder 93b updates E 1 based on ΔE y1 . The mode selection circuit 91e3 outputs (x y2 , F y2 , index = y2) to the LFB 70c and outputs ΔE y2 to the adder 93c. The adder 93c updates E 2 based on ΔE y2 . The mode selection circuit 91e4 outputs (x y3 , F y3 , index = y3 ) to the LFB70d, and outputs ΔEy3 to the adder 93d. The adder 93d updates E 3 based on ΔE y3 . The mode selection circuit 91e5 outputs (x y4 , F y4 , index = y4) to the LFB 70e and outputs ΔE y4 to the adder 93e. The adder 93e updates E4 based on ΔE y4 . The mode selection circuit 91e6 outputs (x y5 , F y5 , index = y5 ) to the LFB70f and outputs ΔEy5 to the adder 93f. The adder 93f updates E5 based on ΔE y5 . The mode selection circuit 91e7 outputs (x y6 , F y6 , index = y6) to the LFB 70 g, and outputs ΔE y6 to the adder 93 g. The adder 93g updates E6 based on ΔE y6 . The mode selection circuit 91e8 outputs (x y7 , F y7 , index = y7) to the LFB 70h and outputs ΔE y7 to the adder 93h. The adder 93h updates E 7 based on ΔE y 7.

すなわち、第3の実施の形態の最適化装置26は、あるLFB(グループ)に属する各LFEから出力された反転可否を示す信号に基づいて何れかのビットを選択し、選択したビットを示す信号を規模結合回路91に出力するランダムセレクタ部をLFB毎に有する。規模結合回路91は、スピンビット数の変更に応じて1以上のLFBを組合せ、当該1以上のLFBの各々に対応するランダムセレクタ部により選択されたビットを示す信号に基づいて反転させるビットを選択する。規模結合回路91は、反転させるビットを示す信号を当該1以上のLFBに属する各LFEに出力する。 That is, the optimization device 26 of the third embodiment selects any bit based on the signal indicating whether or not inversion is possible output from each LFE belonging to a certain LFB (group), and the signal indicating the selected bit. A random selector unit is provided for each LFB to output to the scale coupling circuit 91. The scale coupling circuit 91 combines one or more LFBs according to a change in the number of spin bits, and selects a bit to be inverted based on a signal indicating a bit selected by a random selector unit corresponding to each of the one or more LFBs. do. The scale coupling circuit 91 outputs a signal indicating the bit to be inverted to each LFE belonging to the one or more LFBs.

ここで、モード設定レジスタ92は、モード選択回路91e1,…,91e8に対して、個別に規模の設定を行う。ただし、ある規模のモードにおいて、組合せて利用されるLFBに対応するモード選択回路には、共通の規模が設定される。 Here, the mode setting register 92 individually sets the scale for the mode selection circuits 91e1, ..., 91e8. However, in a mode of a certain scale, a common scale is set for the mode selection circuits corresponding to the LFB used in combination.

例えば、モード設定レジスタ92は、LFBの第1の組合せに対応する第1のスピンビット列のスピンビット数とLFBの第2の組合せに対応する第2のスピンビット列のスピンビット数とを、同じビット数、または、異なるビット数に設定してもよい。また、モード設定レジスタ75を含む各LFBのモード設定レジスタは、LFBの第1の組合せに属するLFEに対する重み係数のビット数とLFBの第2の組合せに属するLFEに対する重み係数のビット数とを、同じビット数、または、異なるビット数に設定してもよい。 For example, the mode setting register 92 sets the same number of bits as the number of spin bits in the first spin bit string corresponding to the first combination of LFB and the number of spin bits in the second spin bit string corresponding to the second combination of LFB. It may be set to a number or a different number of bits. Further, the mode setting register of each LFB including the mode setting register 75 sets the number of bits of the weighting factor for the LFE belonging to the first combination of LFB and the number of bits of the weighting factor for the LFE belonging to the second combination of LFB. It may be set to the same number of bits or different number of bits.

例えば、LFB70a,70bを組合せて利用して規模2kビットのモードを利用する場合、モード設定レジスタ92からモード選択回路91e1,91e2へ、規模2kビットのモードを選択する選択信号が供給される。このとき、例えば、最適化装置26は、モード設定レジスタ92の設定により残りの6つのLFBを利用して、LFB70a,70bによる演算と同じ問題、または、別の問題を並列に実行することが可能である。例えば、規模結合回路91は、残りの6つのLFBに対して、6つのLFBの各々で規模1kビットのモードを6つ実現してもよい。また、規模結合回路91は、6つのLFBのうちの2つずつ組合せにより、規模2kビットのモードを3つ実現してもよい。更に、規模結合回路91は、6つのLFBのうち2つのLFBの組合せにより、規模2kビットのモードを実現し、他の4つのLFBの組合せにより、規模4kビットのモードを実現してもよい。 For example, when a mode of scale 2 kbit is used by using LFB 70a and 70b in combination, a selection signal for selecting a mode of scale 2 kbit is supplied from the mode setting register 92 to the mode selection circuits 91e1 and 91e2. At this time, for example, the optimization device 26 can execute the same problem as the operation by the LFB 70a and 70b or another problem in parallel by using the remaining 6 LFBs by setting the mode setting register 92. Is. For example, the scale coupling circuit 91 may realize six modes of scale 1 kbit in each of the six LFBs for the remaining six LFBs. Further, the scale coupling circuit 91 may realize three modes having a scale of 2 kbit by combining two of the six LFBs. Further, the scale coupling circuit 91 may realize a scale 2 kbit mode by combining two LFBs out of six LFBs, and may realize a scale 4 kbit mode by combining the other four LFBs.

並列に実現するモードの組合せは、上記の組合せに限らず、例えば、規模1kビットのモードが8つの組合せ、規模2kビットのモードが4つの組合せ、規模1kビットのモードが4つと規模2kビットのモードが2つの組合せなど、種々の組合せが考えられる。 The combinations of modes realized in parallel are not limited to the above combinations, for example, 8 combinations of scale 1 kbit modes, 4 combinations of scale 2 kbit modes, 4 scale 1 kbit modes and scale 2 kbit. Various combinations are conceivable, such as a combination of two modes.

このように、規模結合回路91は、モード設定レジスタ92により複数のスピンビット列の各々に対するスピンビット数の設定を受け付け、複数のスピンビット列の各々のスピンビット数に対して、組合せるLFB数(グループ数)を選択し、LFBを組合せる。これにより、1つの最適化装置26上に複数のイジングモデルを実現できる。 In this way, the scale coupling circuit 91 accepts the setting of the number of spin bits for each of the plurality of spin bit strings by the mode setting register 92, and the number of LFBs (group) to be combined with respect to the number of spin bits for each of the plurality of spin bit strings. Number) is selected and the LFB is combined. As a result, a plurality of Ising models can be realized on one optimization device 26.

なお、組合せて利用されるLFBの組に対応するE格納レジスタの組には、共通のエネルギーが格納される。例えば、LFB70a,70bの組合せで利用する場合、E格納レジスタ94a,94bに格納されるE,Eは同じ値となる。この場合、当該LFB70a,70bの組に対するエネルギー値を読み出すとき、制御部25aは、E格納レジスタ94a,94bの何れか一方(例えば、LFB70aに対応するE格納レジスタ94a)に格納されたエネルギー値を読み出せばよい。制御部25aは、LFBの他の組合せに対しても同様にしてエネルギー値を読み出す。In addition, common energy is stored in the set of E storage registers corresponding to the set of LFB used in combination. For example, when used in combination with LFB 70a and 70b, E 0 and E 1 stored in the E storage registers 94a and 94b have the same value. In this case, when reading the energy value for the set of the LFB 70a and 70b, the control unit 25a inputs the energy value stored in one of the E storage registers 94a and 94b (for example, the E storage register 94a corresponding to the LFB 70a). It should be read out. The control unit 25a reads out the energy value for other combinations of LFB in the same manner.

第3の実施の形態では、制御部25aは、図15のステップS10として並列に演算する各問題に対する初期値や動作条件のCPU21による入力を受け付ける。そして、制御部25aは、ステップS11において、各問題に応じた規模/精度を、1つの問題に対して利用するLFBのグループ毎に、LFBのモード設定レジスタおよびモード設定レジスタ92に設定する。 In the third embodiment, the control unit 25a receives inputs from the CPU 21 of initial values and operating conditions for each problem to be calculated in parallel as step S10 in FIG. Then, in step S11, the control unit 25a sets the scale / accuracy corresponding to each problem in the mode setting register and the mode setting register 92 of the LFB for each group of LFB used for one problem.

例えば、制御部25aは、第1の問題について、規模2kビット/精度64ビットをLFB70a,70bのモード設定レジスタに設定すると共に、モード選択回路91e1,91e2に規模2kビットに対する出力を行うようモード設定レジスタ92に設定する。また、制御部25aは、第2の問題について、規模2kビット/精度64ビットをLFB70c,70dのモード設定レジスタに設定すると共に、モード選択回路91e3,91e4に規模2kビットに対する出力を行うようモード設定レジスタ92に設定する。 For example, regarding the first problem, the control unit 25a sets the scale 2 kbit / precision 64 bits in the mode setting registers of the LFB 70a and 70b, and sets the mode so that the mode selection circuits 91e1 and 91e2 output the scale 2 kbit. Set to register 92. Further, regarding the second problem, the control unit 25a sets the scale 2 kbit / precision 64 bits in the mode setting register of the LFB 70c and 70d, and sets the mode so that the mode selection circuits 91e3 and 91e4 output to the scale 2 kbit. Set to register 92.

この場合、最適化装置26では、2つの問題(あるいは、両問題は同一問題でもよい)を並列に演算可能である。具体的には、制御部25aは、各問題に対応するLFBの組合せに対して、図16で示したフローチャートの手順を行うように各LFBを制御する。例えば、制御部25aは、問題毎に、温度パラメータTなどの各種パラメータの初期値、重み係数、ある温度パラメータでのビット更新の回数および温度変更回数などを、個別に受け付けて、該当の問題の演算を行うLFBの組合せに属する各LFBに入力し、LFBの各組合せにより演算を並列実行させる。 In this case, the optimization device 26 can calculate two problems (or both problems may be the same problem) in parallel. Specifically, the control unit 25a controls each LFB so as to perform the procedure of the flowchart shown in FIG. 16 for the combination of LFBs corresponding to each problem. For example, the control unit 25a individually accepts the initial values of various parameters such as the temperature parameter T, the weighting factor, the number of bit updates and the number of temperature changes in a certain temperature parameter for each problem, and the corresponding problem. Input to each LFB belonging to the combination of LFB to perform the calculation, and execute the calculation in parallel by each combination of LFB.

制御部25aは、演算終了後、LFB70a,70bの各LFEから第1の問題に対するスピンビット列を読み出して、第1の問題の解とする。また、制御部25aは、演算終了後、LFB70c,70dの各LFEから第2の問題に対するスピンビット列を読み出して、第2の問題の解とする。3以上の問題も同様にして、並列に演算可能である。これにより、複数の問題に対する演算を効率的に実行できる。 After the calculation is completed, the control unit 25a reads out the spin bit string for the first problem from each LFE of the LFB 70a and 70b to solve the first problem. Further, the control unit 25a reads out the spin bit string for the second problem from each LFE of the LFB 70c and 70d after the calculation is completed, and uses it as a solution to the second problem. Problems of 3 or more can be calculated in parallel in the same manner. This makes it possible to efficiently execute operations for a plurality of problems.

また、同一問題をLFBの複数の組により並列に解く場合、制御部25aは、例えば、レプリカ交換法と呼ばれる手法により、演算を高速化することが考えられる。レプリカ交換法では、LFBの各組(各レプリカ)で異なる温度パラメータによるスピンビット列の更新を行い、所定回数の更新後に、所定確率で温度パラメータをLFBの組の間(すなわち、レプリカ間)で交換することで、解の探索を高速化する。 Further, when solving the same problem in parallel by a plurality of sets of LFBs, it is conceivable that the control unit 25a speeds up the calculation by, for example, a method called a replica exchange method. In the replica exchange method, the spin bit strings are updated with different temperature parameters in each set of LFB (each replica), and after a predetermined number of updates, the temperature parameters are exchanged between the sets of LFB (that is, between replicas) with a predetermined probability. This speeds up the search for a solution.

あるいは、解の探索方法として、図16の開始から終了までの手順を繰り返し行い、複数の演算結果の中から、最小となるエネルギーのスピンビット列を解として求める方法も考えられる。この場合、制御部25aは、LFBの複数の組を用いて同一問題を並列に解くことで、上記繰り返し回数を減らし、演算を高速化することができる。 Alternatively, as a method of searching for a solution, a method of repeating the procedure from the start to the end of FIG. 16 and finding the spin bit string of the minimum energy from a plurality of calculation results as a solution can be considered. In this case, the control unit 25a can reduce the number of repetitions and speed up the calculation by solving the same problem in parallel using a plurality of sets of LFBs.

ところで、第2,第3の実施の形態で例示した最適化装置25,26を用いて演算可能な最適化問題には、種々の分野の問題が考えられる。例えば、学問や業種などの分野に応じて、求められる問題の規模や、問題の表現の精度が変わり得る。 By the way, problems in various fields can be considered as the optimization problem that can be calculated by using the optimization devices 25 and 26 exemplified in the second and third embodiments. For example, the scale of the required problem and the accuracy of the expression of the problem may change depending on the field such as academics and industry.

図21は、問題毎の規模/精度の必要範囲の例を示す図である。
グラフ400は、横軸を規模比(規模の大きさを示す度合い)、縦軸を精度比(精度の大きさを示す度合い)とし、3種類の分野の問題に対して求められる規模精度の範囲を例示している。規模比は、規模の基準となる規模基準値に対して実際に所要される規模値(スピンビット数)の比である。精度比は、精度の基準となる精度基準値に対して実際に所要される精度値(結合係数のビット数)の比である。
FIG. 21 is a diagram showing an example of the required range of scale / accuracy for each problem.
In the graph 400, the horizontal axis is the scale ratio (degree of indicating the magnitude of scale) and the vertical axis is the accuracy ratio (degree of indicating the magnitude of accuracy), and the range of scale accuracy required for problems in three types of fields. Is illustrated. The scale ratio is the ratio of the scale value (number of spin bits) actually required to the scale reference value that is the standard of scale. The accuracy ratio is the ratio of the actually required accuracy value (the number of bits of the coupling coefficient) to the accuracy reference value that is the reference of accuracy.

領域401は、電力分野の問題に対して求められる規模比/精度比の範囲を示す。領域402は、金融分野の問題に対して求められる規模比/精度比の範囲を示す。領域403は、生命科学分野の問題に対して求められる規模比/精度比の範囲を示す。 Region 401 shows the range of scale ratio / accuracy ratio required for problems in the power field. Area 402 shows the range of scale / accuracy ratios required for problems in the financial sector. Area 403 shows the range of scale / accuracy ratios required for problems in the field of life sciences.

例えば、領域401によれば、電力分野の問題では、比較的高い精度比が求められることが多い。また、領域402によれば、金融分野の問題では、規模比は比較的小さくてよいが、比較的高い精度比が求められることがある。更に、生命科学分野の問題では、精度比は比較的低くてよいが、比較的大きい規模比が求められることがある。ただし、ここで例示した各分野において所要される規模比/精度比は一例であり、今後、各分野で扱われる問題に応じて、所要される規模比/精度比の範囲は変わり得る。 For example, according to region 401, problems in the power field often require a relatively high accuracy ratio. Further, according to the area 402, in the problem of the financial field, the scale ratio may be relatively small, but a relatively high accuracy ratio may be required. Further, in the field of life science, the accuracy ratio may be relatively low, but a relatively large scale ratio may be required. However, the scale ratio / accuracy ratio required in each field illustrated here is an example, and the range of the required scale ratio / accuracy ratio may change depending on the problems dealt with in each field in the future.

一方、問題毎の規模および精度に合った最適化装置を製造することも考えられるが、効率的ではない。
そこで、第2,第3の実施の形態では、1チップの最適化装置25,26によって、種々の規模/精度のモードを実現可能とすることで、種々の分野の組合せ最適化問題に対応可能になる。
On the other hand, it is conceivable to manufacture an optimization device suitable for the scale and accuracy of each problem, but it is not efficient.
Therefore, in the second and third embodiments, the combinatorial optimization problems in various fields can be dealt with by making it possible to realize modes of various scales / accuracy by the optimization devices 25 and 26 of one chip. become.

図22は、規模精度の選択可能範囲の例を示す図である。
グラフ500は、最適化装置25,26により実現可能な規模精度の選択可能範囲の例を示す。ここで、LFE毎のSRAMにおいて重み係数の格納のために確保される容量の上限が128kビットであり、最適化装置25,26の各々の全体におけるLFEの数n=8192であるとする。上記で説明したように、最適化装置25,26は、例えば、5種類のモードを実現可能である。ただし、グラフ500のハッチングされた領域で示される範囲内において、他の規模/精度のモードを利用可能としてもよい。LFE毎のSRAMの容量を増やすことで、更に大きな規模/精度のモードも実現可能である。
FIG. 22 is a diagram showing an example of a selectable range of scale accuracy.
Graph 500 shows an example of the selectable range of scale accuracy that can be achieved by the optimizers 25 and 26. Here, it is assumed that the upper limit of the capacity reserved for storing the weighting coefficient in the SRAM for each LFE is 128 kbits, and the number of LFEs in each of the optimization devices 25 and 26 is n = 8192. As described above, the optimizers 25 and 26 can realize, for example, five types of modes. However, other scale / accuracy modes may be available within the range indicated by the hatched area of graph 500. By increasing the capacity of the SRAM for each LFE, a larger scale / accuracy mode can be realized.

最適化装置25,26では、規模/精度のモードを可変とした上で、各LFEの種々の使用パターンを実現する。
図23は、LFEの使用パターンの例を示す図である。
In the optimization devices 25 and 26, various usage patterns of each LFE are realized after making the scale / accuracy mode variable.
FIG. 23 is a diagram showing an example of an LFE usage pattern.

図23(A)は、第2,第3の実施の形態で実現可能なn個のLFEの使用パターン例(その1)を示す。例えば、最適化装置26は、n個のLFEのうち、α個のLFEを含むLFE群710(すなわち、LFBの第1の組合せ)を用いて第1のイジングモデルXを実現する。また、最適化装置26は、残りのβ個のLFEを含むLFE群720を不使用とする。最適化装置25も同様に、LFE群710により第1のイジングモデルXを実現し、LFE群720を不使用としてもよい。 FIG. 23 (A) shows an example (No. 1) of the use pattern of n LFEs that can be realized in the second and third embodiments. For example, the optimization device 26 realizes the first Ising model X by using the LFE group 710 (that is, the first combination of LFBs) including α LFEs out of n LFEs. Further, the optimization device 26 does not use the LFE group 720 including the remaining β LFEs. Similarly, the optimization device 25 may realize the first Ising model X by the LFE group 710 and may not use the LFE group 720.

図23(B)は、第3の実施の形態で実現可能なn個のLFEの使用パターン例(その2)を示す。例えば、最適化装置26は、n個のLFEのうち、α個のLFEを含むLFE群710(すなわち、LFBの第1の組合せ)を用いて、第1のイジングモデルXを実現する。また、最適化装置26は、残ったLFEのうち、α個のLFEを含むLFE群730(すなわち、LFBの第2の組合せ)を用いて、第1のイジングモデルXを実現する。同一問題に対する演算の並列度を高めることで、解の収束性を早め演算を高速化することができる。 FIG. 23B shows an example of the use pattern of n LFEs (No. 2) that can be realized in the third embodiment. For example, the optimization device 26 realizes the first Ising model X by using the LFE group 710 (that is, the first combination of LFBs) including α LFEs out of n LFEs. Further, the optimization device 26 realizes the first Ising model X by using the LFE group 730 (that is, the second combination of LFB) including α LFEs among the remaining LFEs. By increasing the degree of parallelism of operations for the same problem, the convergence of the solution can be accelerated and the operations can be speeded up.

図23(C)は、第3の実施の形態で実現可能なn個のLFEの使用パターン例(その3)を示す。例えば、最適化装置26は、n個のLFEのうち、α個のLFEを含むLFE群710(すなわち、LFBの第1の組合せ)を用いて、第1のイジングモデルXを実現する。また、最適化装置26は、残ったLFEのうち、γ個(γ=αでもよいし、γ≠αでもよい)のLFEを含むLFE群740(すなわち、LFBの第2の組合せ)を用いて、第2のイジングモデルYを実現する。これにより、異なる問題を並列に演算することができる。 FIG. 23C shows an example of the use pattern of n LFEs (No. 3) that can be realized in the third embodiment. For example, the optimization device 26 realizes the first Ising model X by using the LFE group 710 (that is, the first combination of LFBs) including α LFEs out of n LFEs. Further, the optimizing device 26 uses an LFE group 740 (that is, a second combination of LFBs) containing γ (may be γ = α or γ ≠ α) LFEs among the remaining LFEs. , The second Ising model Y is realized. This makes it possible to calculate different problems in parallel.

次に、ユーザによる最適化装置26の利用フローの例を説明する。以下では、主に最適化装置26を例示するが、最適化装置25の場合も同様の利用フローである。
図24は、最適化装置の利用フローの例を示す図である。
Next, an example of the usage flow of the optimization device 26 by the user will be described. In the following, the optimization device 26 is mainly illustrated, but the same usage flow is also applied to the optimization device 25.
FIG. 24 is a diagram showing an example of a usage flow of the optimization device.

(S101)CPU21は、ユーザが解きたい問題を示すデータ601を、クライアント30からNIC24を介して受け付ける。クライアント30と、NIC24とにより、情報処理装置20への各種データを入力する入力部および基底状態探索の結果として得られた解を、ユーザに把握しやすい結果情報として通知する通知部が実現される。CPU21は、ライブラリ21aの機能により、データ601をイジングモデルの基底状態の探索問題に変換する。その結果、CPU21は、問題の規模(スピンビット数)を示す規模データ611、問題の表現の精度を表す精度データ612、エネルギーの初期値を表すエネルギーデータ613および規模/精度に応じた規模精度モードデータ614を生成する。規模データ611は、スピンビット列を示すバイナリデータでもよい。精度データ612は、該当の精度で表されたスピンビット間の重み係数を含んでもよい。CPU21は、問題から適切な規模精度モードを決定し、規模精度モードデータ614を生成する。 (S101) The CPU 21 receives data 601 indicating a problem that the user wants to solve from the client 30 via the NIC 24. The client 30 and the NIC 24 realize an input unit for inputting various data to the information processing device 20 and a notification unit for notifying the user of the solution obtained as a result of the ground state search as result information that is easy for the user to understand. .. The CPU 21 converts the data 601 into a search problem of the ground state of the Ising model by the function of the library 21a. As a result, the CPU 21 includes scale data 611 indicating the scale (number of spin bits) of the problem, accuracy data 612 indicating the accuracy of expressing the problem, energy data 613 indicating the initial value of energy, and a scale accuracy mode according to the scale / accuracy. Generate data 614. The scale data 611 may be binary data indicating a spin bit string. The accuracy data 612 may include a weighting factor between spin bits represented by the accuracy. The CPU 21 determines an appropriate scale accuracy mode from the problem and generates scale accuracy mode data 614.

(S102)CPU21は、規模データ611、精度データ612、エネルギーデータ613を、初期値として制御部25aに入力する。
(S103)CPU21は、ユーザ指定動作条件602の入力を受け付ける。ユーザ指定動作条件602は、例えば、ある温度パラメータにおける状態更新の回数、温度パラメータの更新回数、温度パラメータの下げ幅および温度パラメータの初期値などを含む。また、ユーザ指定動作条件602は、組み合せるLFBの数を含んでもよい。CPU21は、当該組み合せるLFBの数を、規模精度モードデータ614に含める。CPU21は、規模精度モードデータ614およびユーザ指定動作条件602を、動作条件として制御部25aに入力する。規模精度モードデータ614は、モード設定レジスタ75を含む各LFEのモード設定レジスタおよびモード設定レジスタ92に設定される。
(S102) The CPU 21 inputs the scale data 611, the accuracy data 612, and the energy data 613 to the control unit 25a as initial values.
(S103) The CPU 21 accepts the input of the user-specified operating condition 602. The user-specified operating condition 602 includes, for example, the number of state updates in a certain temperature parameter, the number of times the temperature parameter is updated, the amount of decrease in the temperature parameter, the initial value of the temperature parameter, and the like. Further, the user-specified operating condition 602 may include the number of LFBs to be combined. The CPU 21 includes the number of LFBs to be combined in the scale accuracy mode data 614. The CPU 21 inputs the scale accuracy mode data 614 and the user-specified operating condition 602 to the control unit 25a as operating conditions. The scale accuracy mode data 614 is set in the mode setting register and the mode setting register 92 of each LFE including the mode setting register 75.

(S104)CPU21は、ステップS102,S103が完了すると、制御部25aに対して基底状態の探索を行う演算の実行開始を指示する。
(S105)CPU21は、最適化装置26による演算が完了すると、最適化装置26から演算結果615を取得し、ユーザにとって把握し易い結果情報(例えば、結果表示画面の情報)に変換する。CPU21は、変換後の結果情報を、ユーザが解きたい問題の解616として、クライアント30に送信する。
(S104) When the steps S102 and S103 are completed, the CPU 21 instructs the control unit 25a to start executing the operation for searching the ground state.
(S105) When the calculation by the optimization device 26 is completed, the CPU 21 acquires the calculation result 615 from the optimization device 26 and converts it into result information (for example, information on the result display screen) that is easy for the user to understand. The CPU 21 transmits the converted result information to the client 30 as a solution 616 of the problem that the user wants to solve.

このように、CPU21は、ユーザにより入力された問題に応じてスピンビット数と重み係数のビット数とを決定する。制御部25aは、スピンビット数と重み係数のビット数と重み係数とを示す情報をCPU21から受け付ける。制御部25aは、スピンビット数と重み係数のビット数とをモード設定レジスタ55(あるいは、モード設定レジスタ75,92)に設定する。制御部25aは、スピンビット数に相当する数のLFEの各々のSRAMに格納する。 In this way, the CPU 21 determines the number of spin bits and the number of bits of the weighting factor according to the problem input by the user. The control unit 25a receives information indicating the number of spin bits, the number of bits of the weighting coefficient, and the weighting coefficient from the CPU 21. The control unit 25a sets the number of spin bits and the number of bits of the weighting factor in the mode setting register 55 (or the mode setting registers 75 and 92). The control unit 25a stores in each SRAM of the number of LFEs corresponding to the number of spin bits.

こうして、ユーザは、自身が解きたい問題に応じた規模/精度により、最適化装置25,26による演算を実行させることが可能になる。例えば、最適化装置26により、同一のユーザによる同一問題、または、異なる問題を並列に演算することも可能である。また、最適化装置26により、異なるユーザによる異なる問題を並列に演算することも可能である。すなわち、解きたい問題に応じた適切な規模/精度で演算可能にすることで、空きLFB(あるいは空きLFE)を用いて、他の問題を並列に演算可能になる。また、複数のユーザで1チップの最適化装置25,26を共用可能になる。更に、複数の問題で1チップの最適化装置25,26を共用可能になる。 In this way, the user can execute the calculation by the optimization devices 25 and 26 with the scale / accuracy according to the problem he / she wants to solve. For example, the optimization device 26 can calculate the same problem or different problems by the same user in parallel. In addition, the optimization device 26 can calculate different problems by different users in parallel. That is, by making it possible to calculate with an appropriate scale / accuracy according to the problem to be solved, it becomes possible to calculate other problems in parallel using the free LFB (or free LFE). Further, the optimization devices 25 and 26 of one chip can be shared by a plurality of users. Further, the optimization devices 25 and 26 of one chip can be shared due to a plurality of problems.

また、上記に例示した機能を有する最適化装置(あるいは、最適化システム)も考えられる。当該最適化装置(あるいは、最適化システム)は、入力部と変換部と制御部と表示部とを有する。 Further, an optimization device (or an optimization system) having the functions exemplified above can be considered. The optimization device (or optimization system) has an input unit, a conversion unit, a control unit, and a display unit.

入力部は、解くべき問題と動作条件とを入力する。入力部は、例えば、マウスやキーボードなどの入力デバイスでもよいし、NIC(例えば、NIC24)およびクライアント端末(例えば、クライアント30)により実現されてもよい。 The input unit inputs the problem to be solved and the operating conditions. The input unit may be, for example, an input device such as a mouse or a keyboard, or may be realized by a NIC (for example, NIC 24) and a client terminal (for example, a client 30).

変換部は、入力した問題をイジングモデルの基底状態の探索問題に変換するとともに、探索問題の規模を示す規模情報と、探索問題の表現の精度を表す精度情報と、探索問題のエネルギーの初期値を表すエネルギー情報と、規模および精度に応じた規模精度モード情報とを生成する。変換部は、例えば、ライブラリ21aおよびドライバ21bの機能を発揮するCPU(例えば、CPU21)などのプロセッサでもよい。変換部は、FPGAなどの半導体集積回路により実現されてもよい。 The conversion unit converts the input problem into a search problem in the base state of the search problem, scale information indicating the scale of the search problem, accuracy information indicating the accuracy of the expression of the search problem, and the initial value of the energy of the search problem. The energy information representing the above and the scale accuracy mode information according to the scale and accuracy are generated. The conversion unit may be, for example, a processor such as a CPU (for example, CPU 21) that exerts the functions of the library 21a and the driver 21b. The conversion unit may be realized by a semiconductor integrated circuit such as FPGA.

制御部は、規模情報と、精度情報と、エネルギー情報(あるいは、規模情報と精度情報とエネルギー情報とに応じたスピンビット列の初期値、結合係数およびエネルギーの初期値)を入力するとともに動作条件と規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力する。制御部は、例えば、LFB50(あるいはLFB70a,…,70h)に対して、規模情報と、精度情報と、エネルギー情報(あるいは、規模情報と精度情報とエネルギー情報とに応じたスピンビット列の初期値、結合係数およびエネルギーの初期値)を入力するとともに動作条件と規模精度モード情報とを入力し、LFBを用いて基底状態の探索を行う演算を実行して解を出力する制御部25aでもよい。制御部は、例えば制御部25aとLFB50(あるいはLFB70a,…,70h)とを含む半導体チップであって、イジングモデルの基底状態の探索を行う半導体チップでもよい。すなわち、制御部は、規模情報と、精度情報と、エネルギー情報(あるいは、規模情報に応じたビット数のスピンビット列、精度情報に応じたビット数の結合係数およびエネルギー情報に応じたエネルギーの初期値)および、動作条件、並びに、規模精度モード情報に基づいて、イジングモデルの基底状態の探索を行う演算を実行して解を出力する半導体チップでもよい。規模情報は、規模の基準となる規模基準値に対する規模比により表されてもよい。精度情報は、精度の基準となる精度基準値に対する精度比により表されてもよい。 The control unit inputs the scale information, the accuracy information, and the energy information (or the initial value of the spin bit string, the coupling coefficient, and the initial value of the energy according to the scale information, the accuracy information, and the energy information), and also sets the operating conditions. The scale accuracy mode information is input, the operation for searching the base state is executed, and the solution is output. For example, the control unit sets the initial value of the spin bit string according to the scale information, the accuracy information, and the energy information (or the scale information, the accuracy information, and the energy information) for the LFB50 (or LFB70a, ..., 70h). It may be a control unit 25a that inputs (initial values of coupling coefficient and energy), inputs operating conditions and scale accuracy mode information, executes an operation to search for a base state using LFB, and outputs a solution. The control unit may be, for example, a semiconductor chip including the control unit 25a and the LFB50 (or LFB70a, ..., 70h), and may be a semiconductor chip that searches for the ground state of the Ising model. That is, the control unit has scale information, accuracy information, energy information (or a spin bit string of the number of bits according to the scale information, a coupling coefficient of the number of bits according to the accuracy information, and an initial value of energy according to the energy information. ), And a semiconductor chip that outputs a solution by executing an operation for searching the base state of the rising model based on the operating conditions and the scale accuracy mode information. The scale information may be represented by a scale ratio to a scale reference value that serves as a scale reference. The accuracy information may be represented by an accuracy ratio to an accuracy reference value that is an accuracy reference.

表示部は、制御部による基底状態の探索の結果として得られた解を表示する。表示部は、ディスプレイでもよいし、NICおよびクライアント端末により実現されてもよい。例えば、変換部は、基底状態の探索の結果として得られた解を、可視化した表示情報に変換する。表示部は、当該可視化した表示情報を表示する。 The display unit displays the solution obtained as a result of the search for the ground state by the control unit. The display unit may be a display, or may be realized by a NIC and a client terminal. For example, the conversion unit converts the solution obtained as a result of the search for the ground state into the visualized display information. The display unit displays the visualized display information.

例示した最適化装置により、規模/精度を可変にできる。ユーザは、解きたい問題に応じた規模/精度により、最適化装置による演算を実行させることが可能になる。
なお、第1の実施の形態の最適化装置1の制御は、最適化装置1を制御するコンピュータが備えるプロセッサがプログラムを実行することで実現されてもよい。例えば、プログラムは当該コンピュータが備えるRAMに格納される。第2,第3の実施の形態の最適化装置25,26の制御は、CPU21にプログラムを実行させることで実現されてもよい。プログラムは、コンピュータ読み取り可能な記録媒体41に記録できる。
The scale / accuracy can be varied by the optimized device illustrated. The user can execute the calculation by the optimization device according to the scale / accuracy according to the problem to be solved.
The control of the optimization device 1 according to the first embodiment may be realized by executing a program by a processor included in the computer that controls the optimization device 1. For example, the program is stored in the RAM of the computer. The control of the optimization devices 25 and 26 according to the second and third embodiments may be realized by causing the CPU 21 to execute a program. The program can be recorded on a computer-readable recording medium 41.

例えば、プログラムを記録した記録媒体41を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体41に記録されたプログラムまたは他のコンピュータから受信したプログラムを、DRAM22や記憶装置23に格納し(インストールし)、DRAM22や記憶装置23からプログラムを読み込んで実行してもよい。 For example, the program can be distributed by distributing the recording medium 41 on which the program is recorded. Alternatively, the program may be stored in another computer and distributed via the network. For example, the computer may store (install) a program recorded on the recording medium 41 or a program received from another computer in the DRAM 22 or the storage device 23, read the program from the DRAM 22 or the storage device 23, and execute the program. good.

上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。 The above merely indicates the principle of the present invention. Further, numerous modifications and modifications are possible to those skilled in the art, and the invention is not limited to the exact configurations and applications described and described above, and all corresponding modifications and equivalents are attached. It is considered to be the scope of the present invention according to the claims and their equivalents.

1 最適化装置
1a1,…,1aK,…,1aN ビット演算回路
2 選択回路部
3 閾値生成部
4 乱数生成部
5 設定変更部
6 制御部
11 記憶部
12 精度切替回路
13 反転判定部
14 ビット保持部
15 エネルギー変化計算部
16 状態遷移判定部
1 Optimizer 1a1, ..., 1aK, ..., 1aN Bit calculation circuit 2 Selection circuit part 3 Threshold generation part 4 Random number generation part 5 Setting change part 6 Control part 11 Storage part 12 Precision switching circuit 13 Inversion judgment part 14 Bit holding part 15 Energy change calculation unit 16 State transition determination unit

Claims (18)

イジングモデルの状態を表すビット列のうちのビット間の相互作用の大きさを示す係数を記憶する記憶部と、
前記ビット列のうちの何れかのビットが反転されると、前記記憶部から読み出した反転された前記ビットと自ビットとに対応する係数を用いた前記イジングモデルのエネルギー変化の計算に応じて、前記自ビットの反転可否を示す信号を出力する複数のビット演算回路と、
前記複数のビット演算回路のうち前記ビット列の第1のビット数のビット演算回路の各々から出力された反転可否を示す信号に基づいて選択した前記ビット列のうち反転させるビットを示す信号を、前記第1のビット数のビット演算回路の各々に出力する選択回路部と、
前記選択回路部に対する前記第1のビット数の変更、および、前記第1のビット数のビット演算回路の各々に対する前記係数の第2のビット数の変更を行う設定変更部と、
を有する最適化装置。
A storage unit that stores a coefficient indicating the magnitude of interaction between bits in a bit string representing the state of the Ising model, and a storage unit.
When any bit in the bit string is inverted, the energy change of the Ising model is calculated using the coefficient corresponding to the inverted bit read from the storage unit and its own bit. Multiple bit operation circuits that output a signal indicating whether or not the local bit can be inverted, and
The signal indicating the bit to be inverted among the bit strings selected based on the signal indicating whether or not the inversion is possible output from each of the bit operation circuits having the first number of bits of the bit string among the plurality of bit operation circuits is referred to as the first signal. A selection circuit unit that outputs to each of the bit operation circuits with a bit number of 1 and
A setting change unit for changing the number of the first bit for the selection circuit unit and changing the second bit number of the coefficient for each of the bit operation circuits with the first bit number.
Optimizer with.
前記複数のビット演算回路の各々は、前記設定変更部による前記第2のビット数の変更に応じて、前記記憶部から読み出す係数の第2のビット数を変更する精度切替回路を有する、
請求項1記載の最適化装置。
Each of the plurality of bit operation circuits has an accuracy switching circuit that changes the number of second bits of the coefficient read from the storage unit in response to the change of the number of second bits by the setting change unit.
The optimization device according to claim 1.
前記記憶部は、前記複数のビット演算回路の各々に設けられており、
前記精度切替回路は、前記設定変更部による前記第2のビット数の変更に応じて、前記自ビットと他ビットとに関する係数のうちの一部を、前記複数のビット演算回路のうち、前記ビット列に使用されない他のビット演算回路が有する前記記憶部から読み出す、
請求項2記載の最適化装置。
The storage unit is provided in each of the plurality of bit operation circuits.
The precision switching circuit uses a part of the coefficients related to the own bit and the other bit in response to the change of the second number of bits by the setting change unit, and the bit string of the plurality of bit calculation circuits. Read from the storage unit of another bit operation circuit that is not used for
The optimization device according to claim 2.
前記複数のビット演算回路は、複数のグループに分けられており、
前記選択回路部は、前記設定変更部による前記第1のビット数の変更に応じて、前記複数のビット演算回路のうち、前記第1のビット数のビット演算回路を含むように、1以上のグループを組合せる規模結合回路を有する、
請求項1記載の最適化装置。
The plurality of bit operation circuits are divided into a plurality of groups, and the plurality of bit operation circuits are divided into a plurality of groups.
The selection circuit unit is one or more so as to include the bit operation circuit having the first bit number among the plurality of bit operation circuits in response to the change of the first bit number by the setting change unit. Has a scale coupling circuit that combines groups,
The optimization device according to claim 1.
前記選択回路部は、1つのグループに属する各ビット演算回路から出力された前記反転可否を示す信号に基づいて選択したビットを示す信号を、前記規模結合回路に出力するセレクタ部を、前記複数のグループの各々に対して有し、
前記規模結合回路は、前記1以上のグループの各々に対応する前記セレクタ部により選択された前記ビットを示す信号に基づいて選択した反転させる前記ビットを示す信号を、前記1以上のグループに属する各ビット演算回路に出力する、
請求項4記載の最適化装置。
The selection circuit unit has a plurality of selector units that output a signal indicating a selected bit based on a signal indicating whether or not inversion is possible, which is output from each bit operation circuit belonging to one group, to the scale coupling circuit. Have for each of the groups
Each of the scale coupling circuits belongs to the one or more groups of signals indicating the bits to be inverted selected based on the signal indicating the bits selected by the selector unit corresponding to each of the one or more groups. Output to the bit operation circuit,
The optimization device according to claim 4.
前記規模結合回路は、前記設定変更部による複数の前記ビット列の各々に対する前記第1のビット数の設定を受け付け、複数の前記ビット列の各々に対して、前記1以上のグループを組合せる、
請求項4記載の最適化装置。
The scale coupling circuit accepts the setting of the first bit number for each of the plurality of bit strings by the setting change unit, and combines the one or more groups for each of the plurality of bit strings.
The optimization device according to claim 4.
グループの複数の組合せのうち、第1の組合せによる前記イジングモデルに対する演算と、第2の組合せによる前記イジングモデルまたは他のイジングモデルに対する演算とを並列に実行させる制御部、
を更に有する請求項6記載の最適化装置。
A control unit that executes an operation on the Ising model by the first combination and an operation on the Ising model or another Ising model by the second combination in parallel among a plurality of combinations of groups.
6. The optimization device according to claim 6.
前記設定変更部は、グループの複数の組合せのうち、第1の組合せに対応する第1のビット列の前記第1のビット数と第2の組合せに対応する第2のビット列の前記第1のビット数とを、同じビット数、または、異なるビット数に設定する、
請求項6記載の最適化装置。
The setting change unit is the first bit of the first bit number corresponding to the first combination and the first bit of the second bit string corresponding to the second combination among the plurality of combinations of the group. Set the number to the same number of bits or a different number of bits,
The optimization device according to claim 6.
前記設定変更部は、グループの複数の組合せのうち、第1の組合せに属するビット演算回路に対する前記第2のビット数と第2の組合せに属するビット演算回路に対する前記第2のビット数とを、同じビット数、または、異なるビット数に設定する、
請求項6記載の最適化装置。
The setting changing unit determines the number of the second bit for the bit operation circuit belonging to the first combination and the number of the second bit for the bit operation circuit belonging to the second combination among the plurality of combinations of the group. Set to the same number of bits or different number of bits,
The optimization device according to claim 6.
前記選択回路部は、前記複数のビット演算回路のうち、前記第1のビット数のビット演算回路以外の他のビット演算回路により出力された反転可否を示す信号を、強制的に反転不可に設定し、前記第1のビット数のビット演算回路により出力された反転可否を示す信号および前記他のビット演算回路に対して設定した反転不可を示す信号に基づいて選択した反転させる前記ビットを示す信号を、前記第1のビット数のビット演算回路だけでなく前記他のビット演算回路にも出力する、
請求項1記載の最適化装置。
The selection circuit unit forcibly sets a signal indicating whether or not inversion is possible, which is output by a bit operation circuit other than the bit operation circuit having the first number of bits, among the plurality of bit operation circuits. A signal indicating whether or not the bit can be inverted, which is output by the bit operation circuit having the first number of bits, and a signal indicating the bit to be inverted selected based on the signal indicating non-inversion set for the other bit operation circuit. Is output not only to the bit operation circuit having the first number of bits but also to the other bit operation circuit.
The optimization device according to claim 1.
入力された問題に応じて前記第1のビット数と前記第2のビット数とを決定する演算部による、前記第1のビット数と前記第2のビット数とを示す情報の入力を受け付け、前記第1のビット数と前記第2のビット数とを前記設定変更部に入力する制御部、
を更に有する請求項1記載の最適化装置。
The arithmetic unit that determines the number of the first bit and the number of the second bit according to the input problem accepts the input of information indicating the number of the first bit and the number of the second bit. A control unit that inputs the first bit number and the second bit number to the setting change unit.
The optimization device according to claim 1, further comprising.
最適化装置の制御方法において、
前記最適化装置が有する複数のビット演算回路が、イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、前記ビット列のうちの自ビットと他ビットとの相互作用の大きさを示す係数を記憶する記憶部から読み出した、反転された前記ビットに対応する係数を用いた前記イジングモデルのエネルギー変化の計算に応じて前記自ビットの反転可否を示す信号を出力し、
前記最適化装置が有する選択回路部が、前記複数のビット演算回路のうち前記ビット列の第1のビット数のビット演算回路の各々から出力された反転可否を示す信号に基づいて選択した前記ビット列のうち反転させるビットを示す信号を、前記第1のビット数のビット演算回路の各々に出力し、
前記最適化装置が有する設定変更部が、前記選択回路部に対する前記第1のビット数の変更、および、前記第1のビット数のビット演算回路の各々に対する前記係数の第2のビット数の変更を行う、
最適化装置の制御方法。
In the control method of the optimizer
When any bit of the bit string representing the state of the Ising model is inverted in the plurality of bit arithmetic circuits of the optimizer, the magnitude of the interaction between the own bit in the bit string and the other bit. A signal indicating whether or not the own bit can be inverted is output according to the calculation of the energy change of the Ising model using the coefficient corresponding to the inverted bit read from the storage unit that stores the coefficient indicating the above.
The selection circuit unit of the optimizer selects the bit string of the plurality of bit operation circuits based on a signal indicating whether or not inversion is possible, which is output from each of the bit operation circuits having the first number of bits of the bit string. A signal indicating the bit to be inverted is output to each of the bit operation circuits having the first number of bits.
The setting change unit of the optimizer changes the number of the first bits with respect to the selection circuit unit and changes the number of second bits of the coefficient with respect to each of the bit operation circuits having the first number of bits. I do,
How to control the optimizer.
最適化装置の制御プログラムにおいて、
前記最適化装置が有する複数のビット演算回路に、イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、前記ビット列のうちの自ビットと他ビットとの相互作用の大きさを示す係数を記憶する記憶部から読み出した、反転された前記ビットに対応する係数を用いた前記イジングモデルのエネルギー変化の計算に応じて前記自ビットの反転可否を示す信号を出力させ、
前記最適化装置が有する選択回路部に、前記複数のビット演算回路のうち前記ビット列の第1のビット数のビット演算回路の各々から出力された反転可否を示す信号に基づいて選択した前記ビット列のうち反転させるビットを示す信号を、前記第1のビット数のビット演算回路の各々に出力させ、
前記最適化装置が有する設定変更部に、前記選択回路部に対する前記第1のビット数の変更、および、前記第1のビット数のビット演算回路の各々に対する前記係数の第2のビット数の変更を行わせる、
最適化装置の制御プログラム。
In the control program of the optimizer
When any bit of the bit string representing the state of the Ising model is inverted in the plurality of bit arithmetic circuits of the optimizer, the magnitude of the interaction between the own bit in the bit string and the other bit. A signal indicating whether or not the own bit can be inverted is output according to the calculation of the energy change of the Ising model using the coefficient corresponding to the inverted bit read from the storage unit that stores the coefficient indicating the above.
The bit string selected in the selection circuit unit of the optimizer based on a signal indicating whether or not inversion is possible, which is output from each of the bit operation circuits having the first number of bits of the bit string among the plurality of bit operation circuits. A signal indicating the bit to be inverted is output to each of the bit operation circuits having the first number of bits.
In the setting change unit of the optimizer, the change of the first bit number for the selection circuit unit and the change of the second bit number of the coefficient for each of the bit operation circuits of the first bit number. To do,
Optimizer control program.
解くべき問題と動作条件とを入力する入力部と、
入力した前記問題をイジングモデルの基底状態の探索問題に変換するとともに、前記探索問題の規模を示す規模情報と、前記探索問題の表現の精度を表す精度情報と、前記探索問題のエネルギーの初期値を表すエネルギー情報と、規模および精度に応じた規模精度モード情報とを生成する変換部と、
前記規模情報と、前記精度情報と、前記エネルギー情報を入力するとともに前記動作条件と前記規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力する制御部と、
前記制御部による基底状態の探索の結果として得られた解を表示する表示部と、
を有する最適化装置。
An input section for inputting the problem to be solved and operating conditions,
The input problem is converted into a search problem in the base state of the rising model, scale information indicating the scale of the search problem, accuracy information indicating the accuracy of the expression of the search problem, and the initial value of the energy of the search problem. A conversion unit that generates energy information representing the above and scale accuracy mode information according to the scale and accuracy.
A control unit that inputs the scale information, the accuracy information, the energy information, the operating conditions, and the scale accuracy mode information, executes an operation for searching the ground state, and outputs a solution.
A display unit that displays the solution obtained as a result of the search for the ground state by the control unit, and a display unit.
Optimizer with.
前記変換部は、前記基底状態の探索の結果として得られた解を、可視化した表示情報に変換し、
前記表示部は、前記可視化した表示情報を表示する請求項14の最適化装置。
The conversion unit converts the solution obtained as a result of the search for the ground state into visualized display information.
The display unit is the optimization device according to claim 14, which displays the visualized display information.
前記規模情報は、規模の基準となる規模基準値に対する規模比により表され、
前記精度情報は、精度の基準となる精度基準値に対する精度比により表される、
請求項14又は15に記載の最適化装置。
The scale information is represented by a scale ratio to a scale reference value that serves as a scale reference.
The accuracy information is represented by an accuracy ratio to an accuracy reference value that is an accuracy reference.
The optimization device according to claim 14 or 15.
最適化装置の制御方法において、
前記最適化装置が有する入力部が、解くべき問題と動作条件とを入力し、
前記最適化装置が有する変換部が、入力した前記問題をイジングモデルの基底状態の探索問題に変換するとともに、前記探索問題の規模を示す規模情報と、前記探索問題の表現の精度を表す精度情報と、前記探索問題のエネルギーの初期値を表すエネルギー情報と、規模および精度に応じた規模精度モード情報とを生成し、
前記最適化装置が有する制御部が、前記規模情報と、前記精度情報と、前記エネルギー情報を入力するとともに前記動作条件と前記規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力し、
前記最適化装置が有する表示部が、前記制御部による基底状態の探索の結果として得られた解を表示する、
最適化装置の制御方法。
In the control method of the optimizer
The input unit of the optimizer inputs the problem to be solved and the operating conditions, and then
The conversion unit of the optimizer converts the input problem into a search problem in the base state of the rising model, scale information indicating the scale of the search problem, and accuracy information indicating the accuracy of the expression of the search problem. And energy information representing the initial value of the energy of the search problem, and scale accuracy mode information according to the scale and accuracy are generated.
The control unit of the optimizer inputs the scale information, the accuracy information, the energy information, the operating conditions, and the scale accuracy mode information, and executes a calculation for searching the ground state. And output the solution,
The display unit of the optimizer displays the solution obtained as a result of the search for the ground state by the control unit.
How to control the optimizer.
最適化装置の制御プログラムにおいて、
前記最適化装置が有する入力部から、解くべき問題と動作条件とを入力させ、
前記最適化装置が有する変換部に、入力した前記問題をイジングモデルの基底状態の探索問題に変換させるとともに、前記探索問題の規模を示す規模情報と、前記探索問題の表現の精度を表す精度情報と、前記探索問題のエネルギーの初期値を表すエネルギー情報と、規模および精度に応じた規模精度モード情報とを生成させ、
前記最適化装置が有する制御部に、前記規模情報と、前記精度情報と、前記エネルギー情報を入力するとともに前記動作条件と前記規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力させ、
前記最適化装置が有する表示部に、前記制御部による基底状態の探索の結果として得られた解を表示させる、
最適化装置の制御プログラム。
In the control program of the optimizer
The problem to be solved and the operating conditions are input from the input unit of the optimizer.
The conversion unit of the optimizer converts the input problem into a search problem in the base state of the rising model, scale information indicating the scale of the search problem, and accuracy information indicating the accuracy of the expression of the search problem. And energy information representing the initial value of the energy of the search problem, and scale accuracy mode information according to the scale and accuracy are generated.
The scale information, the accuracy information, and the energy information are input to the control unit of the optimization device, and the operating conditions and the scale accuracy mode information are input to execute a calculation for searching the ground state. And output the solution,
The display unit of the optimizer displays the solution obtained as a result of the search for the ground state by the control unit.
Optimizer control program.
JP2020546656A 2018-09-14 2018-09-14 Optimization device, optimization device control method, and optimization device control program Active JP7004937B2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/034233 WO2020054061A1 (en) 2018-09-14 2018-09-14 Optimization device, control method for optimization device, and control program for optimization device

Publications (2)

Publication Number Publication Date
JPWO2020054061A1 JPWO2020054061A1 (en) 2021-05-13
JP7004937B2 true JP7004937B2 (en) 2022-01-21

Family

ID=69776982

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020546656A Active JP7004937B2 (en) 2018-09-14 2018-09-14 Optimization device, optimization device control method, and optimization device control program

Country Status (5)

Country Link
US (1) US11886780B2 (en)
EP (1) EP3852028A4 (en)
JP (1) JP7004937B2 (en)
CA (1) CA3109735A1 (en)
WO (1) WO2020054061A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7410394B2 (en) 2020-03-26 2024-01-10 富士通株式会社 Optimization device and optimization method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018041351A (en) 2016-09-09 2018-03-15 富士通株式会社 Information processing device, ising device and method for controlling information processing device

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3260357B2 (en) 1990-01-24 2002-02-25 株式会社日立製作所 Information processing device
US9633715B2 (en) * 2013-05-31 2017-04-25 Hitachi, Ltd. Semiconductor device capable of attaining ground state in an ising model
JP5865457B1 (en) * 2014-08-29 2016-02-17 株式会社日立製作所 Information processing system and management apparatus
JP5864684B1 (en) * 2014-08-29 2016-02-17 株式会社日立製作所 Semiconductor device
WO2017037903A1 (en) 2015-09-02 2017-03-09 株式会社日立製作所 Semiconductor system and computing method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018041351A (en) 2016-09-09 2018-03-15 富士通株式会社 Information processing device, ising device and method for controlling information processing device

Also Published As

Publication number Publication date
US11886780B2 (en) 2024-01-30
JPWO2020054061A1 (en) 2021-05-13
CA3109735A1 (en) 2020-03-19
WO2020054061A1 (en) 2020-03-19
EP3852028A4 (en) 2021-10-06
EP3852028A1 (en) 2021-07-21
US20210173978A1 (en) 2021-06-10

Similar Documents

Publication Publication Date Title
Da Silva et al. Parallel implementation of reinforcement learning Q-learning technique for FPGA
Dral MLatom: A program package for quantum chemical research assisted by machine learning
JP7063211B2 (en) Optimization problem calculation program, optimization problem calculation method and optimization problem calculation device
Engin et al. An efficient genetic algorithm for hybrid flow shop scheduling with multiprocessor task problems
JP7206476B2 (en) Optimization device, optimization device control method, and optimization device control program
US11244026B2 (en) Optimization problem arithmetic method and optimization problem arithmetic device
CN111914378B (en) Single-amplitude quantum computing simulation method and device
CN111078621B (en) Optimizing apparatus and control method of optimizing apparatus
CN111077768B (en) Optimization device and control method of optimization device
JPWO2019216277A1 (en) Information processing device, arithmetic unit, and information processing method
JP7007520B2 (en) Information processing device, arithmetic unit, and information processing method
JP2019185602A (en) Optimization device and control method of optimization device
JP2020140631A (en) Optimization device and method for controlling optimization device
JP6925546B1 (en) Arithmetic system, information processing device, and optimal solution search processing method
CN111930007B (en) Optimization device and method for controlling the same
JP7219402B2 (en) Optimization device, optimization device control method, and optimization device control program
JP7087871B2 (en) Optimization problem calculation program, optimization problem calculation method and optimization problem calculation device
JP7004937B2 (en) Optimization device, optimization device control method, and optimization device control program
JP7155794B2 (en) Optimization Problem Calculation Program, Optimization Problem Calculation Method, and Optimization Problem Calculation Device
Cortés-Antonio et al. Design and implementation of differential evolution algorithm on FPGA for double-precision floating-point representation
JP4612546B2 (en) Parallel computing method and apparatus
CN116052759A (en) Hamiltonian volume construction method and related device
JP7398401B2 (en) Optimization method, information processing device and system using the same
Zhang et al. Adaptive-Precision Framework for SGD Using Deep Q-Learning
Song et al. A differential evolution algorithm with local search for resource investment project scheduling problems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201112

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211213

R150 Certificate of patent or registration of utility model

Ref document number: 7004937

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150