JP7100257B2 - 最適化装置及び最適化装置の制御方法 - Google Patents

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

Info

Publication number
JP7100257B2
JP7100257B2 JP2018189001A JP2018189001A JP7100257B2 JP 7100257 B2 JP7100257 B2 JP 7100257B2 JP 2018189001 A JP2018189001 A JP 2018189001A JP 2018189001 A JP2018189001 A JP 2018189001A JP 7100257 B2 JP7100257 B2 JP 7100257B2
Authority
JP
Japan
Prior art keywords
arithmetic processing
processing unit
update
unit
stage
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
JP2018189001A
Other languages
English (en)
Other versions
JP2020057306A (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
Priority to JP2018189001A priority Critical patent/JP7100257B2/ja
Priority to US16/564,788 priority patent/US11093578B2/en
Priority to EP19196941.9A priority patent/EP3633560B1/en
Priority to CN201910934026.6A priority patent/CN111008696B/zh
Publication of JP2020057306A publication Critical patent/JP2020057306A/ja
Application granted granted Critical
Publication of JP7100257B2 publication Critical patent/JP7100257B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • 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/045Combinations of 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/08Learning methods
    • 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
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Operations Research (AREA)
  • Databases & Information Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Description

本発明は、最適化装置及び最適化装置の制御方法に関する。
従来、ノイマン型コンピュータが不得意とする多変数の最適化問題を、イジング型のエネルギー関数を用いた最適化装置(イジングマシンまたはボルツマンマシンと呼ばれる場合もある)によって計算する方法がある。最適化装置は、計算対象の問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する。
最適化装置は、たとえば、ニューラルネットワークを用いて問題をモデル化することもできる。その場合、イジングモデルに含まれる全スピンに対応した複数のビットのそれぞれが、他のビットの値と、他のビットと自身のビットとの相互作用の大きさを示す重み係数(結合係数とも呼ばれる)とに応じて0または1を出力するニューロンとして機能する。最適化装置は、たとえば、シミュレーテッド・アニーリングなどの確率的探索法により、イジングモデルのエネルギー関数の値(以下エネルギーという)の最小値が得られる各ビットの値の組み合わせを、解として求める。
従来、デジタル回路を用いてシミュレーテッド・アニーリングを行うことでエネルギーが最小となる各ビットの値の組み合わせを計算する最適化装置がある(たとえば、特許文献1参照)。従来の最適化装置では、イジングモデルの全ビットのうち一度に1つのビットを更新対象とした状態の更新が繰り返される。
ところで、最適化問題の規模の増大に応じてイジングモデルのビット数が増えると重み係数の数も増加する。全ビット間の相互作用を考慮する場合、重み係数の数はビット数の2乗となる。
特開2017-219948号公報 特開平9-319721号公報
ビット数の増大に対応するために、複数の演算処理部(たとえば、それぞれ1チップの半導体集積回路)に重み係数を分散して保持させ、各演算処理部に全ビットのうちの一部のビットについての演算を担当させることで、最適化装置を大規模化する方法がある。しかし、全ビットから更新対象の1つのビットを選択する処理は、複数の演算処理部が各々独立に行うものではないため、複数の演算処理部を用いた場合、適切に更新対象の1つのビットを選択することは容易ではない。このため一般的には、複数の演算処理部による最適化装置の大規模化は困難である。
1つの側面では、本発明は、大規模化が可能な最適化装置及びその制御方法を提供することを目的とする。
1つの実施態様では、最適化問題を変換したイジングモデルの基底状態の探索を行う、環状に接続されたM段(Mは2以上の整数)の演算処理部と、前記M段の演算処理部の各々に設けられ、前記イジングモデルの情報に基づいて、前記イジングモデルの全スピンに対応する複数のビットのビット数をMで割った数のビットの各々について更新を許容するか否かを判定する判定部と、前記M段の演算処理部の各々に設けられ、自身が属す演算処理部である自演算処理部の前記判定部の判定結果に基づいて、更新を許容する更新許容ビットのうちから1つの更新候補ビットを選択し、前記1つの更新候補ビットの識別情報を出力する第1の選択部と、前記M段の演算処理部の各々に設けられ、前記自演算処理部における前記更新許容ビットの数を計数する計数部と、前記M段の演算処理部のうち2段目以降の演算処理部に設けられ、前記自演算処理部の前記第1の選択部が出力する前記識別情報である第1の識別情報と、前段の演算処理部から供給される前記識別情報である第2の識別情報の何れか一方を選択する際に、前記自演算処理部において計数された前記更新許容ビットの数の計数結果を、前段までの演算処理部において計数された前記更新許容ビットの数の積算値と前記計数結果との和により割った確率で前記第1の識別情報を選択し、選択した前記第1の識別情報または前記第2の識別情報を、後段の演算処理部、または前記自演算処理部がM段目の演算処理部の場合には、1段目の演算処理部に供給する第2の選択部と、前記M段の演算処理部の各々に設けられ、前記M段目の演算処理部が前記1段目の演算処理部に供給する前記第1の識別情報または前記第2の識別情報に基づいて、前記複数のビットの何れかの値を更新する状態更新部と、を有する最適化装置が提供される。
また、1つの実施態様では、最適化装置の制御方法が提供される。
1つの側面では、本発明は、最適化装置の大規模化が可能となる。
第1の実施の形態の最適化装置の一例を示す図である。 第1の実施の形態の最適化装置に対する比較例の最適化装置を示す図である。 第2の実施の形態の最適化装置の一例を示す図である。 コアの内部構成例を示す図である。 判定部の回路例を示す図である。 コア内の更新候補ビットを選択する選択部の一例を示す図である。 自コアの更新候補ビットと前段コアの更新候補ビットの一方のインデックスを選択する選択部の一例を示す図である。 制御装置による最適化装置の制御の一例の流れを示すフローチャートである。
以下、発明を実施するための形態を、図面を参照しつつ説明する。
以下に示す最適化装置は、計算対象の最適化問題を変換したイジングモデルの全スピンに対応する複数のビットのそれぞれの値の組み合わせのうち、エネルギー関数が最小値となるときの各ビットの値(イジングモデルの基底状態)を探索するものである。
イジング型のエネルギー関数E(x)は、たとえば、以下の式(1)で定義される。
Figure 0007100257000001
右辺の1項目は、イジングモデルの全ビットの全組み合わせについて、漏れと重複なく、2つのビットの値(0または1)と重み係数との積を積算したものである。xは、識別情報(以下インデックスという)がiのビットの値を表す変数(状態変数とも呼ばれる)、xは、インデックス=jのビットの値を表す変数であり、Wijは、インデックス=i,jのビットの相互作用の大きさを示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(つまり、重み係数による係数行列は対称行列である場合が多い)。また重み係数Wijは、所定のビット幅(たとえば、16ビット、32ビット、64ビット、128ビットなど)をもつ。
右辺の2項目は、全ビットのそれぞれのバイアス係数とビットの値を表す変数との積の総和を求めたものである。bは、インデックスがiのビットのバイアス係数を示している。
また、変数xが変化して1-xとなると、変数xの増加分は、Δx=(1-x)-x=1-2xと表せる。スピン反転(ビットの値の変化)に伴うエネルギー変化ΔEは、以下の式(2)で表される。
Figure 0007100257000002
式(2)において、変数xが1から0に変化するとき、Δxは-1となり、変数xが0から1に変化するとき、Δxは1となる。なお、hはローカルフィールド(局所場)と呼ばれ、Δxに応じてローカルフィールドhに符号(+1または-1)を乗じたものがエネルギー変化ΔEである。
また、変数xが0から1に変化したときのローカルフィールドhの変化分Δhは、+Wij、変数xが1から0に変化したときの変化分Δhは、-Wijと表せる。したがって、ローカルフィールドhは行列演算により毎回計算しなおす必要はなく、状態遷移にともなって変化のあったビットによる変化分だけWijを加減算すればよい。
(第1の実施の形態)
図1は、第1の実施の形態の最適化装置の一例を示す図である。
第1の実施の形態の最適化装置10は、イジングモデルの基底状態の探索を行う、環状に接続された4段の演算処理部11,12,13,14を有する。なお、演算処理部の段数は4段に限定されず、M段(Mは2以上の整数)であればよい。演算処理部11~14の各々は、たとえば、1チップの半導体集積回路(ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)など)である。なお、演算処理部11~14は、たとえば、1チップの半導体集積回路内に設けられていてもよい。
最適化装置10では、イジングモデルの状態を更新する処理が多数回数繰り返されるため、演算処理部11~14の間では高速に情報の送受信が行われることが望ましい。そのため、演算処理部11~14の間は、演算処理部11~14にイジングモデルの情報などを設定するために使用されるバスよりも高速通信が可能な専用バスで接続されていることが望ましい。ただ、専用バスの物理的な制約がある。たとえば、専用バスの通信速度が100Gbpsである場合、演算処理部11~14が200MHzのクロック周波数で動作するとき、500bit/cycleが、専用バスのデータ転送速度の上限となる。たとえば、1024個のビットの各々のインデックス(10ビット)と更新を許容するか否かの判定結果(1ビット)の総情報量は、11264ビットとなるため、上記専用バスでは、1クロックサイクルでの送受信を行えない。そのため、演算処理部11~14の各々は、1つの更新候補ビットを選択し、その情報を、専用バスを用いて送受信する。
1段目の演算処理部11は、状態更新部11a、判定部11b、選択部11c、計数部11dを有する。2段目の演算処理部12は、状態更新部12a、判定部12b、選択部12c、計数部12d、選択部12eを有する。3段目の演算処理部13も、2段目の演算処理部12と同様に、状態更新部13a、判定部13b、選択部13c、計数部13d、選択部13eを有する。4段目の演算処理部14も、2段目及び3段目の演算処理部12,13と同様に、状態更新部14a、判定部14b、選択部14c、計数部14d、選択部14eを有する。
状態更新部11a~14aは、後述するように、4段目の演算処理部14が1段目の演算処理部11に供給する、インデックスに基づいて、複数のビットの何れかの値を更新する。状態更新部11a~14aの各々は、イジングモデルの全てのスピンに対応した複数のビットを保持している。
判定部11b~14bの各々は、イジングモデルの情報に基づいて、イジングモデルの全スピンに対応する複数のビットのビット数を演算処理部11~14の段数である4で割った数のビットの各々について更新を許容するか否かを判定する。イジングモデルの情報は、前述の重み係数を含む。
たとえば、全スピンに対応する複数のビットのビット数が、4096の場合、判定部11bは、インデックスが0~1023のビットの各々について更新を許容するか否かを判定する。また、判定部12bは、インデックスが1024~2047のビットの各々について更新を許容するか否かを判定し、判定部13bは、インデックスが2048~3071のビットの各々について更新を許容するか否かを判定する。また、判定部14bは、インデックスが3072~4095のビットの各々について更新を許容するか否かを判定する。判定部11b~14bの各々は、1024ビットの各々についての更新を許容するか否かの判定結果(以下フラグという)をインデックスとともに出力する。以下では、フラグが1である場合は、そのビットについての更新を許容することを示し、フラグが0である場合は、そのビットについての更新を許容しないことを示す。
判定部11b~14bの各々は、たとえば、以下のように、各ビットの更新を許容するか否かを判定する。判定部11b~14bの各々は、自身が属す演算処理部が処理を担当する1024ビットに関する重み係数群を保持する記憶部(たとえば、レジスタまたはSRAM(Static Random Access Memory)など)を有する。たとえば、判定部11bの記憶部は、インデックスが0~1023のビットの各々と、他の全てのビットとの間の相互作用の大きさを示す重み係数群を保持している。そして、判定部11b~14bの各々は、その重み係数群と、値が更新されたビットの情報(インデックスと更新後の値)に基づいて、1024ビットの各々の値が変化することによるイジングモデルのエネルギー変化を計算する。そして、判定部11b~14bの各々は、計算したエネルギー変化と、熱励起エネルギー(熱雑音)との大小関係に基づいて、1024ビットの各々の更新を許容するか否かを判定する。熱励起エネルギーは、乱数と、図示しない制御部から供給される温度パラメータとから決定される。シミュレーテッド・アニーリングが行われる場合、温度パラメータは、たとえば、制御部によって、イジングモデルの状態を更新する処理が、所定回数繰り返されるごとに、値が小さくなるように制御される。なお、上記のような判定処理を行う回路の例については、後述する。
選択部11c~14cの各々は、上記のフラグに基づいて、更新を許容するビット(以下更新許容ビットという)のうちから1つの更新候補ビットを選択し、更新候補ビットのインデックスを出力する。たとえば、選択部11cは、インデックスが0~1023のビットのうち、フラグが1である更新許容ビットが複数ある場合に、それらの中から、乱数を用いて1つの更新候補ビットを選択してそのインデックスを出力する。なお、インデックスが0~1023のビットのフラグが全て0である場合も、1つの更新候補ビットが選択される。
選択部11c~14cの各々は、更新候補ビットのインデックスのほか、更新候補ビットのフラグも出力する。
計数部11d~14dの各々は、自身が属す演算処理部における更新許容ビット数を計数する。たとえば、計数部11dは、インデックスが0~1023のビットのうち、フラグが1である更新許容ビット数を計数する。
選択部12e~14eの各々は、自身が属す演算処理部の選択部(12c~14cの何れか)が出力する更新候補ビットのインデックスと、前段の演算処理部から供給される更新候補ビットのインデックスの何れか一方を、以下のように選択する。
選択部12e~14eの各々は、自身が属す演算処理部において計数された更新許容ビット数の計数結果と、前段までの演算処理部において計数された更新許容ビット数の積算値とを受ける。そして、選択部12e~14eの各々は、上記計数結果を、積算値と計数結果との和により割った確率で、自身が属す演算処理部の選択部が出力するインデックスを選択する。選択部12e~13eの各々は、選択したインデックスを後段の演算処理部に供給する。また、選択部12e~13eの各々は、前段の演算処理部から供給される上記積算値に、上記計数結果を加えることで積算値を更新し、後段の演算処理部に供給する。最後段の演算処理部14に属す選択部14eは、選択したインデックスを1段目の演算処理部11に供給する。なお、選択されたインデックスで識別される更新候補ビットのフラグについても、インデックスとともに、後段の演算処理部または1段目の演算処理部11に供給される。
図1に示すように、たとえば、選択部12eはデータ選択回路12e1を有する。データ選択回路12e1は、選択信号sel1が1の場合、演算処理部12の選択部12cが出力する更新候補ビットのインデックスを選択し、選択信号sel1が0の場合、演算処理部11から供給される更新候補ビットのインデックスを選択する。選択信号sel1は、上記の確率で1になるように生成される。選択部12eは、選択信号sel1を生成する選択信号生成回路を有しているが、図1では図示が省略されている。選択部13eもデータ選択回路13e1を有し、データ選択回路12e1と同様の動作を行う。選択部14eもデータ選択回路14e1を有し、データ選択回路12e1と同様の動作を行う。
以下、第1の実施の形態の最適化装置10の動作例を説明する。
図示しない制御部により、状態更新部11a~14aに、各ビットの初期値が設定され、判定部11b~14bに重み係数群が設定された後、判定部11b~14bは、たとえば、前述の処理により各ビットについて更新を許容するか否かを判定する。そして、判定部11b~14bは、その判定結果であるフラグを出力する。選択部11c~14cの各々は、フラグに基づいて、更新許容ビットのうちから1つの更新候補ビットを選択し、更新候補ビットのインデックスを出力する。
図1の例では、演算処理部11の選択部11cはインデックス=1020を出力し、演算処理部12の選択部12cはインデックス=2046を出力している。演算処理部13の選択部13cはインデックス=2054を出力し、演算処理部14の選択部14cはインデックス=3078を出力している。なお、選択部11c~14cの各々は、さらに、選択した更新候補ビットのフラグとして1を出力している。
計数部11d~14dの各々は、自身が属す演算処理部における更新許容ビット数を計数する。図1の例では、計数部11dは更新許容ビット数として790を出力し、計数部12dは更新許容ビット数として30を出力し、計数部13dは更新許容ビット数として200を出力し、計数部14dは更新許容ビット数として1を出力している。
1段目の演算処理部11は、選択した更新候補ビットのインデックス及びフラグと更新許容ビット数を、2段目の演算処理部12に供給する。
2段目の演算処理部12の選択部12eは、選択部12cが出力したインデックスと、演算処理部11から供給されるインデックスの一方を、以下のように選択する。選択部12eは、演算処理部12において計数された更新許容ビット数の計数結果と、前段までの演算処理部において計数された更新許容ビット数の積算値(演算処理部11から供給される更新許容ビット数)を受ける。そして、選択部12eは、上記計数結果を、演算処理部11から供給される更新許容ビット数と上記計数結果との和により割った確率で選択部12cが出力したインデックスを選択する。選択部12eは、選択したインデックスとフラグ及び、演算処理部11から供給される更新許容ビット数に上記計数結果を加えた積算値を演算処理部13に供給する。
図1の例では、選択部12eには、演算処理部11から更新許容ビット数として790が供給され、計数部12dが計数した更新許容ビット数として30が供給される。そのため選択部12eは、30/820の確率で、選択信号sel1を1として、選択部12cが出力したインデックス(図1の例では、2046)を選択する。図1の例の選択部12eでは、選択部12cが出力したインデックスよりも、演算処理部11から供給されるインデックス(図1の例では、1020)が選択される確率が高くなる。
3段目の演算処理部13の選択部13eは、選択部13cが出力したインデックスと、演算処理部12から供給されるインデックスの一方を、以下のように選択する。選択部13eは、演算処理部13において計数された更新許容ビット数の計数結果と、前段までの演算処理部において計数された更新許容ビット数の積算値(演算処理部11,12における更新許容ビット数の和)を受ける。そして、選択部13eは、上記計数結果を、演算処理部12から供給される積算値と上記計数結果との和により割った確率で選択部13cが出力したインデックスを選択する。選択部13eは、選択したインデックスとフラグ及び、演算処理部12から供給される上記積算値を、上記計数結果を加えることで更新して、演算処理部14に供給する。
図1の例では、選択部13eには、演算処理部12から更新許容ビット数の積算値として820が供給され、計数部13dが計数した更新許容ビット数として200が供給される。そのため選択部13eは、200/1020の確率で、選択信号sel2を1として、選択部13cが出力したインデックス(図1の例では、2054)を選択する。図1の例の選択部13eでは、選択部13cが出力したインデックスよりも、演算処理部12から供給されるインデックスが選択される確率が高くなる。
4段目の演算処理部14の選択部14eは、選択部14cが出力したインデックスと、演算処理部13から供給されるインデックスの一方を、以下のように選択する。選択部14eは、演算処理部14において計数された更新許容ビット数の計数結果と、前段までの演算処理部において計数された更新許容ビット数の積算値(演算処理部11,12,13における更新許容ビット数の積算値)を受ける。そして、選択部14eは、上記計数結果を、演算処理部13から供給される積算値と上記計数結果との和により割った確率で選択部14cが出力したインデックスを選択する。選択部14eは、選択したインデックスとフラグを、1段目の演算処理部11に供給する。
図1の例では、選択部14eには、演算処理部13から更新許容ビット数の積算値として1020が供給され、計数部14dが計数した更新許容ビット数として1が供給される。そのため選択部14eは、1/1021の確率で、選択信号sel3を1として、選択部14cが出力したインデックス(図1の例では、3078)を選択する。図1の例の選択部14eでは、選択部14cが出力したインデックスよりも、演算処理部13から供給されるインデックスが選択される確率が高くなる。また、図1の例では、演算処理部11にて選択された更新候補ビットのインデックスである1020が、演算処理部12の選択部12e、演算処理部13の選択部13e、演算処理部14の選択部14eにて選択され、演算処理部11に供給される例が示されている。この場合、インデックスが1020の更新候補ビットが、更新対象ビットとなる。
演算処理部11の状態更新部11aは、演算処理部14から供給されるフラグが1の場合、保持している複数のビットの値のうち、演算処理部14から供給されるインデックスに対応するビットの値を更新(反転)させる。
演算処理部14から演算処理部11に供給されるインデックスとフラグは、状態更新部11aから演算処理部12に供給され、さらに、演算処理部12から演算処理部13に供給され、演算処理部13から演算処理部14に供給される。そして、状態更新部12a,13a,14aでは、状態更新部11aと同様の処理が行われる。
上記のような処理が、図示しない制御部による制御のもと、所定回数繰り返され、たとえば、所定回数繰り返された後に状態更新部11a~14aに保持されている各ビットの値が解として出力される。なお、各段の演算処理部11~14は、選択した更新候補ビットのインデックスやフラグとともに、その更新候補ビットに対応するエネルギー変化(判定部11bから14b)についても後段(演算処理部14の場合は1段目)の演算処理部に供給してもよい。そして、状態更新部11a~14aは、演算処理部14から演算処理部11に供給されるエネルギー変化に基づいて、イジングモデルのエネルギーを更新してもよい。また、状態更新部11a~14aは、更新したエネルギーが、これまでに得られた値よりも小さければ最小エネルギーとして保持しておき、そのときの各ビットの値(イジングモデルの状態)を保持しておいてもよい。その場合、イジングモデルの状態の更新処理が所定回数繰り返されたときに保持されている最小エネルギーが得られたときの各ビットの値が解として出力される。
以下、第1の実施の形態の最適化装置10の効果を説明する前に、最適化装置10に対する比較例を説明する。
図2は、第1の実施の形態の最適化装置に対する比較例の最適化装置を示す図である。図2において、図1に示した最適化装置10と同じ要素については同一符号が付されている。
比較例の最適化装置20では、演算処理部21,22,23,24のうち、演算処理部22~24に含まれる選択部22a,23a,24aは、1/2の確率で自身が属す演算処理部の選択部(12c~14cの何れか)が出力するインデックスを選択する。つまり、選択部22aのデータ選択回路12e1に供給される選択信号sel1と、選択部23aのデータ選択回路13e1に供給される選択信号sel2と、選択部24aのデータ選択回路14e1に供給される選択信号sel3は1/2の確率で1となる。
このため、より後段の演算処理部において選択される更新候補ビットのインデックスが優先されてしまい、更新対象ビットの選択確率の偏りが発生し、適切に更新ビットを選択できなくなる。たとえば、図2の例では、インデックスが3072~4095のビットが更新対象ビットとして選択される確率が他のビットよりも高くなる。このような選択確率の偏りによって、解の計算精度が悪化する可能性がある。
これに対して、第1の実施の形態の最適化装置10では、演算処理部22~24の各々は前段の演算処理部から送られる更新許容ビットの積算値を用いて、上記のような確率で更新候補ビットを選択することで、更新対象ビットの選択確率の偏りを解消できる。
以下、図1の例を用いて選択確率の算出例を説明する。なお、選択部11c~14cの各々は、1024のビットのうちフラグが1のビットが複数ある場合に、それらの中から1つのビットを均等な確率で選択するものとする。
たとえば、図1の例では、4段目の演算処理部14の選択部14eがインデックスとして0~1023の何れかを出力する確率は、(1/790)×(790/820)×(820/1020)×(1020/1021)=1/1021となる。選択部14eがインデックスとして1024~2047の何れかを出力する確率は、(1/30)×(30/820)×(820/1020)×(1020/1021)=1/1021となる。選択部14eがインデックスとして2048~3071の何れかを出力する確率は、(1/200)×(200/1020)×(1020/1021)=1/1021となる。選択部14eがインデックスとして3072~4095の何れかを出力する確率は、1×(1/1021)=1/1021となる。
つまり、上記の例では、各更新許容ビットが更新対象ビットとなる確率を、1/1021とすることができ、全更新許容ビットから均等な確率で更新対象ビットを選択することができる。
以上のように、第1の実施の形態の最適化装置10では、更新対象ビットの選択確率の偏りを生じさせることなく、環状に接続した複数の演算処理部を用いた大規模化が可能となる。
また、演算処理部11~14が環状に接続され、演算処理部11~14の各々では、1つの更新候補ビット(または更新対象ビット)が選択され、その情報が演算処理部の間で送受信される。このため、演算処理部11~14の間のバスのインタフェース数やデータ転送量を増加させることなく、演算処理部の数を増加させることができる。
(第2の実施の形態)
図3は、第2の実施の形態の最適化装置の一例を示す図である。
第2の実施の形態の最適化装置30は、制御装置31、記憶装置32、M段のコア33a1,33a2,…,33aM、共有バス34、専用バス35a1,35a2,…,35aMを有する。
制御装置31は、コア33a1~33aMの制御を行う。制御装置31は、たとえば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)など、プログラムの命令を実行する演算回路を含むプロセッサである。制御装置31は、たとえば、記憶装置32に記憶されたプログラムを実行する。なお、制御装置31は、複数のプロセッサまたは複数のプロセッサコアを備えてもよく、コア33a1~33aMの制御を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。
記憶装置32は、イジングモデルの情報などを記憶する。なお、記憶装置32は、制御装置31が実行するプログラムを記憶してもよい。記憶装置32は、たとえば、SDRAM(Synchronous Dynamic Random Access Memory)などの揮発性の記憶装置、または、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)やHDD(Hard Disk Drive)などの不揮発性の記憶装置、またはこれらの組み合わせであってもよい。
コア33a1~33aMの各々は、第1の実施の形態の最適化装置10の演算処理部11~14の何れかと同様の機能を有している。コア33a1~33aMの各々は、たとえば、1チップの半導体集積回路である。コア33a1~33aMの内部構成例については後述する。
共有バス34は、コア33a1~33aMと制御装置31とを接続するバスである。共有バス34は、制御装置31がコア33a1~33aMを制御するための制御信号、イジングモデルの情報、コア33a1~33aMによる探索結果などの通信に用いられる。共有バス34として、たとえば、PCI(Peripheral Component Interconnect)-Expressなどが用いられる。
専用バス35a1~35aMは、コア33a1~33aMの間を環状に接続するバスである。たとえば、専用バス35a1は、コア33a1の出力端子と、コア33a2の入力端子とを接続するバスであり、専用バス35aMは、コア33aMの出力端子と、コア33a1の入力端子とを接続するバスである。専用バス35a1~35aMは、更新候補ビットのインデックスやフラグなどの情報をコア33a1~33aMの間で送受信するために用いられる。専用バス35a1~35aMは、たとえば、メタルケーブルまたは光ケーブルである。光ケーブルとして、たとえば、通信速度が100Gbpsの、QSFP(Quad Small Form-Factor Pluggable)ケーブルなどを用いることができる。コア33a1~33aMの間が、専用バス35a1~35aMにより、point-to-point接続されているため、高いデータ転送帯域が確保できる。
図4は、コアの内部構成例を示す図である。図4では、コア33a2の内部構成の例が示されているが、他のコアも同様である。
コア33a2は、制御部40、入力処理部41、状態更新部42、判定部43、計数部44、選択部45,46、出力処理部47を有する。
制御部40は、イジングモデルの状態の更新処理を開始する前に、制御装置31から各種の情報を受信する。制御部40が制御装置31から受信する情報として、たとえば、イジングモデルの情報、各ビットの初期値、後述するオフセット値の増分値、シミュレーテッド・アニーリングを行うための温度スケジュール情報、更新処理の繰り返し回数がある。さらに、制御部40が制御装置31から受信する情報として、コア種別を判断するための情報(コア33a2が何段目のコアなのか判定するための情報)である、コア数(=M)と値mがある。たとえば、コア33a1は、m=0、コア33aMは、m=M-1と表される。コア33a2に含まれる制御部40には、制御装置31からm=1と、Mが送信される。
そして、制御部40は、イジングモデルの情報を判定部43に設定するとともに、温度スケジュール情報に基づいた温度パラメータを判定部43に設定し、各ビットの初期値を状態更新部42に保持させる。また、制御部40は、オフセット値の初期値(=0)と、オフセット値の増分値を状態更新部42に設定する。
その後、制御部40は、たとえば、コア33a2の各部にクロック信号を供給して、イジングモデルの状態の更新処理を開始する。また、制御部40は、更新処理の回数を計数し、更新処理の回数が所定回数に達するたびに、温度スケジュール情報に基づいて、判定部43に設定する温度パラメータの値を小さくしていく。さらに、制御部40は、更新処理の回数が、制御装置31から受信した繰り返し回数に達した場合、更新処理の終了通知を制御装置31に対して送信する。
また、制御部40は、制御装置31から探索結果の出力要求を受信した場合、更新処理の回数が、上記繰り返し回数に達したときの最小エネルギーと、そのときの各ビットの値を、状態更新部42から取得して、制御装置31に送信する。なお、制御装置31は、更新処理の回数が、上記繰り返し回数に達したときのエネルギーと、そのときの各ビットの値を、状態更新部42から取得して、制御装置31に送信してもよい。
また、制御部40は、イジングモデルの状態の更新処理を開始する前に、制御装置31から、以前の上記繰り返し回数の更新処理の終了時に得られたエネルギーと各ビットの値及び最小エネルギーと最小エネルギーが得られたときの各ビットの値を受信してもよい。そして、制御部40は、受信したエネルギーと各ビットの値及び、最小エネルギーと最小エネルギーが得られたときの各ビットの値を、状態更新部42に設定してから今回の更新処理を開始してもよい。
制御部40は、たとえば、ASICやFPGAなどの特定用途の電子回路にて実現できる。なお、制御部40は、CPUやDSPなどのプロセッサであってもよい。その場合、プロセッサは、メモリに記憶されたプログラムを実行することで、上記のような制御部40の処理を行う。
入力処理部41は、前段のコア33a1から更新対象ビット情報と、更新候補ビット情報を受信する。そして、入力処理部41は、受信した更新対象ビット情報を状態更新部42に供給し、受信した更新候補ビット情報を選択部46に供給する。
更新対象ビット情報には、更新対象ビットのインデックス、フラグ、その更新対象ビットの値を反転させたときのエネルギー変化が含まれる。更新候補ビット情報には、更新候補ビットのインデックス、フラグ、その更新候補ビットの値を反転させたときのエネルギー変化のほかに、前段までのコアにおける更新許容ビット数の積算値が含まれる。入力処理部41が受信する更新候補ビット情報の上記積算値は、コア33a1における更新許容ビット数に相当する。
なお、図示を省略しているが、1段目のコア33a1に含まれる入力処理部には、コア33aMから更新候補ビット情報は供給されず、更新対象ビット情報が供給される。
状態更新部42は、現在の各ビットの値、現在のエネルギー、最小エネルギー、最小エネルギーが得られたときの各ビットの値、現在のオフセット値、オフセット値の増分値を保持する。そして、状態更新部42は、入力処理部41から供給される更新対象ビット情報に基づいて、現在の各ビットの値、現在のエネルギーを更新する。また、状態更新部42は、更新された現在のエネルギーが最小エネルギーよりも小さい場合には、最小エネルギーと最小エネルギーが得られたときの各ビットの値を更新する。また、状態更新部42は、更新対象ビット情報に含まれるフラグが0の場合には、現在のオフセット値に増分値を加算して、判定部43に供給する。また、状態更新部42は、更新対象ビット情報を、出力処理部47に供給する。
判定部43は、イジングモデルの情報に基づいて、イジングモデルの全スピンに対応する複数のビットのビット数をコア33a1~33aMの段数であるMで割った数のビットの各々について更新を許容するか否かを判定し、その判定結果を示すフラグを出力する。たとえば、M=4、全ビット数が4096である場合、2段目のコア33a2に含まれる判定部43は、インデックスが1024~2047のビットについて更新を許容するか否かを判定する。判定部43の回路例については後述する。
計数部44は、判定部43によって判定された更新許容ビットの数(更新許容ビット数)を計数する。
選択部45は、上記のフラグと更新許容ビット数に基づいて、乱数を用いて、更新許容ビットのうちから1つの更新候補ビットを選択し、更新候補ビットのインデックスとフラグを出力する。選択部45の回路例については後述する。
選択部46は、入力処理部41から供給される更新候補ビット情報と、自身が属すコア33a2において計数された更新許容ビット数の計数結果とに基づいて、積算値を更新する。更新候補ビット情報に含まれる積算値をC[m-1]、計数部44が出力する計数結果をU[m]とした場合、更新された積算値C[m]は、C[m]=C[m-1]+U[m]と表せる。そして、選択部46は、U[m]/C[m]の確率で、選択部45が出力するインデックスを選択する。また、選択部46は、1-U[m]/C[m]の確率で、更新候補ビット情報に含まれる更新候補ビットのインデックスを選択する。
選択部46は、選択したインデックスとそれに対応するフラグ及び更新した積算値を含む更新候補ビット情報を出力処理部47に供給する。選択部46の回路例については後述する。
なお、図示を省略しているが、1段目のコア33a1も選択部46に対応する選択部を有していてもよいが、その選択部は、1/1の確率で、コア33a1において選択された更新候補ビットのインデックスを選択する。
出力処理部47は、状態更新部42から供給される更新対象ビット情報を、後段のコア(図示が省略されている)に送信し、その後、選択部46から供給される更新候補ビット情報を、後段のコアに送信する。
なお、図示を省略しているが、M段目のコア33aMに含まれる出力処理部は、コア33aMにおいて選択部46に対応する選択部が出力する更新候補ビット情報のうち、積算値を除いた情報を、新たな更新対象ビット情報として1段目のコア33a1に送信する。
(判定部43の回路例)
図5は、判定部の回路例を示す図である。図5には、判定部43において、インデックス=iのビットに関して更新を許容するか否かを判定する回路部が示されている。他のビットに関しても同様の回路部が設けられる。M=4、全ビット数Nが4096である場合、2段目のコア33a2に含まれる判定部43において、iは、1024~2047の何れかの値である。
判定部43は、レジスタ43a、選択回路43b、ΔE計算回路43c、更新判定回路43dを有する。
レジスタ43aは、インデックス=iのビットと、インデックス=0~N-1のビットとの相互作用の大きさを表す重み係数Wi0,Wi2,…,Wi(N-1)を保持する。
選択回路43bは、状態更新部42から更新対象ビットのインデックス=j(0~N-1の何れかの値)を受け、重み係数Wi0~Wi(N-1)から、更新対象ビットとインデックス=iのビットとの間の相互作用の大きさを表す重み係数Wijを選択して出力する。
ΔE計算回路43cは、選択回路50、乗算器51、加算器52、レジスタ53、乗算器54、選択回路55を有する。
選択回路50は、更新対象ビットの値の変化分の演算を実現するものである。インデックス=jのビットの値(変数x)が、1から0に変化するとき、変化分Δxは-1となり、変数xが0から1に変化するとき、Δxは1となる。選択回路50は、状態更新部42から供給される変数xの更新後の値が0のときには、-1を選択して出力し、変数xの更新後の値が1のときには、1を選択して出力する。
乗算器51は、選択回路43bが出力する重み係数と、選択回路50が出力する値との積を出力する。図5の例では、乗算器51には、重み係数Wijが入力されている。乗算器51の出力は、変数xが変化したことによるローカルフィールドhの変化分Δhを表す。
加算器52は、乗算器51が出力する値と、レジスタ53に格納されている値とを加算して出力する。
レジスタ53は、図示しないクロック信号に同期して、加算器52が出力する値(ローカルフィールドh)を取り込む。レジスタ53は、たとえば、フリップフロップである。なお、レジスタ53に格納されるローカルフィールドhの初期値は、たとえば、全変数xの初期値を0とした場合、バイアス係数bである。
乗算器54は、レジスタ53が出力するローカルフィールドhと選択回路55が出力する値との積を出力する。この積が、式(2)に示した、インデックス=iのビットの値が変化することによるエネルギー変化ΔEである。
選択回路55は、式(2)の-Δxの演算を実現するものである。選択回路55は、状態更新部42から供給される現在のインデックス=iのビットの値を示す変数xが0のときは、-1を出力し、変数xが1のときは1を出力する。
更新判定回路43dは、符号反転部60、加算器61、乱数発生回路62、選択法則適用部63、乗算器64、比較回路65、レジスタ66を有する。
符号反転部60は、ΔE計算回路43cが出力するエネルギー変化ΔEに-1を掛けて符号を反転させる。
加算器61は、符号反転部60の出力値に、状態更新部42から供給されるオフセット値offを加える。前述のように、更新対象ビット情報に含まれるフラグが0の場合(ビットの更新が生じない場合)、状態更新部42がオフセット値offを大きくすることで、ビットの更新が許容されやすくなり、現在の状態が局所解にある場合、その局所解からの脱出が促進される。
乱数発生回路62は、0以上、1以下の一様乱数rを発生する。乱数発生回路62は、LFSR(Linear Feedback Shift Register)や、メルセンヌ・ツイスタなどにより実現される。
選択法則適用部63は、シミュレーテッド・アニーリングを行うための選択法則(メトロポリス法またはギブス法)に基づいた値を出力する。
シミュレーテッド・アニーリングが行われる場合、あるエネルギー変化ΔEを引き起こす状態遷移の許容確率A(ΔE,T)を以下の式(3),(4)のように決めれば、時刻(反復回数)無限大の極限で状態が最適解に到達することが証明されている。
Figure 0007100257000003
Figure 0007100257000004
式(3),(4)においてTは、前述の温度パラメータである。
式(3)で表される許容確率A(ΔE,T)を用いた場合、十分な反復後に定常状態に達したとすると、各状態の占有確率は熱力学における熱平衡状態に対するボルツマン分布にしたがう。そして、高い温度から徐々に下げていくとエネルギーの低い状態の占有確率が増加するため、十分温度が下がるとエネルギーの低い状態が得られるはずである。この様子が材料を焼き鈍したときの状態変化とよく似ているため、この方法はシミュレーテッド・アニーリングと呼ばれるのである。このとき、エネルギーが上がる状態遷移が確率的に起こることは、物理学における熱励起に相当する。
許容確率A(ΔE,T)でエネルギー変化ΔEを引き起こす状態遷移を許容することを示すフラグ(=1)を出力する回路は、式(3),(4)のf(-ΔE/T)と、一様乱数rとの比較結果に基づいた値を出力する比較器によって実現できる。
ただ、次のような変形を行っても同じ機能が実現できる。2つの数に同じ単調増加関数を作用させても大小関係は変化しない。したがって比較器の2つの入力に同じ単調増加関数を作用させても比較器の出力は変わらない。たとえば、f(-ΔE/T)に作用させる単調増加関数としてf(-ΔE/T)の逆関数f-1(-ΔE/T)、一様乱数rに作用させる単調増加関数としてf-1(-ΔE/T)の-ΔE/Tをrとしたf-1(r)を用いることができる。その場合、上記の比較器と同様の機能を有する回路は、-ΔE/Tがf-1(r)より大きいとき1を出力する回路でよいことがわかる。さらに温度パラメータTが正であることから、その回路は、-ΔEがT・f-1(r)より大きいとき1を出力する回路でよい。
図5の選択法則適用部63は、入力される一様乱数rを上記のf-1(r)の値に変換する変換テーブルを用いて、f-1(r)の値を出力する。メトロポリス法が適用される場合、f-1(r)は、log(r)である。変換テーブルは、たとえば、RAM(Random Access Memory)、フラッシュメモリなどのメモリに記憶されている。
乗算器64は、制御部40から供給される温度パラメータTと、f-1(r)との積(T・f-1(r))を出力する。T・f-1(r)は、熱励起エネルギーに相当する。
比較回路65は、加算器61による加算結果と、T・f-1(r)とを比較し、加算結果がT・f-1(r)より大きい場合、フラグとして1(更新を許容することを示す値)を出力する。また、比較回路65は、加算結果がT・f-1(r)以下の場合、フラグとして0(更新を許容しないことを示す値)を出力する。
レジスタ66は、インデックス=iを保持している。
エネルギー変化ΔE、インデックス=i及びフラグが、インデックス=iのビットの更新を許容するか否かの情報として、図4の選択部45に供給される。
(選択部45の回路例)
図6は、コア内の更新候補ビットを選択する選択部の一例を示す図である。
選択部45は、乱数発生回路45a、選択信号生成回路45b、データ選択回路45cを有する。
乱数発生回路45aは、たとえば、0~65535の16ビットの一様乱数rnd1を生成する。乱数発生回路45aは、LFSRや、メルセンヌ・ツイスタなどにより実現される。
選択信号生成回路45bは、計数部44から供給される更新許容ビット数U[m]と、一様乱数rnd1とに基づいて、選択信号SEL1を生成する。
一様乱数rnd1が、0~65535の値である場合、選択信号生成回路45bは、U[m]≧2のとき、(U[m]×rnd1)>>16の値を、選択信号SEL1として出力する。なお、“>>16”は、16ビット右シフトを表し、(U[m]×rnd1)>>16は、U[m]×rnd1/65536を演算することと同じである(小数点以下は切り捨てる)。U[m]<2のとき、選択信号生成回路45bは、選択信号SEL1として0を出力する。
データ選択回路45cには、判定部43から、各ビットのインデックス、フラグ、エネルギー変化が供給される。そして、データ選択回路45cは、判定部43が出力する各ビットのフラグのうち、値が1であるフラグ(つまり更新許容ビットのフラグ)を全て選択する。その後、データ選択回路45cは、更新許容ビットのインデックスの小さいほうから数えて、SEL1(選択信号SEL1の値)番目のインデックスの更新許容ビットの情報(インデックス、フラグ、エネルギー変化)を出力する。
また、データ選択回路45cは、判定部43が出力する各ビットのフラグが全て0である場合、コア33a2内で、最も小さいインデックスのビットのインデックス、フラグ、エネルギー変化を出力する。
このような選択部45では、更新許容ビットの計数結果と乱数に基づいて選択を行うことで、コア33a2内における全更新許容ビットの中から比較的均一の割合で、1つの更新候補ビットを選択できる。
(選択部46の回路例)
図7は、自コアの更新候補ビットと前段コアの更新候補ビットの一方のインデックスを選択する選択部の一例を示す図である。
選択部46は、乱数発生回路46a、加算器46b、選択信号生成回路46c、データ選択回路46d、付加回路46eを有する。
乱数発生回路46aは、たとえば、0~65535の16ビットの一様乱数rnd2を生成する。乱数発生回路46aは、LFSRや、メルセンヌ・ツイスタなどにより実現される。
加算器46bは、入力処理部41から供給される更新候補ビット情報に含まれる積算値C[m-1]に、更新許容ビット数U[m]を加算することで更新した積算値C[m]を出力する。
選択信号生成回路46cは、更新許容ビット数U[m]と、積算値C[m]と、一様乱数rnd2とに基づいて選択信号SEL2を生成する。
一様乱数rnd2が、0~65535の値である場合、選択信号生成回路46cは、C[m]が0より大きいとき、rnd2<65536×U[m]/C[m]ならば、選択信号SEL2として1を出力する。選択信号生成回路46cは、rnd2<65536×U[m]/C[m]を満たさない場合には、選択信号SEL2として0を出力する。
また、選択信号生成回路46cは、C[m]=0の場合は、選択信号SEL2として1を出力する。
データ選択回路46dは、選択信号SEL2が1の場合、選択部45が出力する情報を選択して出力する。データ選択回路46dは、選択信号SL2が0の場合、入力処理部41から供給される更新候補ビット情報のうち積算値C[m-1]を除いたものを、選択して出力する。
付加回路46eは、データ選択回路46dが出力する情報に積算値C[m]を付加した更新候補ビット情報を出力する。
以下、最適化装置30の動作例を説明する。
まず、図3に示した制御装置31は、共有バス34を介して、コア33a1~33aMを起動し、イジングモデルの情報などの各種情報をコア33a1~33aMに送信する。
コア33a1~33aMは、各種情報を制御装置31から受信し、受信した各種情報に基づいて、たとえば、前述の処理によって、各ビットについて更新を許容するか否かを判定する。たとえば、M=4、全ビット数が4096である場合、2段目のコア33a2に含まれる判定部43は、インデックスが1024~2047のビットについて更新を許容するか否かを判定する。
その後、コア33a1~33aMは、更新を許容するか否かの判定結果を示すフラグと、更新許容ビット数に基づいて、乱数を用いて、更新許容ビットのうちから1つの更新候補ビットを選択する。
1段目のコア33a1は、選択した更新候補ビットのインデックス、フラグ、エネルギー変化及び更新許容ビット数を含む更新候補ビット情報をコア33a2に、専用バス35a1を介して送信する。2段目以降のコア33a2~33aMは、前段のコアが送信した更新候補ビット情報と、自身のコアで計数された更新許容ビット数U[m]に基づいて、更新許容ビット数の積算値C[m]を更新する。そして、コア33a2~33aMは、U[m]/C[m]の確率で、自身のコアで選択された更新候補ビットのインデックスを選択し、1-U[m]/C[m]の確率で、更新候補ビット情報に含まれる更新候補ビットのインデックスを選択する。
その後、コア33a2~33aMのコア33aM以外は、選択した更新候補ビットのインデックス、フラグ、エネルギー変化及び更新した積算値を含む更新候補ビット情報を、後段のコアに送信する。コア33aMは、選択した更新候補ビットのインデックス、フラグ及びエネルギー変化を含む更新対象ビット情報を、1段目のコア33a1に送信する。
コア33a1は、更新対象ビット情報に基づいて、現在の各ビットの値、現在のエネルギーを更新する。また、コア33a1は、更新された現在のエネルギーが最小エネルギーよりも小さい場合には、最小エネルギーと最小エネルギーが得られたときの各ビットの値を更新する。更新対象ビット情報は、コア33a2~33aMにも前段のコアから供給され、同様の更新が行われる。
また、コア33a1~33aMは、更新対象ビット情報に含まれるフラグが0の場合には、現在のオフセット値に増分値を加算する。
コア33a1~33aMは、以上のようなイジングモデルの状態の更新処理を繰り返し、更新処理の回数が所定回数に達するたびに、温度スケジュール情報に基づいて、温度パラメータの値を小さくしていく。さらに、コア33a1~33aMは、更新処理の回数が、制御装置31から受信した繰り返し回数に達した場合、共有バス34を介して、更新処理の終了通知を制御装置31に対して送信する。
制御装置31は、コア33a1~33aMから終了通知を受信した場合、共有バス34を介して、探索結果の出力要求をコア33a1~33aMに対して送信する。コア33a1~33aMは、探索結果の出力要求を受信した場合、イジングモデルの基底状態の探索結果(最適化問題の計算結果)を、制御装置31に送信する。探索結果は、たとえば、更新処理の回数が、制御装置31から受信した繰り返し回数に達したときに状態更新部42で保持されている最小エネルギーが得られたときの各ビットの値である。または、探索結果は、更新処理の回数が上記繰り返し回数に達したときの各ビットの値であってもよい。また、探索結果にはエネルギーや最小エネルギーが含まれていてもよい。
なお、エネルギー、最小エネルギー及び最小エネルギーが得られたときの各ビットの値の更新については、コア33a1~33aMのうち、1つのコアが行ってもよい。その場合、制御装置31は、その1つのコアから探索結果を取得する。
制御装置31は、取得した探索結果を、たとえば、図示しない表示装置に出力(表示)する。なお、制御装置31は、探索結果を記憶装置32に記憶してもよい。
図8は、制御装置による最適化装置の制御の一例の流れを示すフローチャートである。
制御装置31は、共有バス34を介して、各コア(コア33a1~33aM)を起動し(ステップS1)、イジングモデルの情報などの各種情報を各コアに送信する(ステップS2)。
その後、制御装置31は、各コアから更新処理の終了通知を受信したか否かを判定する(ステップS3)。終了通知を受信するまでステップS3の処理が繰り返される。
制御装置31は、各コアから終了通知を受信した場合、前述の探索結果を取得し(ステップS4)、探索結果を出力し(ステップS5)、処理を終える。なお、制御装置31は、温度スケジュール情報などの計算条件を変えて、ステップS2~S5の処理を繰り返してもよい。
以上のような、第2の実施の形態の最適化装置30によれば、コア33a1~33aMの各々は前段のコアから送られる更新許容ビットの積算値を用いて、上記のような確率で更新候補ビットを選択する。これにより、更新対象ビットの選択確率の偏りを生じさせることなく、環状に接続したコア33a1~33aMを用いた大規模化が可能となる。
なお、上記の説明では、コア33a1を1段目のコア、コア33aMをM段目のコアとしたがこれに限定されない。コア33a1~33aMに制御装置31から供給されるコア種別を判断するための情報に基づいて、たとえば、制御部40が、選択部46を1段目のコアの選択部として機能させてもよいし、出力処理部47をM段目の出力処理部として機能させてもよい。
以上、実施の形態に基づき、本発明の最適化装置及び最適化装置の制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
10 最適化装置
11~14 演算処理部
11a~14a 状態更新部
11b~14b 判定部
11c~14c,12e~14e 選択部
11d~14d 計数部
12e1~14e1 データ選択回路

Claims (5)

  1. 最適化問題を変換したイジングモデルの基底状態の探索を行う、環状に接続されたM段(Mは2以上の整数)の演算処理部と、
    前記M段の演算処理部の各々に設けられ、前記イジングモデルの情報に基づいて、前記イジングモデルの全スピンに対応する複数のビットのビット数をMで割った数のビットの各々について更新を許容するか否かを判定する判定部と、
    前記M段の演算処理部の各々に設けられ、自身が属す演算処理部である自演算処理部の前記判定部の判定結果に基づいて、更新を許容する更新許容ビットのうちから1つの更新候補ビットを選択し、前記1つの更新候補ビットの識別情報を出力する第1の選択部と、
    前記M段の演算処理部の各々に設けられ、前記自演算処理部における前記更新許容ビットの数を計数する計数部と、
    前記M段の演算処理部のうち2段目以降の演算処理部に設けられ、前記自演算処理部の前記第1の選択部が出力する前記識別情報である第1の識別情報と、前段の演算処理部から供給される前記識別情報である第2の識別情報の何れか一方を選択する際に、前記自演算処理部において計数された前記更新許容ビットの数の計数結果を、前段までの演算処理部において計数された前記更新許容ビットの数の積算値と前記計数結果との和により割った確率で前記第1の識別情報を選択し、選択した前記第1の識別情報または前記第2の識別情報を、後段の演算処理部、または前記自演算処理部がM段目の演算処理部の場合には、1段目の演算処理部に供給する第2の選択部と、
    前記M段の演算処理部の各々に設けられ、前記M段目の演算処理部が前記1段目の演算処理部に供給する前記第1の識別情報または前記第2の識別情報に基づいて、前記複数のビットの何れかの値を更新する状態更新部と、
    を有する最適化装置。
  2. 前記M段の演算処理部は、第1のバスを介して制御装置に接続されるとともに、前記第1のバスよりも通信速度が速い第2のバスにより環状に接続されており、
    前記M段の演算処理部は、前記第2のバスを用いて、前記第1の識別情報または前記第2の識別情報の送受信を行う、
    請求項1に記載の最適化装置。
  3. 前記第1の選択部は、
    第1の乱数値を発生する第1の乱数発生回路と、
    前記第1の乱数値と前記計数結果とに基づいて、前記更新許容ビットのうちの1つを選択する第1の選択信号を生成する第1の選択信号生成回路と、
    前記第1の選択信号に基づいて、前記更新許容ビットのうちの1つである前記1つの更新候補ビットの前記識別情報を出力する第1のデータ選択回路と、
    を有する、請求項1または2に記載の最適化装置。
  4. 前記第2の選択部は、
    第2の乱数値を発生する第2の乱数発生回路と、
    前記計数結果を、前記積算値と前記計数結果との和により割った確率で前記第1の識別情報を選択する第2の選択信号を生成する第2の選択信号生成回路と、
    前記第2の選択信号に基づいて、前記第1の識別情報または前記第2の識別情報の一方を出力する第2のデータ選択回路と、
    を有する、請求項1乃至3の何れか一項に記載の最適化装置。
  5. 最適化問題を変換したイジングモデルの基底状態の探索を行う、環状に接続されたM段(Mは2以上の整数)の演算処理部と、前記M段の演算処理部の各々に設けられ、前記イジングモデルの情報に基づいて、前記イジングモデルの全スピンに対応する複数のビットのビット数をMで割った数のビットの各々について更新を許容するか否かを判定する判定部と、前記M段の演算処理部の各々に設けられ、自身が属す演算処理部である自演算処理部の前記判定部の判定結果に基づいて、更新を許容する更新許容ビットのうちから1つの更新候補ビットを選択し、前記1つの更新候補ビットの識別情報を出力する第1の選択部と、前記M段の演算処理部の各々に設けられ、前記自演算処理部における前記更新許容ビットの数を計数する計数部と、前記M段の演算処理部のうち2段目以降の演算処理部に設けられ、前記自演算処理部の前記第1の選択部が出力する前記識別情報である第1の識別情報と、前段の演算処理部から供給される前記識別情報である第2の識別情報の何れか一方を選択する際に、前記自演算処理部において計数された前記更新許容ビットの数の計数結果を、前段までの演算処理部において計数された前記更新許容ビットの数の積算値と前記計数結果との和により割った確率で前記第1の識別情報を選択し、選択した前記第1の識別情報または前記第2の識別情報を、後段の演算処理部、または前記自演算処理部がM段目の演算処理部の場合には、1段目の演算処理部に供給する第2の選択部と、前記M段の演算処理部の各々に設けられ、前記M段目の演算処理部が前記1段目の演算処理部に供給する前記第1の識別情報または前記第2の識別情報に基づいて、前記複数のビットの何れかの値を更新する状態更新部と、前記M段の演算処理部とバスを介して接続される制御装置と、を有する最適化装置における前記制御装置が、
    前記M段の演算処理部を起動し、
    前記M段の演算処理部に前記イジングモデルの情報を送信し、
    前記M段の演算処理部から、前記複数のビットの何れかの値を更新する処理が複数回繰り返されたときの前記複数のビットの値を含む前記基底状態の探索結果を取得し、
    取得した前記探索結果を出力する、
    最適化装置の制御方法。
JP2018189001A 2018-10-04 2018-10-04 最適化装置及び最適化装置の制御方法 Active JP7100257B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2018189001A JP7100257B2 (ja) 2018-10-04 2018-10-04 最適化装置及び最適化装置の制御方法
US16/564,788 US11093578B2 (en) 2018-10-04 2019-09-09 Optimization device and method of controlling optimization device
EP19196941.9A EP3633560B1 (en) 2018-10-04 2019-09-12 Optimization device and method of controlling optimization device
CN201910934026.6A CN111008696B (zh) 2018-10-04 2019-09-29 优化装置和控制优化装置的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018189001A JP7100257B2 (ja) 2018-10-04 2018-10-04 最適化装置及び最適化装置の制御方法

Publications (2)

Publication Number Publication Date
JP2020057306A JP2020057306A (ja) 2020-04-09
JP7100257B2 true JP7100257B2 (ja) 2022-07-13

Family

ID=67953631

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018189001A Active JP7100257B2 (ja) 2018-10-04 2018-10-04 最適化装置及び最適化装置の制御方法

Country Status (4)

Country Link
US (1) US11093578B2 (ja)
EP (1) EP3633560B1 (ja)
JP (1) JP7100257B2 (ja)
CN (1) CN111008696B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7071638B2 (ja) * 2018-07-31 2022-05-19 富士通株式会社 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7137064B2 (ja) * 2018-10-19 2022-09-14 富士通株式会社 最適化装置及び最適化装置の制御方法
JP7174244B2 (ja) * 2018-12-26 2022-11-17 富士通株式会社 最適化装置及び最適化装置の制御方法
WO2021192373A1 (ja) 2020-03-27 2021-09-30 株式会社Jvcケンウッド 表示制御装置、表示制御方法およびプログラム
JP7528517B2 (ja) 2020-04-24 2024-08-06 富士通株式会社 最適化装置、最適化方法及び最適化プログラム
WO2022013677A1 (ja) * 2020-07-17 2022-01-20 株式会社半導体エネルギー研究所 半導体装置
KR20230084261A (ko) * 2020-11-05 2023-06-12 아메바 에너지 가부시키가이샤 해 탐색 시스템, 해 탐색 방법 및 해 탐색 프로그램
CN113093379B (zh) * 2021-03-25 2022-02-25 上海交通大学 面向光子伊辛机的正交空间相位调制方法

Citations (2)

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

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200517A (ja) * 1993-12-29 1995-08-04 Toshiba Corp 並列型確率的最適化法
TW290769B (ja) * 1994-11-15 1996-11-11 Matsushita Electric Ind Co Ltd
JPH09319721A (ja) 1996-05-27 1997-12-12 Sony Corp 処理装置および方法
JP6445246B2 (ja) * 2014-03-27 2018-12-26 株式会社日立製作所 情報処理装置及び情報処理方法
JP2017028555A (ja) * 2015-07-24 2017-02-02 富士通株式会社 データ圧縮装置,データ圧縮方法,データ圧縮プログラム
CN105468335B (zh) * 2015-11-24 2017-04-12 中国科学院计算技术研究所 流水级运算装置、数据处理方法及片上网络芯片
JP2017174291A (ja) * 2016-03-25 2017-09-28 ルネサスエレクトロニクス株式会社 画像処理装置、画像処理方法、及び自動車制御装置
JP6623947B2 (ja) * 2016-06-17 2019-12-25 富士通株式会社 情報処理装置、イジング装置及び情報処理装置の制御方法
JP6465092B2 (ja) * 2016-10-14 2019-02-06 富士通株式会社 最適化装置及び最適化装置の制御方法

Patent Citations (2)

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

Also Published As

Publication number Publication date
CN111008696B (zh) 2023-06-09
US11093578B2 (en) 2021-08-17
CN111008696A (zh) 2020-04-14
JP2020057306A (ja) 2020-04-09
EP3633560B1 (en) 2022-03-30
EP3633560A1 (en) 2020-04-08
US20200110790A1 (en) 2020-04-09

Similar Documents

Publication Publication Date Title
JP7100257B2 (ja) 最適化装置及び最適化装置の制御方法
JP6465231B1 (ja) 最適化装置及び最適化装置の制御方法
JP7323777B2 (ja) 最適化装置および最適化方法
JP6892599B2 (ja) 最適化装置及び最適化装置の制御方法
JP7206476B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7137064B2 (ja) 最適化装置及び最適化装置の制御方法
JP7197789B2 (ja) 最適化装置及び最適化装置の制御方法
JP2020086821A (ja) 最適化装置および最適化装置の制御方法
US11551062B2 (en) Optimization apparatus and control method thereof
JP2021039640A (ja) 学習装置、学習システム、および学習方法
JP6923790B2 (ja) 最適化装置及び最適化装置の制御方法
EP3779616A1 (en) Optimization device and control method of optimization device
CN111381495B (zh) 优化装置及优化装置的控制方法
EP3239905A1 (en) Methods and apparatus for use in predicting non-stationary time-series data
US11562210B2 (en) Stochastically determining to accept a state transition for an optimization device
JP2020173661A (ja) 最適化装置及び最適化装置の制御方法
JP2020204929A (ja) サンプリング装置およびサンプリング方法
JP2020027426A (ja) 最適化システム、最適化システムの制御方法及び最適化システムの制御プログラム
JP7111966B2 (ja) 最適化装置及び最適化装置の制御方法
US20170160730A1 (en) Production system having constraint evaluator generating constrained sequences
CN111966889B (zh) 一种图嵌入向量的生成方法以及推荐网络模型的生成方法
EP4160489A1 (en) Optimization program, optimization method, and optimization apparatus
EP4198831A1 (en) Automated feature engineering for predictive modeling using deep reinforcement learning
EP4293534A1 (en) Blockchain address classification method and apparatus
Wüchner et al. Homogeneous finite-source retrial queues with search of customers from the orbit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210610

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210614

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210614

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220613

R150 Certificate of patent or registration of utility model

Ref document number: 7100257

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150