JP6841722B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP6841722B2
JP6841722B2 JP2017111694A JP2017111694A JP6841722B2 JP 6841722 B2 JP6841722 B2 JP 6841722B2 JP 2017111694 A JP2017111694 A JP 2017111694A JP 2017111694 A JP2017111694 A JP 2017111694A JP 6841722 B2 JP6841722 B2 JP 6841722B2
Authority
JP
Japan
Prior art keywords
spin
memory cell
information processing
unit
interaction
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
JP2017111694A
Other languages
English (en)
Other versions
JP2018206127A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2017111694A priority Critical patent/JP6841722B2/ja
Priority to US15/907,312 priority patent/US10839044B2/en
Publication of JP2018206127A publication Critical patent/JP2018206127A/ja
Application granted granted Critical
Publication of JP6841722B2 publication Critical patent/JP6841722B2/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/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • 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
    • 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
    • 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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • 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
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]

Landscapes

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

Description

本発明は、情報処理装置に関し、特に、相互作用モデルの計算を行う半導体装置をアクセラレータとして制御する情報処理装置に適用して好適なものである。
種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは、モデルを構成する複数個のノードと、ノード間の相互作用、さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが、いずれも相互作用モデルの一形態であると解釈できる。
物理学の世界で代表的な相互作用モデルの例として、イジングモデルをあげることができる。イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは、+1/−1(ないしは、0/1、上/下)の2値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎にある外部磁場係数で定義される。
イジングモデルは、与えられたスピン配列、相互作用係数、および、外部磁場係数で構成される。イジングモデルのエネルギー関数(一般にハミルトニアンとも呼ばれる)は次式で表わされる。
Figure 0006841722
…(1)
なお、σ、σはそれぞれi番目とj番目のスピンの値、Ji,jはi番目とj番目のスピンの間の相互作用係数、hはi番目のスピンに対する外部磁場係数、σはスピンの配列を表わすものとする。
(1)式において、第一項は、スピン間の相互作用に起因するエネルギーを計算するものである。一般的にイジングモデルは無向グラフとして表現され、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。そのため、第一項ではi<jを満たすσ、σの組み合わせについて、相互作用係数の影響を計算している。また第二項は、各スピンに対する外部磁場に起因するエネルギーを計算するものである。
イジングモデルの基底状態探索は、イジングモデルのエネルギー関数を最小化するスピン配列を求める最適化問題である。非平面グラフで表されるイジングモデルの基底状態探索はNP困難であることが知られている。近年、この問題を効率的に解くため基底状態を探索する装置が提案されている(特許文献1、特許文献2)。
また、ある条件下においてイジングモデルのサンプリングを実行して統計量の期待値を算出することによって、機械学習の一手法であるボルツマン機械学習を実現できることが知られている(非特許文献1)。
また、クラスターモンテカルロアルゴリズム(クラスター交換モンテカルロ法;後述)についても知られている(非特許文献2)。
国際公開2014/192153号 特開2016−51313号公報
S. Yamanaka, M. Ohzeki, and A. Decelle, "Detection of Cheating by Decimation Algorithm," Journal of the Physical Society of Japan, vol. 84, no. 2, p. 024801, 2015. Houdayer, J. "A cluster Monte Carlo algorithm for 2-dimensional spin glasses." The European Physical Journal B-Condensed Matter and Complex Systems 22.4 (2001): 479-484.
イジングモデルの基底状態探索やサンプリングを実行するにあたり、一般に、マルコフ連鎖モンテカルロ法(以降、MCMCと呼ぶ)が用いられる。MCMCは、状態間を確率的に遷移しつつ状態のサンプリングを行うことで所望の統計量を推定する手法である。
図1にイジングモデルのエネルギーランドスケープの概念図を示す。これは横軸にスピン配列、縦軸にそのスピン配列におけるエネルギーをプロットしたものである。
確率的な遷移では、現在の状態σの近傍のある状態σ’へ確率的に遷移を繰り返す。状態σから状態σ’へ遷移する確率を、遷移確率P(σ,σ’)と呼ぶ。遷移確率としてメトロポリス法や熱浴法などが知られている。例えば、メトロポリス法の遷移確率は(2)式、熱浴法の遷移確率は(3)式である。Tは一般に温度と呼ばれるパラメータで、状態間の遷移のし易さを表す。
Figure 0006841722
…(2)
Figure 0006841722
…(3)
近傍の状態σ’を生成する方法として、現在の状態σから一つのスピンの値を変えることが一般的である。変更するスピンを一つずつ順番に変えることで、スピン全体の探索を行う。たとえば、図1の場合は、状態Aから一つのスピンが反転すると状態B、そしてさらに一つのスピンが反転すると状態Cとなる。
しかしながら、スピンを順番に一つずつ更新する場合、状態遷移において高いエネルギー壁を越えることは困難であり,特定領域のスピン配列にトラップされる確率が高まる。たとえば、図1に示す例の場合、状態Aから状態Cへ一度に遷移することは出来ず、状態Bを経由して遷移しなければならない。しかし状態Bのエネルギーが状態Aのエネルギーよりも充分に大きい場合、状態Aから状態Bに遷移する確率は低くなる。結果として、有限な回数の状態遷移では、状態Cへ遷移が発生せず、この領域に訪れる可能性が低くなる。
本来は各スピン状態を、適切な重みづけに基づいて探索しなければならないにも関わらず、状態間の遷移が困難になることでサンプリングの精度や基底状態探索の解精度を低下させる。結果としてMCMCのサンプリング回数を増加させなければならず,計算システム全体のエネルギー効率が低下する。
複数のスピンの値を同時に変更し、変更前後のエネルギー差を計算して(2)式に基づく確率的な遷移の有無を決定することで、この課題は解決される。一例としては、クラスターモンテカルロアルゴリズム(Cluster Monte Carlo Algorithm)が知られている(非特許文献2)。たとえば、図1に示す例の場合、状態Aの近傍として状態Cを認めるということである。
しかし、複数のスピンを変更した場合は、エネルギー差の計算のためにスピンの値を外部接続のCPU(中央処理装置)に転送して計算する必要がある。一般に、この通信は時間を要するもので、計算時間の増加およびエネルギー効率の低下などの問題を発生させる。そこで、MCMCを高速化させるハードウェアの実現が求められる。
以下において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
本発明の一側面は、第1のアレイ回路と第2のアレイ回路を備える情報処理装置である。アレイ回路の其々は複数のユニットを備える。複数のユニットの其々は、相互作用モデルの1つのノードの状態を示す値を記憶する第1のメモリセルと、自己と同一のアレイ回路内で自己ユニットに接続された隣接ユニットのノードからの、相互作用を示す相互作用係数を記憶する第2のメモリセルと、第1のメモリセルの値を制御するためのフラグを記憶する第3のメモリセルと、隣接ユニットのノードの状態を示す値および相互作用係数に基づいて、1つのノードの次状態を示す値を決定する第1の論理回路と、フラグの値に応じて第1のメモリセルの値を変更する第2の論理回路と、を有する。さらに、複数のユニットの其々が、自己ユニットの第1のメモリセルの内容を、他のアレイ回路の対応するユニットに送信し、かつ前記対応するユニットの前記第1のメモリセルの内容を受信するための、アレイ間配線を有し、フラグは前記アレイ間配線で受信される情報に基づいて生成される。
本発明の他の一側面は、複数のイジングチップと、複数のイジングチップを制御するコントローラを含む情報処理装置である。複数のイジングチップの其々は複数のユニットを備え、複数のユニットの其々はスピン状態を保持する。コントローラは、複数のイジングチップのうち一組のイジングチップに対して、対応するユニットのスピン状態の値を比較するよう指示し、一組のイジングチップに対して、対応するユニットのスピン状態の値が異なるスピンのうち、一部のスピンの値を反転するよう指示する。
MCMCを高速化させるハードウェアの実現が可能となる。
イジングモデルのエネルギーランドスケープの概念図。 実施の形態における半導体装置を含む情報処理装置の全体構成の一例を示すブロック図。 実施の形態において、マルチイジングチップの構成の一例を示すブロック図。 実施の形態において、イジングチップの構成の一例を示すブロック図。 実施の形態において、2次元格子のスピンアレイの構成の一例を説明する概念図。 実施の形態において、スピンユニットの構成の一例を示す回路図。 実施例の処理手順を示すフロー図。 処理中のスピンユニットの動作状態の一例を示す回路図。 処理中のスピンユニットの動作状態の一例を示す回路図。 処理中のスピンユニットの動作状態の一例を示す回路図。 処理中のスピンユニットの動作状態の一例を示す回路図。 処理中のスピンユニットの動作状態の一例を示す回路図。 実施例の処理の概念を示す模式図。 実施例の処理の概念を示す模式図。 MCMCの処理手順を示すフロー図。
以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
以下、実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号または関連する符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。同一あるいは同様な機能を有する要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、複数の要素を区別する必要がない場合には、添字を省略して説明する場合がある。
本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数、順序、もしくはその内容を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
実施の形態は、安価かつ容易に製造でき、例えばイジングモデルなどのような任意の相互作用モデルの計算を行うことが可能な半導体装置および情報処理装置に関する。
実施の形態で説明される一つの例は、複数のイジングチップと、複数のイジングチップを制御するコントローラを含む半導体集積回路装置において、コントローラと、複数のイジングチップと接続された状態交換クロック生成部を備えるものである。コントローラは、状態交換クロック生成部が生成するクロック信号に対応して、複数のイジングチップのうち隣接するイジングチップに対して、対応するスピンどうしの値を比較するよう指示する。コントローラは、状態交換クロック生成部が生成するクロック信号に対応して、対応するスピンどうしの値を比較した隣接するイジングチップに対して、対応するスピンどうしの値が異なるスピンのうち、一部のスピンの値を反転するよう指示する。
実施の形態における半導体装置は、単一の変数を逐次的に更新するのではなく、複数の変数を同時に更新しつつマルコフ連鎖モンテカルロ法に基づく計算を実行する半導体装置である。この半導体装置は、メモリと、メモリからデータを読む読み出し部と、読み出し部が読み出したデータに対して所定の演算を行った結果を入力する多数決回路と、多数決回路の出力を入力する書き込み回路と、を備え、多数決回路の前段で所定の信号の値を確率的に反転する。このような例によれば、相互作用ネットワークのスピンの状態を高速かつ大幅に変化することができる。
一実施の形態によれば、安価かつ容易に製造でき、例えばイジングモデルなどのような任意の相互作用モデルの計算を行うことが可能な半導体装置および情報処理装置を提供することができる。
<(1)相互作用モデル>
前述のように、種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルの特徴として、ノード間の影響を2個のノード間の相互作用に限定している(2体間の相互作用)ことがあげられる。例えば、宇宙空間にある惑星の力学を考えてみると、惑星というノードの間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが、惑星間の影響は2個の惑星間にとどまらず、3個以上の惑星が互いに影響し合って複雑な挙動を示す(いわゆる3体問題や多体問題と言われる問題になる)。物理学の世界で代表的な相互作用モデルの例として、前述のイジングモデルをあげることができる。
また、生物学の世界では、脳をモデル化したニューラルネットワークが相互作用モデルの一例である。ニューラルネットワークは、神経細胞のニューロンを模した人工ニューロンをノードとして、人工ニューロン間はシナプス結合という相互作用を持つ。また、各ニューロンにバイアスを与える場合もある。
社会科学の世界では、例えば人間のコミュニケーションを考えると、人間というノードと言語や通信で成される相互作用があることは容易に理解できよう。また、各人間には個別にバイアスがあることも想像できる。そのため、人間のコミュニケーションを、相互作用モデルという点で共通なイジングモデル等に模してその特性を明らかにしようという研究もなされている。
以下においては、イジングモデルの基底状態探索またはサンプリングを行う半導体装置と、その半導体装置をアクセラレータとして制御する情報処理装置の例を説明する。
<(2)有向グラフに拡張したイジングモデル>
本実施の形態では、イジングモデルを拡張した、以下の(4)式で示されるモデルを、以降イジングモデルと呼ぶ。
Figure 0006841722
…(4)
(1)式で示したイジングモデルとの違いは、(4)式では有向グラフで示されるような相互作用が許されることにある。一般的に、イジングモデルはグラフ理論では無向グラフとして描画することができる。それは、イジングモデルの相互作用は、i番目スピンからj番目スピンへの相互作用係数Ji,jとj番目スピンからi番目スピンへの相互作用係数Jj,iとを区別していないことによる。
本実施例はイジングモデルを拡張し、Ji,jとJj,iを区別しても適用できるため、有向グラフ化したイジングモデルを取り扱う。なお、無向グラフのイジングモデルを有向グラフのイジングモデルで取り扱う場合には、単にJi,jとJj,iとの双方向に同じ相互作用係数を定義することで可能である。この場合、同じモデルでも(1)式のエネルギー関数に対して(4)式のエネルギー関数ではエネルギーの値が2倍になる。
<(3)本実施の形態における情報処理装置の構成>
<<(3−1)半導体装置を含む情報処理装置の全体構成>>
半導体装置を含む情報処理装置の全体構成について、図2および図3を用いて説明する。図2は、本実施の形態における半導体装置を含む情報処理装置の全体構成の一例を示すブロック図である。図3は、本実施の形態において、マルチイジングチップの構成の一例を示すブロック図である。
図2において、本実施の形態による情報処理装置を示す。この情報処理装置1は、パーソナルコンピュータやワークステーションまたはサーバなどから構成され、システムバス2を介して接続されたCPU(Central Processing Unit)3、メモリ4、記憶装置5および複数のマルチイジングチップ6を備える。
CPU3は、情報処理装置1全体の動作制御を司るプロセッサである。またメモリ4は、例えば揮発性の半導体メモリから構成され、各種プログラム等を記憶するために利用される。記憶装置5は、例えばハードディスク装置やSSD(Solid State Drive)などから構成され、プログラムやデータを長期間保持するために利用される。
本実施の形態の場合、記憶装置5には、本情報処理装置1が解くべき単一かつイジングモデル形式の問題の問題データ7が格納され、メモリ4には、マルチイジングチップ制御プログラム9が格納される。マルチイジングチップ制御プログラム9は、個々のマルチイジングチップ6で問題を解くための制御を行うためのプログラムである。
なお、イジングモデル形式でない問題データをイジングモデル形式の問題データ7に変換するプログラムをメモリ4に格納しておくようにしてもよい。このようにすることによりイジングモデル形式でない問題についても対応可能となり、本情報処理装置1の有用性を向上させることができる。
マルチイジングチップ6は、イジングモデルの基底状態探索を行う専用ハードウェアであり、例えば画面描画処理のための専用ハードウェアであるGPU(Graphics Processing Unit)のように、情報処理装置1に装着する拡張カードの形態を取る。
図3はマルチイジングチップの構成ブロック図である。マルチイジングチップ6は、図3に示すように、インタフェース(I/F)10、イジングチップ群11および制御部12を備えて構成され、インタフェース10およびシステムバス2(図2)を介してCPU3(図2)との間でコマンドや情報の送受を行う。
イジングチップ群11は、それぞれがイジングモデルの基底状態探索やサンプリングを行う専用のハードウェアである複数のイジングチップ13から構成される。イジングチップ13間はチップ間配線14により接続されており、このチップ間配線14を介してイジングチップ13同士が必要な情報を送受する。
制御部12は、イジングチップ群11を構成する各イジングチップ13を制御する機能を有し、コントローラ15、相互作用クロック生成器16、状態交換クロック生成器17、および乱数発生器8を備えて構成される。
コントローラ15は、マルチイジングチップ6全体の動作制御を司るプロセッサであり、情報処理装置1のCPU3(図2)からシステムバス2(図2)およびインタフェース10を介して与えられるコマンドに従ってイジングチップ群11を構成する各イジングチップ13の動作や、相互作用クロック生成器16、状態交換クロック生成器17、および乱数発生器8を制御する。
また相互作用クロック生成器16は、相互作用クロックICLKを生成するクロック生成器である。相互作用クロックICLKは、イジングチップ群11を構成する各イジングチップ13にそれぞれ与えられる。乱数発生器8は、各イジングチップ13において実行する処理で用いるランダムなビット列である乱数RNDを発生させる。乱数RNDは、各イジングチップ13にそれぞれ与えられる。
また状態交換クロック生成器17は、状態交換クロックECLKを生成するクロック生成器である。状態交換クロックECLKは、イジングチップ群11を構成する各イジングチップ13にそれぞれ与えられる。
<<(3−2)イジングチップの構成>>
図4を用いてイジングチップ13の構成について説明する。図4は、本実施の形態において、イジングチップ13の構成の一例を示すブロック図である。イジングチップは、スピンアレイを内包し各スピンの値を相互作用計算により更新処理する半導体集積回路である。
図4に示すように、イジングチップ13は、スピンアレイ20、I/O(Input/output)アドレスデコーダ21、I/Oドライバ22、相互作用アドレスデコーダ23、状態交換アドレスデコーダ403、およびチップ間接続部24を備えて構成される。本実施の形態では、イジングチップ13は現在広く用いられているCMOS(Complementary Metal-Oxide Semiconductor)集積回路として実装されていることを想定して説明するが、他の固体素子でも実現可能である。
イジングチップ13は、スピンアレイ20のメモリセルにリード/ライトを行うためのSRAM互換インタフェース30として、アドレスバス31、データバス32、R/W制御線33およびI/Oクロック線34を備える。またイジングチップ13は、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース35として、相互作用アドレス線36および相互作用クロック線37も備える。
イジングチップ13では、イジングモデルのスピンσ、相互作用係数Ji,jおよび外部磁場係数hをすべてスピンアレイ20内のメモリセルに記憶する情報で表現する。スピンσの初期状態の設定やMCMCを実施後のスピン配列の読み出しはSRAM互換インタフェース30を介して行う。またイジングチップ13では、MCMCを実行すべきイジングモデルをスピンアレイ20に設定するための相互作用係数Ji,jおよび外部磁場係数hのリード/ライトもSRAM互換インタフェース30を介して行う。
そのため、スピンアレイ20内のスピンσ、相互作用係数Ji,jおよび外部磁場係数hにはアドレスが付与されている。そしてイジングチップ13にスピンσ、相互作用係数Ji,jまたは外部磁場係数hをリード/ライトする場合、対応するアドレスがコントローラ15からアドレスバス31を介してI/Oアドレスデコーダ21に与えられ、これらスピンσ、相互作用係数Ji,jおよび外部磁場係数hのリード/ライトを制御するR/W制御信号がコントローラ15からR/W制御線33を介してI/Oドライバ22に与えられる。
かくしてI/Oアドレスデコーダ21は、アドレスバス31を介して与えられたアドレスに基づいてスピンアレイ20のワード線をアクティベートし、I/Oドライバ22は、R/W制御線33を介して与えられたR/W制御信号に基づいてスピンアレイ20内の対応するビット線を駆動する。これによりデータバス32を介して与えられたスピンσの初期値や、相互作用係数Ji,jおよび外部磁場係数hの設定値がスピンアレイ20に設定され、または、MCMCを実施後の解がスピンアレイ20から読み出されてデータバス32を介して外部に出力される。
なお、SRAM互換インタフェース30を構成するアドレスバス31、データバス32およびR/W制御線33は、I/Oクロック線34を介して制御部12からイジングチップ13に与えられるI/Oクロックに同期する。
また、イジングチップ13は、MCMCを行うために、スピンアレイ20の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース35である。イジングチップ13は、コントローラ15から与えられる相互作用を行うスピン群を指定するアドレスを相互作用アドレス線36経由で入力し、相互作用クロック線37を介して入力される相互作用クロック生成器16からの相互作用クロックに同期して相互作用を行う。相互作用アドレスデコーダ23は、相互作用アドレス線36を介して与えられたアドレスに基づいて、スピンアレイ20に対するスピンの値、相互作用係数Ji,jおよび外部磁場係数hのリード/ライトを行う。
イジングチップ13は、後述のようにスピンアレイ20内のメモリから読み出したデータ、またはこのデータに所定の演算を行った結果を確率的に反転させるため、乱数RNDを注入する乱数信号線38を有する。図3について上述した乱数発生器8により発生された乱数RNDは、この乱数信号線38を介してスピンアレイ20に与えられる。
また、イジングチップ13は、スピンアレイ20の内部でクラスター交換(状態交換)を実現する。このクラスター交換を外部から制御するのが状態交換制御インタフェース400である。イジングチップ13は、コントローラ15から与えられる状態交換を行うスピン群を指定するアドレスを状態交換アドレス線401経由で入力し、状態交換クロック線402を介して入力される状態交換クロック生成器17からの状態交換クロックに同期してクラスター交換を行う。状態交換アドレスデコーダ403は、状態交換アドレス線401を介して与えられたアドレスに基づいてスピンアレイ20に対するクラスター交換のため、後述のメモリセルNおよびメモリセルMのリード/ライトを行う。
チップ間接続部24は、隣接して配置されたイジングチップ13との間で必要なスピンσの値を送受する際のインタフェースとして機能する。
<<(3−3)スピンアレイの構成>>
図5は2次元格子のスピンアレイおよびその接続関係について模式的に説明する概念図である。スピンアレイ20は、1個のスピンσならびにそれに付随する相互作用係数Ji,jおよび外部磁場係数hを保持するメモリと、MCMCを実現する演算回路を有するスピンユニット40を基本構成単位として、スピンユニット40を多数個並べた構成を有する。
図5において、スピンアレイ20は3×3の9個のスピンユニット40を持つこととし、スピンユニット40が持つスピンを丸で示している。ここでは2つのスピンアレイ20Aと20Bに着目して示している。スピンアレイ20は一つのイジングチップ13によって実現される
図5に示す1個のスピンユニット40には、他のスピンユニットのスピンの値が入力される。図5では便宜的に上下左右に配置された4個のスピンユニットのスピンの値を入力することとした。あるスピンユニットに対してスピンの値を入力するスピンユニットを便宜上、「隣接スピンユニット(隣接ノード)」ということにする。ただしこれは必ずしも物理的あるいは幾何学的にスピンユニットが隣接配置されていることを意味しない。
スピンユニット40は、スピンの値を保持するためのメモリセルNを有している。スピンの値は、たとえばスピンの上/下の値を、HIGH/LOWで表す。図5では各スピンアレイ20の中央のスピンユニットに着目して、スピンの値の入出力を矢印で示している。またスピンユニット40は、かかるスピンの値に加え、外部磁場係数と、上述した隣接スピンユニットとの相互作用係数をそれぞれ保持するメモリセルも有している。このような相互作用を行うスピンアレイの構成については、例えば特許文献2に記載がある。
本実施例では、スピンユニット40はさらに、他のスピンアレイ20が持つ対応するスピンユニット40のスピンとの異同を表すメモリセルMを有する。すなわち、図5に示すように、一組のスピンアレイ20Aと20Bは、其々スピンユニット40のスピンの値を、チップ間配線14を用いて対応するスピンユニット40に送信する。図5では対応するスピンユニットにはN11のように同じ符号を付している。以降これらを便宜上「対応スピンユニット」ということにする。対応スピンユニットのスピンの値を受信したスピンユニット40は、自己のスピンの値との異同を判定し、結果をメモリセルMに格納する。
なお、図5ではスピンユニットの位置をNxyというように、横方向および縦方向の位置によって示している。スピンユニット40をタイル状に配置することでスピンアレイ20が実現される。図5では、スピンユニット40が含むスピンアレイを2個ずつ組にしてスピンの値を交換することにしたが、3個以上を組にして相互にスピンの値を交換することにしてもよい。
<<(3−4)スピンユニットの構成>>
図6は、本実施の形態において、スピンユニット40の構成の一例を示す回路ブロック図である。一つのスピンユニットは、イジングモデルの一つのノードに対応する。図示しないが、スピンユニット40が有するメモリセルには、イジングチップ13外からアクセスするためのインタフェースであるビット線とワード線が配置され、リード/ライトのタイミングが制御される。これは従来の半導体メモリの制御方式を踏襲するものであり、本明細書で特記する以外の部分は、例えば特許文献2に記載の技術を適用可能である。
図6を参照しつつスピンユニット40の構成を説明する。メモリセルNはスピンを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは+1/−1(+1を上、−1を下とも表現する)であるが、これをメモリセルが保持可能な2値である0/1に対応させる。例えば、+1を1、−1を0に対応させる。
メモリセルMは、異なるイジングチップ13の対応スピンユニットのスピンと値が異なるかどうかを表現したり、クラスターに含めるかどうかを表現したりするためのメモリセルである。本実施例では、マルチイジングチップ6内の各イジングチップ13は、同一モデルの基底状態探索を行う前提である。
イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。
図5および図6の例では、このスピンユニット40は最大で5個のスピンユニットと接続される。すなわち、図5のN11に着目すれば、N01、N10,N12,N21の4個のスピンユニットからそれらのスピンの値S〜Sを得、また自分のスピンS(自分のメモリセルNに格納された値)をこれらに送信する。また、チップ間配線14を用いて対応スピンユニット40と接続され、スピンの値を送受信することができる。
スピンユニット40は、自スピンに及ぼす影響を示す相互作用係数J〜Jを格納する4組のメモリセルを備える。さらに、外部磁場係数Hを格納する一組のメモリセルを備える。
本実施の形態のイジングチップ13では、外部磁場係数Hおよび相互作用係数J〜Jを、それぞれ+1/0/−1の3値に対応させる。そのため、外部磁場係数および相互作用係数を表わすためには、それぞれ2ビットのメモリセルが必要となる。このため、本実施例では其々の係数のために、1ビットのメモリセルを一組用いることにしている。
メモリセルH[0]、J[0](1≦k≦4)はそれぞれ対応する外部磁場係数および相互作用係数が正のとき1、0以下のとき0とする。またメモリセルH[1]、J[1]はそれぞれが対応する係数の絶対値が1のとき1、0のとき0を与える。例えばスピンユニットの保持する外部磁場係数が−1のときH[0]=0、H[1]=1である。
スピンユニット40内のメモリセルN、メモリセルM、H[u]、J[u](0≦u≦1、1≦≦4)は、それぞれイジングチップ13の外部からリード/ライト可能でなければならない。そのために、前述のように、スピンユニット40はビット線とワード線とをそれぞれ有している(図示せず)。
そしてイジングチップ13では、スピンユニット40が半導体基板上にタイル状に並べられてビット線とワード線とが接続されており、I/Oアドレスデコーダ21とI/Oドライバ22でこれらのスピンユニット40を駆動、制御または読み出しすることにより、一般的なSRAM(Static Random Access Memory)と同様に、スピンユニット40内のメモリセルをイジングチップ13のSRAM互換インタフェース30でリード/ライトすることができる。かかるSRAM互換インタフェースについては、特許文献2に開示がある。
また、スピンユニット40は同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット40毎に独立して持っている。図6では、スピンユニット40は、外部とのインタフェースと、信号IA、N’、O、K、SW、S(1≦k≦4)、RND、RV、およびEXをやり取りする。
信号IAは、状態交換制御インタフェース400から供給され、当該スピンユニット40のスピンの更新を許可する切替え信号を入力する。この切替え信号でセレクタ43を制御する。
信号N’は他のイジングチップ(図5でチップ間配線14を介して接続されるイジングチップ13)が持つスピンアレイにおいて、対応スピンユニット40が有するメモリセルNの値を渡す。これはチップ間接続部24から入力される。
信号Oは、当該スピンユニット40の出力である。信号Oの内容は信号Kにより制御されるセレクタ55により、メモリセルNの内容とメモリセルMの内容が切り替わる。また、信号Oの出力先は信号SWで切り替わるセレクタ59により、同一イジングチップ内の他のスピンユニットと、他のイジングチップ内の対応スピンユニットとの間で出力先が切り替わる。すなわち、図5の矢印で示す信号経路のうち、チップ間配線14とイジングチップ13内のチップ内配線600とで出力先を切り替える。
信号Kは、上記のセレクタ55の出力を切り替え、メモリセルNの内容とメモリセルMの内容を選択出力する信号であり、状態交換制御インタフェース400から供給される。KがHIGHの場合には出力はメモリセルMの内容であり、KがLOWの場合には出力はメモリセルNの内容である。セレクタ55の出力はセレクタ59の入力となる。
信号SWは、上記のセレクタ59の出力先を切り替える信号であり、状態交換制御インタフェース400から供給される。SHがHIGHの場合には出力はチップ間配線14へ出力され、SHがLOWの場合には出力はチップ内の他のスピンユニットへ出力される。
信号S(1≦k≦4)は、それぞれ他のスピンユニット40(図5のトポロジで、イジングチップ13内の隣接スピンユニット)から、そのスピンの値の信号を受け取る。
信号RNDはビット確率を変更する乱数であり、乱数信号線38から供給される。
信号RVは、状態交換制御インタフェース400から供給され、セレクタ58を制御する。セレクタ58の入力のうち、メモリセルMと繋がっていない側の信号は常にHIGHとする。
信号EXは、状態交換制御インタフェース400から供給され、セレクタ52を制御する。EXがHIGHのとき、セレクタ52はANDゲート601の出力を出力し、EXがLOWのとき、セレクタ52はXORゲート53の出力を出力する。
演算回路44はメモリセルH[u]、J[u](0≦u≦1、1≦≦4)から読み出した値および信号RNDを受け取り、メトロポリス法または熱浴法などMCMCが求める確率的な振る舞いを実行する。
<<(3−5)スピンユニットの動作>>
本実施例のスピンユニットでは、クラスター交換モンテカルロ法をハードウェア的に実現し、複数のスピンの値を同時に変更することで、MCMCのサンプリング回数の増加を抑制し、計算システム全体のエネルギー効率を改善する。図7は本実施例のスピンユニット40の動作概略を示す流れ図である。図8A〜Fは各動作における信号経路を太線の矢印で示す図である。
図7に加えて図8A〜Fを参照して、スピンユニットで行われる一連の処理を説明する。まず、信号K,SE,RVおよび信号IAがLOWのとき、メモリセルNにはスピンの値S〜Sに基づいて演算回路44の出力が書き込まれる。スピンの値S〜Sは同一イジングチップ内の隣接スピンユニットから得る値である。セレクタ55はメモリセルNの値をスピンSとして出力する。スピンSの値はセレクタ59により、同一イジングチップ内の他のスピンユニットに送られる。
演算回路44は、メモリセルH[u]、J[u]から読み出した相互作用係数、スピンの値S〜S、および乱数RNDによって、スピンの次状態を示す値を決定し、メモリセルNに格納する。よってこの状態では、スピンユニットは隣接スピンユニットの情報を用いた、従来から実現している相互作用演算によるスピン更新を実行する(スピン更新処理S710、図8A参照)。処理のタイミングは相互作用クロックICLKに基づき制御する。相互作用演算によるスピン更新については、例えば特許文献1や特許文献2にも記載があるので、詳細は省略する。
次に、クラスター交換のプロセス(処理S730)を説明する。このプロセスは、従来から実現している上記スピン更新の途中の所望のタイミングで実行される。タイミングや回数はハードウェア構成や解決する問題にも依存するが、任意である。この制御は、マルチイジングチップ制御プログラム9の制御により、状態交換制御インタフェース400から開始タイミングを指示することにより行うことができる(処理S720)。タイミングは状態交換クロックECLKに基づき制御する。この処理S730はたとえば、基底状態探索の初期段階でより多く(高頻度)、後半で少なく(低頻度)行うことが考えられる。
クラスター交換のプロセスでは、信号IAをHIGHに定め、通常のスピン更新は停止する。図7に示すようにクラスター交換のプロセス(処理S730)は、3つのステップを含む。対応スピンユニットとのスピン異同判定(処理S731)、スピンユニットのクラスター化(処理S732)、クラスター化されたスピンユニットのスピン値の変更(処理S733)である。
スピンユニットのクラスター化(処理S732)の結果として、メモリセルMの内容はクラスター交換モンテカルロ法において、自スピンユニットをクラスターに含めるかどうかを表す。メモリセルMがLOWならばクラスターに含めず、HIGHならクラスターに含めることとする。そして、クラスターに属するスピンユニットのスピンを纏めて変更する。
対応スピンユニットとのスピン異同判定(処理S731)では、信号IAがHIGHの状態において、信号KをLOWのまま、信号EXをLOWに、信号SWをHIGHに定める(図8B参照)。この結果、メモリセルNの内容であるスピンの値は、チップ間配線14を経由して、隣接するイジングチップ13の対応スピンユニット40に送られる。これは例えば図5のイジングチップ13Aと13Bで、中央のスピンユニットがスピンの状態を通知し合うことに相当する。
受信側では、セレクタ52はXORゲート53の値を出力する。XORゲート53の出力は、自スピンNおよび隣接する系の対応スピンN’(対応するイジングチップ13の対応スピンユニット40のスピン)が異なる値かどうかを表し、この結果がメモリセルMに書き込まれる。排他的論理和の結果、スピンが同じであればLOWが書き込まれ、異なればHIGHが書き込まれる。メモリセルMにHIGHが書き込まれているスピンユニットを、便宜上「不一致スピンユニット」という。
次に、信号IAをHIGHのまま、信号KをHIGHに、信号SWをLOWにする(図8C参照)。この結果、スピンの異同を示すメモリセルMの内容は、チップ内配線600により、同一チップ内の隣接スピンユニットに送られる。隣接スピンユニットでは、メモリセルMの内容(M〜Mで示す)を受信する。このとき、信号IAはHIGHであり、演算回路44からの出力はメモリセルNには供給されない。
次に、スピンユニットのクラスター化(処理S732)では、不一致スピンユニットの一部の集合をクラスターとして抽出する。本実施例では、一例として以下のように構成した。
すなわち、信号IAはHIGHのまま、信号EXをHIGHに定める(図8D参照)。すると、セレクタ52はANDゲート601の値を出力する。ANDゲート601はORゲート56の値とメモリセルMの値の論理積を出力する。ORゲート56は複数のANDゲート54の出力を入力とする。ANDゲート54は隣接のスピンユニットから出力される信号M(1≦k≦4)およびメモリセルJ[1](1≦≦4)を入力とする。前述の通り、J[1]は対応する係数の絶対値を表すと約束しているため、相互作用係数が0のとき、対応するANDゲート54はLOWを出力する。
図8Dの処理では、隣接スピンユニットと0でない相互作用があり、かつ、隣接スピンユニットが不一致スピンユニットの場合のみ、対応するANDゲート54はHIGHを出力し、これらはORゲート56に入力される。
また、隣接スピンユニットと0でない相互作用があり、かつ、その隣接スピンユニットが不一致スピンユニットである場合が少なくとも1つある場合、ORゲート56はHIGHを出力する。
ANDゲート601によって、ORゲート56の出力とメモリセルMの出力との論理積を生成する。すなわち、自分が不一致スピンユニットであり、かつ、隣接スピンユニットの少なくとも一つが不一致スピンユニットであって0でない相互作用がある場合、ANDゲート601はHIGHを出力し、その結果はメモリセルMに書き込まれる。
図9AおよびBにより上記処理の意味を説明する。図9Aは、一組のイジングチップ13Aのスピンの値を(a)に、13Bのスピンユニットのスピンの値を(b)に、模式的に示したものである。白と黒の丸がスピンの上下を示している。各スピンユニットは、自分の上下左右の4個のスピンユニットと相互作用を持つものとする。図8Bの処理では、一組のイジングチップ13Aと13Bは、チップ間配線14経由で自分のスピンの値を互いに知らせ、スピンの値が相手と異なる場合、メモリセルMにHIGHを書き込む。図9B(a)に、メモリセルMにHIGHが書き込まれたスピンユニットの様子を、斜線を付した丸により示す。
次に、図8CおよびDの処理では、メモリセルMにHIGHが書き込まれており、かつ、隣接スピンユニットのメモリセルMにHIGHが書き込まれており、かつ、その隣接スピンユニットとの相互作用係数が0でない場合、メモリセルMの内容はHIGHに維持される。
図9B(b)に、メモリセルMにHIGHが維持されたスピンユニットの様子を、斜線を付した丸により示し、0でない相互作用を二重線で示す。すなわち、不一致スピンユニットであるが孤立したスピンユニット901を除き、クラスター(集団)となっているスピンユニット902を抽出することができる。
これらのクラスターは、不一致スピンユニットであって、相互作用計算において自己のスピン状態の変更に影響がある他のスピンを持ち、当該他のスピンも不一致スピンユニットであるものの集合といえる。
以上はクラスタリング手法の一例である。上記の他にも、自分が不一致スピンユニットであり、かつ、隣接スピンユニットの少なくとも2つ(あるいは任意の数)が不一致スピンユニットであって0でない相互作用がある場合、のようにクラスタリング条件は適宜設定することができる。
クラスター化の後、状態交換を行う(処理S733)。ここで信号RVをHIGHとする。このときセレクタ58はメモリセルMからの信号を出力する。そしてXORゲート57は、メモリセルMの値およびメモリセルNの値の排他的論理和を出力してメモリセルNに書き込む(図8F)。この結果、メモリセルMの値がHIGHの場合にはメモリセルNの値は反転し、メモリセルMの値がLOWの場合にはメモリセルNの値は変化しない。この動作は、図9B(b)の斜線で示すスピンユニットの値を反転させることに相当し、クラスター交換モンテカルロ法におけるクラスター交換に相当する。
以上の処理が1つの単位となり、基本的にすべてのスピンユニットで並列処理が行われる。この処理により、他のイジングチップとスピンの値が異なる領域を抽出し、纏めてスピンを反転させることにより、イジングチップ内の処理だけで複数のスピンの値を同時に変更し、効率的に基底状態を探索することができる。前記処理を繰り返すことで、クラスター交換モンテカルロ法を実現することが可能となる。
相互作用演算は所定の探索完了条件を達成した際には、終了となる(処理S715)。
<(4)イジングチップの制御手順>
イジングチップの制御手順について説明する。図10は、本実施の形態において、MCMCの処理手順を示すフローチャートである。
図10は、本実施の形態の情報処理装置1において、CPU3(図1)により実行される基底状態探索処理の処理手順を示す。この処理は、主に図7の相互作用演算によるスピン更新処理S710に対応する。
CPU3は、ステップSP1については図示しない問題変換プログラムに基づいて処理する。これ以降の処理(ステップSP2〜ステップSP11)についてはマルチイジングチップ制御プログラム9(図1)に基づいて、必要なマルチイジングチップ6(図2)のコントローラ15(図2)を介して当該マルチイジングチップ6内のイジングチップ13を制御することにより、これらのイジングチップ13において基底状態探索を実行させる。なお、ステップSP1の処理と、ステップSP2〜ステップSP11の処理とを別々のタイミングで実行するようにしてもよい。
またCPU3は、各マルチイジングチップ6内のイジングチップ13や、イジングチップ13内のスピンユニット40をマルチイジングチップ6内のコントローラ15(図2)を介して制御するが、以下においては理解の容易化のため、コントローラ15の存在を省略して説明を行う。
CPU3は、ユーザからの指示等によりこの基底状態探索処理を開始すると、まず、問題データ7(図1)をイジングモデルの形式のデータに変換する(ステップSP1)。問題データ7がすでにイジングモデルの形式のデータである場合、ステップSP1は省略する。
続いて、CPU3は、変換後のイジングモデルの相互作用係数および外部磁場係数を必要なマルチイジングチップ6の各イジングチップ13内の各スピンユニット40にそれぞれ設定する(ステップSP2)。
次に初期スピン配列を生成してスピンを初期化する。本実施例では、数値はすべて同じ値でもよいが、通常はスピンの初期値はランダムな値とする。メモリマップに基づいて、係数と初期スピン配列をスピンアレイに書き込む。(ステップSP3)。
モデルに基づいてビット確率を設定し(ステップSP4)、相互作用回数を設定する(ステップSP5)。相互作用演算を実行し(ステップSP6)、すべてのスピンアレイについて実行が完了したかどうかを判定する(ステップSP7)。未完了ならば、次のスピンアレイに対して相互作用演算を実行する(ステップSP6)。すべてのスピンアレイに実行が完了したら、規定の相互作用回数を実行したかどうか判定する(ステップSP8)。未完了であれば、ビット確率を更新し(ステップSP9)、相互作用回数をインクリメントし(ステップSP10)、相互作用計算を継続する。
図7で説明したように、相互作用演算によるスピン更新の間に、適宜クラスター交換処理を挿入する。挿入回数は1回もしくは複数回である。挿入のタイミングは、相互作用回数を設定する際に同時に定めておいてもよい(ステップSP5)。
ビット確率の更新は、乱数RNDを調整することで行う。本実施例では、スピンの値を所定確率で反転させるために、乱数発生器8を用いる。更新においては、例えばスピンの値を仮想的な温度Tで決まる確率で反転させ、基底状態探索の初期では高い確率でスピンの値を反転させ、終期では低い確率でスピンの値を反転させるように調整する。このようにすると、基底状態探索の過程で、高い温度から徐々に冷却する物理的なアニーリングを模倣することができる。
規定の相互作用回数を実行済であれば、スピンの値を読みだす(ステップSP11)。そしてCPU3は、この後、この基底状態探索処理を終了する。以上のようにして、MCMCを実行することができる。
本実施例では、各イジングチップ13は同一モデルの基底状態探索を行っており、係数設定(ステップpSP2)〜相互作用回数の設定(ステップSP5)まで共通の設定がなされる。しかし、SP6以降の相互作用演算では、各スピンユニットは乱数RNDにより確率的に異なる結果を導くことになる。
<(5)本実施の形態の効果>
以上説明した本実施の形態の半導体装置および情報処理装置によれば、安価かつ容易に製造でき、例えばイジングモデルなどのような任意の相互作用モデルの計算を行うことが可能となる。すなわち、本実施の形態の情報処理装置では、単一の変数を逐次的に更新するのではなく、複数の変数を同時に更新しつつMCMCを実行することができる。かくして、イジングモデルの基底状態または当該基底状態の近似解を精度高く得ることやサンプリングを高精度に行うための情報処理装置を、安価かつ容易に製造できる。より詳細には、以下の通りである。
本実施例によれば、イジングモデルに代表される相互作用モデルに対してMCMCを実現する場合において、効率的な状態探索に求められる状態遷移を、データ転送を抑制して高速に実現可能となる。すなわち、外部接続の計算機へ情報を転送する負荷を低減し,例えばイジングモデルなどのような任意の相互作用ネットワークに対して高速に計算することが可能となる。本実施例によれば、適切なサンプリングを実現するための条件を満たしつつスピン配列を大幅に変えることなどによって、MCMCを高速化させるハードウェアが実現される。
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
例えば、上述した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
1…情報処理装置、2…システムバス、3…CPU、4…メモリ、5…記憶装置、6…マルチイジングチップ、7…問題データ、8…乱数発生器、9…マルチイジングチップ制御プログラム、11…イジングチップ群、12…制御部、13…イジングチップ、14…チップ間配線、15…コントローラ、16…相互作用クロック生成器、20…スピンアレイ、24…チップ間接続部、40…スピンユニット、44…演算回路、38…乱数信号線

Claims (9)

  1. 第1のアレイ回路と第2のアレイ回路を備える情報処理装置であって、
    前記第1のアレイ回路および前記第2のアレイ回路の其々は複数のユニットを備え、
    前記複数のユニットの其々は、
    相互作用モデルの1つのノードの状態を示す値を記憶する第1のメモリセルと、
    自己と同一のアレイ回路内で自己ユニットに接続された隣接ユニットのノードからの、相互作用を示す相互作用係数を記憶する第2のメモリセルと、
    前記第1のメモリセルの値を制御するためのフラグを記憶する第3のメモリセルと、
    前記隣接ユニットのノードの状態を示す値および前記相互作用係数に基づいて、前記1つのノードの次状態を示す値を決定する第1の論理回路と、
    前記フラグの値に応じて前記第1のメモリセルの値を変更する第2の論理回路と、を有し、
    前記複数のユニットの其々が、自己ユニットの前記第1のメモリセルの内容を、他のアレイ回路の対応するユニットに送信し、かつ前記対応するユニットの前記第1のメモリセルの内容を受信するための、アレイ間配線を有し、
    前記フラグは前記第2の論理回路により、前記アレイ間配線で受信される情報に基づいて生成される、
    情報処理装置。
  2. 前記第2の論理回路は、
    自己ユニットの前記第1のメモリセルの内容と、前記対応するユニットの前記第1のメモリセルの内容の異同を判定し、異同判定結果を得る異同判定回路を有し、
    前記異同判定結果を用いて、前記フラグを生成する、
    請求項1記載の情報処理装置。
  3. 前記第2の論理回路は、
    自己と同一のアレイ回路内で自己ユニットに接続された隣接ユニットの前記異同判定結果、前記第2のメモリセルに記憶された前記相互作用係数、および自己ユニットの前記異同判定結果に基づいて、前記フラグを生成するフラグ生成回路と、
    前記生成されたフラグに基づいて前記第1のメモリセルの内容を変更する状態交換回路を有する、
    請求項2記載の情報処理装置。
  4. 前記フラグ生成回路は、
    自己ユニットに接続された隣接ユニットのうち、前記異同判定結果が「異なる」であって当該隣接ユニットのノードからの相互作用を示す相互作用係数が0でないものが少なくとも一つあり、かつ、自己の前記異同判定結果が「異なる」である場合、前記第1のメモリセルの内容を変更するフラグを生成する、
    請求項3記載の情報処理装置。
  5. 前記第1のメモリセルの内容は、スピンの値に対応するHIGHまたはLOWであり、
    前記状態交換回路は、前記フラグに基づいて前記第1のメモリセルの内容を反転させる、
    請求項4記載の情報処理装置。
  6. 前記第1の論理回路複数サイクル動作、当該サイクル動作の間の所定タイミングに、前記第2の論理回路作する、
    請求項1記載の情報処理装置。
  7. 複数のイジングチップと、前記複数のイジングチップを制御するコントローラを含む情報処理装置において、
    前記複数のイジングチップの其々は複数のユニットを備え、
    前記複数のユニットの其々はスピン状態を保持し、
    前記コントローラは、前記複数のイジングチップのうち一組のイジングチップに対して、対応するユニットのスピン状態の値を比較するよう指示し、
    前記コントローラは、前記一組のイジングチップに対して、対応するユニットのスピン状態の値が異なるスピンのうち、一部のスピンの値を反転するよう指示する、
    情報処理装置。
  8. 前記コントローラは、
    相互作用演算による前記スピン状態の更新を行う第1の情報処理と、前記スピン状態の値の比較と反転を行う第2の情報処理との処理タイミングの切り替えの指示を行い、
    所定サイクルで繰り返される前記第1の情報処理のサイクルの間に、前記第2の情報処理を挿入する、
    請求項7記載の情報処理装置。
  9. 前記対応するユニットのスピン状態の値が異なるスピンのうち、一部のスピンとは、
    前記第1の情報処理において自己のスピン状態の変更に影響がある他のスピンがあり、
    当該他のスピンの値が対応するユニットのスピン状態の値と異なっているスピンである、
    請求項8記載の情報処理装置。
JP2017111694A 2017-06-06 2017-06-06 情報処理装置 Active JP6841722B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017111694A JP6841722B2 (ja) 2017-06-06 2017-06-06 情報処理装置
US15/907,312 US10839044B2 (en) 2017-06-06 2018-02-28 Information processing apparatus that controls a semiconductor device that calculates an interaction model as an accelerator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017111694A JP6841722B2 (ja) 2017-06-06 2017-06-06 情報処理装置

Publications (2)

Publication Number Publication Date
JP2018206127A JP2018206127A (ja) 2018-12-27
JP6841722B2 true JP6841722B2 (ja) 2021-03-10

Family

ID=64460644

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017111694A Active JP6841722B2 (ja) 2017-06-06 2017-06-06 情報処理装置

Country Status (2)

Country Link
US (1) US10839044B2 (ja)
JP (1) JP6841722B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7273288B2 (ja) * 2019-02-25 2023-05-15 富士通株式会社 サンプリング装置及びサンプリング装置の制御方法
JP7248907B2 (ja) * 2019-08-14 2023-03-30 富士通株式会社 最適化装置および最適化装置の制御方法
JP2021131723A (ja) 2020-02-19 2021-09-09 富士通株式会社 情報処理方法、情報処理装置及びプログラム
JP7417074B2 (ja) 2020-02-19 2024-01-18 富士通株式会社 最適化装置、最適化方法及び最適化装置の制御プログラム
JP7410394B2 (ja) * 2020-03-26 2024-01-10 富士通株式会社 最適化装置及び最適化方法
JP7410395B2 (ja) * 2020-03-26 2024-01-10 富士通株式会社 最適化装置及び最適化方法
JP2021168096A (ja) * 2020-04-13 2021-10-21 富士通株式会社 サンプリング装置、サンプリング方法及びサンプリングプログラム
JP7528531B2 (ja) * 2020-05-20 2024-08-06 富士通株式会社 最適化装置、最適化プログラムおよび最適化方法
CN115907005B (zh) * 2023-01-05 2023-05-12 华南理工大学 一种基于片上网络的大规模全连接伊辛模型退火处理电路

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9633715B2 (en) 2013-05-31 2017-04-25 Hitachi, Ltd. Semiconductor device capable of attaining ground state in an ising model
JP6021864B2 (ja) * 2014-08-29 2016-11-09 株式会社日立製作所 半導体装置および情報処理装置
JP5864684B1 (ja) * 2014-08-29 2016-02-17 株式会社日立製作所 半導体装置
JP5894645B1 (ja) * 2014-08-29 2016-03-30 株式会社日立製作所 半導体装置及びその品質管理方法
JP5922203B2 (ja) * 2014-08-29 2016-05-24 株式会社日立製作所 半導体装置
JP5922202B2 (ja) 2014-08-29 2016-05-24 株式会社日立製作所 半導体装置、画像セグメンテーション方法、および画像処理装置
US10073655B2 (en) * 2014-09-03 2018-09-11 Hitachi, Ltd. Semiconductor integrated circuit apparatus

Also Published As

Publication number Publication date
US10839044B2 (en) 2020-11-17
US20180349325A1 (en) 2018-12-06
JP2018206127A (ja) 2018-12-27

Similar Documents

Publication Publication Date Title
JP6841722B2 (ja) 情報処理装置
JP6979331B2 (ja) 情報処理装置および情報処理方法
EP3343468B1 (en) Semiconductor device and information processing device
JP5864684B1 (ja) 半導体装置
WO2020068437A1 (en) Training of neural networks by including implementation cost as an objective
US10037391B2 (en) Semiconductor device
Bavikadi et al. A survey on machine learning accelerators and evolutionary hardware platforms
JP2016051314A (ja) 半導体装置
JP2019179364A (ja) 半導体装置、情報処理システム、および情報処理方法
WO2015132883A1 (ja) 半導体装置および情報処理装置
JP2016051326A (ja) 半導体装置および情報処理装置
WO2017017807A1 (ja) 情報処理装置及び方法
JP5894645B1 (ja) 半導体装置及びその品質管理方法
JP6925546B1 (ja) 演算システム、情報処理装置、および最適解探索処理方法
US9666252B2 (en) Semiconductor device for calculating an interaction model
Smagulova et al. Resistive neural hardware accelerators
Mange et al. A macroscopic view of self-replication
CN113012730A (zh) 具有微凸块以发射用于机器学习操作的数据的存储器装置
JP6207583B2 (ja) 半導体装置および情報処理方法
CN114638368B (zh) 一种用于qram架构的量子线路的构建方法及装置
JP5903471B2 (ja) 半導体装置および情報処理装置
Szász et al. Artificial life and communication strategy in bio-inspired hardware systems with FPGA-based cell networks
Chen et al. Hidden-ROM: A compute-in-ROM architecture to deploy large-scale neural networks on chip with flexible and scalable post-fabrication task transfer capability
CN112908373A (zh) 用于使用微凸块执行机器学习操作的系统
CN112908372A (zh) 使用不同微凸块发射用于机器学习操作的数据

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200923

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201022

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210218

R150 Certificate of patent or registration of utility model

Ref document number: 6841722

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150