(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024077351
(43)【公開日】2024-06-07
(54)【発明の名称】データ処理装置、プログラム及びデータ処理方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20240531BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022189402
(22)【出願日】2022-11-28
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】渡部 康弘
(57)【要約】
【課題】複数ビット遷移処理の実装を容易にする。
【解決手段】遷移候補決定回路13は、メモリ12に記憶した局所場の値に基づいて、複数の状態変数のそれぞれの値が変化したときの評価関数の値の変化量を計算するとともに、所定の時点から、複数の状態変数のうち値を変化させる候補を1つずつ決定し、更新回路14は、候補が決定されるたび、メモリ12に記憶されている候補の値と局所場の値を更新し、累積値計算回路15は、候補の値を変化させたときの上記変化量の累積値を計算し、判定回路16は、累積値に基づいて、2以上の第1の数の候補の値の変化を受け入れるか否かを判定し、制御回路17は、判定回路16が第1の数の候補の値の変化を受け入れないと判定した場合、更新された複数の状態変数の値と更新された局所場の値を、メモリ12に記憶されている上記所定の時点における値に戻す。
【選択図】
図1
【特許請求の範囲】
【請求項1】
組合せ最適化問題の評価関数に含まれる複数の状態変数の値と、前記複数の状態変数のそれぞれにおける局所場の値と、所定の時点における前記複数の状態変数の値と、前記所定の時点における前記局所場の値と、を記憶するメモリと、
前記局所場の値に基づいて、前記複数の状態変数のそれぞれの値が変化したときの前記評価関数の値の変化量を計算するとともに、前記所定の時点から、前記複数の状態変数のうち値を変化させる候補を1つずつ決定する遷移候補決定回路と、
前記候補が決定されるたび、前記メモリに記憶されている前記候補の値と前記局所場の値を更新する更新回路と、
前記候補の値を変化させたときの前記変化量の累積値を計算する累積値計算回路と、
前記累積値に基づいて、2以上の第1の数の前記候補の値の変化を受け入れるか否かを判定する判定回路と、
前記判定回路が前記第1の数の前記候補の値の変化を受け入れないと判定した場合、更新された前記複数の状態変数の値と更新された前記局所場の値を、前記所定の時点における前記複数の状態変数の値と前記局所場の値に戻す制御回路と、
を有するデータ処理装置。
【請求項2】
前記制御回路は、前記遷移候補決定回路に、前記変化量に基づいて前記複数の状態変数のそれぞれの値の変化を許容するか否かを判定する第1の処理をさせるか、前記所定の時点から、前記候補を1つずつ決定する第2の処理をさせるかを切り替え、
前記所定の時点は、前記第2の処理が開始する時点である、
請求項1に記載のデータ処理装置。
【請求項3】
前記メモリは、前記複数の状態変数の値と前記局所場の値を、複数のレプリカの数分記憶し、
前記制御回路は、前記遷移候補決定回路と、前記更新回路と、前記累積値計算回路と、前記判定回路に、前記複数のレプリカに対するパイプライン処理を行わせる、
請求項1に記載のデータ処理装置。
【請求項4】
前記判定回路は、前記第1の数より少ない第2の数の前記候補の値が変化した場合の前記変化量の前記累積値に基づいて、前記第2の数の前記候補の値の変化を受け入れるか否かを判定する、
請求項1に記載のデータ処理装置。
【請求項5】
前記遷移候補決定回路は、複数のモジュールに分かれており、前記複数のモジュールは、前記複数の状態変数のうち互いに異なる状態変数群の範囲内で、前記候補を1つずつn個決定し、
前記メモリは、前記複数の状態変数の値と、前記局所場の値と、前記所定の時点における前記複数の状態変数の値と、前記所定の時点における前記局所場の値によるセットを、前記複数のモジュールの数で分割して記憶し、
前記更新回路は、前記複数のモジュールのそれぞれに対応して記憶されている前記複数の状態変数の値と前記局所場の値とを、前記複数のモジュールのそれぞれが決定した前記候補にしたがって更新し、
前記累積値計算回路は、前記複数のモジュールのそれぞれに対して前記累積値を計算するとともに、前記複数のモジュールのそれぞれに対して計算した前記累積値のうちの1つを選択し、
前記判定回路は、選択された前記累積値に基づいて、選択された前記累積値に対応した前記第1の数の前記候補の値の変化を受け入れるか否かを判定する、
請求項1に記載のデータ処理装置。
【請求項6】
前記制御回路は、
前記判定回路が前記第1の数の前記候補の値の変化を受け入れると判定した場合、前記更新回路に、前記メモリに記憶されている前記複数のモジュールの前記複数の状態変数の値と前記局所場の値を、前記所定の時点における前記複数の状態変数の値と前記局所場の値に戻したのち、前記第1の数の前記候補にしたがって更新させ、
前記判定回路が前記第1の数の前記候補の値の変化を受け入れないと判定した場合、前記複数のモジュールの更新された前記複数の状態変数の値と更新された前記局所場の値を、前記所定の時点における前記複数の状態変数の値と前記局所場の値に戻す、
請求項5に記載のデータ処理装置。
【請求項7】
組合せ最適化問題の評価関数に含まれる複数の状態変数の値と、前記複数の状態変数のそれぞれにおける局所場の値と、所定の時点における前記複数の状態変数の値と、前記所定の時点における前記局所場の値と、をメモリに記憶し、
前記局所場の値に基づいて、前記複数の状態変数のそれぞれの値が変化したときの前記評価関数の値の変化量を計算するとともに、前記所定の時点から、前記複数の状態変数のうち値を変化させる候補を1つずつ決定し、
前記候補が決定されるたび、前記メモリに記憶されている前記候補の値と前記局所場の値を更新し、
前記候補の値を変化させたときの前記変化量の累積値を計算し、
前記累積値に基づいて、2以上の第1の数の前記候補の値の変化を受け入れるか否かを判定し、
前記第1の数の前記候補の値の変化を受け入れないと判定した場合、更新された前記複数の状態変数の値と更新された前記局所場の値を、前記所定の時点における前記複数の状態変数の値と前記局所場の値に戻す、
処理をコンピュータに実行させるプログラム。
【請求項8】
メモリが、組合せ最適化問題の評価関数に含まれる複数の状態変数の値と、前記複数の状態変数のそれぞれにおける局所場の値と、所定の時点における前記複数の状態変数の値と、前記所定の時点における前記局所場の値と、を記憶し、
遷移候補決定回路が、前記局所場の値に基づいて、前記複数の状態変数のそれぞれの値が変化したときの前記評価関数の値の変化量を計算するとともに、前記所定の時点から、前記複数の状態変数のうち値を変化させる候補を1つずつ決定し、
更新回路が、前記候補が決定されるたび、前記メモリに記憶されている前記候補の値と前記局所場の値を更新し、
累積値計算回路が、前記候補の値を変化させたときの前記変化量の累積値を計算し、
判定回路が、前記累積値に基づいて、2以上の第1の数の前記候補の値の変化を受け入れるか否かを判定し、
制御回路が、前記判定回路が前記第1の数の前記候補の値の変化を受け入れないと判定した場合、更新された前記複数の状態変数の値と更新された前記局所場の値を、前記所定の時点における前記複数の状態変数の値と前記局所場の値に戻す、
データ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、プログラム及びデータ処理方法に関する。
【背景技術】
【0002】
組合せ最適化問題の解を探索する際に、組合せ最適化問題を、磁性体のスピンの振る舞いを表すイジングモデルに変換する手法がある。そして、マルコフ連鎖モンテカルロ法により、イジング型の評価関数の値、つまりイジングモデルのエネルギーに相当する値が極小になるイジングモデルの状態の探索が行われる。評価関数の極小値のうちの最小値になる状態が最適解となる。イジング型の評価関数に含まれる状態変数は、0または1の値を取るバイナリ変数である。状態変数はビットと表記されてもよい。なお、評価関数の符号を変えれば、評価関数の値が極大になる状態を探索することもできる。
【0003】
以下、マルコフ連鎖モンテカルロ法を、MCMC(Markov-Chain Monte Carlo)法と略す。また、MCMC法による処理をMCMC処理と呼ぶ場合もある。MCMC処理では、たとえば、メトロポリス法またはギブス法で規定される状態遷移の受け入れ確率で、その状態遷移が受け入れられる。MCMC法の一種として、疑似焼き鈍し法やレプリカ交換法がある。
【0004】
従来、MCMC処理の1試行あたりに状態変数の変化(以下、遷移という)を許容するビット数を1とする処理(以下単一ビット遷移処理という)がある。しかし、単一ビット遷移処理では、解が局所解に嵌まった場合に、その局所解から脱出することが難しくなり、探索速度が低下する場合がある。
【0005】
そのため、複数ビットの遷移が生じる場合の評価関数の値の変化量の計算結果に基づいて、当該複数ビットの遷移の可否を判定し、遷移が許容された場合には複数ビットの遷移を生じさせる処理が提案されている(たとえば、特許文献1-4参照)。以下このような処理を複数ビット遷移処理という。複数ビット遷移処理によれば、解の局所解からの脱出が促進され、探索範囲を広げることができる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2020-021209号公報
【特許文献2】特開2020-064536号公報
【特許文献3】特開2021-157361号公報
【特許文献4】特開2021-165965号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来の複数ビット遷移処理では、複数ビットの遷移が生じる場合の評価関数の値の変化量を計算するための構成やデータを伝搬する構成などが複雑となるため、実装が容易ではなかった。
【0008】
1つの側面では、本発明は、複数ビット遷移処理の実装が比較的容易に実現可能なデータ処理装置、プログラム及びデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの実施態様では、組合せ最適化問題の評価関数に含まれる複数の状態変数の値と、前記複数の状態変数のそれぞれにおける局所場の値と、所定の時点における前記複数の状態変数の値と、前記所定の時点における前記局所場の値と、を記憶するメモリと、前記局所場の値に基づいて、前記複数の状態変数のそれぞれの値が変化したときの前記評価関数の値の変化量を計算するとともに、前記所定の時点から、前記複数の状態変数のうち値を変化させる候補を1つずつ決定する遷移候補決定回路と、前記候補が決定されるたび、前記メモリに記憶されている前記候補の値と前記局所場の値を更新する更新回路と、前記候補の値を変化させたときの前記変化量の累積値を計算する累積値計算回路と、前記累積値に基づいて、2以上の第1の数の前記候補の値の変化を受け入れるか否かを判定する判定回路と、前記判定回路が前記第1の数の前記候補の値の変化を受け入れないと判定した場合、更新された前記複数の状態変数の値と更新された前記局所場の値を、前記所定の時点における前記複数の状態変数の値と前記局所場の値に戻す制御回路と、を有するデータ処理装置が提供される。
【0010】
また、1つの実施態様では、プログラムが提供される。
また、1つの実施態様では、データ処理方法が提供される。
【発明の効果】
【0011】
1つの側面では、本発明は、複数ビット遷移処理の実装が比較的容易に実現できる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施の形態のデータ処理装置の一例を示す図である。
【
図2】メモリ、更新回路及び遷移候補決定回路の回路例を示す図である。
【
図3】第1の実施の形態のデータ処理方法の一例の流れを示すフローチャートである。
【
図4】単一ビット遷移処理の一例の流れを示すフローチャートである。
【
図5】複数ビット遷移処理の一例の流れを示すフローチャートである。
【
図6】複数ビット遷移処理の他の例の流れを示すフローチャートである。
【
図8】第2の実施の形態のデータ処理装置の一例を示す図である(その1)。
【
図9】第2の実施の形態のデータ処理装置の一例を示す図である(その2)。
【
図10】複数ビット遷移処理の一例の流れを示すフローチャートである。
【
図11】複数ビット遷移処理の他の例の流れを示すフローチャートである。
【
図13】データ処理装置の一例のハードウェア例を示す図である。
【
図14】コンピュータのハードウェア例を示す図である。
【発明を実施するための形態】
【0013】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
第1の実施の形態のデータ処理装置は、組合せ最適化問題に対する解を、疑似焼き鈍し法、レプリカ交換法などのMCMC法を用いて探索し、探索した解を出力する。
【0014】
組合せ最適化問題は、たとえば、イジング型の評価関数に変換される。組合せ最適化問題の評価関数は、目的関数やエネルギー関数などと呼ばれることもある。評価関数は、複数の状態変数と複数の重み係数を含む。イジング型の評価関数では、状態変数は、0または1の値を取るバイナリ変数である。状態変数はビットと表記されてもよい。組合せ最適化問題の解は、複数の状態変数の値により表される。評価関数の値を最小化する解が、組合せ最適化問題の最適解に対応する。以下、評価関数の値を、エネルギーという。
【0015】
イジング型の評価関数は、式(1)で表せる。
【0016】
【0017】
状態ベクトルxは、複数の状態変数を要素とし、イジングモデルの状態を表す。式(1)は、QUBO(Quadratic Unconstrained Binary Optimization)形式で定式化された評価関数である。なお、エネルギーを最大化する問題の場合には、評価関数の符号を逆にすればよい。
【0018】
式(1)の右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。添え字i,jは状態変数のインデックスである。xiは、i番目の状態変数である。xjは、j番目の状態変数である。以下では、状態変数の数は、N個であるものとする。Wijは、i番目の状態変数とj番目の状態変数との間の重み、または、結合の強さを示す重み係数である。Wij=Wjiであり、Wii=0である。状態変数の数がN個の場合、Wijの数はN×N個である。
【0019】
式(1)の右辺第2項は、全状態変数の各々のバイアスと状態変数の値との積の総和を求めたものである。biは、i番目の状態変数に対するバイアスを示している。
状態変数xiの値が変化して1-xiとなると、状態変数xiの変化量は、Δxi=(1-xi)-xi=1-2xiと表せる。したがって、評価関数E(x)に対して、状態変数xiの変化に伴うエネルギーの変化量(ΔEi)は、以下の式(2)で表せる。
【0020】
【0021】
hiは局所場(LF:Local Field)と呼ばれる。xjの値が変化したときのhiの変化量は、Δhi
(j)=WijΔxjと表される。
解の探索において、エネルギーの変化量がΔEiとなる状態遷移、すなわち、状態変数xiの値の変化を受け入れるか否かを決定するためにメトロポリス法やギブス法が用いられる。具体的には、ある状態から当該状態よりもエネルギーの低い他の状態への遷移を探索する近傍探索において、エネルギーが下がる状態だけでなく、エネルギーが上がる状態への遷移が確率的に受け入れられる。たとえば、ΔEiを生じさせる状態変数の値の変化を受け入れる受入確率Aiは、式(3)で表せる。
【0022】
【0023】
βは温度を表すパラメータであるT(T>0)の逆数(β=1/T)であり、逆温度と呼ばれる。以下、βやTを温度値と呼ぶこともある。min演算子は、引数のうちの最小値を取ることを示す。式(3)の右辺上側はメトロポリス法に相当する。式(3)の右辺下側はギブス法に相当する。
【0024】
図1は、第1の実施の形態のデータ処理装置の一例を示す図である。
データ処理装置10は、重み係数メモリ11、メモリ12、遷移候補決定回路13、更新回路14、累積値計算回路15、判定回路16、制御回路17、エネルギー更新保持回路18、比較回路19、最低エネルギー更新保持回路20を有する。
【0025】
重み係数メモリ11は、式(1)に示したN×N個のWijを記憶する。重み係数メモリ11は、たとえば、DRAM(Dynamic Random Access Memory)などの電子回路である揮発性の記憶装置やフラッシュメモリなどの電子回路である不揮発性の記憶装置などにより実現できる。重み係数メモリ11は、HDD(Hard Disk Drive)などの記憶装置であってもよい。
【0026】
メモリ12は、評価関数に含まれる複数の状態変数(x
1~x
N)の値(以下、状態という場合もある)と、x
1~x
Nのそれぞれにおける局所場(h
1~h
N)の値を記憶する。さらに、メモリ12は、解探索の所定の時点におけるx
1~x
Nの値と、所定の時点におけるh
1~h
Nの値を記憶する。ここで、所定の時点は、たとえば、複数ビット遷移処理が開始する時点(以下、開始点という)である。
図1では、開始点におけるx
1~x
Nの値が開始点状態、開始点におけるh
1~h
Nの値が開始点局所場と表記されている。
【0027】
メモリ12は、重み係数メモリ11よりも記憶容量が小さいものを用いることができる。メモリ12は、たとえば、SRAM(Static Random Access Memory)やレジスタなどの電子回路である揮発性の記憶装置などにより実現できる。
【0028】
遷移候補決定回路13は、h1~hNに基づいて、x1~xNのそれぞれの値が変化したときのエネルギーの変化量(ΔE1~ΔEN)を計算する。遷移候補決定回路13は、ΔE1~ΔENを並列に計算できる。さらに、遷移候補決定回路13は、開始点における複数の状態変数のうち値を変化させる候補(以下遷移候補という)を1つずつ決定する。
【0029】
以下の例では、データ処理装置10は、nビットの複数ビット遷移処理を行うものとして説明する。nは、遷移ビット深さと呼ぶこともできる。遷移候補決定回路13は、上記遷移候補を1つずつn個決定する。
【0030】
遷移候補決定回路13は、遷移候補として決定した状態変数のインデックスと、遷移候補の値を変化させたときのエネルギーの変化量(ΔE)を出力する。遷移候補を決定する方法の例と、遷移候補決定回路13の例については後述する(
図2参照)。
【0031】
更新回路14は、遷移候補が決定されるたび、メモリ12に記憶されているx
1~x
Nの値とh
1~h
Nの値を、遷移候補の値が変化した場合の値に更新する。以下の例では、更新回路14は、n-1個の遷移候補が決定されるまで、上記の更新を行うものとする。x
jが遷移候補である場合、h
iは、h
i=h
i+W
ijΔx
jという値に更新される。なお、このとき開始点における状態(開始点状態)と局所場(開始点局所場)は更新されない。ここでの更新は仮の更新であり、後述の処理により、更新された状態や局所場の値は、開始点状態、開始点局所場に戻されることがある。
図1の例では、更新回路14は、制御回路17の制御に基づいて上記の更新処理を行う。
【0032】
累積値計算回路15は、遷移候補の値を変化させたときのエネルギーの変化量の累積値を計算する。累積値計算回路15は、たとえば、加算器やレジスタなどを用いて実現できる。
【0033】
判定回路16は、MCMC法にしたがって、エネルギーの変化量の累積値に基づいて、n個の遷移候補の値の変化を受け入れるか否かを判定する。判定回路16は、たとえば、前述の式(3)のΔEiとして、上記累積値を用いて、式(3)の受入確率Aiで、n個の遷移候補の値の変化を受け入れるように判定を行う。このような判定を行う判定回路16は、たとえば、0から1の値をもつ一様乱数と、Aiとの比較結果に基づいた値を出力する比較器などを用いて実現できる。
【0034】
制御回路17は、判定回路16がn個の遷移候補の値の変化を受け入れると判定した場合、更新回路14に、メモリ12に記憶されているx1~xNの値と、h1~hNの値を、n番目の遷移候補の値が変化した場合の値に更新させる。また、制御回路17は、判定回路16がn個の遷移候補の値の変化を受け入れないと判定した場合、更新されたx1~xNの値と更新されたh1~hNの値を、記憶されている開始点状態と開始点局所場の値に戻す。
【0035】
また、制御回路17は、
図1に示した各要素の動作を制御する機能を有する。
たとえば、制御回路17は、遷移候補決定回路13が出力するインデックスに対応する状態変数と他の状態変数との間の重み係数を、重み係数メモリ11から更新回路14に読み出させる制御を行う。さらに、制御回路17は、判定回路16による判定処理で用いられる温度値(Tまたはβ)を制御する。MCMC法として疑似焼き鈍し法が用いられる場合、制御回路17は、たとえば、Tの値を、所定のスケジュールで徐々に小さくしていく。MCMC法としてレプリカ交換法が用いられる場合、制御回路17は、イジングモデルの複数のレプリカについて、それぞれ独立に上記の各回路の処理が行われるように制御を行う。制御回路17は、複数のレプリカのそれぞれに異なる温度値を設定し、所定の周期において所定の交換確率で、レプリカ間で温度値を交換する。
【0036】
また、制御回路17は、判定回路16が出力する判定結果に基づいて、遷移候補決定回路13に、単一ビット遷移処理を実行させるか複数ビット遷移処理を実行させるか、切り替えてもよい。たとえば、単一ビット遷移処理での解探索時に、値の変化を受け入れないことを示す判定結果が所定期間続いた場合には、制御回路17は、単一ビット遷移処理から複数ビット遷移処理に切り替える。
【0037】
単一ビット遷移処理では、遷移候補決定回路13は、ΔE1~ΔENに基づいてx1~xNのそれぞれに対して、値の変化を許容するか否かを判定する処理を行う。このときの判定は、判定回路16と同様に、MCMC法にしたがって行われる。複数ビット遷移処理では、遷移候補決定回路13は、開始点から、遷移候補を1つずつ決定する処理を行う。
【0038】
複数ビット遷移処理による解探索時に、値の変化を受け入れないことを示す判定結果が所定期間続いた場合には、制御回路17は、複数ビット遷移処理におけるnの値を増やしてもよい。制御回路17は、単一ビット遷移処理から複数ビット遷移処理に切り替える。複数ビット遷移処理による解探索時に、値の変化を受け入れることを示す判定結果が得られた場合、または、そのような判定結果が所定期間続いた場合、制御回路17は、複数ビット遷移処理から単一ビット遷移処理に切り替えてもよい。
【0039】
また、制御回路17は、判定回路16がn個の遷移候補の値の変化を受け入れないと判定した場合、同じn個の遷移候補が再び選択されないように、遷移候補決定回路13を制御してもよい。
【0040】
エネルギー更新保持回路18は、たとえば、レジスタなどの保持回路を有し、エネルギーを保持する。エネルギー更新保持回路18は、判定回路16がn個の遷移候補の値の変化を受け入れると判定した場合、累積値計算回路15が計算したΔEの累積値を取得し、その累積値によりエネルギーを更新し、出力する。
【0041】
比較回路19は、エネルギー更新保持回路18に保持されているエネルギーと、最低エネルギー更新保持回路20に保持されている最低エネルギーとを比較する。
最低エネルギー更新保持回路20は、たとえば、レジスタなどの保持回路を有し、これまでに得られた最低エネルギーを保持する。最低エネルギー更新保持回路20は、比較回路19が、これまでに得られた最低エネルギーよりも、エネルギー更新保持回路18に保持されているエネルギーが小さい旨の比較結果を出力した場合、そのエネルギーで最低エネルギーを更新する。また、最低エネルギー更新保持回路20は、最低エネルギーが得られたときのx1~xNの値を保持する。そして、たとえば、所定の終了条件が満たされたときに保持されているx1~xNの値が、組合せ最適化問題の解として出力される。
【0042】
図2は、メモリ、更新回路及び遷移候補決定回路の回路例を示す図である。
メモリ12は、状態記憶領域12a、開始点状態記憶領域12b、局所場記憶領域12c、開始点局所場記憶領域12d、アクセス制御回路12e,12fを有する。
【0043】
状態記憶領域12aにはx1~xNの値が記憶され、開始点状態記憶領域12bには解探索の開始点におけるx1~xNの値が記憶される。局所場記憶領域12cにはh1~hNの値が記憶され、開始点局所場記憶領域12dには開始点におけるh1~hNの値が記憶される。
【0044】
アクセス制御回路12eは、制御回路17の制御に基づいて、状態記憶領域12a、開始点状態記憶領域12b、更新回路14の状態更新保持回路14aとの間での状態の読み出しと書き込みを制御する。制御回路17の制御に基づいて、たとえば、以下のような動作が行われる。
【0045】
x1~xNの値の更新が行われる場合、アクセス制御回路12eは、更新されたx1~xNの値によって、状態記憶領域12aに記憶されているx1~xNの値を上書きする。
判定回路16がn個の遷移候補の値の変化を受け入れると判定した場合、アクセス制御回路12eは、状態記憶領域12aに記憶されているx1~xNの値によって、開始点状態記憶領域12bに記憶されている開始点におけるx1~xNの値を上書きする。なお、状態記憶領域12aに記憶されているx1~xNの値は、開始点のx1~xNの値のうちn個の値が更新されたものである。
【0046】
判定回路16がn個の遷移候補の値の変化を受け入れないと判定した場合、アクセス制御回路12eは、開始点状態記憶領域12bに記憶されている開始点におけるx1~xNの値によって、状態記憶領域12aに記憶されているx1~xNの値を上書きする。
【0047】
アクセス制御回路12fは、制御回路17の制御に基づいて、局所場記憶領域12c、開始点局所場記憶領域12d、局所場更新保持回路14b、局所場保持レジスタ13aとの間での局所場の読み出しと書き込みを制御する。制御回路17の制御に基づいて、たとえば、以下のような動作が行われる。
【0048】
遷移候補決定回路13の処理が行われる場合、アクセス制御回路12fは、局所場記憶領域12cに記憶されているh1~hNの値を、局所場保持レジスタ13aに書き込む。
h1~hNの値の更新が行われる場合、アクセス制御回路12fは、更新されたh1~hNの値によって、局所場記憶領域12cに記憶されているh1~hNの値を上書きする。
【0049】
判定回路16がn個の遷移候補の値の変化を受け入れると判定した場合、アクセス制御回路12fは、局所場記憶領域12cに記憶されているh1~hNの値によって、開始点局所場記憶領域12dに記憶されている開始点におけるh1~hNの値を上書きする。
【0050】
判定回路16がn個の遷移候補の値の変化を受け入れないと判定した場合、アクセス制御回路12fは、開始点局所場記憶領域12dに記憶されている開始点におけるh1~hNの値によって、局所場記憶領域12cに記憶されているh1~hNの値を上書きする。
【0051】
遷移候補決定回路13は、局所場保持レジスタ13a、ΔE計算保持回路13b、受入れ判定回路13c、選択回路13dを有する。
局所場保持レジスタ13aは、h1~hNの値を保持する。
【0052】
ΔE計算保持回路13bは、局所場保持レジスタ13aに保持されているh1~hNの値を用いて、前述の式(2)にしたがって、ΔE1~ΔENを計算する。なお、図示を省略しているが、式(2)のΔxiは、状態記憶領域12aに保持されているx1~xNの値から求めることができる。さらに、ΔE計算保持回路13bは、たとえば、レジスタを有し、計算したΔE1~ΔENを保持する。
【0053】
受入れ判定回路13cは、少なくとも1つの状態変数の値の変化を受け入れる。たとえば、受入れ判定回路13cは、値が変化したときにエネルギーが最も低くなるΔEを生じさせる状態変数のインデックスとそのΔEを出力する。受入れ判定回路13cは、たとえば、所定の閾値よりも小さいΔEを生じさせる複数の状態変数のインデックスとそれらのΔEを出力してもよい。これら以外にも、受入れ判定回路13cは、所定のルールにしたがって、1以上の状態変数の値の変化を受け入れるようにしてもよい。
【0054】
ただし、受入れ判定回路13cは、n個の遷移候補を決定する間に、一度、遷移候補となった状態変数については、その状態変数の値の変化を受け入れない。一度、遷移候補となった状態変数が、再度遷移候補となり、その状態変数の値が元に戻ることを防止するためである。
【0055】
なお、受入れ判定回路13cは、ΔEの代わりに、x1~xNの値のそれぞれが変化した場合に、更新されるΔEのn個の累積値を用いてもよい。このような累積値は累積値計算回路15で計算することができる。ただし、累積値は、必ずしも元の精度で遷移候補決定回路13に渡されなくてもよい。たとえば、累積値計算回路15は、所定のビット削減手法により累積値のデータ量を削減(たとえば、64ビットから4ビットへ削減)し、データ量削減後の累積値を遷移候補決定回路13に渡してもよい。n番目の遷移候補としてx1~xNの何れが選択される場合でも、n-1番目までの遷移候補は共通であるため、ΔEを用いてもΔEの累積値を用いて、ΔEと累積値のx1~xNの間の大小関係は変わらない。そのため、遷移候補決定回路13は、受入れ判定を累積値に基づいて行ってもΔEに基づいて行っても同様の処理となる。
【0056】
また、単一ビット遷移処理の場合、受入れ判定回路13cは、式(3)に示した受け入れ確率で、各状態変数の値の変化を受け入れる。
選択回路13dは、受入れ判定回路13cが、複数の状態変数の値の変化を受け入れた場合に、値の変化が受け入れられた複数の状態変数のうちの1つを選択し、その状態変数のインデックスと、その状態変数の値の変化に伴うΔEとを出力する。たとえば、選択回路13dは、ランダムに1つの状態変数を選択してもよいし、所定のルールにしたがって1つの状態変数を選択してもよい。
【0057】
選択回路13dが選択した状態変数のインデックスは、制御回路17に供給され、その状態変数の値の変化に伴うΔEは累積値計算回路15に供給される。
更新回路14は、状態更新保持回路14a、局所場更新保持回路14bを有する。
【0058】
状態更新保持回路14aは、たとえば、レジスタを有し、x1~xNの値を保持する。また、状態更新保持回路14aは、制御回路17の制御のもと、選択回路13dが選択した状態変数の値を更新する。
【0059】
局所場更新保持回路14bは、たとえば、レジスタを有し、h1~hNの値を保持する。また、局所場更新保持回路14bは、制御回路17の制御のもと、選択回路13dが選択した状態変数の値の変化に伴いh1~hNの値を更新する。たとえば、xjが遷移候補である場合、hiは、hi=hi+WijΔxjという値に更新される。
【0060】
以上のような、データ処理装置10の各回路は、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路を用いて実現できる。また、データ処理装置10の各回路の少なくとも一部は、プロセッサがプログラムを実行することによるソフトウェア処理にて実現することもできる。プロセッサには、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などがある。
【0061】
次に、上記のようなデータ処理装置10によるデータ処理方法(解探索)の流れを、フローチャートを用いて説明する。
図3は、第1の実施の形態のデータ処理方法の一例の流れを示すフローチャートである。
【0062】
まず、制御回路17の制御のもと、初期化が行われる(ステップS10)。ステップS10の処理では、エネルギーや局所場の初期値の設定や、解探索の終了条件などの設定が行われる。さらに、疑似焼き鈍し法が行われる場合、たとえば、温度値の開始値や終了値、所定の温度変更周期ごとに温度値に乗じる値などの設定が行われる。レプリカ交換法が行われる場合、各レプリカへの温度値の設定や、レプリカ交換周期などが設定される。
【0063】
制御回路17は、複数ビット遷移処理を開始するか否かを判定する(ステップS11)。たとえば、制御回路17は、解探索の開始時には単一ビット遷移処理を開始させ、値の変化を受け入れないことを示す判定結果が所定期間続いた場合には、複数ビット遷移処理を開始させる。
【0064】
制御回路17が、複数ビット遷移処理を開始しないと判定した場合、ステップS12の処理が行われる。ステップS12の処理では、単一ビット遷移処理が行われる。単一ビット遷移処理の流れについては後述する(
図4参照)。ステップS12の処理後、ステップS18の処理が行われる。
【0065】
制御回路17が、複数ビット遷移処理を開始すると判定した場合、ステップS13の処理が行われる。ステップS13の処理では、複数ビット遷移処理を行う際に用いられる各種の複数ビット遷移パラメータの設定が行われる。各種の複数ビット遷移パラメータには、前述の遷移ビット深さであるn、複数ビット遷移処理の試行を繰り返す回数である繰り返し試行数Lがある。nやLは、ユーザによりデータ処理装置10に入力されてもよいし、予めデータ処理装置10内のレジスタなどの保持回路に設定されていてもよい。さらに、制御回路17は、複数の遷移候補の値の変化が許容された場合に1となるフラグ変数Mflip_flagを0に設定する。
【0066】
ステップS13の処理後、k=1からk<Lの間、複数ビット遷移試行ループ(ステップS14~S17)の処理が繰り返される。
複数ビット遷移試行ループでは、複数ビット遷移処理が行われる(ステップS15)。複数ビット遷移処理の流れについては後述する(
図5参照)。
【0067】
ステップS15の処理後、制御回路17は、Mflip_flagが0であるか否かを判定する(ステップS16)。制御回路17は、Mflip_flagが0であると判定した場合、k<Lであるときは、kを+1してステップS15からの処理を繰り返す。
【0068】
制御回路17は、Mflip_flagが0ではないと判定した場合、またはkがLに達した場合、ステップS18の処理を行う。
ステップS18の処理では、制御回路17は、解探索を終了させるか否かを判定する。たとえば、制御回路17は、所定の終了条件が満たされた場合に、解探索を終了させると判定し、解探索の結果である組合せ最適化問題の解を出力させ(ステップS19)、処理を終了する。ステップS19の処理では、たとえば、解探索を終了すると判定されたときに、最低エネルギー更新保持回路20に保持されているx1~xNの値が、組合せ最適化問題の解として出力される。制御回路17は、解を図示しない表示装置に表示させてもよいし、図示しない通信回路に外部の装置に送信させてもよい。
【0069】
制御回路17は、解探索を終了させないと判定した場合、ステップS11からの処理を繰り返す。
図4は、単一ビット遷移処理の一例の流れを示すフローチャートである。
【0070】
遷移候補決定回路13は、メモリ12に記憶されているh1~hNの値を用いて、前述の式(2)にしたがって、N個の状態変数のそれぞれについてのΔEを計算する(ステップS20)。
【0071】
そして、遷移候補決定回路13は、受入れ判定を行う(ステップS21)。遷移候補決定回路13は、たとえば、N個の状態変数のそれぞれについてのΔEと、制御回路17から供給される温度値に基づいて、式(3)に示した受け入れ確率で、各状態変数の値の変化を受け入れる。
【0072】
遷移候補決定回路13は、複数の状態変数の値の変化が受け入れられた場合、更新対象の状態変数を1つ選択する(ステップS22)。
その後、遷移候補決定回路13は、更新可能か否かを判定する(ステップS23)。たとえば、ステップS21の処理で、何れの状態変数についても値の変化が受け入れられなかった場合には、更新不可と判定される。
【0073】
遷移候補決定回路13が更新可能と判定した場合、更新回路14は、更新処理を行う(ステップS24)。更新処理では、更新可能とされた状態変数の値が変化する。そして、その変化に基づいて、h1~hNの値が更新される。このときエネルギー更新保持回路18は、更新可能とされた状態変数の値の変化に伴うΔEに基づいて、保持しているエネルギーを更新する。更新されたエネルギーが最低エネルギー更新保持回路20に保持されている最低エネルギーよりも小さい場合、最低エネルギーが更新され、現在のx1~xNの値とともに、最低エネルギー更新保持回路20に保持される。
【0074】
ステップS23の処理で更新不可と判定された場合、またはステップS24の処理後、データ処理装置10の処理は、
図3に示したステップS18の処理に戻る。
図5は、複数ビット遷移処理の一例の流れを示すフローチャートである。
【0075】
メモリ12は、開始点における状態と局所場を記憶する(ステップS30)。
その後、i=0からi<nの間、以下のnビット遷移試行ループ(ステップS31~S44)の処理が繰り返される。
【0076】
nビット遷移試行ループでは、遷移候補決定回路13は、メモリ12に記憶されているh1~hNの値を用いて、前述の式(2)にしたがって、ΔE1~ΔENを計算する(ステップS32)。
【0077】
そして、遷移候補決定回路13は、受入れ判定を行う(ステップS33)。遷移候補決定回路13は、上記の処理のルールにしたがって、少なくとも1つの状態変数の値の変化を受け入れる。
【0078】
遷移候補決定回路13は、複数の状態変数の値の変化を受け入れた場合に、それらのうちの1つを選択し、遷移候補として決定する。また、更新回路14は、その遷移候補の値を変化させることで状態を更新する(ステップS34)。ここでの状態の更新は、仮の更新である。
【0079】
ステップS34の処理後、累積値計算回路15は、遷移候補の値を変化させたときのΔEの累積値を計算する(ステップS35)。
ステップS35の処理後、制御回路17は、iがn-1であるか否かを判定する(ステップS36)。制御回路17が、iがn-1であると判定した場合、ステップS37の処理が行われ、iがn-1ではないと判定した場合、ステップS43の処理が行われる。
【0080】
ステップS37の処理では、判定回路16は、MCMC法にしたがって、ΔEの累積値に基づいて、n個の遷移候補の値の変化を受け入れるか否かを判定する。
制御回路17は、判定回路16がn個の遷移候補の値の変化を受け入れたか否かを判定する(ステップS38)。制御回路17は、判定回路16がn個の遷移候補の値の変化を受け入れたと判定した場合、ステップS39の処理を行い、判定回路16がn個の遷移候補の値の変化を受け入れなかったと判定した場合、ステップS41の処理を行う。
【0081】
ステップS39の処理では、制御回路17は、Mflip_flagの値を1とする。その後、更新回路14は、n番目の遷移候補の値の変化に伴い、局所場(h1~hN)の値を更新する(ステップS40)。
【0082】
ステップS41の処理では、制御回路17は、Mflip_flagの値を0とする。その後、制御回路17は、状態と局所場の値を、記憶されている開始点における状態と局所場の値に戻す(ステップS42)。
【0083】
ステップS40,S42の処理後、iは+1されてi=nとなるため、データ処理装置10の処理はnビット遷移試行ループを抜け、
図3に示したステップS18の処理に戻る。
【0084】
ステップS43の処理では、更新回路14は、今回決定した遷移候補の値の変化に伴い、局所場(h1~hN)の値を更新する。その後、iは+1され、nビット遷移試行ループが繰り返される。
【0085】
なお、
図5の例では、n個の遷移候補の全てについてのΔEの累積値に基づいて、受入れ判定を行う例を示したがこれに限定されない。たとえば、遷移候補が決定するたびに計算したΔEの累積値に基づいて、受入れ判定が行われてもよい。以下その場合の複数ビット遷移処理の例を示す。
【0086】
図6は、複数ビット遷移処理の他の例の流れを示すフローチャートである。
ステップS50~S55の処理は、
図5に示したステップS30~S35の処理と同じである。
【0087】
ステップS55の処理後、制御回路17の制御に基づいて、判定回路16は、MCMC法にしたがって、ΔEの現在の累積値に基づいて、現在までに決定したi+1個の遷移候補の値の変化を受け入れるか否かを判定する(ステップS56)。
【0088】
制御回路17は、判定回路16がi+1個の遷移候補の値の変化を受け入れたか否かを判定する(ステップS57)。制御回路17は、判定回路16がi+1個の遷移候補の値の変化を受け入れたと判定した場合、ステップS58の処理を行い、判定回路16がi+1個の遷移候補の値の変化を受け入れなかったと判定した場合、ステップS60の処理を行う。
【0089】
ステップS58の処理では、制御回路17は、Mflip_flagの値を1とする。その後、更新回路14は、i+1番目の遷移候補の値の変化に伴い、局所場(h1~hN)の値を更新する(ステップS59)。
【0090】
ステップS60の処理では、制御回路17は、iがn-1であるか否かを判定する。制御回路17が、iがn-1であると判定した場合、ステップS61の処理が行われ、iがn-1ではないと判定した場合、ステップS63の処理が行われる。
【0091】
ステップS61の処理では、制御回路17は、Mflip_flagの値を0とする。その後、制御回路17は、状態と局所場の値を、記憶されている開始点における状態と局所場の値に戻す(ステップS62)。
【0092】
ステップS63の処理では、更新回路14は、今回決定した遷移候補の値の変化に伴い、局所場(h1~hN)の値を更新する。
ステップS59,S62,S63の処理後、制御回路17は、Mflip_flagの値が0であるか否かを判定する(ステップS64)。
【0093】
Mflip_flagの値が0であると判定された場合、iは+1され、i<nの場合には、nビット遷移試行ループが繰り返される。i=nに達した場合、データ処理装置10の処理はnビット遷移試行ループを抜け、
図3に示したステップS18の処理に戻る。
【0094】
Mflip_flagの値が0ではないと判定された場合、データ処理装置10の処理はnビット遷移試行ループを抜け、
図3に示したステップS18の処理に戻る。
図6に示すようなデータ処理方法によれば、n個の遷移候補が決定する前でも、ΔEの累積値に基づいて、判定回路16がi+1個の遷移候補の値の変化を受け入れたと判定した場合には、次の複数ビット遷移処理または単一ビット遷移処理に移れる。これにより、解探索が効率化される。
【0095】
なお、
図3~
図6に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
(パイプライン処理の例)
上記の処理は、パイプライン処理を用いて、イジングモデルの複数のレプリカについて並列に行うことができる。メモリ12は、x
1~x
Nの値とh
1~h
Nの値を、複数のレプリカの数分記憶する。また、メモリ12は、開始点のx
1~x
Nの値とh
1~h
Nの値についても、複数のレプリカの数分記憶してもよいが、全レプリカで共通としてもよい。重み係数メモリ11に記憶されているW
ijは、全レプリカで共通である。
【0096】
制御回路17は、遷移候補決定回路13と、更新回路14と、累積値計算回路15と、判定回路16に、複数のレプリカに対するパイプライン処理を行わせる。なお、制御回路17は、一部のレプリカについては、単一ビット遷移処理が行われるように制御してもよい。
【0097】
図7は、パイプライン処理の一例を示す図である。なお、
図7では、
図5に示した複数ビット遷移処理をパイプライン処理で行う例が示されている。
図6に示した複数ビット遷移処理をパイプライン処理で行うことも可能である。
【0098】
図7において0~R-1の表記は、R個のレプリカのレプリカ番号を示している。
図7の例では、全レプリカにおいて同じタイミングで、遷移ビット深さnが3ビットの複数ビット遷移による試行が開始されている。なお、制御回路17は、各レプリカを独立な処理として制御可能であるため、複数のレプリカの間で試行の開始タイミングや、nの値が異なっていてもよい。また、パイプライン処理では、動作タイミングを調整するためにFIFOが用いられる。
【0099】
各レプリカが行う処理は、更新フェーズと試行フェーズに分かれている。更新フェーズは、更新回路14によるWijのリード、WijΔxj(=Δhi)の計算、元のhiのリード、hiを更新してメモリ12にライトする処理を含む。試行フェーズは、遷移候補決定回路13によるhiのリード、メモリ12による開始点の状態とhiの記憶を含む。さらに、試行フェーズは、遷移候補決定回路13によるΔEの計算、ΔEに基づく受入れ判定、遷移候補の決定、累積値計算回路15によるΔEの累積値の計算、判定回路16による累積値に基づく受入れ判定を含む。
【0100】
タイミングt1から1番目の遷移候補を決定するための試行フェーズが開始する。各レプリカについて順番に、h
iがメモリ12からリードされ、局所場保持レジスタ13aに保持される。タイミングt2から各レプリカについて順番に、開始点の状態とh
iのメモリ12への記憶と、ΔEの計算が行われる。タイミングt3から各レプリカについて順番に、ΔEに基づく受入れ判定が行われる。タイミングt4から各レプリカについて順番に、遷移候補の決定とΔEの累積値の計算が行われる。なお、
図7の例では、ΔEの累積値に基づく受入れ判定は、3番目の遷移候補が決定されるまで行われない。
【0101】
タイミングt4から各レプリカについて順番に、1番目の遷移候補が決定されると、その状態変数のインデックスは、FIFOを介して、制御回路17に供給される。その後、1番目の遷移候補についての更新フェーズ(1ビット目遷移処理(タイミングt5~t9))が行われる。
【0102】
制御回路17は、タイミングt6から各レプリカについて順番に、遷移候補のインデックスに対応したWijを重み係数メモリ11から読み出させる。そして、タイミングt7から各レプリカについて順番に、読み出されたWijを用いて更新されたhiがメモリ12に書き込まれる。
【0103】
タイミングt8から、2番目の遷移候補を決定するための試行フェーズが開始され、タイミングt1~t4と同様の処理が行われる。タイミングt9から、2番目の遷移候補の決定に伴う更新フェーズ(2ビット目遷移処理(タイミングt9~t12))が開始され、タイミングt5~t9と同様の処理が行われる。
【0104】
タイミングt11から、3番目の遷移候補を決定するための試行フェーズが開始され、タイミングt1~t4と同様の処理が行われる。さらに、3番目の遷移候補が決定されると、ΔEの累積値に基づく受入れ判定が行われる(タイミングt12以降)。
図1において、白丸は、受入れ可と判定されたことを示し、黒塗りの四角は、受入れが拒絶されたことを示している。
【0105】
図7の例では、レプリカ番号=0,R-1のレプリカについては、受入れ可と判定され、その他のレプリカについては受入れが拒絶されている。このため、レプリカ番号=0,R-1のレプリカについては、更新フェーズが実行される。他のレプリカについては更新フェーズが実行されず、開始点の状態と局所場が読み出され、現在の状態と局所場としてメモリ12に書き込まれる。
【0106】
たとえば、レプリカ番号=0のレプリカに関するΔEの累積値に基づく受入れ判定の結果は、FIFOを介して、制御回路17に供給される。また、タイミングt12から、タイミングt5~t9と同様の更新フェーズ(3ビット目遷移処理(タイミングt12~t14))の処理が行われる。
【0107】
さらに、タイミングt13から、次の複数ビット遷移のための開始点の状態とhiとがメモリ12に記憶される。3ビット遷移が許容されたレプリカ番号=0,R-1のレプリカについては、更新された状態とhiが記憶される。それ以外のレプリカについては、既に記憶されている開始点の状態とhiが維持される。
【0108】
上記のようなパイプライン処理が行われる場合、たとえば、各レプリカの処理で所定試行回数繰り返される間に得られたエネルギーのうち、最低のエネルギーを示す状態が、解として出力される。なお、上記のパイプライン処理は、疑似焼き鈍し法を用いた解探索にも適用可能であるし、レプリカ交換法を用いた解探索にも適用可能である。
【0109】
制御回路17は、パイプライン処理により、同じ期間に異なる複数のレプリカが、異なる処理を行うように制御することで、複数レプリカを同時並列に処理可能としている。たとえば、
図7に示すように、制御回路17は、レプリカ番号=1のレプリカについてΔEの計算を実行させている間、レプリカ番号=0のレプリカについては受入れ判定を実行させている。
【0110】
図7に示すように、各レプリカ処理の1ステップ(試行フェーズ+更新フェーズの各処理)は、1つの遷移候補の値を変化させる各処理(1ビット目遷移処理、2ビット目遷移処理、3ビット目遷移処理)で全て同じ期間である。これにより、各レプリカ処理のパイプラインの遅延を隠蔽できる。
【0111】
以上のような第1の実施の形態のデータ処理装置10及びデータ処理方法によれば、所定の時点(上記の例では開始点)における状態と局所場が記憶されている。そして、その時点から1つずつ決定した遷移候補の値を変化させて局所場の更新が行われ、ΔEの累積値に基づいてそれら遷移候補の値の変化を受け入れるか否かが判定される。状態や局所場は、遷移候補の値の変化に基づいて更新されていても、上記の受入れ拒絶時には、予め記憶されている上記所定の時点の状態と局所場に戻る。このようにすることで、複数ビット遷移を実現するための局所場の複雑な伝搬機構などが不要となる。これにより、ビットごとの演算器の独立性を高くすることができ、回路構成が簡素化され、複数ビット遷移処理の実装が容易になる。またこれにより、大規模並列化が可能となる。さらに、遷移候補の数(n)が変わっても同じ回路で処理が可能であるため、探索自由度が高い。
【0112】
また、単一ビット遷移処理と複数ビット遷移処理を同じ回路で実現できるため、動作モードの切り替えが容易である。
さらに、回路構成を複雑化することなく、
図7に示したような複数レプリカを用いたパイプライン処理を実現することも可能であり、高性能化が期待できる。
【0113】
(第2の実施の形態)
以下に示す第2の実施の形態のデータ処理装置は、N個の状態変数を、複数の状態変数群に分けて複数のモジュールにより、各状態変数群について並列にn個の遷移候補の決定や更新処理、累積値の算出などを実行する。なお、以下ではNの状態変数を、4つの状態変数群に分け、4つのモジュールにより処理を行う例を示すが、この数に限定されるわけではない。
【0114】
図8及び
図9は、第2の実施の形態のデータ処理装置の一例を示す図である。
図8、
図9において、
図1、
図2に示した要素と同じ要素については同一符号が付されている。
第2の実施の形態のデータ処理装置30において、遷移候補決定回路31は、モジュール31a1,31a2,31a3,31a4に分かれている。モジュール31a1~31a4は、x
1~x
Nのうち互いに異なる状態変数群の範囲内で、遷移候補を1つずつn個決定する。
【0115】
以下の例では、モジュール31a1は、x1~xk-1の状態変数群、モジュール31a2は、xk~xl-1の状態変数群、モジュール31a3は、xl~xm-1の状態変数群、モジュール31a4は、xm~xNの状態変数群を扱うものとする。
【0116】
モジュール31a1~31a4のそれぞれには、
図2に示した局所場保持レジスタ13a、ΔE計算保持回路13b、受入れ判定回路13c、選択回路13dが設けられている。
図8では、局所場保持レジスタ13aは、“h
i”と表記されており、ΔE計算保持回路13bは、“ΔE”と表記されており、受入れ判定回路13cは、“受入”と表記されており、選択回路13dは、“選択”と表記されている。
【0117】
さらに、遷移候補決定回路31は、選択回路31bを有している。選択回路31bは、制御回路17の制御のもと、モジュール31a1~31a4から出力された遷移候補の値の変化によるΔEを、モジュール31a1~31a4用の累積値の計算回路33a1,33a2,33a3,33a4の何れかに供給する。遷移候補のインデックスについても同様に選択され、モジュール31a1~31a4用の保持回路33b1,33b2,33b3,33b4の何れかに供給される。
【0118】
モジュール31a1~31a4のそれぞれから出力される1番目の遷移候補のインデックスとΔEは、どのモジュール用の計算回路33a1~33a4、保持回路33b1~33b4に供給されてもよい。モジュール31a1~31a4のそれぞれから出力される2番目以降の遷移候補のインデックスとΔEは、それぞれ対応するモジュール用の計算回路33a1~33a4、保持回路33b1~33b4に供給される。
【0119】
このような選択を行う選択回路31bとして、たとえば、4レーンの4-1セレクタを用いることができる。
メモリ12は、x
1~x
Nの値と、h
1~h
Nの値と、開始点におけるx
1~x
Nの値と、h
1~h
Nの値によるセットを、モジュール数で分割して記憶している。
図8では、x
1~x
k-1、x
k~x
l-1、x
l~x
m-1、x
m~x
Nの各状態変数群の値が、“state”と表記されている。また、h
1~h
k-1、h
k~h
l-1、h
l~h
m-1、h
m~h
Nの各局所場群の値が、“h
i”と表記されている。また、開始点におけるx
1~x
k-1、x
k~x
l-1、x
l~x
m-1、x
m~x
Nの各状態変数群の値が、“STstate”と表記されている。さらに、開始点におけるh
1~h
k-1、h
k~h
l-1、h
l~h
m-1、h
m~h
Nの各局所場群の値は、それぞれ、“STh
i”と表記されている。
【0120】
更新回路32は、モジュール31a1~31a4のそれぞれに対応して記憶されている“state”と“hi”とを、モジュール31a1~31a4のそれぞれが決定した遷移候補にしたがって更新する。
【0121】
更新回路32は、状態更新保持回路32aと局所場更新保持回路32bを有する。状態更新保持回路32aは、たとえば、レジスタを有し、モジュール31a1~31a4のそれぞれに対する“state”を保持する。また、状態更新保持回路32aは、制御回路17の制御のもと、選択回路31bが選択した遷移候補の値を更新する。遷移候補はモジュール31a1~31a4のそれぞれについて1つずつ決定されるため、4つの“state”のそれぞれにおいて、決定された4つの遷移候補のうちの何れか1つの値が更新される。
【0122】
局所場更新保持回路32bは、たとえば、レジスタを有し、各モジュールについての“hi”を保持する。また、局所場更新保持回路32bは、制御回路17の制御のもと、モジュール31a1~31a4のそれぞれが決定した遷移候補にしたがって、h1~hNの値を更新する。たとえば、xjが遷移候補である場合、hiは、hi=hi+WijΔxjという値に更新される。
【0123】
モジュール31a1に対するh
1~h
k-1の値の更新には、N×N個のW
ijのうち、j=1~k-1の範囲(
図8の“a”の範囲)のW
ijが用いられる。モジュール31a2に対するh
k~h
l-1の値の更新には、N×N個のW
ijのうち、j=k~l-1の範囲(
図8の“b”の範囲)のW
ijが用いられる。モジュール31a3に対するh
l~h
m-1の値の更新には、N×N個のW
ijのうち、j=l~m-1の範囲(
図8の“c”の範囲)のW
ijが用いられる。モジュール31a4に対するh
m~h
Nの値の更新には、N×N個のW
ijのうち、j=m~Nの範囲(
図8の“d”の範囲)のW
ijが用いられる。
【0124】
累積値計算回路33は、モジュール31a1~31a4のそれぞれに対してΔEの累積値(“ΣΔE”と表記されている)を計算する計算回路33a1~33a4を有する。さらに、累積値計算回路33は、モジュール31a1~31a4のそれぞれに対してn個の遷移候補のインデックスを保持する保持回路33b1~33b4と選択回路33cを有する。
【0125】
選択回路33cは、4つのΔEの累積値のうち1つを選択する。たとえば、選択回路33cは、最もエネルギーを低くするΔEの累積値を選択する。選択回路33cは、選択した累積値とともに、その累積値に対応するn個の遷移候補のインデックスを出力する。
【0126】
判定回路16は、選択された累積値に基づいて、選択された累積値に対応したn個の遷移候補の値の変化を受け入れるか否かを判定する。
次に、第2の実施の形態のデータ処理装置30によるデータ処理方法(解探索)の流れを、フローチャートを用いて説明する。
【0127】
全体の処理と単一ビット遷移処理の流れは、
図3及び
図4に示した処理の流れと同様であるため、説明を省略する。
図10は、複数ビット遷移処理の一例の流れを示すフローチャートである。
【0128】
ステップS70~S79の処理は、
図5に示したステップS30~S39の処理と同様であるが、ステップS72~S75の処理は、モジュールごとに行われる。
また、第2の実施の形態のデータ処理装置30では、制御回路17は、Mflip_flagの値を1にする処理(ステップS79)の後に、各モジュールに対する状態と局所場の値を、記憶されている開始点における状態と局所場の値に戻す処理を行う(ステップS80)。メモリ12に記憶されている状態と局所場は、モジュールごとに異なるためである。その後、制御回路17は、保持回路33b1~33b4の何れかに保持されているn個の遷移候補のインデックスに基づいて、更新回路32に各モジュールに対する状態と局所場の値の更新を行わせる(ステップS81)。ステップS82~S85の処理は、
図5に示したステップS41~S44の処理と同様である。
【0129】
図11は、複数ビット遷移処理の他の例の流れを示すフローチャートである。
ステップS90~S95の処理は、
図10に示したステップS70~S75の処理と同様である。ステップS96~S98の処理は、
図6に示したステップS56~S58の処理と同様である。
【0130】
ステップS99の処理では、
図10に示したステップS80の処理と同様に、各モジュールに対する状態と局所場の値を、記憶されている開始点における状態と局所場の値に戻す処理が行われる。その後、制御回路17は、保持回路33b1~33b4の何れかに保持されているn個の遷移候補のインデックスに基づいて、更新回路32に各モジュールに対する状態と局所場の値の更新を行わせる(ステップS100)。ステップS101~S106の処理は、
図6に示したステップS60~S65の処理と同様である。
【0131】
なお、
図10、
図11に示した処理の順序は一例であり、適宜処理の順序を入れ替えてもよい。
(パイプライン処理の例)
第1の実施の形態のデータ処理装置10のデータ処理と同様に、上記の処理についても、パイプライン処理を用いて、イジングモデルの複数のレプリカについて並列に行うことができる。メモリ12は、各モジュールに対するx
1~x
Nの値とh
1~h
Nの値を、複数のレプリカの数分記憶する。また、メモリ12は、開始点のx
1~x
Nの値とh
1~h
Nの値についても、複数のレプリカの数分記憶してもよいが、全レプリカで共通としてもよい。ただ、その場合、同時に複数のレプリカがメモリ12を使用することを避けるため、複数ビット遷移処理がパイプライン処理の中で1つのレプリカ以外に発生しないように制御される。重み係数メモリ11に記憶されているW
ijは、全レプリカで共通である。
【0132】
制御回路17は、遷移候補決定回路31と、更新回路32と、累積値計算回路33と、判定回路16に、複数のレプリカに対するパイプライン処理を行わせる。なお、制御回路17は、一部のレプリカについては、単一ビット遷移処理が行われるように制御してもよい。
【0133】
図12は、パイプライン処理の一例を示す図である。なお、
図12では、
図10に示した複数ビット遷移処理をパイプライン処理で行う例が示されている。
図11に示した複数ビット遷移処理をパイプライン処理で行うことも可能である。
【0134】
各レプリカが行う処理は、更新フェーズと試行フェーズに分かれている。更新フェーズは、更新回路32によるWijのリード、WijΔxj(=Δhi)の計算、元のhiのリード、hiを更新してメモリ12にライトする処理を含む。これらの処理は、モジュールごとに行われる。
【0135】
試行フェーズは、遷移候補決定回路31によるhiのリード、メモリ12による開始点の状態とhiの記憶を含む。これらの処理は、モジュールごとに行われる。さらに、試行フェーズは、遷移候補決定回路31によるΔEの計算、ΔEに基づく受入れ判定、遷移候補の決定、累積値計算回路33によるΔEの累積値の計算を含む。これらの処理も、モジュールごとに行われる。さらにまた、試行フェーズは、判定回路16による累積値に基づく受入れ判定を含む。
【0136】
タイミングt20~t32までは、上記処理についてモジュールごとに行われる以外は、
図7に示したタイミングt1~t12の処理と同様である。タイミングt33~t35では、
図10に示したステップS80の処理に対応した処理が行われる。タイミングt34~t36では、
図10に示したステップS81の処理に対応した処理が行われる。このような処理により、3ビット目遷移処理の終了タイミングであるタイミングt37と、次の1ビット目遷移処理の開始タイミングであるタイミングt38の間には、待機時間が生じている。なお、制御回路17は処理サイクルを変動させるなどして、待機時間を減らすようにしてもよい。
【0137】
以上のような第2の実施の形態のデータ処理装置30及びデータ処理方法によれば、第1の実施の形態のデータ処理装置10及びデータ処理方法と同様の効果が得られる。さらに、第2の実施の形態のデータ処理装置30は、複数モジュールによる並列処理が行えるので、解探索をより効率よく行うことができる。第1の実施の形態のデータ処理装置10のように、複数ビット遷移処理を実現するための回路構成を簡素化できるため、第2の実施の形態のデータ処理装置30のように、並列探索を行う構成としても、回路構成が複雑化することを防ぐことができる。
【0138】
(ハードウェア構成例)
図13は、データ処理装置の一例のハードウェア例を示す図である。
データ処理装置40は、たとえば、コンピュータであり、プロセッサ41、RAM42、HDD43、GPU44、入力インタフェース45、媒体リーダ46及び通信インタフェース47、アクセラレータカード48を有する。上記ユニットは、バスに接続されている。
【0139】
プロセッサ41は、HDD23に記憶されたプログラムやデータの少なくとも一部をRAM42にロードし、プログラムを実行する。なお、プロセッサ41は、たとえば、複数のプロセッサコアを備えてもよい。また、データ処理装置40は複数のプロセッサを備えてもよい。なお、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。プロセッサ41として、CPU、GPU、DSPなどを用いることができる。
【0140】
RAM42は、プロセッサ41が実行するプログラムやプロセッサ41が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、データ処理装置40は、RAM42以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0141】
HDD43は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、組合せ最適化の解を探索する処理をデータ処理装置40に実行させるプログラムが含まれる。なお、データ処理装置40は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0142】
GPU44は、プロセッサ41からの命令にしたがって、データ処理装置40に接続されたディスプレイ44aに画像を出力する。ディスプレイ44aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0143】
入力インタフェース45は、データ処理装置40に接続された入力デバイス45aから入力信号を取得し、プロセッサ41に出力する。入力デバイス45aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、データ処理装置40に、複数の種類の入力デバイスが接続されていてもよい。
【0144】
媒体リーダ46は、記録媒体46aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体46aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0145】
媒体リーダ46は、たとえば、記録媒体46aから読み取ったプログラムやデータを、RAM42やHDD43などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、プロセッサ41によって実行される。なお、記録媒体46aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体46aやHDD43を、コンピュータ読み取り可能な記録媒体ということがある。
【0146】
通信インタフェース47は、ネットワーク47aに接続され、ネットワーク47aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース47は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0147】
アクセラレータカード48は、組合せ最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード48は、FPGA48a及びDRAM48bを有する。
【0148】
図1、
図8、
図9に示した各要素は、FPGA48a及びDRAM48bにより実現できる。たとえば、重み係数メモリ11は、DRAM48bにより実現され、それ以外の回路やメモリ12は、FPGA48aにより実現できる。
【0149】
なお、アクセラレータカード48は、複数あってもよい。
また、データ処理装置10,30が行う上記の処理内容(たとえば、
図3~
図6、
図10、
図11など)は、コンピュータにプログラムを実行させることでソフトウェアにて実現できる。
【0150】
プログラムは、コンピュータ読み取り可能な記録媒体に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体にプログラムをコピーして実行してもよい。
【0151】
図14は、コンピュータのハードウェア例を示す図である。
図13に示した要素と同じ要素については同一符号が付されている。
コンピュータ50には、
図13に示したアクセラレータカード48が設けられていない。
【0152】
コンピュータ50において、プロセッサ41はプログラムを実行することで、上記の処理内容(たとえば、
図3~
図6、
図10、
図11など)を実行する。プロセッサ41は、複数のレプリカの処理を並列に実行するために、複数のプロセッサコアを備えていてもよい。また、
図1などに示した重み係数メモリ11としてHDD43を用いることができ、メモリ12としてRAM42を用いることができる。
【0153】
以上、実施の形態に基づき、本発明のデータ処理装置、プログラム及びデータ処理方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0154】
10 データ処理装置
11 重み係数メモリ
12 メモリ
13 遷移候補決定回路
14 更新回路
15 累積値計算回路
16 判定回路
17 制御回路
18 エネルギー更新保持回路
19 比較回路
20 最低エネルギー更新保持回路