JP7004938B2 - 最適化装置および最適化装置の制御方法 - Google Patents

最適化装置および最適化装置の制御方法 Download PDF

Info

Publication number
JP7004938B2
JP7004938B2 JP2020546657A JP2020546657A JP7004938B2 JP 7004938 B2 JP7004938 B2 JP 7004938B2 JP 2020546657 A JP2020546657 A JP 2020546657A JP 2020546657 A JP2020546657 A JP 2020546657A JP 7004938 B2 JP7004938 B2 JP 7004938B2
Authority
JP
Japan
Prior art keywords
bit
signal
unit
energy
outputs
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020546657A
Other languages
English (en)
Other versions
JPWO2020054062A1 (ja
Inventor
健 三品
聡 松浦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2020054062A1 publication Critical patent/JPWO2020054062A1/ja
Application granted granted Critical
Publication of JP7004938B2 publication Critical patent/JP7004938B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/337Design optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/08Probabilistic or stochastic CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

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

Description

本発明は最適化装置および最適化装置の制御方法に関する。
ノイマン型コンピュータが不得意とする多変数の最適化問題を解く方法として、イジング型のエネルギー関数を用いた最適化装置(イジングマシンまたはボルツマンマシンと呼ばれる場合もある)がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
最適化装置は、例えば、ニューラルネットワークを用いてモデル化することもできる。その場合、イジングモデルに含まれる複数のスピンに対応した複数のビット(スピンビット)のそれぞれが、他のビットと自身のビットとの相互作用の大きさを示す重み係数(結合係数とも呼ばれる)とに応じて0または1を出力するニューロンとして機能する。最適化装置は、例えば、シミュレーテッド・アニーリングなどの確率的探索法により、上記のようなエネルギー関数(コスト関数、目的関数とも呼ばれる)の値(エネルギーと言う)の最小値が得られる各ビットの値の組合せを、解として求める。
例えば、最適化装置は、種々の回路素子を含む電子回路により実現される。回路において、例えば、アドレス入力の上位2ビットの組み合わせにより得られた信号を用いてセレクタのアドレスを制御することにより、アドレス入力の信号数を全く増やすことなくセレクタの論理段数を少なくする提案がある。
なお、実行時に乱数を発生させてカレント情報を指定することで、カレント情報に応じて実行する処理をランダムに決定するプログラム実行装置の提案がある。
特開2002-94362号公報 国際公開第2006/001365号
最適化装置では、スピンビット数が増すほど、回路規模も増す。回路規模が増すと、回路面積が大きくなり、装置内での信号の往来パスの長さが増す。往来パスの長さの増大は、パスを経由する信号伝達の遅延を招き、演算速度の低下要因になる。
1つの側面では、本発明は、回路規模の増大に伴う演算速度の低下を抑制できる最適化装置および最適化装置の制御方法を提供することを目的とする。
1つの態様では、最適化装置が提供される。最適化装置は、複数のビット演算回路と選択回路部とエネルギー計算部とを有する。複数のビット演算回路の各々は、イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、ビット列のうちの自ビットと反転されたビットとの相互作用の大きさを示す係数に基づいてイジングモデルのエネルギー変化値を計算し、エネルギー変化値に応じた自ビットの反転可否を示す第1の信号とエネルギー変化値を示す第2の信号とを出力する。選択回路部は、第1の信号および第2の信号に基づいて、ビット列のうち反転させるビットと当該ビットに対応するエネルギー変化値とを選択し、選択したビットを示す第3の信号を複数のビット演算回路の各々に出力するとともに、選択したエネルギー変化値を示す第4の信号を出力する。エネルギー計算部は、第4の信号が示すエネルギー変化値に基づいてイジングモデルのエネルギーを計算する。
また、1つの態様では、最適化装置の制御方法が提供される。
1つの側面では、回路規模の増大に伴う演算速度の低下を抑制できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態の最適化装置を示す図である。 第2の実施の形態の情報処理システムの例を示す図である。 情報処理装置のハードウェア例を示すブロック図である。 情報処理システムにおけるハードウェアの関係の例を示す図である。 制御部のハードウェア例を示すブロック図である。 組合せ最適化問題の例を示す図である。 最少エネルギーとなるバイナリ値の探索例を示す図である。 最適化装置の回路構成例を示す図である。 ランダムセレクタ部の回路構成例を示す図である。 選択回路の回路構成例を示す図である。 初期化処理の例を示すフローチャートである。 演算処理の例を示すフローチャートである。 LFEの配置による信号経路の例を示す図である。 最適化装置の他の例を示す図である。 信号経路の他の例を示す図である。 最適化装置の回路構成の比較例を示す図である。 演算処理の比較例を示すフローチャートである。 信号経路の比較例を示す図である。 信号経路の他の比較例を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の最適化装置を示す図である。
最適化装置1は、計算対象の問題を変換したイジングモデルに含まれる複数のスピンに対応する複数のビット(スピンビット)のそれぞれの値の組合せ(状態)のうち、エネルギー関数が最小値となるときの各ビットの値(基底状態)を探索する。
イジング型のエネルギー関数E(x)は、例えば、以下の式(1)で定義される。
Figure 0007004938000001
右辺第1項は、イジングモデルに含まれる全ビットから選択可能な2つのビットの全組合せについて、漏れと重複なく、2つのビットの値(0または1)と結合係数との積を積算したものである。イジングモデルに含まれる全ビット数をN個(Nは2以上の整数)とする。また、i,jの各々を、0以上N-1以下の整数とする。xは、i番目のビットの値を表す変数(状態変数とも呼ばれる)である。xは、j番目のビットの値を表す変数である。Wijは、i番目とj番目のビットの相互作用の大きさを示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(すなわち、重み係数による係数行列は対称行列である場合が多い)。
右辺第2項は、全ビットのそれぞれのバイアス係数とビットの値との積の総和を求めたものである。bは、i番目のビットのバイアス係数を示している。
また、変数xの値が変化して1-xとなると、変数xの増加分は、Δx=(1-x)-x=1-2xと表せる。したがって、スピン反転(値の変化)に伴うエネルギー変化ΔEは、以下の式(2)で表される。
Figure 0007004938000002
はローカルフィールド(局所場)と呼ばれ、式(3)で表される。
Figure 0007004938000003
Δxに応じてローカルフィールドhに符号(+1または-1)を乗じたものがエネルギー変化ΔEとなる。ローカルフィールドhの変化分Δhは式(4)で表される。
Figure 0007004938000004
ある変数xが変化したときのローカルフィールドhを更新する処理は並列に行われる。
最適化装置1は、例えば、1チップの半導体集積回路であり、FPGA(Field Programmable Gate Array)などを用いて実現される。最適化装置1は、ビット演算回路1a1,1a2,…,1aN(複数のビット演算回路)、選択回路部2、閾値生成部3、乱数生成部4、エネルギー計算部5および制御部6を有する。ここで、Nは、最適化装置1が備えるビット演算回路の総数である。ビット演算回路1a1,1a2,…,1aNの各々には、識別情報(index=0,1,…,N-1)が対応付けられている。
ビット演算回路1a1,…,1aNは、イジングモデルの状態を表すビット列に含まれる1ビットを提供する単位素子である。当該ビット列は、スピンビット列や状態ベクトルなどと呼ばれてもよい。ビット演算回路1a1,…,1aNの各々は、自ビットと他ビットの間の重み係数を記憶する。ビット演算回路1a1,…,1aNの各々は、スピンビット列のうちの何れかのビットが反転されると、自ビットと反転されたビットとの重み係数に基づいてイジングモデルのエネルギー変化値ΔEを計算する。ΔEは、式(2)により計算される。ビット演算回路1a1,…,1aNの各々は、エネルギー変化値に応じた自ビットの反転可否を示す信号(第1の信号)、および、エネルギー変化値ΔEを示す信号(第2の信号)を、選択回路部2に出力する。
選択回路部2は、ビット演算回路1a1,…,1aNの各々から出力された信号を受け付ける。選択回路部2は、ビット演算回路1a1,…,1aNの各々から出力された信号に基づいて、スピンビット列のうち反転させるビット(反転ビット)と当該ビットに対応するエネルギー変化値とを選択する。選択回路部2は、選択したビット(反転ビット)を示す信号(第3の信号)をビット演算回路1a1,…,1aNの各々に出力するとともに、選択したエネルギー変化値を示す信号(第4の信号)をエネルギー計算部5に出力する。選択した反転ビットを示す信号は、反転ビットの識別情報(index=j)と、反転可否を示すフラグ(flg=1)と、反転ビットの現在の値q(今回の反転前の値)とを示す信号を含む。ただし、何れのビットも反転されないこともある。何れのビットも反転されない場合、選択回路部2は、flg=0を出力する。index=jに対し、選択回路部2からエネルギー計算部5に供給されるエネルギー変化値は、ΔEと表される。
なお、選択回路部2は、ビット演算回路1a1,…,1aNの各々から、各ビット演算回路の識別情報(index)を示す信号を受け付けてもよい。選択回路部2は、当該識別情報を示す信号に基づいて、反転させるスピンビットに対応する識別情報を、エネルギー変化値とともに選択してもよい。あるいは、選択回路部2は、反転させるスピンビットに対応するビット演算回路の識別情報を選択回路部2により生成して出力してもよい。
閾値生成部3は、ビット演算回路1a1,…,1aNの各々に対し、ビットの反転可否を判定する際に用いられる閾値を生成する。ビット演算回路1a1,…,1aNの各々に当該閾値を示す信号を出力する。後述するように、閾値生成部3は、閾値の生成に、温度を示すパラメータ(温度パラメータ)Tと乱数とを用いる。閾値生成部3は、当該乱数を発生させる乱数発生器を有する。閾値生成部3は、ビット演算回路1a1,…,1aNの各々に対して個別に乱数発生器を有し、個別に閾値の生成と供給とを行うことが好ましい。ただし、閾値生成部3は、所定数のビット演算回路で乱数発生器を共用してもよい。
乱数生成部4は、乱数ビットを生成し、選択回路部2に出力する。乱数生成部4により生成された乱数ビットは、選択回路部2による反転ビットの選択に用いられる。
エネルギー計算部5は、イジングモデルのエネルギーを計算する。具体的には、エネルギー計算部5は、イジングモデルの現在の状態に対するエネルギーを保持するレジスタを有し、当該レジスタにより、現在の状態に対するエネルギーEを記憶する。エネルギー計算部5は、エネルギー変化値ΔEを示す信号を選択回路部2から受け付け、エネルギーEにΔEを加算することでEを更新する(E=E+ΔE)。エネルギー計算部5は、更新後のEを、エネルギー計算部5のレジスタに格納する。
制御部6は、温度パラメータTやビット演算回路1a1,…,1aNの各々の記憶部に対する重み係数の設定を行い、ビット演算回路1a1,…,1aNによる演算の開始や終了を制御する。制御部6は、演算結果の出力を行う。例えば、制御部6は、ビット演算回路1a1,…,1aNを用いた演算が終了すると、ビット演算回路1a1,…,1aNに保持されるスピンビット列を読み出して出力する。
次に、ビット演算回路の回路構成を説明する。ビット演算回路1a1(index=0)を主に説明するが、他のビット演算回路も同様の回路構成で実現される(例えば、X番目(Xは1以上N以下の整数)のビット演算回路に対して、index=X-1とすればよい)。
ビット演算回路1a1は、記憶部11、セレクタ12、反転判定部13、ビット保持部14、エネルギー変化計算部15および状態遷移判定部16を有する。
記憶部11は、例えば、レジスタやSRAM(Static Random Access Memory)などである。記憶部11は、自ビット(ここでは、index=0のビット)と他ビットとの間の重み係数を記憶する。ここで、スピンビット数Nに対して、重み係数の総数はNである。記憶部11には、index=0のビットに対して、N個の重み係数W00,W01,…,W0,N-1が記憶される。なお、記憶部11は、ビット演算回路1a1の外部であって、最適化装置1の内部に設けられてもよい(他のビット演算回路の記憶部も同様)。
セレクタ12は、スピンビット列の何れかのビットが反転されると反転されたビットに対する重み係数を記憶部11から読み出し、読み出した重み係数をエネルギー変化計算部15に出力する。すなわち、セレクタ12は、選択回路部2から反転ビットの識別情報を受け付け、記憶部11から反転ビットと自ビットとの組に対応する重み係数を読み出して、エネルギー変化計算部15に出力する。
反転判定部13は、選択回路部2により出力されたindex=jとflgとを示す信号を受け付け、当該信号に基づいて反転ビットとして自ビットが選択されたか否かを判定する。反転ビットとして自ビットが選択された場合(すなわち、index=jが自ビットを示し、flgが反転可を示す場合)、反転判定部13は、ビット保持部14に記憶されたビットを反転させる。すなわち、ビット保持部14に保持されたビットが0の場合、当該ビットを1に変更する。また、ビット保持部14に保持されたビットが1の場合、当該ビットを0に変更する。
ビット保持部14は、1ビットを保持するレジスタである。ビット保持部14は、保持するビットをエネルギー変化計算部15および選択回路部2に出力する。
エネルギー変化計算部15は、記憶部11から読み出した重み係数を用いたイジングモデルのエネルギー変化値ΔEを計算し、状態遷移判定部16に出力する。具体的には、エネルギー変化計算部15は、反転ビットの値(今回の反転前の値)を選択回路部2から受け付け、反転ビットが、1から0、または、0から1のどちらに反転するかに応じて、式(4)により、Δhを計算する。そして、エネルギー変化計算部15は、前回のhにΔhを加算することで、hを更新する。エネルギー変化計算部15は、hを保持するレジスタを有し、当該レジスタにより更新後のhを保持する。
更に、エネルギー変化計算部15は、ビット保持部14より現在の自ビットを受け付け、自ビットが0であれば0から1へ、自ビットが1であれば1から0へ、反転する場合のイジングモデルのエネルギー変化値ΔEを式(2)により計算する。エネルギー変化計算部15は、計算したエネルギー変化値ΔEを、状態遷移判定部16に出力する。
状態遷移判定部16は、エネルギー変化計算部15によるエネルギー変化の計算に応じて、自ビットの反転可否を示す信号flgを選択回路部2に出力する。具体的には、状態遷移判定部16は、エネルギー変化計算部15により計算されたエネルギー変化値ΔEを受け付け、閾値生成部3により生成された閾値との比較に応じて、自ビットの反転可否を判定する比較器である。ここで、状態遷移判定部16による判定について説明する。
シミュレーテッド・アニーリングでは、あるエネルギー変化ΔEを引き起こす状態遷移の許容確率p(ΔE,T)を以下の式(5)のように決めれば、時刻(反復回数)無限大の極限で状態が最適解(基底状態)に到達することが知られている。
Figure 0007004938000005
式(5)においてTは、前述の温度パラメータTである。ここで、関数fとして、式(6)(メトロポリス法)、または、式(7)(ギブス法)が用いられる。
Figure 0007004938000006
Figure 0007004938000007
温度パラメータTは、例えば、式(8)で表される。すなわち、温度パラメータTは、反復回数tに対して対数的に減少する関数で与えられる。例えば、定数cは問題に応じて決定される。
Figure 0007004938000008
ここで、Tは、初期温度値であり問題に応じて十分に大きくとることが望ましい。
式(5)で表される許容確率p(ΔE,T)を用いた場合、ある温度における状態遷移の十分な反復後に定常状態に達したとすると、当該状態はボルツマン分布に従って生成される。すなわち、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布に従う。よって、ある温度でボルツマン分布に従った状態を生成し、その後、当該温度よりも低い温度でボルツマン分布に従った状態を生成し、というように徐々に温度を下げていくことで、各温度におけるボルツマン分布に従った状態を追えることになる。そして、温度0としたときに、温度0でのボルツマン分布により最低エネルギーの状態(基底状態)が高確率で実現される。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法はシミュレーテッド・アニーリングと呼ばれる。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
例えば、許容確率p(ΔE,T)でエネルギー変化ΔEを引き起こす状態遷移を許容することを示すフラグ(flg=1)を出力する回路は、f(-ΔE/T)と、区間[0,1)の値をとる一様乱数uとの比較に応じた値を出力する比較器により実現できる。
ただし、次のような変形を行っても同じ機能を実現可能である。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって、比較器の2つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。例えば、f(-ΔE/T)に作用させる単調増加関数としてf(-ΔE/T)の逆関数f-1(-ΔE/T)、一様乱数uに作用させる単調増加関数としてf-1(-ΔE/T)の-ΔE/Tをuとしたf-1(u)を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、-ΔE/Tがf-1(u)より大きいとき1を出力する回路でよい。更に、温度パラメータTが正であることから、状態遷移判定部16は、-ΔEがT・f-1(u)より大きいとき(あるいは、ΔEが-(T・f-1(u))より小さいとき)、flg=1を出力する回路でよい。
閾値生成部3は、一様乱数uを生成し、上記のf-1(u)の値に変換する変換テーブルを用いて、f-1(u)の値を出力する。メトロポリス法が適用される場合、f-1(u)は、式(9)で与えられる。また、ギブス法が適用される場合、f-1(u)は、式(10)で与えられる。
Figure 0007004938000009
Figure 0007004938000010
変換テーブルは、例えば、閾値生成部3に接続されたRAM(Random Access Memory)、フラッシュメモリなどのメモリ(図示を省略している)に記憶される。閾値生成部3は、温度パラメータTと、f-1(u)との積(T・f-1(u))を閾値として出力する。ここで、T・f-1(u)は、熱励起エネルギーに相当する。
なお、選択回路部2から状態遷移判定部16に対してflgを入力し、当該flgが状態遷移を許容しないことを示すとき(つまり状態遷移が生じないとき)、状態遷移判定部16により-ΔEにオフセット値を加算してから、閾値との比較を行ってもよい。また、状態遷移判定部16は、状態遷移が生じないことが継続する場合に、加算するオフセット値を増加させてもよい。一方、状態遷移判定部16は、flgが、状態遷移を許容することを示すとき(つまり状態遷移が生じるとき)には、オフセット値を0にする。-ΔEへのオフセット値の加算やオフセット値の増加により、状態遷移が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
こうして、温度パラメータTが徐々に小さく設定され、例えば、温度パラメータTの値を所定回数、小さくした場合(または、温度パラメータTが最小値に達した場合)のスピンビット列が、ビット演算回路1a1,…,1aNに保持される。最適化装置1は、温度パラメータTの値を所定回数、小さくした場合(または、温度パラメータTが最小値に達した場合)のスピンビット列を解として出力する。
最適化装置1によれば、選択回路部2により、ビット演算回路1a1,…,1aNの各々から出力された信号に基づいて、スピンビット列のうち反転させるビットと当該ビットに対応するエネルギー変化値とが選択される。そして、選択したビットを示す信号(q,flg,index=j)がビット演算回路1a1,…,1aNの各々に出力される。選択したエネルギー変化値ΔEを示す信号がエネルギー計算部5に出力される。
これにより、回路規模の増大に伴う演算速度の低下を抑制できる。具体的には、次の通りである。
例えば、次のような比較例の回路構成が考えられる。すなわち、選択回路部による反転ビット(index=j)の選択後に、選択回路部からindex=jに対応するビット演算回路のエネルギー変化計算部に、ΔEを出力するよう所定の命令信号を供給することも考えられる。この場合、選択回路部はエネルギー変化値の選択を行わず、選択回路部はエネルギー計算部にΔEを供給しない。また、この場合、エネルギー変化計算部から出力されたΔEは、例えば、所定のΔE出力回路に供給される。ΔE出力回路は、全ビット演算回路から通常はΔE=0の供給を受ける。ΔE出力回路は、反転ビットに対応するビット演算回路から、エネルギー変化計算部により計算されたΔEを受け付け、OR論理などによってΔEを出力する。ΔE出力回路のΔEの出力先はエネルギー計算部である。
ところが、ΔE出力回路を用いる比較例の回路構成の場合、選択回路部から反転ビットに対応するビット演算回路への命令信号の供給のための第1信号パス、および、エネルギー変化計算部からΔE出力回路へのΔEの供給のための第2信号パスを要する。したがって、第1信号パスおよび第2信号パスを経由する信号伝達に時間がかかる。最適化装置の回路面積が大きくなるほど、第1信号パスの長さおよび第2信号パスの長さは長くなる。第1信号パスおよび第2信号パスを介した信号伝達に伴う遅延は、最適化装置の回路規模が大きくなり回路面積が大きくなるほど、大きくなる。
当該遅延により、エネルギー計算部によるエネルギー計算の開始が遅れる。エネルギー計算の開始の遅れが過大になると、最適化装置の演算速度のボトルネックとなり得る。最適化装置は、各ビット演算回路のビット保持部に保持されるスピンビット列と、当該スピンビット列に対するエネルギーEとを同期して保持する。したがって、エネルギーEの計算が遅延すると、ビット演算回路によるスピンビット列の更新も遅延させることになり、最適化装置の全体の演算速度が低下し得る。
そこで、最適化装置1では、選択回路部2により、反転ビットの選択とともに、エネルギー変化値の選択も行い、選択回路部2により選択されたエネルギー変化値ΔEをエネルギー計算部5に出力する。これにより、上記比較例の回路構成における第1信号パスおよび第2信号パスが不要となり、第1信号パスおよび第2信号パスを介した信号伝達が不要となる。また、比較例の回路構成で例示したΔE出力回路も不要となる。したがって、当該信号伝達に伴う遅延が低減され、比較例の回路構成よりも、エネルギー計算部5によるエネルギー計算を早く開始できる。その結果、最適化装置1の回路規模の増大に伴う演算速度の低下を抑制できる。
以下では、最適化装置1を用いる情報処理システムを例示し、最適化装置1の機能を更に詳細に説明する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
第2の実施の形態の情報処理システムは、情報処理装置20とクライアント30とを有する。情報処理装置20およびクライアント30は、ネットワーク40に接続されている。ネットワーク40は、例えば、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどでもよい。
情報処理装置20は、組合せ最適化問題をイジングモデルに置き換え、イジングモデルの基底状態の探索により、組合せ最適化問題を高速に解く機能を提供する。
クライアント30は、ユーザにより使用されるクライアントコンピュータであり、ユーザが解くべき問題の、情報処理装置20への入力に用いられる。
図3は、情報処理装置のハードウェア例を示すブロック図である。
情報処理装置20は、CPU(Central Processing Unit)21、DRAM(Dynamic Random Access Memory)22、記憶装置23、NIC(Network Interface Card)24および最適化装置25を有する。CPU21、DRAM22、記憶装置23、NIC24および最適化装置25は、情報処理装置20のバス29に接続されている。バス29は、例えば、PCIe(Peripheral Component Interconnect Express)バスである。
CPU21は、DRAM22に格納されたプログラムの命令を実行するプロセッサである。CPU21は、記憶装置23に記憶されたプログラムやデータの少なくとも一部をDRAM22にロードし、プログラムを実行する。CPU21は、当該プログラムを実行することで発揮される機能により、最適化装置25に対する設定や動作の制御を行う。
DRAM22は、情報処理装置20の主記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを一時的に記憶する。
記憶装置23は、情報処理装置20の補助記憶装置であり、CPU21により実行されるプログラムや最適化装置25に設定されるデータなどを記憶する。記憶装置23は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などである。
NIC24は、ネットワーク40に接続され、ネットワーク40を介してクライアント30と通信する通信インタフェースである。NIC24は、例えば、ネットワーク40に属するスイッチやルータなどの通信装置とケーブルで接続される。
最適化装置25は、CPU21の制御により、イジングモデルの基底状態を探索する。最適化装置25は、例えば、1チップの半導体集積回路であり、FPGAなどにより実現される。最適化装置25は、第1の実施の形態の最適化装置1の一例である。
なお、クライアント30はCPU、主記憶装置、補助記憶装置およびNICを有する。
図4は、情報処理システムにおけるハードウェアの関係の例を示す図である。
クライアント30は、ユーザプログラム31を実行する。ユーザプログラム31は、情報処理装置20への各種データ(例えば、解くべき問題の内容や最適化装置25の利用スケジュールなどの動作条件)の入力、および、最適化装置25による演算結果の表示などを行う。
CPU21は、ライブラリ21aおよびドライバ21bを実行するプロセッサ(演算部)である。ライブラリ21aのプログラム、および、ドライバ21bのプログラムは、記憶装置23に格納されており、CPU21による実行時にDRAM22にロードされる。
ライブラリ21aは、ユーザプログラム31により入力された各種データを受け付け、ユーザが解くべき問題を、イジングモデルの最低エネルギー状態を探索する問題に変換する。ライブラリ21aは、変換後の問題に関する情報(例えば、スピンビット数、重み係数を表すビット数、重み係数の値、温度パラメータの初期値など)を、ドライバ21bに提供する。また、ライブラリ21aは、最適化装置25による解の探索結果をドライバ21bから取得し、当該探索結果をユーザに分かり易い結果情報(例えば、結果表示画面の情報)に変換して、ユーザプログラム31に提供する。
ドライバ21bは、ライブラリ21aから提供された情報を最適化装置25に供給する。また、ドライバ21bは、イジングモデルによる解の探索結果を最適化装置25から取得し、ライブラリ21aに提供する。
最適化装置25は、ハードウェアとして、制御部25aおよびLFB(Local Field Block)50を有する。
制御部25aは、ドライバ21bから受け付けたLFB50の動作条件を記憶するRAMを有し、当該動作条件に基づいてLFB50による演算を制御する。また、制御部25aは、LFB50が備える各種のレジスタへの初期値の設定、SRAMへの重み係数の格納、および、演算終了後のスピンビット列(探索結果)の読み出しなどを行う。制御部25aは、例えば、FPGAにおける回路などによって実現される。
LFB50は、複数のLFE(Local Field Element)を有する。LFEは、スピンビットに対応する単位素子である。1つのLFEは、1つのスピンビットに対応する。後述するように、最適化装置25は、複数のLFBを有してもよい。
図5は、制御部のハードウェア例を示すブロック図である。
制御部25aは、CPU入出力部25a1、制御レジスタ25a2、LFB送信部25a3およびLFB受信部25a4を有する。
CPU入出力部25a1は、CPU21から受け付けたデータを、制御レジスタ25a2またはLFB50に入力する。例えば、CPU入出力部25a1は、CPU21により入力された各パラメータの初期値や結合定数などの設定データやLFB50の動作条件のデータを、制御レジスタ25a2を介してLFB50に入力することもできるし、LFB50内の各レジスタやRAMに入力することもできる。
制御レジスタ25a2は、CPU入出力部25a1によるLFB50に対する各種の設定データを保持し、LFB送信部25a3に出力する。また、制御レジスタ25a2は、LFB受信部25a4によりLFB50から受信されたデータを保持し、CPU入出力部25a1に出力する。
LFB送信部25a3は、制御レジスタ25a2に保持された設定データを、LFB50に送信する。
LFB受信部25a4は、LFB50からデータ(演算結果などのデータ)を受信し、制御レジスタ25a2に格納する。
図6は、組合せ最適化問題の例を示す図である。
組合せ最適化問題の一例として、巡回セールスマン問題を考える。ここでは、簡単のため、A都市,B都市,C都市,D都市,E都市の5つの都市を、最少コスト(距離や料金など)で回る経路を求めるとする。グラフ201は、都市をノード、都市間の移動をエッジとした1つの経路を示す。この経路は、例えば、行を回る順番、列を都市に対応付けた行列202で表される。行列202は、行の小さい順に、ビット「1」が設定された都市を回ることを示す。更に、行列202は、スピンビット列に相当するバイナリ値203に変換できる。行列202の例では、バイナリ値203は、5×5=25ビットとなる。バイナリ値203(スピンビット列)のビット数は、巡回対象の都市が増すほど増加する。すなわち、組合せ最適化問題の規模が大きくなれば、より多くのスピンビットが所要され、スピンビット列のビット数(規模)が大きくなる。
次に、最少エネルギーとなるバイナリ値の探索例を説明する。
図7は、最少エネルギーとなるバイナリ値の探索例を示す図である。
まず、バイナリ値221のうちの1ビットを反転させる前(スピン反転前)のエネルギーをEinitとする。
最適化装置25は、バイナリ値221の任意の1ビットを反転させたときのエネルギー変化量ΔEを計算する。グラフ211は、横軸をバイナリ値、縦軸をエネルギーとして、エネルギー関数に応じた1ビット反転に対するエネルギー変化を例示している。最適化装置25は、式(2)によりΔEを求める。
最適化装置25は、上記の計算を、バイナリ値221の全ビットに適用し、各々のビットの反転に対して、エネルギー変化量ΔEを計算する。例えば、バイナリ値221のビット数がNのとき、反転パターン222はN個になる。グラフ212は、反転パターン毎のエネルギー変化の様子を例示する。
最適化装置25は、反転パターン毎のΔEに基づいて、反転条件(閾値とΔEとの所定の判定条件)を満たした反転パターン222のうちからランダムで1つを選択する。最適化装置25は、選択された反転パターンに対応するΔEを、スピン反転前のEinitに加減算し、スピン反転後のエネルギー値Eを計算する。最適化装置は、求めたエネルギー値EをEinitとし、スピン反転後のバイナリ値223を用いて、上記の手順を繰り返し行う。
ここで、前述のように、式(2),(3)で用いられるWの1要素は、ビット間の相互作用の大きさを示すスピン反転の重み係数である。当該重み係数を表すビット数を精度と呼ぶ。精度が高いほど、スピン反転時のエネルギー変化量ΔEに対する条件を詳細に設定できる。例えば、Wの総サイズは、スピンビット列に含まれる2つのビットの全結合に対して「精度×スピンビット数×スピンビット数」である。一例として、スピンビット数が1k(=1024)の場合、Wの総サイズは、「精度×1k×1k」ビットとなる。
次に、図7で例示した探索を行う最適化装置25の回路構成を説明する。
図8は、最適化装置の回路構成例を示す図である。
最適化装置25(あるいは、最適化装置25のLFB50)は、LFE51a1,51a2,…,51an、ランダムセレクタ部52、閾値生成部53、乱数生成部54およびエネルギー計算部55を有する。
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の一例である。
以下では、LFE51a1の回路構成を説明する。LFE51a2,…,51anも、LFE51a1と同様の回路構成により実現される。LFE51a2,…,51anの回路構成の説明については、以下の説明における各要素の符号の末尾の「a1」の部分を、「a2」,…,「an」の各々に置換して(例えば、「60a1」の符号を「60an」のように置換して)読み替えればよい。また、h,q,ΔE,Wなどの各値の添え字についても、「a2」,…,「an」の各々に対応する添え字に置換して読み替えればよい。
LFE51a1は、SRAM60a1、セレクタ61a1、Δh生成部62a1、加算器63a1、h格納レジスタ64a1、反転判定部65a1、ビット格納レジスタ66a1、ΔE生成部67a1、判定部68a1およびindex格納レジスタ69a1を有する。
SRAM60a1は、重み係数Wを格納する。SRAM60a1は、第1の実施の形態の記憶部11に対応する。SRAM60a1には、全スピンビットの重み係数Wのうち、LFE51a1で使用される分だけ格納される。このため、スピンビット数をn(nは2以上の整数)とすると、SRAM60a1に格納される全重み係数のサイズは、「精度×n」ビットとなる。また、SRAM60a1には、重み係数W00,W01,…,W0,n-1が格納される。
セレクタ61a1は、反転ビットの識別情報であるindexと反転可を示すフラグFとをランダムセレクタ部52から取得し、反転ビットに対応する重み係数をSRAM60a1から読み出す。セレクタ61a1は、読み出した重み係数を、Δh生成部62a1に出力する。
Δh生成部62a1は、ランダムセレクタ部52から反転ビットの現在のビット値(今回の反転前のビット値)を受け付け、セレクタ61a1から取得した重み係数を用いて、式(4)により、ローカルフィールドh0の変化量Δhを計算する。Δh生成部62a1は、Δhを加算器63a1に出力する。
加算器63a1は、h格納レジスタ64a1に格納されたローカルフィールドhにΔhを加算し、h格納レジスタ64a1に出力する。
h格納レジスタ64a1は、図示しないクロック信号に同期して、加算器63a1が出力する値(ローカルフィールドh)を取り込む。h格納レジスタ64a1は、例えば、フリップフロップである。なお、h格納レジスタ64a1に格納されるローカルフィールドhの初期値は、バイアス係数bである。当該初期値は、制御部25aにより設定される。
反転判定部65a1は、反転ビットのindex=jと、反転可否を示すフラグFとをランダムセレクタ部52から受け付け、自ビットが反転ビットとして選択されたか否かを判定する。自ビットが反転ビットとして選択された場合、反転判定部65a1は、ビット格納レジスタ66a1に格納されたスピンビットを反転させる。
ビット格納レジスタ66a1は、LFE51a1に対応するスピンビットを保持する。ビット格納レジスタ66a1は、例えば、フリップフロップである。ビット格納レジスタ66a1に格納されたスピンビットは、反転判定部65a1により反転される。ビット格納レジスタ66a1は、ΔE生成部67a1およびランダムセレクタ部52にスピンビットを出力する。
ΔE生成部67a1は、h格納レジスタ64a1のローカルフィールドhおよびビット格納レジスタ66a1のスピンビットに基づいて、自ビットの反転に応じたイジングモデルのエネルギー変化量ΔEを、式(2)により計算する。ΔE生成部67a1は、エネルギー変化量ΔEを、判定部68a1およびランダムセレクタ部52に出力する。
判定部68a1は、ΔE生成部67a1により出力されたエネルギー変化量ΔEと、閾値生成部53により生成された閾値との比較により、自ビットの反転を許容するか否かを示す(自ビットの反転可否を示す)フラグFを、ランダムセレクタ部52に出力する。具体的には、判定部68a1は、ΔEが閾値-(T・f-1(u))より小さいときF=1(反転可)を出力し、ΔEが閾値-(T・f-1(u))以上のときF=0(反転不可)を出力する。ここで、f-1(u)は、適用法則に応じて、式(9),(10)の何れかで与えられる関数である。また、uは、区間[0,1)の一様乱数である。
index格納レジスタ69a1は、図示しないクロック信号に同期して、LFE51a1のindex=0を、ランダムセレクタ部52に出力する。index格納レジスタ69a1は、例えば、フリップフロップである。
ランダムセレクタ部52は、LFE51a1,51a2,…,51anの各々から、スピンビット、スピンビットの反転可否を示すフラグ、indexおよびエネルギー変化量を受け付ける。ランダムセレクタ部52は、反転可であるスピンビットのうち反転させるビット(反転ビット)を選択する。また、ランダムセレクタ部52は、反転ビットとともに、当該反転ビットに対応するエネルギー変化値を選択する。
ランダムセレクタ部52は、選択した反転ビットの現在のビット値(ビットq)を、LFE51a1,51a2,…,51anが備えるΔh生成部62a1,62a2,…,62anに供給する。ランダムセレクタ部52は、第1の実施の形態の選択回路部2の一例である。
ランダムセレクタ部52は、反転ビットのindex=jと、反転可否を示すフラグFとを、LFE51a1,51a2,…,51anが備えるセレクタ61a1,61a2,…,60an、および、反転判定部65a1,65a2,…,65anに供給する。
更に、ランダムセレクタ部52は、選択した反転ビットに対応するΔEを、エネルギー計算部55に供給する。
閾値生成部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によって制御される。
乱数生成部54は、ランダムセレクタ部52における反転ビットの選択に用いられる乱数ビットを生成し、ランダムセレクタ部52に供給する。
エネルギー計算部55は、現在のスピンビット列に対するイジングモデルのエネルギーを計算する。エネルギー計算部55は、加算器56およびE格納レジスタ57を有する。
加算器56は、ランダムセレクタ部52により出力されたエネルギー変化量ΔEを受け付け、E格納レジスタ57に格納されたエネルギー値EにΔEを加算し、E格納レジスタ57に出力する。
E格納レジスタ57は、図示しないクロック信号に同期して、加算器56が出力するエネルギー値Eを取り込む。E格納レジスタ57は、例えば、フリップフロップである。なお、エネルギー値Eの初期値は、スピンビット列の初期値に応じて、制御部25aによって式(1)を用いて計算され、E格納レジスタ57に設定される。E格納レジスタ57は、LFE51a1,…,51anが保持するスピンビット列に同期したエネルギー値Eを保持する。
ここで、E格納レジスタ57に格納されたエネルギー値Eは、例えば、スピンビット列とともに、制御部25aにより読み出される。例えば、制御部25aは、LFB50を複数用いて、あるイジングモデルのレプリカを複数実現し、レプリカ交換法と呼ばれる手法で、解の収束性を早め、演算を高速化することが考えられる。
レプリカ交換法では、レプリカ毎に異なる温度パラメータTを与えて解の探索を行い、エネルギー値Eおよび温度パラメータTに基づく交換確率によりレプリカ間の温度を交換する。この場合、制御部25aは、解の探索の過程で、各レプリカによって実現された最低エネルギーとそのときのスピンビット列とを、該当レプリカに属するLFB内のE格納レジスタおよびビット格納レジスタから読み出して、制御部25aのRAMに保存しておく。制御部25aは、最低エネルギーが更新されると、保存された最低エネルギーとスピンビット列を更新する。制御部25aは、所定回数の試行により最低エネルギーを与えたスピンビット列を解とすることが考えられる。なお、情報処理装置20に複数の最適化装置25を設けて、CPU21が複数の最適化装置25により実現される複数のレプリカに対してレプリカ交換法による上記演算の制御(レプリカ間の温度交換や最低エネルギーとなるスピンビット列の特定)を行ってもよい。
あるいは、E格納レジスタ57に格納されたエネルギー値Eは、ライブラリ21aなどによる最適化装置25の動作条件の検証などに用いられてもよい。
図9は、ランダムセレクタ部の回路構成例を示す図である。
ランダムセレクタ部52は、複数段にわたってツリー状に接続された複数の選択回路を有する。
初段の選択回路52a1,52a2,52a3,52a4,…,52aqの各々には、LFE51a1,51a2,…,51anのそれぞれが出力する変数qとFとindex=iとΔEの組(状態信号と言う)が2組ずつ入力される。例えば、選択回路52a1には、LFE51a1が出力する変数qとFとindex=0とΔEによる組と、LFE51a2が出力する変数qとFとindex=1とΔEによる組とが入力される。また、選択回路52a2には、変数qとFとindex=2とΔEによる組と変数qとFとindex=3とΔEによる組が入力される。選択回路52a3には、変数qとFとindex=4とΔEによる組と変数qとFとindex=5とΔEによる組が入力される。更に、選択回路52a4には、変数qとFとindex=6とΔEによる組と変数qとFとindex=7とΔEによる組が入力される。選択回路52aqには、変数qn-2とFn-2とindex=n-2とΔEn-2による組と変数qn-1とFn-1とindex=n-1とΔEn-1による組が入力される。
そして、選択回路52a1,…,52aqの各々は、入力された2組の変数qとFとindex=iとΔEと、乱数生成部54が出力する1ビット乱数に基づいて、一方の組の変数qとFとindex=iとΔEを選択する。このとき、選択回路52a1,…,52aqの各々は、Fが1である組を優先的に選択し、両方の組が1の場合には1ビット乱数に基づいて何れか一方の組を選択する(他の選択回路も同様)。ここで、乱数生成部54は、1ビット乱数を選択回路毎に個別に生成し、各選択回路に供給する。なお、初段の選択回路52a1~52aqの数は、LFE51a1,…,51anの数の1/2、つまり、n/2である。
2段目の選択回路52b1,52b2,…,52brの各々には、選択回路52a1,…,52aqが出力する状態信号が2つずつ入力される。例えば、選択回路52b1には、選択回路52a1,52a2が出力する状態信号が入力される。また、選択回路52b2には、選択回路52a3,52a4が出力する状態信号が入力される。
そして、選択回路52b1,…,52brの各々は、2つの状態信号と、乱数生成部54が出力する1ビット乱数に基づいて、2つの状態信号の何れか一方を選択する。
3段目以降の選択回路においても同様の処理が行われ、最後段の選択回路52pから、ランダムセレクタ部52の出力である状態信号(F,q,index=j,ΔEの組)が出力される。
このように、ランダムセレクタ部52は、1段目の複数の第1の選択回路(選択回路52a1,…,52aq)と、2段目以降の1以上の第2の選択回路(選択回路52b1,…,52p)とを有する。複数の第1の選択回路の各々は、スピンビットの反転可否を示す信号(F)およびエネルギー変化値を示す信号(ΔE)の組を複数組ずつ受け付け、反転可を示す第1の信号を含む組を優先して何れか1つの組を選択し、出力する。1以上の第2の選択回路の各々は、前段の複数の選択回路の各々が出力した第1の信号および第2の信号の組を複数組ずつ受け付け、反転可を示す第1の信号を含む組を優先して何れか1つの組を選択し、出力する。各選択回路部へ入力される反転可否を示す信号とエネルギー変化値を示す信号との組の数として、2組を例示したが、3組以上でもよい。
LFE51a1,…,51anの各々は、自ビットの値(q)を示す信号を更に出力する。ランダムセレクタ部52は、当該ビットの値を示す信号に基づいて、反転させるスピンビットの値を、エネルギー変化値とともに選択する。また、LFE51a1,…,51anの各々は、自身の識別情報(index)を示す信号を更に出力する。ランダムセレクタ部52は、当該識別情報を示す信号に基づいて、反転させるスピンビットに対応するLFEの識別情報を、エネルギー変化値とともに選択する。
次に、選択回路52a1,…,52aq,52b1,…52br,…,52pの回路構成例を説明する。選択回路52a1について主に説明するが、選択回路52aq,52b1,…52br,…,52pも同様の回路構成となる。
図10は、選択回路の回路構成例を示す図である。
選択回路52a1は、OR回路71、AND回路72,73、OR回路74およびセレクタ75,76,77を有する。
ここで、選択回路52a1には、状態信号(index_0,ΔE_0,q_0,F_0)および状態信号(index_1,ΔE_1,q_1,F_1)が入力される。選択回路52a1の出力は、これら2つの状態信号のうちの何れか一方の状態信号(index,ΔE,q,F)である。
OR回路71は、フラグF_0,F_1が入力される。OR回路71は、F_0,F_1の少なくとも一方が1であればF=1を、F_0,F_1の両方が0であればF=0を出力する。
AND回路72は、フラグF_0および1ビット乱数(図中「random」と表記)が入力される。1ビット乱数は、乱数生成部54により供給される。AND回路72は、フラグF_0および1ビット乱数の両方が1であれば1を、フラグF_0および1ビット乱数の少なくとも一方が0であれば0を出力する。
AND回路73は、フラグF_1の反転値、および、1ビット乱数の反転値が入力される。ここで、0の反転値は1であり、1の反転値は0である。AND回路73は、フラグF_1の反転値および1ビット乱数の反転値の両方が1であれば1を、フラグF_1の反転値および1ビット乱数の反転値の少なくとも一方が0であれば0を出力する。
OR回路74は、AND回路72,73からの信号が入力される。AND回路72,73の出力の少なくとも一方が1であればsel=1を、AND回路72,73の出力の両方が0であればsel=0を出力する。
セレクタ75は、q_0,q_1,selが入力される。セレクタ75は、sel=1のときスピンビットq_0を出力し、sel=0のときスピンビットq_1を出力する。
セレクタ76は、ΔE_0,ΔE_1,selが入力される。セレクタ76は、sel=1のときエネルギー変化値ΔE_0を出力し、sel=0のときエネルギー変化値ΔE_1を出力する。
セレクタ77は、index_0,index_1,selが入力される。セレクタ77は、sel=1のときindex_0を出力し、sel=0のときindex_1を出力する。
AND回路72,73およびOR回路74によれば、フラグF_0,F_1の両方が1のときは、フラグF_0,F_1の何れか一方に対応するq,index,ΔEが、1ビット乱数に応じて選択される。また、フラグF_0,F_1の何れか一方が1のときは、1であるフラグに対応するq,index,ΔEが選択される。更に、フラグF_0,F_1の両方が0のときは、出力されるフラグF=0であり、1ビット乱数に応じてq,index,ΔEが選択される。
なお、上記の例では、各LFEからindexが供給される例を示したが、ランダムセレクタ部52によってindexを生成するようにしてもよい。例えば、ランダムセレクタ部52の各選択回路は、変数qとFとΔEとの組である2つの状態信号のうち、何れを選択したかを示す識別値を生成し、indexとする。初段の選択回路は1ビットの識別値を生成し、後段の選択回路は前段の選択回路に1ビットを追加して、識別値を更新していく。こうして、最終段の選択回路によって出力される2進数の識別値をindexとして、各LFEに供給してもよい。ランダムセレクタ部52でindexを生成する場合、各LFEは、index格納レジスタを有さなくてもよい。
次に、最適化装置25の処理手順を説明する。まず、最適化装置25の初期化処理の例を説明する。
図11は、初期化処理の例を示すフローチャートである。
(S10)CPU21は、問題に応じた初期値および動作条件を最適化装置25に入力する。初期値は、例えば、エネルギー値E、ローカルフィールドh、スピンビットq、温度パラメータTの初期値および重み係数Wなどを含む。また、動作条件は、1つの温度パラメータでの状態の更新回数N1、温度パラメータの変更回数N2および温度パラメータの下げ幅などを含む。制御部25aは、入力された初期値および重み係数Wを、前述の各LFEのレジスタおよびSRAMに設定する。
(S11)CPU21は、最適化装置25に演算開始フラグ(例えば、演算開始フラグ=1)を入力する。制御部25aは、演算開始フラグの入力を受け付け、LFB50による演算を開始する。こうして、初期化処理が終了する。
図12は、演算処理の例を示すフローチャートである。
ここで、図12の説明では、index=iに対応するLFEをLFE51ax(1番目のLFEはLFE51a1であり、n番目のLFEは51anである)と表記する。LFE51axに含まれる各部についても、例えば、SRAM60axのように、符号の末尾に「x」を付して表記する。LFE51a1,…,LFE51anの各々による演算は並列に実行される。
(S20)ΔE生成部67axは、h格納レジスタ64axに格納されたローカルフィールドhおよびビット格納レジスタ66axに格納されたビットqに基づいて、当該ビットqを反転させた場合のエネルギー変化量ΔEを生成する。ΔEの生成には、式(2)が用いられる。ΔE生成部67axは、生成したエネルギー変化量ΔEを、判定部68axおよびランダムセレクタ部52に出力する。
(S21)判定部68axは、ΔE生成部67axにより生成されたエネルギー変化量ΔEと、閾値生成部53により生成された閾値(=-(T・f-1(u)))とを比較し、閾値>ΔEであるか否かを判定する。閾値>ΔEの場合、ステップS22に処理が進む。閾値≦ΔEの場合、ステップS23に処理が進む。
(S22)判定部68axは、反転候補信号(F=1)をランダムセレクタ部52に出力する。そして、ステップS24に処理が進む。
(S23)判定部68axは、非反転信号(F=0)をランダムセレクタ部52に出力する。そして、ステップS24に処理が進む。
(S24)ランダムセレクタ部52は、LFE51axからq,F,index=i,ΔEを受け付け、LFE51a1,…,LFE51anの各々から出力された全反転候補(F=1であるLFEに対応するビット)から、反転ビットを1つ選択する。なお、ランダムセレクタ部52は、LFE51axのindex格納レジスタ69axからLFE51axのindex=iを取得する。ランダムセレクタ部52は、選択した反転ビットに対応するindex=j、F、qをLFE51a1,…,LFE51anに出力する。また、ランダムセレクタ部52は、選択した反転ビットに対応するΔEを、加算器56に出力する。すると、次のステップS25(エネルギー更新処理),S26(状態更新処理)が並列に開始される。
(S25)加算器56は、反転ビットに対応するエネルギー変化量ΔEを、エネルギー値Eに加算することで、E格納レジスタ57に格納されたエネルギー値Eを更新する。すなわち、E=E+ΔEである。そして、エネルギー更新処理が終了する。
(S26)セレクタ61axは、反転ビットに対応するindex=jとフラグFとを取得し、当該反転ビットと自ビットとに対応する重み係数をSRAM60axから読み出し、Δh生成部62axに供給する。
(S27)Δh生成部62axは、反転ビットの反転方向と、セレクタ61axにより読み出された重み係数Wijとに基づいて、Δhを生成する。Δhの生成には、式(4)が用いられる。また、反転ビットの反転方向は、ランダムセレクタ部52により出力される反転ビットq(今回の反転前のビット)により判別される。
(S28)加算器63axは、Δh生成部62axにより生成されたΔhを、h格納レジスタ64axに格納されたローカルフィールドhに加算することで、h格納レジスタ64axに格納されたローカルフィールドhを更新する。また、反転判定部65axは、ランダムセレクタ部52により出力されたindex=jおよびフラグFに基づいて、自ビットが反転ビットとして選択されたか否かを判定する。反転判定部65axは、自ビットが反転ビットとして選択された場合、ビット格納レジスタ66axに格納されたスピンビットを反転させ、自ビットが反転ビットとして選択されなかった場合、ビット格納レジスタ66axのスピンビットを維持する。ここで、自ビットが反転ビットとして選択された場合とは、ランダムセレクタ部52により出力された信号について、index=j=i、かつ、F=1の場合である。
(S29)制御部25aは、現在の温度パラメータTにおいて、LFE51a1,…,LFE51anに保持される各スピンビットの更新処理回数がN1に達したか(更新処理回数=N1であるか)否かを判定する。更新処理回数がN1に達した場合、ステップS30に処理が進む。更新処理回数がN1に達していない場合、制御部25aは、更新処理回数に1を加算して、ステップS20に処理を進める。
(S30)制御部25aは、温度パラメータTの変更回数がN2に達したか(温度変更回数=N2であるか)否かを判定する。温度変更回数がN2に達した場合、ステップS32に処理が進む。温度変更回数がN2に達していない場合、制御部25aは、温度変更回数に1を加算して、ステップS31に処理を進める。
(S31)制御部25aは、温度パラメータTを変更する。具体的には、制御部25aは、動作条件に応じた下げ幅で、温度パラメータTの値を減少させる(温度を下げることに相当する)。そして、ステップS20に処理が進む。
(S32)制御部25aは、ビット格納レジスタ66axに格納されたスピンビットを読み出し、演算結果として出力する。具体的には、制御部25aは、ビット格納レジスタ66a1,…,66anの各々に格納されたスピンビットを読み出し、CPU21に出力する。すなわち、制御部25aは、読み出したスピンビット列をCPU21に供給する。そして、演算処理が終了する。
上記のように、最適化装置25では、ランダムセレクタ部52により、q,F,indexとともにΔEも選択して、ランダムセレクタ部52によりエネルギー計算部55にΔEを供給する。このため、回路規模が増してもΔEの信号経路の長さの増大を抑えられる。
図13は、LFEの配置による信号経路の例を示す図である。
最適化装置25のチップ内(LFB50の内部)では、例えば、各LFEが1つの面(配置面)の上に配置される。図13では、配置面を上から眺めたときの、各LFE、ランダムセレクタ部52およびエネルギー計算部55のレイアウトの例を示す。ここで、一例として、LFB50が、1024個のLFEを有する場合を示す。各LFEには、該当のLFEのindex(=0,1,…,1023)が付されている。例えば、図13で示される配置面の右上側、同右下側、同左上側、同左下側の4箇所の領域に、各々、256個のLFEが配置されている。
また、ランダムセレクタ部52およびエネルギー計算部55は、配置面の中央に配置される。すなわち、ランダムセレクタ部52およびエネルギー計算部55は、各LFEが配置された上記4箇所の領域よりも内側に配置されている。
LFE51a1(index=0)のΔEに関する信号経路について説明するが、他のLFE(符号を省略している)についても同様である。
区間P1,P2,P3の各々は、信号伝達に時間τを要する信号経路の一区間である。例えば、LFE51a1から出力された(q,F,index=0,ΔE)を含む状態信号は、区間P1,P2を経由して、ランダムセレクタ部52に到達する。したがって、当該状態信号がランダムセレクタ部52に到達するまでの時間は、2τである。
更に、ランダムセレクタ部52から出力されたΔEは、区間P3を経由して、エネルギー計算部55に到達する。したがって、ランダムセレクタ部52から出力されたΔEが、エネルギー計算部55に到達するまでの時間はτである。
各LFEからランダムセレクタ部52までは並列に状態信号が供給される。各LFEからランダムセレクタ部52までの信号経路の長さは同じか、または、各LFEのうち、LFE51a1がランダムセレクタ部52から最も遠いLFEであるとする。すると、各LFEにより状態信号が出力されてからエネルギー計算部55にΔEが到着するまでの信号経路(区間P1,P2,P3を通る経路)による遅延は2τ+τ=3τである。この遅延は、後述される比較例の回路構成(図18)で生ずる遅延に比べて短い。
次に、最適化装置25の他の回路構成の例を説明する。
図14は、最適化装置の他の例を示す図である。
最適化装置26は、例えば、1チップの半導体集積回路であり、FPGAなどにより実現される。最適化装置26は、第1の実施の形態の最適化装置1の一例である。
最適化装置26は、LFBを複数搭載する。LFBを複数搭載することで、LFEの数が増し、スピンビット列のビット数を増やせる。スピンビット列のビット数が増すと、より大きな規模の問題に最適化装置26を適用可能になる。一例として、最適化装置26は、8個のLFBを有するものとする。また、例えば、1つのLFBは、1024個のLFEを有する。ここで、LFBはLFEのグループであると言える。したがって、最適化装置26では、複数のLFEは複数のグループに分けられていると言える。
最適化装置26はLFB81a1,81a2,…,81a8、ランダムセレクタ部82およびエネルギー計算部83を有する。ただし、最適化装置26は、LFB81a1,…,81a8の各LFEに閾値を供給する閾値生成部(図示を省略)や、LFB81a1,…,81a8の各々のLFBのランダムセレクタ部に乱数を供給する乱数生成部(図示を省略)も有する。また、最適化装置26は、CPU21からの指示により最適化装置26による演算を制御する制御部(図示を省略)も有する。
LFB81a1,…,81a8の各々は、前述のLFB50と同様の回路構成を有する。ただし、LFB81a1,…,81a8の各々は、エネルギー計算部55を有さない点がLFB50と異なる。また、LFB81a1,…,81a8の各々のランダムセレクタ部は、選択した状態信号を、ランダムセレクタ部82に出力する点が、LFB50のランダムセレクタ部52と異なる。例えば、LFB81a1から出力される状態信号は(qj0,Fj0,index=j0,ΔEj0)の組である。LFB81a1,…,81a8の各々は、識別番号(0,…,8)に対応付けられている。
例えば、LFB81a1は、LFE91a1,…,91amおよびランダムセレクタ部92を有する。前述のように、例えば、m=1024である。LFE91a1,…,91amの各々は、ランダムセレクタ部92に対して(q,F,index=i,ΔE)の組(状態信号)を出力する。ランダムセレクタ部92は、LFE91a1,…,91amの各々から受け付けた状態信号のうち、F=1のものを優先して1つ選択し、ランダムセレクタ部82に出力する。LFB81a2,…,LFB82a8も、LFB81a1と同様の回路構成を有する。
ランダムセレクタ部82は、LFB81a1,…,81a8の各々から出力された状態信号を受け付け、受け付けた複数の状態信号に基づいて、反転ビットに対応する何れかの状態信号を選択する。ランダムセレクタ部82は、乱数生成部(図示を省略している)から乱数の供給を受け、当該乱数を用いて、状態信号を選択する。ランダムセレクタ部82は、選択した状態信号のうち、(q,F,index=j)の組をLFB81a1,…,81a8に出力する。ランダムセレクタ部82は、選択した状態信号のうちΔEをエネルギー計算部83に出力する。
エネルギー計算部83は、現在のスピンビット列に対するイジングモデルのエネルギーを計算する。エネルギー計算部83は、加算器84およびE格納レジスタ85を有する。
加算器84は、ランダムセレクタ部82により出力されたエネルギー変化値ΔEを受け付け、E格納レジスタ85に格納されたエネルギー値EにΔEを加算し、E格納レジスタ85に出力する。
E格納レジスタ85は、図示しないクロック信号に同期して、加算器84が出力するエネルギー値Eを取り込む。E格納レジスタ85は、例えば、フリップフロップである。なお、エネルギー値Eの初期値は、制御部25aによって式(1)を用いて計算され、E格納レジスタ85に設定される。
このように、複数のLFEは、複数のグループ(複数のLFB)に分けられて実装されもよい。この場合、最適化装置26は、複数のグループの各々に対して設けられたランダムセレクタ部(ランダムセレクタ部92を含む)を更に有する。例えば、ランダムセレクタ部92は、1つのグループ(LFB81a1)に属するLFE91a1,…,91amの各々から入力されたスピンビットの反転可否を示す信号およびエネルギー変化値を示す信号の組のうちの何れか1つを選択し、出力する。このとき、ランダムセレクタ部92は、反転可を示す信号を含む組を優先して選択する。他のLFBに設けられたランダムセレクタ部も同様である。そして、ランダムセレクタ部82は、各LFBのランダムセレクタ部の各々により出力されたスピンビットの反転可否を示す信号およびエネルギー変化値を示す信号に基づいて、反転させるスピンビットと当該スピンビットに対応するエネルギー変化値とを選択する。ランダムセレクタ部82は、選択したスピンビットを示す信号を最適化装置26内の各LFEに出力する。また、ランダムセレクタ部82は、選択したエネルギー変化値を示す信号をエネルギー計算部83に出力する。
上記のランダムセレクタ部82により、ランダムセレクタ部52と同様に、信号経路による遅延を低減可能である。
図15は、信号経路の他の例を示す図である。
最適化装置26のチップ内では、例えば、各LFBが1つの面(配置面)の上に配置される。図15では、配置面を上から眺めたときの、各LFB、ランダムセレクタ部82およびエネルギー計算部83のレイアウトの例を示す。なお、各LFBに識別番号(=0,…,7)を付している。例えば、図15で示される配置面の右上側(#0,#2)、同右下側(#1,#3)、同左上側(#4,#6)、同左下側(#5,#7)の4箇所の領域に、各々、2個のLFBが配置されている。
また、ランダムセレクタ部82およびエネルギー計算部83は、配置面の中央に配置される。すなわち、ランダムセレクタ部82およびエネルギー計算部83は、各LFBが配置された上記4箇所の領域よりも内側に配置されている。
LFB81a1(識別番号=0)のΔEj0に関する信号経路について説明するが、他のLFB(符号を省略している)についても同様である。
区間P11,P12,P13,P14,P15,P16の各々は、信号伝達に時間τを要する信号経路の一区間である。例えば、LFB81a1から出力された(qj0,Fj0,index=j0,ΔEj0)を含む状態信号は、区間P11,P12,P13,P14,P15,P16を経由して、ランダムセレクタ部82に到達する。したがって、当該状態信号がランダムセレクタ部82に到達するまでの時間は、6τである。
更に、ランダムセレクタ部82から出力されたΔEは、区間P17を経由して、エネルギー計算部83に到達する。したがって、ランダムセレクタ部82から出力されたΔEが、エネルギー計算部83に到達するまでの時間はτである。
各LFBからランダムセレクタ部82までは並列に状態信号が供給される。各LFEからランダムセレクタ部82までの信号経路の長さは同じか、または、各LFBのうち、LFB81a1がランダムセレクタ部82から最も遠いLFBであるとする。すると、各LFBにより状態信号が出力されてからエネルギー計算部83にΔEが到着するまでの信号経路(区間P11,P12,P13,P14,P15,P16,P17を通る経路)による遅延は、6τ+τ=7τである。この遅延は、後述される比較例の回路構成(図19)で生ずる遅延に比べて短い。
次に、最適化装置25に対する比較例の回路構成を説明する。
図16は、最適化装置の回路構成の比較例を示す図である。
最適化装置27(最適化装置27のLFB)は、LFE51b1,…,51bn、ランダムセレクタ部52b、閾値生成部53、乱数生成部54、ΔE出力部58およびエネルギー計算部59を有する。最適化装置27は、CPU21からの指示により最適化装置27による演算を制御する制御部を有するが、図示を省略している。
LFE51b1,…,51bnの各々は、スピンビットの1ビットとして用いられる。nは、2以上の整数であり、最適化装置27が備えるLFEの数を示す。LFE51b1,…,51bnの各々には、LFEの識別情報(index)が対応付けられている。LFE51b1,51b2,…,51bnの各々に対して、index=0,1,…,n-1である。
以下では、LFE51b1の回路構成を説明する。LFE51b2,…,51bnも、LFE51b1と同様の回路構成により実現される。
LFE51b1は、SRAM60a1、セレクタ61a1、Δh生成部62a1、加算器63a1、h格納レジスタ64a1、反転判定部65a1、ビット格納レジスタ66a1、ΔE生成部67b1、判定部68a1およびindex格納レジスタ69a1を有する。LFE51b1は、ΔE生成部67a1に代えて、ΔE生成部67b1を有する点が、LFE51a1と異なる。そこで、ΔE生成部67b1を主に説明する。
ΔE生成部67b1は、h格納レジスタ64a1のローカルフィールドhおよびビット格納レジスタ66a1のスピンビットに基づいて、自ビットの反転に応じたイジングモデルのエネルギー変化量ΔEを、式(2)により計算する。ΔE生成部67b1は、ランダムセレクタ部52bから所定の指示信号を受け付けると、計算したエネルギー変化量ΔEを、ΔE出力部58に出力する。なお、ΔE生成部67b1は、ランダムセレクタ部52bから指示信号を受け付けない場合、ΔE出力部58に0を出力する。
ランダムセレクタ部52bは、LFE51b1,…,51bnの各々から、スピンビット、スピンビットの反転可否を示すフラグおよびindexを受け付ける。ランダムセレクタ部52bは、反転可であるスピンビットのうち反転させるビット(反転ビット)を選択する。
ランダムセレクタ部52bは、選択した反転ビットの現在のビット値(ビットq)を、LFE51b1,…,51bnが備えるΔh生成部62a1,…,62anに供給する。
ランダムセレクタ部52bは、反転ビットのindex=jと、反転可否を示すフラグFとを、LFE51b1,…,51bnが備えるセレクタ61a1,…,60an、および、反転判定部65a1,…,65anに供給する。
ランダムセレクタ部52bは、選択した反転ビットに対応するLFE(index=jに対応するLFE)のΔE生成部に対して、ΔEを出力させる指示信号を出力する。すなわち、ランダムセレクタ部52bは、ΔEの選択を行わない点、および、ΔEの出力を行わない点が、ランダムセレクタ部52と異なる。
閾値生成部53および乱数生成部54は、図8で説明した機能を有する。ただし、乱数生成部54は、生成した乱数をランダムセレクタ部52bに供給する。
ΔE出力部58は、LFE51b1,…,51bnの各々のΔE生成部からΔE,…,ΔEn-1の入力を受け付け、受け付けたΔE,…,ΔEn-1に対するOR論理によって、ΔEを出力するOR回路である。ここで、ΔE出力部58に入力されるΔEは、ランダムセレクタ部52bによる指示信号を受け付けたLFEについては、ΔE=ΔEであり、それ以外のLFEについてはΔE=0である。ΔE出力部58は、ΔEをエネルギー計算部59に出力する。
エネルギー計算部59は、現在のスピンビット列に対するイジングモデルのエネルギーを計算する。エネルギー計算部59は、加算器56bおよびE格納レジスタ57bを有する。加算器56bはΔE出力部58により出力されたエネルギー変化量ΔEを受け付け、E格納レジスタ57bに格納されたエネルギー値EにΔEを加算し、E格納レジスタ57bに出力する。E格納レジスタ57bは、図示しないクロック信号に同期して、加算器56bが出力するエネルギー値Eを取り込む。
次に、最適化装置27による演算処理の比較例を説明する。
図17は、演算処理の比較例を示すフローチャートである。
ここで、図17の説明では、index=iに対応するLFEをLFE51bx(1番目のLFEはLFE51b1であり、n番目のLFEは51bnである)と表記する。
比較例の手順では、ステップS24の実行後、ステップS25の実行前に、ステップS25aが実行される点が、図12で説明した手順と異なり、それ以外の手順は図12と同様となる。そこで、ステップS25aを主に説明し、他のステップの説明を省略する。
ただし、ステップS20では、ΔE生成部67bxは、生成したΔEを判定部68axにのみ供給し、ランダムセレクタ部52bにΔEを供給しない。ΔE生成部67bxは、ランダムセレクタ部52bから指示信号を受け付けない限り、ΔE出力部58にΔE=0を出力する。また、ステップS24では、ランダムセレクタ部52bは、ΔEの出力を行わない。更に、ステップS25aは、ステップS24の実行後、ステップS26とともに並列に実行開始される。
(S25a)ΔE出力部58は、反転ビットのLFEからΔEを読み出す。具体的には、ランダムセレクタ部52bは、選択した反転ビットのLFEに含まれるΔE生成部に対してΔEの出力を指示する指示信号を出力する。当該ΔE生成部は、ステップS20で生成したΔEを、ΔE出力部58に出力する。このようにして、ΔE出力部58によるΔEの読み出しが行われる。ΔE出力部58は、当該ΔE生成部からΔE=ΔEを受け付け、他のΔE=0とのOR論理によって、ΔEを加算器56bに出力する。
このように、比較例の手順では、図12の手順と比べて、ステップS25aが余計に実行される。ここで、ステップS25aのΔEの読み出しにおける信号経路(往来パス)の例を説明する。
図18は、信号経路の比較例を示す図である。
最適化装置27でも、最適化装置25と同様に、ランダムセレクタ部52bおよびエネルギー計算部59がチップの配置面の中央に配置され、ランダムセレクタ部52bおよびエネルギー計算部59の周囲に各LFEが配置される。
以下、LFE51b1(index=0)のΔEに関する信号経路について説明するが、他のLFE(符号を省略している)についても同様である。
区間P21,P22,P23,P24,P25,P26の各々は、信号伝達に時間τを要する信号経路の一区間である。LFE51b1は、(q,F,index=0)を含む状態信号を出力する(ステップST1)。例えば、LFE51b1から出力された状態信号は、区間P21,P22を経由して、ランダムセレクタ部52bに到達する。したがって、当該状態信号がランダムセレクタ部52bに到達するまでの時間は、2τである。
ランダムセレクタ部52bは、各LFEから受け付けた状態信号により、反転ビットを選択する。ここで、一例として、ランダムセレクタ部52bによりqが反転ビットとして選択されたとする。ランダムセレクタ部52bは、ΔEの出力を指示する指示信号(図中のcommand)を、LFE51b1のΔE生成部67b1に出力する(ステップST2)。例えば、当該指示信号は、区間P23,P24を経由して、ΔE生成部67b1に到達する。したがって、当該指示信号が、ランダムセレクタ部52bから出力されてΔE生成部67b1に到達するまでの時間は、2τである。
ΔE生成部67b1は、指示信号を受け付けると、ΔE出力部58を介して、エネルギー計算部59に、ΔEを出力する(ステップST3)。例えば、ΔEを示す信号は、区間P25,P26(ΔE出力部58を含む)を経由して、エネルギー計算部59に到達する。したがって、当該ΔEを示す信号がΔE生成部67b1より出力されてからエネルギー計算部59に到達するまでの時間は、2τである。
各LFEからランダムセレクタ部52bまでは並列に状態信号が供給される。各LFEからランダムセレクタ部52bまでの信号経路の長さは同じか、または、各LFEのうち、LFE51b1がランダムセレクタ部52bおよびエネルギー計算部59から最も遠いLFEであるとする。すると、各LFEにより状態信号が出力されてからエネルギー計算部59にΔEjが到着するまでの信号経路(区間P21~P26を通る経路)による遅延(遅延の最大値)は、2τ+2τ+2τ=6τである。
遅延6τは、図13における遅延3τと比較される(6τ>3τである)。すなわち、第2の実施の形態の最適化装置25では、比較例の回路構成よりも、エネルギー計算の処理を開始するまでの遅延が抑制される。
また、比較例のLFBを複数用いて、図14で例示したように回路規模を拡張することも考えられる。
図19は、信号経路の他の比較例を示す図である。
最適化装置28は、最適化装置26に対する比較例である。最適化装置28は、LFB81b1を含む複数のLFB(識別番号=0,…,7)、ランダムセレクタ部82bおよびエネルギー計算部83bを有する。最適化装置28は、エネルギー計算部83bへΔEを供給するΔE出力部を有する。ただし、図19ではΔE出力部の図示を省略している。
LFB81b1を含む複数のLFBの各々のランダムセレクタ部は、ΔEの選択およびΔEの出力を行わず、選択した反転ビットに対応するLFEのΔE生成部に対して、ΔE出力部へのΔEの出力を指示する。
最適化装置28でも、最適化装置26と同様に、ランダムセレクタ部82bおよびエネルギー計算部83bがチップの配置面の中央に配置され、ランダムセレクタ部82bおよびエネルギー計算部83bの周囲に各LFBが配置される。
LFB81b1(識別番号=0)のΔEj0に関する信号経路について説明するが、他のLFB(符号を省略している)についても同様である。
区間P31,P32,…,P48の各々は、信号伝達に時間τを要する信号経路の一区間である。LFE81b1は、(qj0,Fj0,index=j0)を含む状態信号を出力する(ステップST11)。例えば、LFB81b1から出力された状態信号は、区間P31,P32,P33,P34,P35,P36を経由して、ランダムセレクタ部82bに到達する。したがって、当該状態信号がランダムセレクタ部82bに到達するまでの時間は、6τである。
ランダムセレクタ部82bは、各LFBから受け付けた状態信号により、反転ビットを選択する。ここで、一例として、ランダムセレクタ部82bによりqj0が反転ビットとして選択されたとする。ランダムセレクタ部82bは、ΔEj0の出力を指示する指示信号(図中のcommand)を、LFB81b1のqj0に対応するLFEのΔE生成部に出力する(ステップST12)。例えば、当該指示信号は、区間P37,P38,P39,P40,P41,P42を経由して、該当のΔE生成部に到達する。したがって、当該指示信号が該当のΔE生成部に到達するまでの時間は、6τである。
ΔE生成部は、指示信号を受け付けると、ΔE出力部を介して、エネルギー計算部83bに、ΔEj0を出力する(ステップST13)。例えば、ΔEj0を示す信号は、区間P43,P44,P45,P46,P47,P48(ΔE出力部58を含む)を経由して、エネルギー計算部83bに到達する。したがって、当該ΔEj0を示す信号がΔE生成部より出力されてからエネルギー計算部83bに到達するまでの時間は、6τである。
各LFBからランダムセレクタ部82bまでは並列に状態信号が供給される。各LFBからランダムセレクタ部82bまでの信号経路の長さは同じか、または、各LFEのうち、LFB81b1がランダムセレクタ部82bおよびエネルギー計算部83bから最も遠いLFBであるとする。すると、各LFBにより状態信号が出力されてからエネルギー計算部83bにΔEが到着するまでの信号経路(区間P31~P48を通る経路)による遅延(遅延の最大値)は、6τ+6τ+6τ=18τである。
遅延18τは、図15における遅延6τと比較される(18τ>6τである)。すなわち、第2の実施の形態の最適化装置26では、比較例の回路構成よりも、エネルギー計算の処理を開始するまでの遅延が抑制される。
ここで、図17で例示した比較例の演算処理の手順では、図12の手順と比べて、ステップS25aを余計に実行することになる。ステップS25aによる遅延は、例えば、図18の回路構成のときに6τであり、図19の回路構成のときに18τである。回路規模が大きくなるほど、当該遅延は大きくなる。すると、ステップS25a,S25によりエネルギーEの更新が完了するまでの所要時間が、状態更新に関する本流の処理(ステップS26~S28、および、ステップS20~S24)の1サイクルよりも長くなる可能性がある。この場合、エネルギーEの更新処理がボトルネックとなり、演算性能が低下し得る。
そこで、最適化装置25では、ランダムセレクタ部52が、反転させるビットの選択とともに、エネルギー変化値ΔEの選択を行い、エネルギー計算部55に出力することで、エネルギーEの更新処理の遅延を低減できる。具体的には、最適化装置25では、図12で例示したように、図17のステップS25aを実行しなくて済み、また、比較例の回路構成のようにΔE出力部58も不要となる。これにより、エネルギーEの更新処理がボトルネックとなって、演算速度が低下することを抑制できる。
また、最適化装置26のように、複数のLFBを搭載して、スピンビット列の規模を増やすことも考えられる。この場合にも、ランダムセレクタ部82が、反転させるビットの選択とともに、エネルギー変化値ΔEの選択を行い、エネルギー計算部83に出力することで、エネルギーEの更新処理の遅延を低減できる。これにより、エネルギーEの更新処理がボトルネックとなって、演算速度が低下することを抑制できる。
ここで、例えば、図18で示される信号経路と図13で示される信号経路とを比べると、図13の回路構成では、図18の比較例の回路構成と比べて、配線の物理的圧迫もない。具体的には、図18の比較例の回路構成では、LFE51b1からエネルギー計算部59(あるいは、ΔE出力部58)へΔEを示す信号を出力する信号経路が存在する。当該信号経路に対応する信号経路として、図13の最適化装置25の回路構成では、LFE51a1からランダムセレクタ部52へΔEを示す信号を出力する信号経路が存在することになる。
このため、図13の最適化装置25の回路構成では、比較例の回路構成に比べて、配線数に大きな変化はない。したがって、配線面に関する実装の難易度に変化はなく、配線の物理的圧迫なしに、エネルギーEの更新処理の遅延を低減できる。また、配線性の問題を生じさせずに、規模拡張を実現できる。
図15の最適化装置26の回路構成についても同様に、図19の比較例の回路構成に対して、配線の物理的圧迫なしで、エネルギーEの更新処理の遅延を低減できる。また、配線性の問題を生じさせずに、規模拡張を実現できる。
上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
1 最適化装置
1a1,1a2,…,1aN ビット演算回路
2 選択回路部
3 閾値生成部
4 乱数生成部
5 エネルギー計算部
6 制御部
11 記憶部
12 セレクタ
13 反転判定部
14 ビット保持部
15 エネルギー変化計算部
16 状態遷移判定部

Claims (6)

  1. イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、前記ビット列のうちの自ビットと反転された前記ビットとの相互作用の大きさを示す係数に基づいて前記イジングモデルのエネルギー変化値を計算し、前記エネルギー変化値に応じた前記自ビットの反転可否を示す第1の信号と前記エネルギー変化値を示す第2の信号とを出力する複数のビット演算回路と、
    前記第1の信号および前記第2の信号に基づいて、前記ビット列のうち反転させる前記ビットと当該ビットに対応する前記エネルギー変化値とを選択し、選択した前記ビットを示す第3の信号を前記複数のビット演算回路の各々に出力するとともに、選択した前記エネルギー変化値を示す第4の信号を出力する選択回路部と、
    前記第4の信号が示す前記エネルギー変化値に基づいて前記イジングモデルのエネルギーを計算するエネルギー計算部と、
    を有する最適化装置。
  2. 前記選択回路部は、前記第1の信号および前記第2の信号の組を複数組ずつ受け付け、反転可を示す前記第1の信号を含む組を優先して何れか1つの組を選択し、出力する1段目の複数の第1の選択回路と、前段の複数の選択回路の各々が出力した前記第1の信号および前記第2の信号の組を複数組ずつ受け付け、反転可を示す前記第1の信号を含む組を優先して何れか1つの組を選択し、出力する2段目以降の1以上の第2の選択回路と、を有する、
    請求項1記載の最適化装置。
  3. 前記複数のビット演算回路は、複数のグループに分けられており、
    1つのグループに属するビット演算回路の各々から入力された前記第1の信号および前記第2の信号の組のうちの何れか1つを選択し、出力する、前記複数のグループの各々に対して設けられたセレクタ部、を更に有し、
    前記選択回路部は、複数の前記セレクタ部の各々により出力された前記第1の信号および前記第2の信号に基づいて、前記第3の信号と前記第4の信号とを出力する、
    請求項1記載の最適化装置。
  4. 前記複数のビット演算回路の各々は、前記自ビットの値を示す第5の信号を更に出力し、
    前記選択回路部は、前記第5の信号に基づいて、反転させる前記ビットの値を、前記エネルギー変化値とともに選択し、選択した前記ビットの値を含む前記第3の信号を出力する、
    請求項1記載の最適化装置。
  5. 前記複数のビット演算回路の各々は、自身の識別情報を示す第6の信号を更に出力し、
    前記選択回路部は、前記第6の信号に基づいて、反転させる前記ビットに対応するビット演算回路の前記識別情報を、前記エネルギー変化値とともに選択し、選択した前記識別情報を含む前記第3の信号を出力する、
    請求項1記載の最適化装置。
  6. 最適化装置の制御方法において、
    前記最適化装置が有する複数のビット演算回路の各々が、イジングモデルの状態を表すビット列のうちの何れかのビットが反転されると、前記ビット列のうちの自ビットと反転された前記ビットとの相互作用の大きさを示す係数に基づいて前記イジングモデルのエネルギー変化値を計算し、前記エネルギー変化値に応じた前記自ビットの反転可否を示す第1の信号と前記エネルギー変化値を示す第2の信号とを出力し、
    前記最適化装置が有する選択回路部が、前記第1の信号および前記第2の信号に基づいて、前記ビット列のうち反転させる前記ビットと当該ビットに対応する前記エネルギー変化値とを選択し、選択した前記ビットを示す第3の信号を前記複数のビット演算回路の各々に出力するとともに、選択した前記エネルギー変化値を示す第4の信号を出力し、
    前記最適化装置が有するエネルギー計算部が、前記第4の信号が示す前記エネルギー変化値に基づいて前記イジングモデルのエネルギーを計算する、
    最適化装置の制御方法。
JP2020546657A 2018-09-14 2018-09-14 最適化装置および最適化装置の制御方法 Active JP7004938B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/034234 WO2020054062A1 (ja) 2018-09-14 2018-09-14 最適化装置および最適化装置の制御方法

Publications (2)

Publication Number Publication Date
JPWO2020054062A1 JPWO2020054062A1 (ja) 2021-05-13
JP7004938B2 true JP7004938B2 (ja) 2022-01-21

Family

ID=69776516

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020546657A Active JP7004938B2 (ja) 2018-09-14 2018-09-14 最適化装置および最適化装置の制御方法

Country Status (5)

Country Link
US (1) US11443090B2 (ja)
EP (1) EP3852025A4 (ja)
JP (1) JP7004938B2 (ja)
CA (1) CA3109737C (ja)
WO (1) WO2020054062A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7410395B2 (ja) 2020-03-26 2024-01-10 富士通株式会社 最適化装置及び最適化方法
WO2022230119A1 (ja) * 2021-04-28 2022-11-03 日本電気株式会社 シミュレーテッドアニーリング装置およびシミュレーテッドアニーリング方法
JP2023152548A (ja) 2022-04-04 2023-10-17 富士通株式会社 最適化装置、最適化方法および最適化プログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018041351A (ja) 2016-09-09 2018-03-15 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3601428B2 (ja) 2000-09-20 2004-12-15 日本電気株式会社 セレクタ
EP1758395A1 (en) 2004-06-28 2007-02-28 Matsushita Electric Industrial Co., Ltd. Program creation device, program test device, program execution device, information processing system
US9633715B2 (en) * 2013-05-31 2017-04-25 Hitachi, Ltd. Semiconductor device capable of attaining ground state in an ising model
JP7071638B2 (ja) * 2018-07-31 2022-05-19 富士通株式会社 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018041351A (ja) 2016-09-09 2018-03-15 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法

Also Published As

Publication number Publication date
CA3109737C (en) 2023-08-29
EP3852025A4 (en) 2021-10-06
EP3852025A1 (en) 2021-07-21
CA3109737A1 (en) 2020-03-09
WO2020054062A1 (ja) 2020-03-19
US20210173990A1 (en) 2021-06-10
US11443090B2 (en) 2022-09-13
JPWO2020054062A1 (ja) 2021-05-13

Similar Documents

Publication Publication Date Title
US10860917B2 (en) Apparatus and method for performing a forward operation of artificial neural networks
US10713568B2 (en) Apparatus and method for executing reversal training of artificial neural network
US11443090B2 (en) Optimization device and method of controlling optimization device
US20190065934A1 (en) Apparatus and methods for forward propagation in fully connected layers of convolutional neural networks
EP3722941B1 (en) Optimization device and method for controlling optimization device
JP7410395B2 (ja) 最適化装置及び最適化方法
CN111914378B (zh) 一种单振幅量子计算模拟方法及装置
JP7137064B2 (ja) 最適化装置及び最適化装置の制御方法
CN111819578A (zh) 使用带有急速更新的分布式参数服务器对神经网络进行优化的异步训练
CN113283046A (zh) 优化装置、优化方法和记录介质
JP7193708B2 (ja) 最適化装置及び最適化装置の制御方法
JP2020027426A (ja) 最適化システム、最適化システムの制御方法及び最適化システムの制御プログラム
He et al. Parallel GMRES solver for fast analysis of large linear dynamic systems on GPU platforms
Meng et al. Ppoaccel: A high-throughput acceleration framework for proximal policy optimization
US11886780B2 (en) Optimization device, optimization device control method, and computer-readable recording medium recording optimization device control program
JP6666548B2 (ja) 並列計算機、fft演算プログラムおよびfft演算方法
GB2605282A (en) Priority based arbitration
JP2009104403A (ja) 再構成ユニットによる解探索の方法およびデータ処理装置
JP2021043495A (ja) 情報処理プログラムおよび情報処理方法
WO2020049637A1 (ja) 学習装置
Gui et al. Observability for Markovian Jump Boolean Network with Random Delay Effect in States
GB2617688A (en) Priority based arbitration
Yoshikawa et al. Dedicated Hardware for Hybrid Evolutionary Computation
JP2008204028A (ja) ベクトルデータ処理装置

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: 7004938

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150