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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/08—Computing arrangements based on specific mathematical models using chaos models or non-linear system models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/06—Power analysis or power optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical 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.
最適化装置では、解くべき問題に応じて、利用されるスピンビット数(問題の規模に相当)や重み係数のビット数(問題における条件表現の精度に相当)が変わり得る。例えば、ある分野の問題では、スピンビット数が比較的多く用いられ、重み係数のビット数が比較的少なくてよいことがある。一方、他の分野の問題では、スピンビット数が比較的少なくてよいが、重み係数のビット数が比較的多く用いられることがある。しかし、各問題に適合したスピンビット数と重み係数のビット数とを備えた最適化装置を、問題毎に個別に製造するのは非効率である。 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の実施の形態]
第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
イジング型のエネルギー関数E(x)は、例えば、以下の式(1)で定義される。 The Ising-type energy function E (x) is defined by, for example, the following equation (1).
右辺第1項は、イジングモデルに含まれる全ビットから選択可能な2つのビットの全組合せについて、漏れと重複なく、2つのビットの値(0または1)と結合係数との積を積算したものである。イジングモデルに含まれる全ビット数をK個(Kは2以上の整数)とする。また、i,jの各々を、0以上K-1以下の整数とする。xiは、i番目のビットの値を表す変数(状態変数とも呼ばれる)である。xjは、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項は、全ビットのそれぞれのバイアス係数とビットの値との積の総和を求めたものである。biは、i番目のビットのバイアス係数を示している。
また、変数xiの値が変化して1-xiとなると、変数xiの増加分は、Δxi=(1-xi)-xi=1-2xiと表せる。したがって、スピン反転(値の変化)に伴うエネルギー変化ΔEiは、以下の式(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).
hiはローカルフィールド(局所場)と呼ばれ、式(3)で表される。 hi is called a local field and is expressed by the equation (3).
Δxiに応じてローカルフィールドhiに符号(+1または-1)を乗じたものがエネルギー変化ΔEiとなる。ローカルフィールドhiの変化分Δhiは式(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).
ある変数xjが変化したときのローカルフィールドhiを更新する処理は並列に行われる。
最適化装置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
ビット演算回路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
選択回路部2は、スピンビット列のうち、反転させるビット(反転ビット)を選択する。具体的には、選択回路部2は、ビット演算回路1a1,…,1aK,…,1aNのうち、イジングモデルの基底状態の探索に用いられているビット演算回路1a1,…,1aKの各々から出力された反転可否の信号を受け付ける。選択回路部2は、ビット演算回路1a1,…,1aKのうち、反転可の信号を出力したビット演算回路に対応するビットを優先的に1つ選択し、反転ビットとする。例えば、選択回路部2は、乱数生成部4により出力される乱数ビットに基づいて当該反転ビットの選択を行う。選択回路部2は、選択した反転ビットを示す信号を、ビット演算回路1a1,…,1aKに出力する。反転ビットを示す信号は、反転ビットの識別情報(index=j)と、反転可否を示すフラグ(flgj=1)と、反転ビットの現在の値qj(今回の反転前の値)とを示す信号を含む。ただし、何れのビットも反転されないこともある。何れのビットも反転されない場合、選択回路部2は、flgj=0を出力する。The
閾値生成部3は、ビット演算回路1a1,…,1aK,…,1aNの各々に対し、ビットの反転可否を判定する際に用いられる閾値を生成する。ビット演算回路1a1,…,1aK,…,1aNの各々に当該閾値を示す信号を出力する。後述するように、閾値生成部3は、閾値の生成に、温度を示すパラメータ(温度パラメータ)Tと乱数とを用いる。閾値生成部3は、当該乱数を発生させる乱数発生器を有する。閾値生成部3は、ビット演算回路1a1,…,1aK,…,1aNの各々に対して個別に乱数発生器を有し、個別に閾値の生成と供給とを行うことが好ましい。ただし、閾値生成部3は、所定数のビット演算回路で乱数発生器を共用してもよい。
The threshold
乱数生成部4は、乱数ビットを生成し、選択回路部2に出力する。乱数生成部4により生成された乱数ビットは、選択回路部2による反転ビットの選択に用いられる。
設定変更部5は、ビット演算回路1a1,…,1aK,…,1aNのうち、計算対象のイジングモデルの状態を表すビット列(スピンビット列)の第1のビット数(スピンビット数)の変更を行う。また、設定変更部5は、第1のビット数のビット演算回路の各々に対する、重み係数の第2のビット数の変更を行う。The random
The
制御部6は、温度パラメータTやビット演算回路1a1,…,1aNの各々の記憶部に対する重み係数の設定を行い、ビット演算回路1a1,…,1aNによる演算の開始や終了を制御する。制御部6は、演算結果の出力を行う。例えば、制御部6は、ビット演算回路1a1,…,1aKを用いた演算が終了すると、ビット演算回路1a1,…,1aKに保持されるスピンビット列を読み出して出力する。
The
次に、ビット演算回路の回路構成を説明する。ビット演算回路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に対して、重み係数の総数はK2である。記憶部11には、index=0のビットに対して、K個の重み係数W00,W01,…,W0,K-1が記憶される。ここで、重み係数は第2のビット数Lで表される。したがって、記憶部11では重み係数を格納するために、K×Lビットが所要される。なお、記憶部11は、ビット演算回路1a1の外部であって、最適化装置1の内部に設けられてもよい(他のビット演算回路の記憶部も同様)。The bit calculation circuit 1a1 includes a
The
精度切替回路12は、スピンビット列の何れかのビットが反転されると反転されたビットに対する重み係数を自身の(ビット演算回路1a1の)記憶部11から読み出し、読み出した重み係数をエネルギー変化計算部15に出力する。すなわち、精度切替回路12は、選択回路部2から反転ビットの識別情報を受け付け、記憶部11から反転ビットと自ビットとの組に対応する重み係数を読み出して、エネルギー変化計算部15に出力する。
When any bit of the spin bit string is inverted, the
このとき、精度切替回路12は、設定変更部5により設定された第2のビット数で表される重み係数の読み出しを行う。精度切替回路12は、設定変更部5による第2のビット数の変更に応じて、記憶部11から読み出す係数の第2のビット数を変更する。
At this time, the
例えば、精度切替回路12は、記憶部11から所定ビット数のビット列を読み出すセレクタを有する。セレクタが読み出す所定ビット数が、第2のビット数よりも大きい場合、精度切替回路12は、当該セレクタにより反転ビットに対応する重み係数を含む単位ビット列を読み出し、読み出した単位ビット列から第2のビット数で表される重み係数を抽出する。あるいは、精度切替回路12は、セレクタが読み出す所定ビット数が、第2のビット数よりも小さい場合、当該セレクタにより読み出された複数のビット列を結合することで、第2のビット数で表される重み係数を記憶部11から抽出してもよい。
For example, the
反転判定部13は、選択回路部2により出力されたindex=jとflgjとを示す信号を受け付け、当該信号に基づいて反転ビットとして自ビットが選択されたか否かを判定する。反転ビットとして自ビットが選択された場合(すなわち、index=jが自ビットを示し、flgjが反転可を示す場合)、反転判定部13は、ビット保持部14に記憶されたビットを反転させる。すなわち、ビット保持部14に保持されたビットが0の場合、当該ビットを1に変更する。また、ビット保持部14に保持されたビットが1の場合、当該ビットを0に変更する。The
ビット保持部14は、1ビットを保持するレジスタである。ビット保持部14は、保持するビットをエネルギー変化計算部15および選択回路部2に出力する。
エネルギー変化計算部15は、記憶部11から読み出した重み係数を用いたイジングモデルのエネルギー変化値ΔE0を計算し、状態遷移判定部16に出力する。具体的には、エネルギー変化計算部15は、反転ビットの値(今回の反転前の値)を選択回路部2から受け付け、反転ビットが、1から0、または、0から1のどちらに反転するかに応じて、式(4)により、Δh0を計算する。そして、エネルギー変化計算部15は、前回のh0にΔh0を加算することで、h0を更新する。エネルギー変化計算部15は、h0を保持するレジスタを有し、当該レジスタにより更新後のh0を保持する。The
The energy
更に、エネルギー変化計算部15は、ビット保持部14より現在の自ビットを受け付け、自ビットが0であれば0から1へ、自ビットが1であれば1から0へ、反転する場合のイジングモデルのエネルギー変化値ΔE0を式(2)により計算する。エネルギー変化計算部15は、計算したエネルギー変化値ΔE0を、状態遷移判定部16に出力する。Further, the energy
状態遷移判定部16は、エネルギー変化計算部15によるエネルギー変化の計算に応じて、自ビットの反転可否を示す信号flg0を選択回路部2に出力する。具体的には、状態遷移判定部16は、エネルギー変化計算部15により計算されたエネルギー変化値ΔE0を受け付け、閾値生成部3により生成された閾値との比較に応じて、自ビットの反転可否を判定する比較器である。ここで、状態遷移判定部16による判定について説明する。The state
シミュレーテッド・アニーリングでは、あるエネルギー変化Δ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).
式(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.
温度パラメータ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.
ここで、T0は、初期温度値であり問題に応じて十分に大きくとることが望ましい。
式(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))より小さいとき)、flg0=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
閾値生成部3は、一様乱数uを生成し、上記のf-1(u)の値に変換する変換テーブルを用いて、f-1(u)の値を出力する。メトロポリス法が適用される場合、f-1(u)は、式(9)で与えられる。また、ギブス法が適用される場合、f-1(u)は、式(10)で与えられる。The threshold
変換テーブルは、例えば、閾値生成部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
なお、選択回路部2から状態遷移判定部16に対してflgjを入力し、当該flgjが状態遷移を許容しないことを示すとき(つまり状態遷移が生じないとき)、状態遷移判定部16により-ΔE0にオフセット値を加算してから、閾値との比較を行ってもよい。また、状態遷移判定部16は、状態遷移が生じないことが継続する場合に、加算するオフセット値を増加させてもよい。一方、状態遷移判定部16は、flgjが、状態遷移を許容することを示すとき(つまり状態遷移が生じるとき)には、オフセット値を0にする。-ΔE0へのオフセット値の加算やオフセット値の増加により、状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。When flg j is input from the
こうして、温度パラメータ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
最適化装置1では、前述の設定変更部5により、イジングモデルのスピンビット数(第1のビット数)と、ビット間の重み係数のビット数(第2のビット数)とを変更可能である。ここで、スピンビット数は、イジングモデルを実現する回路の規模(問題の規模)に相当する。規模が大きいほど、多数の組合せ候補をもつ組合せ最適化問題に最適化装置1を適用できる。また、重み係数のビット数は、ビット間の相互関係の表現の精度(問題における条件表現の精度)に相当する。精度が高いほど、スピン反転時のエネルギー変化ΔEに対する条件を詳細に設定できる。ある問題では、スピンビット数が大きく、重み係数を表すビット数が小さいことがある。あるいは、別の問題では、スピンビット数が小さく、重み係数を表すビット数が大きいこともある。一方、問題に応じて、各問題に適合した最適化装置を個別に製造することは非効率である。
In the
そこで、最適化装置1では、設定変更部5によりイジングモデルの状態を表すスピンビット数と重み係数のビット数との設定を可能とすることで、規模と精度とを可変にできる。その結果、1つの最適化装置1において、問題に合った規模および精度を実現できる。
Therefore, in the
より具体的には、ビット演算回路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
ここで、前述のように、ビット演算回路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
また、上記の例では、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
あるいは、最適化装置1は、N-K≧Kの場合、残りのN-K個のビット演算回路のうちのK個のビット演算回路により、前述のイジングモデルと同じイジングモデルを実現し、両イジングモデルにより同一問題処理の並列度を高めて計算を高速化してもよい。
Alternatively, when NK ≧ K, the optimizing
更に、最適化装置1は、残りのN-K個のビット演算回路のうちの一部を用いて、他の問題に対応する他のイジングモデルを実現し、前述のイジングモデルで表される問題と並列に、当該他の問題の演算を行ってもよい。
Further, the
以下では、最適化装置1を用いる情報処理システムを例示し、最適化装置1の機能を更に詳細に説明する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。In the following, an information processing system using the
[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
情報処理装置20は、組合せ最適化問題をイジングモデルに置き換え、イジングモデルの基底状態の探索により、組合せ最適化問題を高速に解く機能を提供する。
クライアント30は、ユーザにより使用されるクライアントコンピュータであり、ユーザが解くべき問題の、情報処理装置20への入力に用いられる。The
The
図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
CPU21、DRAM22、記憶装置23、NIC24、最適化装置25および媒体リーダ28は、情報処理装置20のバス29に接続されている。バス29は、例えば、PCIe(Peripheral Component Interconnect Express)バスである。
The
CPU21は、DRAM22に格納されたプログラムの命令を実行するプロセッサである。CPU21は、記憶装置23に記憶されたプログラムやデータの少なくとも一部をDRAM22にロードし、プログラムを実行する。CPU21は、当該プログラムを実行することで発揮される機能により、最適化装置25に対する設定や動作の制御を行う。
The
DRAM22は、情報処理装置20の主記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを一時的に記憶する。
記憶装置23は、情報処理装置20の補助記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを記憶する。記憶装置23は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などである。The
The
NIC24は、ネットワーク40に接続され、ネットワーク40を介してクライアント30と通信する通信インタフェースである。NIC24は、例えば、ネットワーク40に属するスイッチやルータなどの通信装置とケーブルで接続される。
The
最適化装置25は、CPU21の制御により、イジングモデルの基底状態を探索する。最適化装置25は、例えば、1チップの半導体集積回路であり、FPGAなどにより実現される。最適化装置25は、第1の実施の形態の最適化装置1の一例である。
The
媒体リーダ28は、記録媒体41に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体41として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
The
媒体リーダ28は、例えば、記録媒体41から読み取ったプログラムやデータを、DRAM22や記憶装置23などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU21によって実行される。なお、記録媒体41は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体41や記憶装置23を、コンピュータ読み取り可能な記録媒体と言うことがある。
The
なお、クライアント30はCPU、主記憶装置、補助記憶装置、NIC、マウスやキーボードなどの入力デバイスおよびディスプレイを有する。
図4は、情報処理システムにおけるハードウェアの関係の例を示す図である。The
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
CPU21は、ライブラリ21aおよびドライバ21bを実行するプロセッサ(演算部)である。ライブラリ21aのプログラム、および、ドライバ21bのプログラムは、記憶装置23に格納されており、CPU21による実行時にDRAM22にロードされる。
The
ライブラリ21aは、ユーザプログラム31により入力された各種データを受け付け、ユーザが解くべき問題を、イジングモデルの最低エネルギー状態を探索する問題に変換する。ライブラリ21aは、変換後の問題に関する情報(例えば、スピンビット数、重み係数を表すビット数、重み係数の値、温度パラメータの初期値など)を、ドライバ21bに提供する。また、ライブラリ21aは、最適化装置25による解の探索結果をドライバ21bから取得し、当該探索結果をユーザに分かり易い結果情報に変換して、ユーザプログラム31に提供する。
The
ドライバ21bは、ライブラリ21aから提供された情報を最適化装置25に供給する。また、ドライバ21bは、イジングモデルによる解の探索結果を最適化装置25から取得し、ライブラリ21aに提供する。
The
最適化装置25は、ハードウェアとして、制御部25aおよびLFB(Local Field Block)50を有する。
制御部25aは、ドライバ21bから受け付けたLFB50の動作条件を記憶するRAMを有し、当該動作条件に基づいてLFB50による演算を制御する。また、制御部25aは、LFB50が備える各種のレジスタへの初期値の設定、SRAMへの重み係数の格納、および、演算終了後のスピンビット列(探索結果)の読み出しなどを行う。制御部25aは、例えば、FPGAにおける回路などによって実現される。The
The
LFB50は、複数のLFE(Local Field Element)を有する。LFEは、スピンビットに対応する単位素子である。1つのLFEは、1つのスピンビットに対応する。後述するように、最適化装置25は、複数のLFBを有してもよい。
The
図5は、制御部のハードウェア例を示すブロック図である。
制御部25aは、CPU入出力部25a1、制御レジスタ25a2、LFB送信部25a3およびLFB受信部25a4を有する。FIG. 5 is a block diagram showing a hardware example of the control unit.
The
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
制御レジスタ25a2は、CPU入出力部25a1によるLFB50に対する各種の設定データを保持し、LFB送信部25a3に出力する。また、制御レジスタ25a2は、LFB受信部25a4によりLFB50から受信されたデータを保持し、CPU入出力部25a1に出力する。
The control register 25a2 holds various setting data for the
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
The LFB receiving unit 25a4 receives data (data such as a calculation result) from the
図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.
次に、最少エネルギーとなるバイナリ値の探索例を説明する。
図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
最適化装置25は、上記の計算を、バイナリ値221の全ビットに適用し、各々のビットの反転に対して、エネルギー変化量ΔEを計算する。例えば、バイナリ値221のビット数がNのとき、反転パターン222はN個になる。グラフ212は、反転パターン毎のエネルギー変化の様子を例示する。
The
最適化装置25は、反転パターン毎のΔEに基づいて、反転条件(閾値とΔEとの所定の判定条件)を満たした反転パターン222のうちからランダムで1つを選択する。最適化装置25は、選択された反転パターンに対応するΔEを、スピン反転前のEinitに加減算し、スピン反転後のエネルギー値Eを計算する。最適化装置は、求めたエネルギー値EをEinitとし、スピン反転後のバイナリ値223を用いて、上記の手順を繰り返し行う。The
ここで、前述のように、式(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
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
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
以下では、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
精度切替回路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
ここで、精度切替回路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
具体的には、精度切替回路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
なお、精度切替回路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)により、ローカルフィールドh0の変化量Δh0を計算する。Δh生成部62a1は、Δh0を加算器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
加算器63a1は、h格納レジスタ64a1に格納されたローカルフィールドh0にΔh0を加算し、h格納レジスタ64a1に出力する。
h格納レジスタ64a1は、図示しないクロック信号に同期して、加算器63a1が出力する値(ローカルフィールドh0)を取り込む。h格納レジスタ64a1は、例えば、フリップフロップである。なお、h格納レジスタ64a1に格納されるローカルフィールドh0の初期値は、バイアス係数b0である。当該初期値は、制御部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
反転判定部65a1は、反転ビットのindex=jと、反転可否を示すフラグFjとをランダムセレクタ部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
ビット格納レジスタ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
ΔE生成部67a1は、h格納レジスタ64a1のローカルフィールドh0およびビット格納レジスタ66a1のスピンビットに基づいて、自ビットの反転に応じたイジングモデルのエネルギー変化量ΔE0を、式(2)により計算する。ΔE生成部67a1は、エネルギー変化量ΔE0を、判定部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
判定部68a1は、ΔE生成部67a1により出力されたエネルギー変化量ΔE0と、閾値生成部53により生成された閾値との比較により、自ビットの反転を許容するか否かを示す(自ビットの反転可否を示す)フラグF0を、ランダムセレクタ部52に出力する。具体的には、判定部68a1は、ΔE0が閾値-(T・f-1(u))より小さいときF0=1(反転可)を出力し、ΔE0が閾値-(T・f-1(u))以上のときF0=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
ランダムセレクタ部52は、LFE51a1,51a2,…,51anの各々から、エネルギー変化量、スピンビットの反転可否を示すフラグおよびスピンビットを受け付け、反転可であるスピンビットのうち反転させるビット(反転ビット)を選択する。
The
ランダムセレクタ部52は、選択した反転ビットの現在のビット値(ビットqj)を、LFE51a1,51a2,…,51anが備えるΔh生成部62a1,62a2,…,62anに供給する。ランダムセレクタ部52は、第1の実施の形態の選択回路部2の一例である。The
ランダムセレクタ部52は、反転ビットのindex=jと、反転可否を示すフラグFjとを、LFE51a1,51a2,…,51anが備えるSRAM60a1,60a2,…,60anに出力する。なお、ランダムセレクタ部52は、前述のように、反転ビットのindex=jと、反転可否を示すフラグFjとを、LFE51a1,51a2,…,51anが備える精度切替回路61a1,61a2,…,61anに出力してもよい。The
また、ランダムセレクタ部52は、反転ビットのindex=jと、反転可否を示すフラグFjとを、LFE51a1,51a2,…,51anが備える反転判定部65a1,65a2,…,65anに供給する。Further, the
更に、ランダムセレクタ部52は、選択した反転ビットに対応するΔEjを、加算器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
Here, the
閾値生成部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
乱数生成部54は、ランダムセレクタ部52における反転ビットの選択に用いられる乱数ビットを生成し、ランダムセレクタ部52に供給する。
モード設定レジスタ55は、LFE51a1,51a2,…,51anが備える精度切替回路61a1,61a2,61anに対して、重み係数のビット数(すなわち、精度)を示す信号を供給する。また、モード設定レジスタ55は、ランダムセレクタ部52に対して、スピンビット数(すなわち、規模)を示す信号を供給する。モード設定レジスタ55に対するスピンビット数や重み係数のビット数の設定は、制御部25aにより行われる。モード設定レジスタ55は、第1の実施の形態の設定変更部5の一例である。The random
The
加算器56は、ランダムセレクタ部52により出力されたエネルギー変化量ΔEjを、E格納レジスタ57に格納されたエネルギー値Eに加算し、E格納レジスタ57に出力する。The
E格納レジスタ57は、図示しないクロック信号に同期して、加算器56が出力するエネルギー値Eを取り込む。E格納レジスタ57は、例えば、フリップフロップである。なお、エネルギー値Eの初期値は、制御部25aによって式(1)を用いて計算され、E格納レジスタ57に設定される。
The
例えば、解の探索にK個のLFEが用いられる場合、制御部25aはビット格納レジスタ66a1,…,66aKの各スピンビットを読み出すことで、スピンビット列を得る。
図9は、ランダムセレクタ部の回路構成例を示す図である。For example, when K LFEs are used to search for a solution, the
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
The
初段の選択回路52a1,52a2,52a3,52a4,…,52aqの各々には、LFE51a1,51a2,…,51anのそれぞれが出力する変数qiとFiとΔEiの組が2組ずつ入力される。例えば、選択回路52a1には、LFE51a1が出力する変数q0とF0とΔE0による組と、LFE51a2が出力する変数q1とF1とΔE1による組とが入力される。また、選択回路52a2には、変数q2とF2とΔE2による組と変数q3とF3とΔE3による組が入力され、選択回路52a3には、変数q4とF4とΔE4による組と変数q5とF5とΔE5による組が入力される。更に、選択回路52a4には、変数q6とF6とΔE6による組と変数q7とF7とΔE7による組が入力され、選択回路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
そして、選択回路52a1,…,52aqの各々は、入力された2組の変数qiとFiとΔEiと、乱数生成部54が出力する1ビット乱数に基づいて、一方の組の変数qiとFiとΔEiを選択する。このとき、選択回路52a1,…,52aqの各々は、Fiが1である組を優先的に選択し、両方の組が1の場合には1ビット乱数に基づいて何れか一方の組を選択する(他の選択回路も同様)。ここで、乱数生成部54は、1ビット乱数を選択回路毎に個別に生成し、各選択回路に供給する。また、選択回路52a1,…,52aqの各々は、どちらの組の変数qiとFiとΔEiを選択したかを示す1ビットの識別値を生成し、選択した変数qiとFiとΔEiと識別値とを含む信号(状態信号と言う)を出力する。なお、初段の選択回路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
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
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
ただし、ランダムセレクタ部52は、各LFEからフラグFとともに当該LFEに対応するindexを受け付け、変数qiとFiとΔEiと同様に、各選択回路によりindexの選択を行うことで、反転ビットに対応するindexを出力してもよい。この場合、各LFEは、index格納用のレジスタを有し、当該レジスタからランダムセレクタ部52へindexを出力する。However, the
このように、ランダムセレクタ部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
こうして、フラグ制御部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
次に、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.
この場合、規模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
図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 (
データ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 (
データ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
図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 (
データ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 (
データ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
図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 (
データ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 (
データ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
図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 (
データ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 (
データ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
FIG. 15 is a flowchart showing an example of the initialization process.
(S10)CPU21は、問題に応じた初期値および動作条件を最適化装置25に入力する。初期値は、例えば、エネルギー値E、ローカルフィールドhi、スピンビットqi、温度パラメータTの初期値および重み係数Wなどを含む。また、動作条件は、1つの温度パラメータでの状態の更新回数N1、温度パラメータの変更回数N2および温度パラメータの下げ幅などを含む。制御部25aは、入力された初期値および重み係数を、前述の各LFEのレジスタおよびSRAMに設定する。なお、制御部25aは、使用されないLFEがある場合、当該LFEのSRAMに、Wとして、例えば全て0を設定する。スピンビット間の重み係数Wは、問題に応じた精度に対応するビット数で表される。(S10) The
(S11)CPU21は、問題に応じたスピンビット数(規模)および重み係数のビット数(精度)を、最適化装置25に入力する。制御部25aは、CPU21からスピンビット数および重み係数のビット数を受け付け、モード設定レジスタ55に入力する。モード設定レジスタ55に入力された重み係数のビット数は、各LFEの精度切替回路に入力される。また、モード設定レジスタ55に入力されたスピンビット数は、ランダムセレクタ部52に入力される。
(S11) The
(S12)CPU21は、最適化装置25に演算開始フラグ(例えば、演算開始フラグ=1)を入力する。制御部25aは、演算開始フラグの入力を受け付け、LFB50による演算を開始する。こうして、初期化処理が終了する。
(S12) The
図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に格納されたローカルフィールドhiおよびビット格納レジスタ66axに格納されたビットqiに基づいて、当該ビットqiを反転させた場合のエネルギー変化量ΔEiを生成する。ΔEiの生成には、式(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
(S21)判定部68axは、ΔE生成部67axにより生成されたエネルギー変化量ΔEiと、閾値生成部53により生成された閾値(=-(T・f-1(u)))とを比較し、閾値>ΔEiであるか否かを判定する。閾値>ΔEiの場合、ステップS22に処理が進む。閾値≦ΔEiの場合、ステップ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
(S22)判定部68axは、反転候補信号(Fi=1)をランダムセレクタ部52に出力する。そして、ステップS24に処理が進む。
(S23)判定部68axは、非反転信号(Fi=0)をランダムセレクタ部52に出力する。そして、ステップS24に処理が進む。(S22) The determination unit 68ax outputs an inversion candidate signal (Fi = 1) to the
(S23) The determination unit 68ax outputs a non-inverting signal (Fi = 0) to the
(S24)ランダムセレクタ部52は、LFE51a1,…,LFE51anの各々から出力された全反転候補(Fi=1であるLFEに対応するビット)から、反転ビットを1つ選択する。ランダムセレクタ部52は、選択した反転ビットに対応するindex=j、Fj、qjをLFE51a1,…,LFE51anに出力する。また、ランダムセレクタ部52は、選択した反転ビットに対応するΔEjを、加算器56に出力する。すると、次のステップS25(エネルギー更新処理),S26(状態更新処理)が並列に開始される。(S24) The
(S25)加算器56は、反転ビットに対応するエネルギー変化量ΔEを、エネルギー値Eに加算することで、E格納レジスタ57に格納されたエネルギー値Eを更新する。すなわち、E=E+ΔEである。そして、エネルギー更新処理が終了する。
(S25) The
(S26)精度切替回路61axは、反転ビットに対応するindex=jとフラグFjとを取得し、当該反転ビットに対応する重み係数を含む単位ビット列を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により設定されたモード選択に応じたビット数の重み係数(反転ビットqjに対応する重み係数)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とに基づいて、Δhiを生成する。Δhiの生成には、式(4)が用いられる。また、反転ビットの反転方向は、ランダムセレクタ部52により出力される反転ビットqj(今回の反転前のビット)により判別される。(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
(S29)加算器63axは、Δh生成部62axにより生成されたΔhiを、h格納レジスタ64axに格納されたローカルフィールドhiに加算することで、h格納レジスタ64axに格納されたローカルフィールドhiを更新する。また、反転判定部65axは、ランダムセレクタ部52により出力されたindex=jおよびフラグFjに基づいて、自ビットが反転ビットとして選択されたか否かを判定する。反転判定部65axは、自ビットが反転ビットとして選択された場合、ビット格納レジスタ66axに格納されたスピンビットを反転させ、自ビットが反転ビットとして選択されなかった場合、ビット格納レジスタ66axのスピンビットを維持する。ここで、自ビットが反転ビットとして選択された場合とは、ランダムセレクタ部52により出力された信号について、index=j=i、かつ、Fj=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
(S30)制御部25aは、現在の温度パラメータTにおいて、LFE51a1,…,LFE51anに保持される各スピンビットの更新処理回数がN1に達したか(更新処理回数=N1であるか)否かを判定する。更新処理回数がN1に達した場合、ステップS31に処理が進む。更新処理回数がN1に達していない場合、制御部25aは、更新処理回数に1を加算して、ステップS20に処理を進める。
(S30) The
(S31)制御部25aは、温度パラメータTの変更回数がN2に達したか(温度変更回数=N2であるか)否かを判定する。温度変更回数がN2に達した場合、ステップS33に処理が進む。温度変更回数がN2に達していない場合、制御部25aは、温度変更回数に1を加算して、ステップS32に処理を進める。
(S31) The
(S32)制御部25aは、温度パラメータTを変更する。具体的には、制御部25aは、動作条件に応じた下げ幅で、温度パラメータTの値を減少させる(温度を下げることに相当する)。そして、ステップS20に処理が進む。
(S32) The
(S33)制御部25aは、ビット格納レジスタ66axに格納されたスピンビットを読み出し、演算結果として出力する。具体的には、制御部25aは、モード設定レジスタ55により設定されたスピンビット数Kに対応するビット格納レジスタ66a1,…,66aKの各々に格納されたスピンビットを読み出し、CPU21に出力する。すなわち、制御部25aは、読み出したスピンビット列をCPU21に供給する。そして、演算処理が終了する。
(S33) The
なお、ステップS24において、ランダムセレクタ部52は、モード設定レジスタ55の設定に応じて、使用されないLFEにより出力されるFの値を、強制的に0に設定することで、使用されないLFEをビット反転の候補から除外することができる。
In step S24, the
最適化装置25によれば、モード設定レジスタ55によりイジングモデルの状態を表すスピンビット数と重み係数のビット数との設定を可能とし、1チップの最適化装置25において、問題に合った規模および精度を実現できる。
According to the
より具体的には、精度切替回路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
また、ランダムセレクタ部52は、モード設定レジスタ55により設定されたスピンビット数に相当する数(例えば、K個)のLFEに対して、反転ビットを示す信号を入力し、当該数(K個)のLFEに対応するビットの中から反転ビットを選択する。ランダムセレクタ部52は、使用されないn-K個のLFEにも反転ビットを示す信号を入力するが、当該n-K個のLFEから出力されるフラグFを強制的に0(反転不可)に設定することで、使用されないLFEを反転ビットの選択候補から除外する。
Further, the
これにより、問題に応じた規模および精度を備えた最適化装置を個別に製造しなくても、1つの最適化装置25によって、問題に応じた規模および精度でイジングモデルを実現できる。
As a result, the Ising model can be realized with the scale and accuracy according to the problem by one
次に、モード設定の他の例を説明する。例えば、最適化装置25は、次のようにSRAM60a1,…,60anに重み係数を格納することで、前述の4種類のモードに加え、規模4kビット/精度64ビットの第5のモードを提供することもできる。
Next, another example of mode setting will be described. For example, the
図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 (
データ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
これにより、規模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
[第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
図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
第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
LFB70a,…,70hが備える複数のLFEは、第1の実施の形態のビット演算回路1a1,…,1aNの一例である。LFB70a,…,70hの各々は、所定数(m個)のLFEを要素に含む、LFEの1つのグループであると言える。また、LFB70a,…,70hの各々には、識別番号#0~#7が割り当てられている。
The plurality of LFEs included in the
最適化装置26は、更に、規模結合回路91、モード設定レジスタ92、加算器93a,93b,93c,93d,93e,93f,93g,93hおよびE格納レジスタ94a,94b,94c,94d,94e,94f,94g,94hを有する。
The
ここで、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
規模結合回路91は、LFB70a,…,70hの各々から状態信号を受け付け、状態信号に基づいて反転ビットの選択を行う。規模結合回路91は、反転ビットに関する信号を、LFB70a,…,70hの各LFEに供給する。
The
具体的には、規模結合回路91は、フラグFy0、ビットqy0および反転ビットを示すindex=y0をLFB70a1のLFE71a1,…,71amに出力する。ここで、以降の図では、ランダムセレクタ部72および規模結合回路91により出力される「index=x0」などの表記を「x0」のように略記することがある。規模結合回路91は、エネルギー変化量ΔEy0を加算器93aに出力する。Specifically, the
また、規模結合回路91は、フラグFy1、ビットqy1および反転ビットを示すindex=y1をLFB70bの各LFEに供給する。エネルギー変化量ΔEy1を加算器93bに出力する。Further, the
規模結合回路91は、フラグFy2、ビットqy2および反転ビットを示すindex=y2をLFB70cの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy2を加算器93cに出力する。The
規模結合回路91は、フラグFy3、ビットqy3および反転ビットを示すindex=y3をLFB70dの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy3を加算器93dに出力する。The
規模結合回路91は、フラグFy4、ビットqy4および反転ビットを示すindex=y4をLFB70eの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy4を加算器93eに出力する。The
規模結合回路91は、フラグFy5、ビットqy5および反転ビットを示すindex=y5をLFB70fの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy5を加算器93fに出力する。The
規模結合回路91は、フラグFy6、ビットqy6および反転ビットを示すindex=y6をLFB70gの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy6を加算器93gに出力する。The
規模結合回路91は、フラグFy7、ビットqy7および反転ビットを示すindex=y7をLFB70hの各LFEに出力する。規模結合回路91は、エネルギー変化量ΔEy7を加算器93hに出力する。The
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
The
加算器93aは、ΔEy0を、E格納レジスタ94aに格納されているエネルギー値E0に加算することで、当該エネルギー値E0を更新する。E格納レジスタ94aは、例えば、クロック信号(図示を省略している)に同期して(他のE格納レジスタも同様)、加算器93aにより計算されたエネルギー値E0を取り込む。The
加算器93bは、ΔEy1を、E格納レジスタ94bに格納されているエネルギー値E1に加算することで、当該エネルギー値E1を更新する。E格納レジスタ94bは、加算器93bにより計算されたエネルギー値E1を取り込む。The
加算器93cは、ΔEy2を、E格納レジスタ94cに格納されているエネルギー値E2に加算することで、当該エネルギー値E2を更新する。E格納レジスタ94cは、加算器93cにより計算されたエネルギー値E2を取り込む。The
加算器93dは、ΔEy3を、E格納レジスタ94dに格納されているエネルギー値E3に加算することで、当該エネルギー値E3を更新する。E格納レジスタ94dは、加算器93dにより計算されたエネルギー値E3を取り込む。The
加算器93eは、ΔEy4を、E格納レジスタ94eに格納されているエネルギー値E4に加算することで、当該エネルギー値E4を更新する。E格納レジスタ94eは、加算器93eにより計算されたエネルギー値E4を取り込む。The
加算器93fは、ΔEy5を、E格納レジスタ94fに格納されているエネルギー値E5に加算することで、当該エネルギー値E5を更新する。E格納レジスタ94fは、加算器93fにより計算されたエネルギー値E5を取り込む。The
加算器93gは、ΔEy6を、E格納レジスタ94gに格納されているエネルギー値E6に加算することで、当該エネルギー値E6を更新する。E格納レジスタ94gは、加算器93gにより計算されたエネルギー値E6を取り込む。The
加算器93hは、ΔEy7を、E格納レジスタ94hに格納されているエネルギー値E7に加算することで、当該エネルギー値E7を更新する。E格納レジスタ94hは、加算器93hにより計算されたエネルギー値E7を取り込む。The
E格納レジスタ94a,…,94hの各々は、例えば、フリップフロップである。
次に、LFB70aの回路構成例を説明する。LFB70b,…,70hもLFB70aと同様の回路構成である。Each of the
Next, a circuit configuration example of the
図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
モード設定レジスタ75は、精度切替回路81a1,81a2,…,81amに対する重み係数のビット数(精度)の設定を行う。モード設定レジスタ75は、ランダムセレクタ部72に対して設定を行う信号線を有していない(ただし、当該信号線を有してもよい)。第3の実施の形態では、一例として、第2の実施の形態で示した次の5種類のモードを利用可能である。
The
第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
そのため、規模結合回路91は、複数のLFB(LFBの組合せ)に対し、モード設定レジスタ92によるスピンビット数の変更に応じて、スピンビット数に相当する数のLFEを含むように、組合せるLFB数(組合せるグループ数)を選択する。規模結合回路91は、例えば次の回路構成を有する。
Therefore, the
図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
初段の選択回路91a1,…,91a4の各々には、LFB70a,…,70hのそれぞれが出力する変数qiとFiとΔEiと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組のうちの一方の組の(xi,Fi,ΔEi,index=i)を選択する。このとき、選択回路91a1,…,91a4の各々は、Fiが1である組を優先的に選択し、両方の組が1の場合には1ビット乱数に基づいて何れか一方の組を選択する(なお、選択回路91b1,91b2,91c1も同様)。ここで、乱数生成部91dは、1ビット乱数を選択回路毎に個別に生成し、各選択回路に供給する。また、選択回路91a1,…,91a4の各々は、どちらの組を選択したかを示す識別値を、両組に含まれるindexに基づいて生成し、選択した変数qiとFiとΔEiと識別値とを含む状態信号を出力する。なお、選択回路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
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
最終段の選択回路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
前述のように、識別値はindexに相当する。規模結合回路91は、変数qiとFiとΔEiと同様にして、各選択回路により、各ランダムセレクタ部から入力されたindexの選択を行うことで、反転ビットに対応するindexを出力してもよい。この場合、各ランダムセレクタ部は、各LFEから変数qやフラグFと共にindexの供給を受けることになる。制御部25aは、各LFEの所定のindex格納用のレジスタに対してLFBの組合せに応じたindexの設定を行うことが考えられる。As mentioned above, the identification value corresponds to index. The
モード選択回路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
モード選択回路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
モード選択回路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
モード選択回路91e1,…,91e8の各々の規模8kビットの入力端子には、選択回路91c1が出力する状態信号が入力される。
モード選択回路91e1,…,91e8の各々は、モード設定レジスタ92による規模(スピンビット数)の設定を受け付ける。ただし、図20では、モード設定レジスタ92からモード選択回路91e2,…,91e8の各々に対する信号線を「…」の表記により略記している。モード選択回路91e1,…,91e8の各々は、設定された規模に応じた入力端子に入力された状態信号を選択して、(xj,Fj,index=j)をLFB70a,…,70hへ出力し、ΔEjを加算器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
例えば、モード選択回路91e1は、(xy0,Fy0,index=y0)をLFB70aへ出力し、ΔEy0を加算器93aへ出力する。加算器93aは、ΔEy0を基にE0を更新する。モード選択回路91e2は、(xy1,Fy1,index=y1)をLFB70bへ出力し、ΔEy1を加算器93bへ出力する。加算器93bは、ΔEy1を基にE1を更新する。モード選択回路91e3は、(xy2,Fy2,index=y2)をLFB70cへ出力し、ΔEy2を加算器93cへ出力する。加算器93cは、ΔEy2を基にE2を更新する。モード選択回路91e4は、(xy3,Fy3,index=y3)をLFB70dへ出力し、ΔEy3を加算器93dへ出力する。加算器93dは、ΔEy3を基にE3を更新する。モード選択回路91e5は、(xy4,Fy4,index=y4)をLFB70eへ出力し、ΔEy4を加算器93eへ出力する。加算器93eは、ΔEy4を基にE4を更新する。モード選択回路91e6は、(xy5,Fy5,index=y5)をLFB70fへ出力し、ΔEy5を加算器93fへ出力する。加算器93fは、ΔEy5を基にE5を更新する。モード選択回路91e7は、(xy6,Fy6,index=y6)をLFB70gへ出力し、ΔEy6を加算器93gへ出力する。加算器93gは、ΔEy6を基にE6を更新する。モード選択回路91e8は、(xy7,Fy7,index=y7)をLFB70hへ出力し、ΔEy7を加算器93hへ出力する。加算器93hは、ΔEy7を基にE7を更新する。For example, the mode selection circuit 91e1 outputs (x y0 , F y0 , index = y0) to the LFB70a and outputs ΔE y0 to the
すなわち、第3の実施の形態の最適化装置26は、あるLFB(グループ)に属する各LFEから出力された反転可否を示す信号に基づいて何れかのビットを選択し、選択したビットを示す信号を規模結合回路91に出力するランダムセレクタ部をLFB毎に有する。規模結合回路91は、スピンビット数の変更に応じて1以上のLFBを組合せ、当該1以上のLFBの各々に対応するランダムセレクタ部により選択されたビットを示す信号に基づいて反転させるビットを選択する。規模結合回路91は、反転させるビットを示す信号を当該1以上のLFBに属する各LFEに出力する。
That is, the
ここで、モード設定レジスタ92は、モード選択回路91e1,…,91e8に対して、個別に規模の設定を行う。ただし、ある規模のモードにおいて、組合せて利用されるLFBに対応するモード選択回路には、共通の規模が設定される。
Here, the
例えば、モード設定レジスタ92は、LFBの第1の組合せに対応する第1のスピンビット列のスピンビット数とLFBの第2の組合せに対応する第2のスピンビット列のスピンビット数とを、同じビット数、または、異なるビット数に設定してもよい。また、モード設定レジスタ75を含む各LFBのモード設定レジスタは、LFBの第1の組合せに属するLFEに対する重み係数のビット数とLFBの第2の組合せに属するLFEに対する重み係数のビット数とを、同じビット数、または、異なるビット数に設定してもよい。
For example, the
例えば、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
並列に実現するモードの組合せは、上記の組合せに限らず、例えば、規模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
このように、規模結合回路91は、モード設定レジスタ92により複数のスピンビット列の各々に対するスピンビット数の設定を受け付け、複数のスピンビット列の各々のスピンビット数に対して、組合せるLFB数(グループ数)を選択し、LFBを組合せる。これにより、1つの最適化装置26上に複数のイジングモデルを実現できる。
In this way, the
なお、組合せて利用されるLFBの組に対応するE格納レジスタの組には、共通のエネルギーが格納される。例えば、LFB70a,70bの組合せで利用する場合、E格納レジスタ94a,94bに格納されるE0,E1は同じ値となる。この場合、当該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
第3の実施の形態では、制御部25aは、図15のステップS10として並列に演算する各問題に対する初期値や動作条件のCPU21による入力を受け付ける。そして、制御部25aは、ステップS11において、各問題に応じた規模/精度を、1つの問題に対して利用するLFBのグループ毎に、LFBのモード設定レジスタおよびモード設定レジスタ92に設定する。
In the third embodiment, the
例えば、制御部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
この場合、最適化装置26では、2つの問題(あるいは、両問題は同一問題でもよい)を並列に演算可能である。具体的には、制御部25aは、各問題に対応するLFBの組合せに対して、図16で示したフローチャートの手順を行うように各LFBを制御する。例えば、制御部25aは、問題毎に、温度パラメータTなどの各種パラメータの初期値、重み係数、ある温度パラメータでのビット更新の回数および温度変更回数などを、個別に受け付けて、該当の問題の演算を行うLFBの組合せに属する各LFBに入力し、LFBの各組合せにより演算を並列実行させる。
In this case, the
制御部25aは、演算終了後、LFB70a,70bの各LFEから第1の問題に対するスピンビット列を読み出して、第1の問題の解とする。また、制御部25aは、演算終了後、LFB70c,70dの各LFEから第2の問題に対するスピンビット列を読み出して、第2の問題の解とする。3以上の問題も同様にして、並列に演算可能である。これにより、複数の問題に対する演算を効率的に実行できる。
After the calculation is completed, the
また、同一問題をLFBの複数の組により並列に解く場合、制御部25aは、例えば、レプリカ交換法と呼ばれる手法により、演算を高速化することが考えられる。レプリカ交換法では、LFBの各組(各レプリカ)で異なる温度パラメータによるスピンビット列の更新を行い、所定回数の更新後に、所定確率で温度パラメータをLFBの組の間(すなわち、レプリカ間)で交換することで、解の探索を高速化する。
Further, when solving the same problem in parallel by a plurality of sets of LFBs, it is conceivable that the
あるいは、解の探索方法として、図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
ところで、第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
図21は、問題毎の規模/精度の必要範囲の例を示す図である。
グラフ400は、横軸を規模比(規模の大きさを示す度合い)、縦軸を精度比(精度の大きさを示す度合い)とし、3種類の分野の問題に対して求められる規模精度の範囲を例示している。規模比は、規模の基準となる規模基準値に対して実際に所要される規模値(スピンビット数)の比である。精度比は、精度の基準となる精度基準値に対して実際に所要される精度値(結合係数のビット数)の比である。FIG. 21 is a diagram showing an example of the required range of scale / accuracy for each problem.
In the
領域401は、電力分野の問題に対して求められる規模比/精度比の範囲を示す。領域402は、金融分野の問題に対して求められる規模比/精度比の範囲を示す。領域403は、生命科学分野の問題に対して求められる規模比/精度比の範囲を示す。
例えば、領域401によれば、電力分野の問題では、比較的高い精度比が求められることが多い。また、領域402によれば、金融分野の問題では、規模比は比較的小さくてよいが、比較的高い精度比が求められることがある。更に、生命科学分野の問題では、精度比は比較的低くてよいが、比較的大きい規模比が求められることがある。ただし、ここで例示した各分野において所要される規模比/精度比は一例であり、今後、各分野で扱われる問題に応じて、所要される規模比/精度比の範囲は変わり得る。
For example, according to
一方、問題毎の規模および精度に合った最適化装置を製造することも考えられるが、効率的ではない。
そこで、第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
図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.
最適化装置25,26では、規模/精度のモードを可変とした上で、各LFEの種々の使用パターンを実現する。
図23は、LFEの使用パターンの例を示す図である。In the
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
図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
図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
次に、ユーザによる最適化装置26の利用フローの例を説明する。以下では、主に最適化装置26を例示するが、最適化装置25の場合も同様の利用フローである。
図24は、最適化装置の利用フローの例を示す図である。Next, an example of the usage flow of the
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
(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
(S103) The
(S104)CPU21は、ステップS102,S103が完了すると、制御部25aに対して基底状態の探索を行う演算の実行開始を指示する。
(S105)CPU21は、最適化装置26による演算が完了すると、最適化装置26から演算結果615を取得し、ユーザにとって把握し易い結果情報(例えば、結果表示画面の情報)に変換する。CPU21は、変換後の結果情報を、ユーザが解きたい問題の解616として、クライアント30に送信する。(S104) When the steps S102 and S103 are completed, the
(S105) When the calculation by the
このように、CPU21は、ユーザにより入力された問題に応じてスピンビット数と重み係数のビット数とを決定する。制御部25aは、スピンビット数と重み係数のビット数と重み係数とを示す情報をCPU21から受け付ける。制御部25aは、スピンビット数と重み係数のビット数とをモード設定レジスタ55(あるいは、モード設定レジスタ75,92)に設定する。制御部25aは、スピンビット数に相当する数のLFEの各々のSRAMに格納する。
In this way, the
こうして、ユーザは、自身が解きたい問題に応じた規模/精度により、最適化装置25,26による演算を実行させることが可能になる。例えば、最適化装置26により、同一のユーザによる同一問題、または、異なる問題を並列に演算することも可能である。また、最適化装置26により、異なるユーザによる異なる問題を並列に演算することも可能である。すなわち、解きたい問題に応じた適切な規模/精度で演算可能にすることで、空きLFB(あるいは空きLFE)を用いて、他の問題を並列に演算可能になる。また、複数のユーザで1チップの最適化装置25,26を共用可能になる。更に、複数の問題で1チップの最適化装置25,26を共用可能になる。
In this way, the user can execute the calculation by the
また、上記に例示した機能を有する最適化装置(あるいは、最適化システム)も考えられる。当該最適化装置(あるいは、最適化システム)は、入力部と変換部と制御部と表示部とを有する。 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
制御部は、規模情報と、精度情報と、エネルギー情報(あるいは、規模情報と精度情報とエネルギー情報とに応じたスピンビット列の初期値、結合係数およびエネルギーの初期値)を入力するとともに動作条件と規模精度モード情報とを入力し、基底状態の探索を行う演算を実行して解を出力する。制御部は、例えば、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
表示部は、制御部による基底状態の探索の結果として得られた解を表示する。表示部は、ディスプレイでもよいし、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
例えば、プログラムを記録した記録媒体41を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体41に記録されたプログラムまたは他のコンピュータから受信したプログラムを、DRAM22や記憶装置23に格納し(インストールし)、DRAM22や記憶装置23からプログラムを読み込んで実行してもよい。
For example, the program can be distributed by distributing the
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。 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
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.
請求項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以上のグループに属する各ビット演算回路に出力する、
請求項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.
請求項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.
を更に有する請求項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.
請求項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.
請求項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記載の最適化装置。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記載の最適化装置。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.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7410394B2 (en) | 2020-03-26 | 2024-01-10 | 富士通株式会社 | Optimization device and optimization method |
Citations (1)
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)
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 |
-
2018
- 2018-09-14 JP JP2020546656A patent/JP7004937B2/en active Active
- 2018-09-14 EP EP18933180.4A patent/EP3852028A4/en active Pending
- 2018-09-14 WO PCT/JP2018/034233 patent/WO2020054061A1/en unknown
- 2018-09-14 CA CA3109735A patent/CA3109735A1/en active Pending
-
2021
- 2021-02-19 US US17/179,458 patent/US11886780B2/en active Active
Patent Citations (1)
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 |