(57)【特許請求の範囲】
【請求項１】
問題の解をイジングモデルの基底状態を探索するようにして求める情報処理システムにおいて、
前記イジングモデルの基底状態探索を実行する１又は複数の半導体チップが搭載されたホスト部と、
ユーザが前記問題を指定するためのユーザインタフェースを提供する操作部と、
前記ユーザインタフェースを用いて前記ユーザにより指定された前記問題を前記イジングモデルに変換し、変換した前記イジングモデルの基底状態の探索を前記半導体チップに行わせるように前記ホスト部を制御する管理部と
を備え、
前記ユーザは、前記ユーザインタフェースを用いて、前記問題に加えて、当該問題を解く際の条件を指定することができ、
前記管理部は、
前記ユーザに指定された前記条件に応じた前記半導体チップの動作条件を生成し、生成した前記動作条件と、前記ユーザが指定した前記問題の前記イジングモデルとを前記ホスト部に送信し、
前記ホスト部は、
前記管理部から送信された前記動作条件に従って、当該管理部から送信された前記イジングモデルの基底状態探索を行うように前記半導体チップを制御する
ことを特徴とする情報処理システム。
【請求項２】
前記条件は、前記問題の解精度及び基底状態探索の制限時間である
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記操作部は、
前記ユーザインタフェースを提供するユーザプログラムと、
前記ユーザインタフェースを介して入力された前記ユーザの操作内容に応じて前記ユーザプログラムが前記管理部又は前記ホストとの間でコマンド及び情報をやり取りするために利用するＡＰＩ（Application Programming Interface）と
を備えることを特徴とする請求項１に記載の情報処理システム。
【請求項４】
前記ホスト部は、
前記管理部から与えられた前記問題又は当該問題を分割してなる部分問題のイジングモデルを、前記半導体チップ毎のイジングモデルにそれぞれ分割し、
分割した前記イジングモデルの基底状態を各前記半導体チップにおいて独立して探索するように各前記半導体チップを制御し、
前記管理部は、
各前記半導体チップが前記イジングモデルの基底状態を探索中に、各前記半導体チップのチップ境界のスピンの値をそれぞれ読み出して相互作用計算を実行し、計算結果を各前記半導体チップに書き戻す
ことを特徴とする請求項１に記載の情報処理システム。
【請求項５】
過去に解いた前記問題の前記イジングモデルの各係数と、当該イジングモデルの基底状態のスピン配列とが格納された記憶装置を備え、
前記管理部は、
前記記憶装置に記憶された過去の前記問題の中から、新たな前記問題の前記イジングモデルと形態が近い前記イジングモデルの前記問題を前記記憶装置上で検索し、
当該検索により該当する前記問題を検出した場合に、当該問題のイジングモデルの各係数と、当該イジングモデルの基底状態のスピン配列とを前記データベースから読み出して、新たな前記問題の前記イジングモデルの各係数及びスピン配列として設定する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項６】
前記ホスト部は、
前記半導体チップが保持する前記イジングモデルのスピンの値を確率的に反転させるための乱数を発生する乱数発生器を備え、
前記動作条件は、
前記イジングモデルの基底状態探索時に前記乱数発生器にどのようなパターンで乱数を発生させるかを規定した冷却スケジュールを含み、当該冷却スケジュールとして、初期温度、冷却係数及び終端温度が規定され、
前記管理部は、
前記記憶装置に記憶された過去の前記問題の中から、新たな前記問題の前記イジングモデルと形態が近い前記イジングモデルを検出した場合に、前記ユーザに指定された前記条件に応じて生成した前記動作条件に含まれる前記冷却スケジュールの前記初期温度を下げる
ことを特徴とする請求項１に記載の情報処理システム。
【請求項７】
前記動作条件は、
１回の基底状態探索で実行される相互作用の回数を含み、
前記管理部は、
前記記憶装置に記憶された過去の前記問題の中から、新たな前記問題の前記イジングモデルと形態が近い前記イジングモデルを検出した場合に、前記ユーザに指定された前記条件に応じて生成した前記動作条件に含まれる、１回の基底状態探索で実行される相互作用の回数を減らす
ことを特徴とする請求項１に記載の情報処理システム。
【請求項８】
前記動作条件は、
１回の基底状態探索で実行される相互作用の回数を含み、
前記管理部は、
前記ホスト部から前記イジングモデルの基底状態探索の実行結果を受信すると、当該実行結果が前記ユーザに指定された前記解精度を満たしているかを評価し、満たしていない場合には、前記制限時間の条件を満たす範囲で、１回の基底状態探索で実行される相互作用の回数を増やす
ことを特徴とする請求項２に記載の情報処理システム。
【請求項９】
イジングモデルの基底状態探索を実行する１又は複数の半導体チップが搭載された計算機に接続された管理装置であって、
解を求めたい問題、前記問題の種類、前記問題を解く際の要求精度、及び、制限時間の入力を受け付ける受信部と、
前記問題の種類に応じた所定の変換規則に基づき、前記問題を前記イジングモデルの問題に変換する変換部と、
前記制限時間に応じて、前記チップの動作条件を決定する動作条件生成部と、
前記イジングモデルの問題を前記計算機の処理能力に応じて１以上の部分問題に分割する問題分割部と、
前記部分問題、前記動作条件、及び、基底状態探索の実行指示を前記計算機へ送信し、前記計算機より前記基底状態探索の結果を受信する制御部と、
前記基底条件探索結果が前記要求精度を満たしているかを評価する評価部と
を備えることを特徴とする管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム及び管理装置に関し、特に、イジングモデルの基底状態探索を行う半導体チップを用いて組合せ最適化等の問題を解く機能を有する情報処理システムに適用して好適なものである。
【背景技術】
【０００２】
種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは、モデルを構成する複数個のノードと、ノード間の相互作用、さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが、いずれも相互作用モデルの一形態であると解釈できる。また相互作用モデルの特徴として、ノード間の影響を２個のノード間の相互作用に限定している（２体間の相互作用）ことが挙げられる。例えば、宇宙空間にある惑星の力学を考えてみると、惑星というノードの間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが、惑星間の影響は２個の惑星間にとどまらず、３個以上の惑星が互いに影響し合って複雑な挙動を示す（いわゆる３体問題や多体問題と言われる問題になる）。
【０００３】
生物学の世界では、脳をモデル化したニューラルネットワークを相互作用モデルの一例として挙げることができる。ニューラルネットワークは神経細胞のニューロンを模した人工ニューロンをノードとしており、人工ニューロン間はシナプス結合という相互作用を持つ。また、ニューロン毎にバイアスを与える場合もある。社会科学の世界では、例えば人間のコミュニケーションを考えると、人間というノードと言語や通信で成される相互作用があることは容易に理解できよう。また、各人間には個別にバイアスがあることも想像できる。そのため人間のコミュニケーションを相互作用モデルに模してその特性を明らかにしようという研究もなされている（例えば特許文献１）。
【０００４】
一方、物理学の世界で代表的な相互作用モデルの例として、イジングモデルを挙げることができる。イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは＋１／−１（ないしは、０／１、上／下）の２値をとるスピンと、スピン間の相互作用を示す相互作用係数と、スピン毎にある外部磁場係数とで定義される。
【０００５】
イジングモデルは与えられたスピン配列、相互作用係数、及び、外部磁場係数から、その時のエネルギーを計算することができる。イジングモデルのエネルギー関数は一般的に次式で表わされる。
【０００６】
【数１】
0005865457.tif 000002
【０００７】
なお、σｉ，σｊはそれぞれｉ番目とｊ番目のスピンの値、Ｊｉ，ｊはｉ番目とｊ番目のスピンの間の相互作用係数、ｈｉはｉ番目のスピンに対する外部磁場係数、σはスピンの配列を表わすものとする。
【０００８】
（１）式において、第一項は、スピン間の相互作用に起因するエネルギーを計算するものである。一般的にイジングモデルは無向グラフとして表現され、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。そのため、第一項ではｉ＜ｊを満たすσｉ，σｊの組み合わせについて、相互作用係数の影響を計算している。また第二項は、各スピンに対する外部磁場に起因するエネルギーを計算するものである。
【０００９】
イジングモデルの基底状態探索とは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。相互作用係数及び外部磁場係数の値域に制限を付けないときには、トポロジが非平面グラフになるイジングモデルの基底状態を求めることはＮＰ困難問題であることが知られている。
【００１０】
イジングモデルの基底状態探索は、元々イジングモデルが対象としていた磁性体の振る舞いを説明することのみならず、様々な用途に用いられている。これは、イジングモデルが相互作用に基づく最も単純なモデルであり、同様に相互作用に起因する様々な事象を表現する能力を持っているためであると言える。例えば、特許文献１には、イジングモデルの基底状態探索を用いて、職場組織などの集団におけるストレス度を推定する方法が開示されている。
【００１１】
また、イジングモデルの基底状態探索は、ＮＰ困難なグラフ問題として知られている最大カット問題とも対応している。このようなグラフ問題は、ソーシャルネットワークにおけるコミュニティの検出や、画像処理におけるセグメンテーションなど、幅広い応用を持っている。そのため、イジングモデルの基底状態探索を行うソルバがあれば、このような様々な問題に適用することができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１２−２１７５１８号公報
【特許文献２】国際公開第２０１２／１１８０６４号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【００１３】
イジングモデルの基底状態を求めることは、上述のようにＮＰ困難問題であることから、イノマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリステックを導入して高速化を図るアルゴリズムも提案されているものの、イノマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている（例えば特許文献２）。
【００１４】
このような装置では、解くべき問題に対応した並列度が必要になってくる。イジングモデルの場合では、基底状態を探索すべきイジングモデルのスピン数に対応して、それぞれ１つのスピンや、当該スピンにおける他のスピンとの相互作用を表現する素子（以下、これを単位素子と呼ぶ）が必要となる。例えば特許文献２に開示された装置では、スピンとレーザを対応させているため、スピン数に比例した数のレーザが必要となる。すなわち、多数の単位素子を搭載可能なスケーラビリティの高さが必要となる。
【００１５】
以上のことを考慮した場合、単位素子を規則的に多数並べて実現できる半導体装置のような固体素子でイジングモデルの基底状態探索を行えることが望ましい。特に、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの記憶装置に代表されるようなアレイ構造であり、かつ集積性を高められるように単位要素が単純な構造であることが望ましい。そこで、近年、このような半導体装置（以下、これをイジングチップと呼ぶ）の開発が本願特許出願人により進められている。
【００１６】
ところで、このようなイジングチップを用いて組合せ最適化等の問題を解くシステムを構築するに際しては、一定の事項についてユーザが所望する条件を設定でき、その条件に従った解が得られるように、かかるシステムを構築することが望ましい。
【００１７】
本発明は以上の点を考慮してなされたもので、ユーザが所望する条件の元で組合せ最適化等の問題の解を得ることができる利便性の高い情報処理システム及び情報処理システムの利便性を向上させ得る管理装置を提案しようとするものである。
【課題を解決するための手段】
【００１８】
かかる課題を解決するため本発明においては、問題の解をイジングモデルの基底状態を探索するようにして求める情報処理システムにおいて、前記イジングモデルの基底状態の探索を行う複数の半導体チップが搭載されたホスト部と、ユーザが前記問題を指定するためのユーザインタフェースを提供する操作部と、前記ユーザインタフェースを用いて前記ユーザにより指定された前記問題を前記イジングモデルに変換し、変換した前記イジングモデルの基底状態の探索を前記半導体チップに実行させるように前記ホスト部を制御する管理部とを設け、前記ユーザは、前記ユーザインタフェースを用いて、前記問題に加えて、当該問題を解く際の条件を指定することができ、前記管理部は、前記ユーザに指定された前記条件に応じた前記半導体チップの動作条件を生成し、生成した前記動作条件と、前記ユーザが指定した前記問題の前記イジングモデルとを前記ホスト部に送信し、前記ホスト部は、前記管理部から送信された前記動作条件に従って、当該管理部から送信された前記イジングモデルの基底状態を探索するように前記半導体チップを制御するようにした。
【００１９】
また本発明においては、イジングモデルの基底状態探索を実行する１又は複数の半導体チップが搭載された計算機に接続された管理装置であって、解を求めたい問題、前記問題の種類、前記問題を解く際の要求精度、及び、制限時間の入力を受け付ける受信部と、前記問題の種類に応じた所定の変換規則に基づき、前記問題を前記イジングモデルの問題に変換する変換部と、前記制限時間に応じて、前記チップの動作条件を決定する動作条件生成部と、前記イジングモデルの問題を前記計算機の処理能力に応じて１以上の部分問題に分割する問題分割部と、前記部分問題、前記動作条件、及び、基底状態探索の実行指示を前記計算機へ送信し、前記計算機より前記基底状態探索の結果を受信する制御部と、前記基底条件探索結果が前記要求精度を満たしているかを評価する評価部とを設けるようにした。
【発明の効果】
【００２０】
本発明によれば、ユーザが所望する条件の元で組合せ最適化等の問題の解を得ることができ、かくして利便性の高い情報処理システム及び情報処理システムの利便性を向上させ得る管理装置を実現できる。
【図面の簡単な説明】
【００２１】
【図１】第１の実施の形態による情報処理システムの全体構成を示すブロック図である。
【図２】イジングアクセラレータボードの構成を示すブロック図である。
【図３】イジングチップの構成を示すブロック図である。
【図４】イジングモデルの説明に供する概念図である。
【図５】イジングモデルの説明に供する概念図である。
【図６】イジングモデルの説明に供する概念図である。
【図７】スピンユニットの構成を示すブロック図である。
【図８】スピンユニットの構成を示すブロック図である。
【図９】Ｉ／Ｏアドレスデコーダ及びＩ／Ｏドライバと、各スピンユニットとの接続関係の説明に供するブロック図である。
【図１０】局所最適解の説明に供する概念図である。
【図１１】冷却スケジュールの説明に供する特性曲線図である。
【図１２】イジングチップにおけるスピンユニット間での乱数の伝達経路の説明に供する概念図である。
【図１３】情報処理システムの論理構成を示すブロック図である。
【図１４】システム構成情報の説明に供する概念図である。
【図１５】既定ソルバ動作条件の一例を示す概念図である。
【図１６】ボード構成情報の説明に供する概念図である。
【図１７】チップ構成情報の説明に供する概念図である。
【図１８】問題定義ファイルの一例を示す概念図である。
【図１９】本実施の形態におけるイジングモデルのデータ構造例を示す概念図である。
【図２０】問題入力画面の画面構成例を示す略線図である。
【図２１】最大カット問題に対する結果提示画面の画面構成例を示す略線図である。
【図２２】巡回セールスマン問題に対する結果提示画面の画面構成例を示す略線図である。
【図２３】画像セグメンテーション問題に対する結果提示画面の画面構成例を示す略線図である。
【図２４】基底状態探索処理に関する基本的な処理及びデータの流れを示すフローチャートである。
【図２５】第１の実施の形態による基底状態探索制御処理の処理手順を示すフローチャートである。
【図２６】ソルバ動作条件の更新の説明に供する特性曲線図である。
【図２７】ソルバ動作条件の更新の説明に供する特性曲線図である。
【図２８】副問題生成処理の処理手順を示すフローチャートである。
【図２９】副問題相互作用係数生成処理の処理手順を示すフローチャートである。
【図３０】副問題相互作用係数生成処理における一部処理の処理手順を示すフローチャートである。
【図３１】副問題外部磁場係数生成処理の処理手順を示すフローチャートである。
【図３２】副問題外部磁場係数生成処理における一部処理の処理手順を示すフローチャートである。
【図３３】イジングアクセラレータボード制御処理の処理手順を示すフローチャートである。
【図３４】イジングチップ制御処理の処理手順を示すフローチャートである。
【図３５】チップ境界相互作用計算処理の処理手順を示すフローチャートである。
【図３６】操作端末に実装されたＡＰＩの説明に供するブロック図である。
【図３７】第２の実施の形態による情報処理システムの全体構成を示すブロック図である。
【図３８】第２の実施の形態における冷却スケジュールの説明に供する特性曲線図である。
【図３９】第２の実施の形態による基底状態探索制御処理の処理手順を示すフローチャートである。
【図４０】イジングアクセラレータボードの他の構成例を示すブロック図である。
【図４１】イジングアクセラレータボードの他の構成例を示すブロック図である。
【発明を実施するための形態】
【００２２】
以下図面について、本発明の一実施の形態を詳述する。
【００２３】
（１）第１の実施の形態
（１−１）有向グラフに拡張したイジングモデル
本実施の形態では、イジングモデルを拡張した、以下の（２）式で示されるモデルを、これ以降イジングモデルと呼ぶものとする。
【数２】
0005865457.tif 000003
【００２４】
（１）式で示したイジングモデルとの違いは、（２）式では有向グラフで示されるような相互作用が許されることにある。一般的にイジングモデルはグラフ理論では無向グラフとして描画することができる。それは、イジングモデルの相互作用は、ｉ番目スピンからｊ番目スピンへの相互作用係数Ｊｉ，ｊと、ｊ番目スピンからｉ番目スピンへの相互作用係数Ｊｊ，ｉとを区別していないことによる。
【００２５】
本発明はイジングモデルを拡張し、Ｊｉ，ｊとＪｊ，ｉとを区別しても適用できるため、本実施の形態でも有向グラフ化したイジングモデルを取り扱う。なお、無向グラフのイジングモデルを有向グラフのイジングモデルで取り扱う場合には、単にＪｉ，ｊとＪｊ，ｉとの双方向に同じ相互作用係数を定義することで可能である。この場合、同じモデルでも（１）式のエネルギー関数に対して（２）式のエネルギー関数ではエネルギーの値が２倍になる。
【００２６】
（１−２）本実施の形態による情報処理システムの構成
（１−２−１）情報処理システムの全体構成
図１において、１は全体として本実施の形態による情報処理システムを示す。この情報処理システム１は、管理ノード２及び複数のホスト３がネットワーク４を介して通信自在に接続されると共に、管理ノード２に操作端末５が接続されて構成されている。
【００２７】
管理ノード２は、操作端末５から与えられるユーザからの要求に応じて、ネットワーク４に接続された各ホスト３を管理する機能を有するサーバ装置であり、内部バス１０を介して相互に接続されたＣＰＵ（Central Processing Unit）１１、メモリ１２、記憶装置１３及びネットワークインタフェース１４を備えて構成される。
【００２８】
ＣＰＵ１１は、管理ノード２全体の動作制御を司るプロセッサである。またメモリ１２は、例えば揮発性の半導体メモリから構成され、主として各種プログラムや各種情報を記憶するために利用される。記憶装置１３は、例えばハードディスク装置やＳＳＤ（Solid State Drive）などから構成され、プログラムやデータを長期間保持するために利用される。ネットワークインタフェース１４は、例えばＮＩＣ（Network Interface Card）などから構成され、ネットワーク４を介したホスト３との通信時におけるプロトコル制御を行う。
【００２９】
ホスト３は、パーソナルコンピュータやワークステーション又はサーバなどから構成され、内部バス２０を介して相互に接続されたＣＰＵ２１、メモリ２２、記憶装置２３及びネットワークインタフェース２４と、複数のイジングアクセラレータボード２５とを備える。ＣＰＵ２１は、ホスト３全体の動作制御を司るプロセッサである。またメモリ２２は、主として各種プログラムや各種情報を記憶するために利用される。記憶装置２３は、例えばハードディスク装置やＳＳＤなどから構成され、プログラムやデータを長期間保持するために利用される。
【００３０】
イジングアクセラレータボード２５は、イジングモデルの基底状態探索を行う専用のアクセラレータボードであり、図２に示すように、コントローラ３０、メモリ３１、複数のイジングチップ３２、各イジングチップ３２にそれぞれ対応させて設けられた複数の乱数発生器３３及びインタフェース３４を備えて構成される。
【００３１】
コントローラ３０は、ネットワーク４を介して管理ノード２から与えられる指示に応じて自イジングアクセラレータボード２５に搭載された各イジングチップ３２や各乱数発生器３３をそれぞれ制御する機能を有するプロセッサである。またメモリ３１は、例えばＲＯＭ（Read Only Memory）から構成され、コントローラ３０が実行するプログラムや各種情報が格納される。
【００３２】
イジングチップ３２は、イジングモデルの基底状態探索を行う専用ハードウェアであり、コントローラ３０の制御のもとに、自己に割り当てられたイジングモデルの基底状態をそれぞれ独立して探索（相互作用動作を実行）する。また乱数発生器３３は、後述のように各イジングチップ３２において実行される基底状態探索が局所最適解に陥るのを防止するためのランダムなビット列（つまり乱数）を発生させる。乱数発生器３３により発生された乱数は、対応するイジングチップ３２にそれぞれ与えられる。インタフェース３４は、内部バス２０（図１）を介したホスト３のＣＰＵ２１（図１）との通信時におけるプロトコル制御を行う。
【００３３】
操作端末５は、パーソナルコンピュータなどのコンピュータ装置から構成される端末装置であり、内部バス４０を介して相互に接続されたＣＰＵ４１、メモリ４２、入力装置４３及び表示装置４４を備えて構成される。ＣＰＵ４１は、操作端末５全体の動作制御を司るプロセッサである。メモリ４２は、例えば揮発性の半導体メモリから構成され、主として各種プログラムや各種情報を記憶するために利用される。メモリ４２に格納されたプログラムをＣＰＵ４１が実行することにより、後述のような操作端末５全体としての各種処理が実行される。
【００３４】
入力装置４３は、例えばマウスやキーボードなどから構成され、ユーザが各種入力を行うために利用される。表示装置４４は、例えば液晶パネルなどから構成される。表示装置４４には、組合せ最適化問題等のイジングモデルを用いて解くべき問題及びその際の条件などをユーザが指定するための図２０について後述する問題入力画面１１０や、各ホスト３により実行されたイジングモデルの基底状態探索処理により得られたその問題の解を提示するための図２１〜図２３について後述する結果提示画面１２０〜１２２などが表示される。
【００３５】
（１−２−２）イジングチップの構成
図３は、イジングチップ３２の概略構成を示す。この図３に示すように、イジングチップ３２は、スピンアレイ５０、Ｉ／Ｏ（Input/Output）アドレスデコーダ５１、Ｉ／Ｏドライバ５２及び相互作用アドレスデコーダ５３を備える。本実施の形態では、イジングチップ３２は現在広く用いられているＣＭＯＳ（Complementary Metal-Oxide Semiconductor）集積回路として実装されていることを想定して説明するが、他の固体素子でも実現可能である。
【００３６】
イジングチップ３２は、スピンアレイ５０にリード／ライトを行うためのＳＲＡＭ互換インタフェース５４としてアドレスバス５５、データバス５６、Ｒ／Ｗ制御線５７及びＩ／Ｏクロック線５８を備える。またイジングチップ３２は、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース５９として、相互作用アドレス線６０及び相互作用クロック線６１をも備える。
【００３７】
イジングチップ３２では、イジングモデルのスピンσｉ、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉをすべてスピンアレイ５０内のメモリセルに記憶する情報で表現する。スピンσｉの初期状態の設定や基底探索完了後の解読み出しはＳＲＡＭ互換インタフェース５４を介して行う。またイジングチップ３２では、基底状態を探索すべきイジングモデルをスピンアレイ５０に設定するための相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉのリード／ライトもＳＲＡＭ互換インタフェース５４を介して行う。
【００３８】
そのため、スピンアレイ５０内のスピンσｉ、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉにはアドレスが付与されている。そしてイジングチップ３２にスピンσｉ、相互作用係数Ｊｉ，ｊ又は外部磁場係数ｈｉをリード／ライトする場合、対応するアドレスがイジングアクセラレータボード２５のコントローラ３０（図２）からアドレスバス５５を介してＩ／Ｏアドレスデコーダ５１に与えられ、これらスピンσｉ、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉのリード／ライトを制御するＲ／Ｗ制御信号がコントローラ３０からＲ／Ｗ制御線５７を介してＩ／Ｏドライバ５２に与えられる。
【００３９】
かくしてＩ／Ｏアドレスデコーダ５１は、アドレスバス５５を介して与えられたアドレスに基づいてスピンアレイ５０のワード線をアクティベートし、Ｉ／Ｏドライバ５２は、Ｒ／Ｗ制御線５７を介して与えられたＲ／Ｗ制御信号に基づいてスピンアレイ５０内の対応するビット線を駆動する。これによりデータバス５６を介して与えられたスピンσｉの初期値や、相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉの設定値がスピンアレイ５０に設定され、又は、基底探索完了後の解がスピンアレイ５０から読み出されてデータバス５６を介してイジングアクセラレータボード２５のコントローラ３０（図２）に送信される。
【００４０】
なお、ＳＲＡＭ互換インタフェース５４を構成するアドレスバス５５、データバス５６及びＲ／Ｗ制御線５７は、Ｉ／Ｏクロック線５８を介して外部からイジングチップ３２に与えられるＩ／Ｏクロックに同期して動作する。ただし、本発明においてインタフェースが同期式である必要はなく、非同期式のインタフェースでも良い。本実施の形態では、同期式のインタフェースであるという前提で説明を行う。
【００４１】
また、イジングチップ３２は、基底状態探索を行うために、スピンアレイ５０の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース５９である。具体的に、イジングチップ３２は、イジングアクセラレータボード２５のコントローラ３０（図２）から与えられる相互作用を行うスピン群を指定するアドレスを相互作用アドレス線６０を介して入力し、相互作用クロック線６１を介して入力される図示しない相互作用クロック生成器からの相互作用クロックに同期して相互作用を行う。相互作用アドレスデコーダ５３は、相互作用アドレス線６０を介して与えられたアドレスに基づいてスピンアレイ５０に対する相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉのリード／ライトを行う。
【００４２】
加えて、イジングチップ３２は、後述のようにイジングモデルのスピンを表現するメモリセルの値を確率的に反転させる乱数を注入するための乱数注入線６２を有している。図２について上述した乱数発生器３３により発生された乱数は、この乱数注入線６２を介してスピンアレイ５０に与えられる。
【００４３】
（１−２−３）スピンアレイの構成
スピンアレイ５０は、１個のスピンσｉ並びにそれに付随する相互作用係数Ｊｉ，ｊ及び外部磁場係数ｈｉの保持と、基底状態探索演算とを実現するスピンユニットを基本構成単位として、スピンユニットを多数個並べた構成を有する。
【００４４】
図４は、スピンユニットを複数個並べることで、３次元格子状のトポロジを持つイジングモデルを構成する例を示している。図４の例は、３（Ｘ軸方向）×３（Ｙ軸方向）×２（Ｚ軸方向）の大きさの３次元格子である。座標軸の定義は図示した通り、図面右方向をＸ軸、図面下方向をＹ軸、図面奥行き方向をＺ軸としているが、この座標軸は実施の形態の説明上便宜的に必要なだけであり、本発明とは関係しない。３次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図４の３次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数５のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数６が必要となる。
【００４５】
図４に示す１個のスピンユニット７０には、隣接するスピン（例えば隣接するスピンが５個の場合σｊ、σｋ、σｌ、σｍ、σｎ）の値が入力される。このためスピンユニット７０は、これら入力する隣接するスピンの値を保持するためのメモリセルを有している。またスピンユニット７０は、かかるスピンの値に加え、外部磁場係数と、上述した隣接するスピンとの相互作用係数（隣接する５スピンとの相互作用係数Ｊｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉ）とをそれぞれ保持するメモリセルをも有している。
【００４６】
ところで、先に述べたようにイジングモデルは一般的に無向グラフで表現される相互作用を有している。上述した（１）式では、相互作用を表わす項として、Ｊｉ，ｊ×σｉ×σｊがあるが、これはｉ番目スピンからｊ番目スピンへの相互作用を示している。この場合、一般的なイジングモデルではｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。つまり、Ｊｉ，ｊとＪｊ，ｉは同一である。しかし、本実施の形態のイジングチップ３２では、先に述べたようにこのイジングモデルを有向グラフに拡張し（（２）式）、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
【００４７】
そのため、１個のスピンユニットをｉ番目スピンσｉと考えた時に、このスピンユニットが保持する相互作用係数であるＪｊ，ｉ、Ｊｋ，ｉ、Ｊｌ，ｉ、Ｊｍ，ｉ、Ｊｎ，ｉは、隣接するｊ番目、ｋ番目、ｌ番目、ｍ番目、ｎ番目のスピンσｊ、σｋ、σｌ、σｍ、σｎから、ｉ番目スピンσｉへの相互作用を決めるものである。このことは、図４において、スピンユニットに含まれている相互作用係数が対応する矢印（相互作用）が、図示されているスピンユニットの外部のスピンから、スピンユニットの内部のスピンに向かっていることに対応している。
【００４８】
（１−２−４）スピンユニットの構成
スピンユニット７０の一構成例を図７及び図８を用いて説明する。スピンユニット７０は２つの側面をもっており、便宜上、図７及び図８に分けて説明するが、１個のスピンユニット７０は図７及び図８の構成の双方を含む。図７はスピンユニット７０間の相互作用を実現するための回路を示し、図８はスピンユニット７０が有するメモリセルＮ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１にイジングチップ３２外からアクセスするためのインタフェースであるビット線７１とワード線７２とに注目してスピンユニット７０の構成を図示したものである。
【００４９】
スピンユニット７０は、イジングモデルのスピンσｉ、相互作用係数Ｊｊ，ｉ〜Ｊｎ，ｉ及び外部磁場係数ｈｉを保持するために、複数の１ビットのメモリセルＮ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１を備えている。なお、メモリセルＩＳ０及びＩＳ１、メモリセルＩＵ０及びＩＵ１、メモリセルＩＬ０及びＩＬ１、メモリセルＩＲ０及びＩＲ１、メモリセルＩＤ０及びＩＤ１、並びに、メモリセルＩＦ０及びＩＦ１は、それぞれ２個１組で役割を果たすものであるため、適宜、これらをそれぞれまとめてメモリセル対ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ又はＩＦｘと略記する（図５参照）。
【００５０】
ここで、スピンユニット７０はｉ番目のスピンを表現するものとして説明を行う。メモリセルＮはスピンを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは＋１／−１（＋１を上、−１を下とも表現する）であるが、これをメモリセルが保持可能な２値である０／１に対応させる。例えば、＋１を１、−１を０に対応させる。
【００５１】
図５を用いて、スピンユニット７０が有するメモリセル対ＩＳｘ、ＩＵｘ、ＩＬｘ、ＩＲｘ、ＩＤｘ及びＩＦｘと、図４に示したイジングモデルのトポロジとの対応関係を示す。メモリセル対ＩＳｘは外部磁場係数を記憶する。また、メモリセル対ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ及びＩＦｘは、それぞれ相互作用係数を記憶する。具体的に、メモリセル対ＩＵｘは上側のスピン（Ｙ軸方向で−１）、メモリセル対ＩＬｘは左側のスピン（Ｘ軸方向で−１）、メモリセル対ＩＲｘは右側のスピン（Ｘ軸方向で＋１）、メモリセル対ＩＤｘは下側のスピン（Ｙ軸方向で＋１）、メモリセル対ＩＦｘは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）との相互作用係数をそれぞれ記憶する。
【００５２】
また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット７０は最大で５個のスピンと接続される。本実施の形態のイジングチップ３２では、外部磁場係数及び相互作用係数として＋１／０／−１の３値に対応する。そのため、外部磁場係数及び相互作用係数を表わすためには、それぞれ２ビットのメモリセルが必要となる。
【００５３】
メモリセル対ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ及びＩＦｘは、末尾の数字が０と１の２つのメモリセル（例えばメモリセル対ＩＳｘの場合にはメモリセルＩＳ０及びＩＳ１）の組合せで、＋１／０／−１の３値を表現する。例えば、メモリセル対ＩＳｘの場合には、メモリセルＩＳ１で＋１／−１を表現し、メモリセルＩＳ１が保持する値が１の時は＋１、メモリセルＩＳ１が保持する値が０の時には−１を表す。
【００５４】
これに加えて、メモリセルＩＳ０が保持する値が０の時には外部磁場係数を０と見なし、メモリセルＩＳ０が保持する値が１の時にはメモリセルＩＳ１が保持する値で決まる＋１／−１のいずれかを外部磁場係数とする。外部磁場係数が０の時は外部磁場係数をディセーブルしていると考えれば、メモリセルＩＳ０に保持された値は外部磁場係数のイネーブルビットであると言うことができる（ＩＳ０＝１の時に、外部磁場係数がイネーブルされる）。相互作用係数を記憶するメモリセル対ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ及びＩＦｘも同様に係数とビットの値とを対応させている。
【００５５】
スピンユニット７０内のメモリセルＮ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０及びＩＦ１は、それぞれイジングチップ３２の外部からリード／ライト可能でなければならない。そのために、図８に示すように、スピンユニット７０はビット線７１とワード線７２とをそれぞれ有している。
【００５６】
そしてイジングチップ３２では、図９に示すように、スピンユニット７０が半導体基板上にタイル状に並べられてビット線７１とワード線７２とが接続されており、Ｉ／Ｏアドレスデコーダ５１とＩ／Ｏドライバ５２とでこれらのスピンユニット７０を駆動、制御又は読み出しすることにより、一般的なＳＲＡＭ（Static Random Access Memory）と同様にスピンユニット７０内のメモリセルをイジングチップ３２のＳＲＡＭ互換インタフェース５４でリード／ライトすることができるようになされている。
【００５７】
なお図９上で表現されているスピンユニット（ＮxyzというようにＸ軸、Ｙ軸及びＺ軸上の位置によって符号を付与している）が、３次元格子のトポロジでどの頂点に対応するかを図６に示す。３×３×２の３次元格子頂点を２次元平面上に配置するために、Ｘ軸方向の格子頂点配列の間隔にＺ軸方向の格子頂点配列の各格子頂点を挿入するように配置している。すなわち、図９の２次元平面上でのＹ軸方向（図面下側がＹ軸の正方向）にはＮx0z、Ｎx1z、Ｎx2zというように配置されるが、Ｘ軸方向（図面右側がＸ軸の正方向）にはＮ0y0、Ｎ0y1、Ｎ1y0、Ｎ1y1、Ｎ2y0、Ｎ2y1というように、Ｚ軸方向座標が０と１のスピンユニットが交互に配置される。
【００５８】
またスピンユニット７０は同時に更新を行うために、各スピンユニット７０は、それぞれ相互作用を計算して次のスピンの状態を決定するための回路を独立して持っている。図７では、スピンユニット７０は、外部とのインタフェースとして、信号線ＥＮ，ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦ，ＯＮ及びＧＮＤを有する。信号線ＥＮは当該スピンユニット７０のスピンの更新を許可する切替え信号を入力するインタフェースである。この切替え信号でセレクタ７３を制御することで、メモリセルＮに保持されたスピンの値を、後述の多数決論理回路７４からＯＲ回路７５を介してセレクタ７３に与えられる値に更新することができる。
【００５９】
信号線ＯＮは、当該スピンユニット７０のスピンの値を他のスピンユニット７０（図４のトポロジで隣接するスピンユニット７０）に出力するインタフェースである。信号線ＮＵ，ＮＬ，ＮＲ，ＮＤ及びＮＦは、それぞれ他のスピンユニット７０（図４のトポロジで隣接するユニット）が保持するスピンの値を入力するためのインタフェースである。信号線ＮＵは上側のスピン（Ｙ軸方向で−１）、信号線ＮＬは左側のスピン（Ｘ軸方向で−１）、信号線ＮＲは右側のスピン（Ｘ軸方向で＋１）、信号線ＮＤは下側のスピン（Ｙ軸方向で＋１）、信号線ＮＦは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）からの入力である。
【００６０】
スピンユニット７０では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を見たときに、正の値と負の値のどちらが支配的か判断することと等価である。例えば、ｉ番目スピンσｉに、スピンσｊ、σｋ、σｌ、σｍ及びσｎが隣接しているとして、スピンσｉの次状態は以下のように決まる。
【００６１】
まず、隣接スピンの値はσｊ＝＋１、σｋ＝−１、σｌ＝＋１、σｍ＝−１、σｎ＝＋１とし、相互作用係数はＪｊ，ｉ＝＋１、Ｊｋ，ｉ＝＋１、Ｊｌ，ｉ＝＋１、Ｊｍ，ｉ＝−１、Ｊｎ，ｉ＝−１、外部磁場係数ｈｉ＝＋１とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σｊ×Ｊｊ，ｉ＝＋１、σｋ×Ｊｋ，ｉ＝−１、σｌ×Ｊｌ，ｉ＝＋１、σｍ×Ｊｍ，ｉ＝＋１、σｎ×Ｊｎ，ｉ＝−１、ｈｉ＝＋１となる。外部磁場係数は、常に値が＋１のスピンとの相互作用係数と読み替えて良い。
【００６２】
ここで、ｉ番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれｉ番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、ｊ番目スピンとの間での局所的なエネルギーは、ｉ番目スピンを＋１とした時には−１、ｉ番目スピンを−１としたときには＋１となるので、ｉ番目スピンを＋１にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。
【００６３】
このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えたときに、ｉ番目スピンを＋１／−１のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数及び隣接スピンの積と、外部磁場係数とをそれぞれ並べたものにおいて、＋１と−１のどちらが多いか数えれば良い。先程の例では、＋１が４個、−１が２個である。仮に、ｉ番目スピンを＋１とすると、エネルギーの総和は−２、ｉ番目スピンを−１とするとエネルギーの総和は＋２になる。よって、＋１の個数が多い時にはｉ番目スピンの次状態を＋１とし、−１の個数が多い時にはｉ番目スピンの次状態を−１にするという多数決で、エネルギーを最小化するｉ番目スピンの次状態を決定することができる。
【００６４】
図７に示した論理回路７７は、上述の相互作用を行うための回路である。まず、隣接スピンの状態と、相互作用係数の＋１／−１を示すメモリセルＩＵ１，ＩＬ１，ＩＲ１，ＩＤ１，ＩＦ１が保持する値との排他的論理和の否定（ＸＮＯＲ）をＸＮＯＲ回路７５で求める。これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる（＋１は１、−１は０にエンコードされているものとする）。
【００６５】
もし、相互作用係数が＋１／−１だけであれば、ＸＮＯＲ回路７５の出力のうち＋１／−１のどちらが多いかを多数決論理回路７４において多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態＋１のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理回路７４に入力すべき値となる。
【００６６】
次に、係数０の実現方法について考える。ｎ入力の多数決論理ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ）があるとき、以下の命題は真であると言える。まず、入力Ｉ１，Ｉ２，Ｉ３，……，Ｉｎの複製Ｉ’１，Ｉ’２，Ｉ’３，……，Ｉ’ｎがあるとする（任意のｋについて、Ｉｋ＝Ｉ’ｋである）。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ）の出力は、複製もあわせて入力したｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ、Ｉ’１，Ｉ’２，Ｉ’３，……，Ｉ’ｎ）と等しい。つまり、各入力変数をそれぞれ２個ずつ入れても、出力は不変である。さらに、入力Ｉ１、Ｉ２、Ｉ３，……，Ｉｎの他に、もう一つの入力Ｉｘと、その反転！Ｉｘがあるとする。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ，Ｉｘ，！Ｉｘ）の出力は、ｆ（Ｉ１，Ｉ２，Ｉ３，……，Ｉｎ）と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数０を実現する。
【００６７】
具体的には、図７に示すように、ＸＯＲ回路７６を利用して、係数のイネーブルを決めるビット（メモリセルＩＳ０，ＩＵ０，ＩＬ０，ＩＲ０，ＩＤ０及びＩＦ０にそれぞれ保持されたビット）の値により、多数決論理回路７４に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、メモリセルＩＳ０が保持するビットの値が０の場合、メモリセルＩＳ１が保持するビットの値と、メモリセルＩＳ１が保持するビットの値を反転させた値が同時に多数決論理回路７４に入力されるので、外部磁場係数の影響は無い（外部磁場係数が０に相当する）ことになる。また、メモリセルＩＳ０が保持するビットの値が１の場合には、メモリセルＩＳ１が保持するビットの値と、その値と同じ値（複製）が同時に多数決論理回路７４に入力されることになる。
【００６８】
一方、上述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することができるが、図１０に示すように、これだけでは局所最適解に陥ってしまい、大域最適解に到達できない可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことができず、大域最適解に到達しない。
【００６９】
そこで本実施の形態においては、局所最適解から脱出するための手法として、メモリセルＮが保持するスピンの値を確率的に反転させるために、スピンユニット７０はインタフェースとしてＲＮＤ線７８を有する。そしてスピンユニット７０には、上述のように対応する乱数発生器３３（図２）から乱数注入線６２（図３）を介してスピンアレイ５０（図３）に与えられた乱数がこのＲＮＤ線７８を介して与えられ、この乱数がＯＲ回路７５に入力することで、スピンの値が確率的に反転される。
【００７０】
この際、乱数発生器３３は、図１１に示すように、初期温度をＴ０、終端温度をＴＥ、基底状態探索の１周期をｔ１として、時間と共に単調減少する指数関数で表される冷却スケジュール（乱数発生器３３にどのようなパターンで乱数を発生させるかを予め規定したスケジュール）の温度Ｔｔで決まる確率でスピンの値が反転するように乱数を発生させる。
【００７１】
なおイジングチップ３２におけるスピンユニット７０間での乱数の伝達経路を図１２に示す。この図１２に示すように、乱数発生器３３から与えられた乱数は、イジングチップ３２内で横方向又は縦方向に隣接するスピンユニット７０に順次伝達される。
【００７２】
（１−２−５）情報処理システムの論理構成
図１３は、本実施の形態による情報処理システム１の論理構成を示す。この図１３に示すように、本情報処理システム１の場合、管理ノード２の記憶装置１３には、プログラムとして、ＵＩ（User Interface）プログラム８０、問題変換プログラム８１、問題分割プログラム８２、動作条件生成プログラム８３、イジング制御プログラム８４及び解品質評価プログラム８５が格納され、情報としてシステム構成情報８６及び既定ソルバ動作条件８７が格納されている。また各ホスト３の記憶装置２３にはボード制御プログラム９０及びボード構成情報９１が格納され、各イジングアクセラレータボード２５のメモリ３１にはチップ構成情報９２が格納され、操作端末５のメモリ４２にはユーザプログラム９３及び問題定義ファイル９４が格納されている。
【００７３】
ＵＩプログラム８０は、操作端末５（図１）を利用したユーザからの要求等に応じて必要なＧＵＩや情報等を操作端末５に表示させる機能を有するプログラムであり、問題変換プログラム８１は、後述のように操作端末５から与えられる問題定義ファイル９４において定義された問題（以下、これを原問題と呼ぶ）をイジングモデルに変換する機能を有するプログラムである。また問題分割プログラム８２は、必要に応じて原問題から複数の副問題を生成したり、副問題をホスト３ごとの部分問題に分割する機能を有するプログラムである。
【００７４】
動作条件生成プログラム８３は、操作端末５を用いてユーザが指定した図２０について後述する解精度や制限時間などの条件と、後述する既定ソルバ動作条件８７とに基づいて、ユーザの要求に合致したイジングチップ３２の動作条件（以下、これをソルバ動作条件と呼ぶ）を生成する機能を有するプログラムである。またイジング制御プログラム８４は、各ホスト３にそれぞれ搭載された各イジングアクセラレータボード２５内の個々のイジングチップ３２（図２）を制御する機能を有するプログラムである。さらに解品質評価プログラム８５は、ホスト３において実行された基底状態探索により得られた解の品質を評価する機能を有するプログラムである。
【００７５】
システム構成情報８６は、管理ノード２が管理する各ホスト３に関する情報であり、図１４に示すように、ホスト数、搭載ボード数、スピンユニット総数、空スピン数及び係数範囲などの情報を含む。ホスト数は、情報処理システム１内に存在するホスト３の総数を表し、搭載ボード数は、情報処理システム１内に存在するイジングアクセラレータボード２５の総数を表す。またスピンユニット総数は、情報処理システム１内に存在するスピンユニット７０（図７）の総数を表し、空スピン数は、情報処理システム１内に存在するスピンユニット７０のうちのそのとき使用していないスピンユニット７０の数を表す。さらに係数範囲は、本情報処理システム１において基底状態探索が可能なイジングモデルの相互作用係数及び外部磁場係数の範囲を表す。本実施の形態の場合、相互作用係数及び外部磁場係数の範囲は、＋１，０,−１の３値である。
【００７６】
既定ソルバ動作条件８７は、ソルバ動作条件の初期値として予め規定された動作条件である。本実施の形態の場合、既定ソルバ動作条件として、図１５に示すように、初期温度、冷却係数、終端温度、初期スピン値、繰返し回数、基底状態探索１回の所要時間が規定されている。
【００７７】
初期温度、冷却係数及び終端温度は、上述のようにイジングアクセラレータボード２５内の各乱数発生器３３（図２）を制御するためのパラメータである。また初期スピン値は、本情報処理システム１内の各スピンユニット７０にそれぞれ設定すべきスピンの値を表す。ただし、これらスピンの値は、ランダムに発生させることができるため、必ずしも既定ソルバ動作条件として設定しておく必要はない。
【００７８】
また繰返し回数は、各イジングチップ３２が１回の基底状態探索時に実行すべき相互作用動作の繰返し回数を表し、基底状態探索１回の所要時間は、１回の基底状態探索に要する時間を表す。本情報処理システム１では、繰返し回数分だけ各イジングチップ３２に相互作用動作を繰り返し実行させることで１回分の基底状態探索が行われ、この基底状態探索を図２０について後述する問題入力画面１１０において指定された制限時間が到来するまで繰り返し実行することで解を求めることになる。
【００７９】
一方、ボード制御プログラム９０（図１３）は、管理ノード２のイジング制御プログラム８４からの指示を受けて自ホスト内に存在する各イジングアクセラレータボード２５上の各イジングチップ３２を制御する機能を有するプログラムである。
【００８０】
またボード構成情報９１は、自ホストに搭載された各イジングアクセラレータボード２５に関する情報であり、図１６に示すように、搭載チップ数、スピンユニット総数、Ｘ方向スピンユニット数、Ｙ方向スピンユニット数、Ｚ方向スピンユニット数及び動作速度などの情報を含む。
【００８１】
搭載チップ数は、対応するイジングアクセラレータボード２５に搭載されたイジングチップ３２の個数を表し、スピンユニット総数は、そのイジングアクセラレータボード２５におけるスピンユニット７０の総数を表す。またＸ方向スピンユニット数、Ｙ方向スピンユニット数及びＺ方向スピンユニット数は、それぞれそのイジングアクセラレータボード２５において表現可能なイジングモデルにおけるＸ方向、Ｙ方向及びＺ方向のスピンユニット数をそれぞれ表し、動作速度は、そのイジングアクセラレータボード２５の動作速度を表す。
【００８２】
なお、図１６に示すボード構成情報９１は、１つのイジングアクセラレータボード２５に関する情報であり、ホスト３の記憶装置２３には、自ホストに搭載されたイジングアクセラレータボード２５ごとのボード構成情報９１が格納される。
【００８３】
他方、チップ構成情報９２（図１３）は、自イジングアクセラレータボードに搭載されたイジングチップ３２に関する情報であり、図１７に示すように、スピンユニット総数、Ｘ方向スピンユニット数、Ｙ方向スピンユニット数及びＺ方向スピンユニット数などの情報を含む。
【００８４】
スピンユニット総数は、対応するイジングチップ３２に搭載されたスピンユニット７０の総数を表し、Ｘ方向スピンユニット数、Ｙ方向スピンユニット数及びＺ方向スピンユニット数は、それぞれそのイジングチップ３２において表現可能なイジングモデルにおけるＸ方向、Ｙ方向及びＺ方向のスピンユニット数をそれぞれ表す。
【００８５】
なお、図１７に示すチップ構成情報９２は、１つのイジングチップ３２に関する情報であり、イジングアクセラレータボード２５のメモリ３１には、自イジングアクセラレータボードに搭載されたイジングチップ３２ごとのチップ構成情報９２が格納される。
【００８６】
さらにユーザプログラム９３は、ユーザ操作や管理ノード２のＵＩプログラム８０からの指示に応じて、例えば図２０について後述する問題入力画面１１０や図２１〜図２３について後述する結果提示画面１２０〜１２２を表示装置４４（図１）に表示する機能を有するプログラムである。
【００８７】
また問題定義ファイル９４は、ユーザにより予め作成された、イジングモデルを利用して解くべき問題を定義したファイルである。例えば図１８に示すように、線形計画問題を定義した問題定義ファイル９４は目的関数及び制約条件の各情報を含む。図１８は、「ｘ≧０」及び「３ｘ＋２ｙ＜100」という制約条件のもとで「ｘ＋２ｙ」を最小にするｘ及びｙを求める問題である。なお、図１８は、目標とする解精度（objective）を「50」％以上とし、計算時間（Timelimit）を「50sec」未満とするソルバ動作条件をも問題定義ファイル９４において定義した例を示しているが、このソルバ動作条件は必ずしも問題定義ファイル９４内に予め定義しておく必要はなく、図２０について後述する問題入力画面１１０上で指定するようにしても良い。
【００８８】
（１−２−６）イジングモデルのデータ構造例
図１９は、操作端末５から管理ノード２に与えられた問題定義ファイル９４を管理ノード２の問題変換プログラム８１が問題変換することにより得られるイジングモデルのデータ構造例を示す。この図１９において、イジングモデルは、相互作用係数を定義する相互作用定義部１００と、外部磁場係数を定義する外部磁場係数定義部１０１とから構成される。
【００８９】
相互作用定義部１００は、相互作用の元となるスピンを指定する識別子（例えば、スピンに一意な番号を付与して、それを識別子とする）、相互作用の先となるスピンの識別子、及び、相互作用係数を一組として、この組を相互作用の数だけ並べる。これは、グラフをコンピュータ上で扱う時のデータ構造である隣接リストに近い。
【００９０】
外部磁場係数定義部１０１は、外部磁場を与えるスピンを指定する識別子と、外部磁場係数とを一組として、外部磁場係数の数だけ並べる。
【００９１】
なお、相互作用定義部１００で定義されていないスピン間の相互作用係数や、外部磁場係数１０１で定義されていないスピンへの外部磁場係数は０とする。つまり、デフォルト値は、相互作用係数の場合には当該スピン間には相互作用が存在しないことを示す０であり、外部磁場係数の場合いは当該スピンには外部磁場が存在しないことを示す０となる。
【００９２】
（１−３）操作端末に表示される各種画面
図２０は、本実施の形態の情報処理システム１において、所定操作により操作端末５（図１）の表示装置４４（図１）に表示される問題入力画面１１０の画面構成を示す。この問題入力画面１１０は、イジングモデルを用いて解くべき問題や、その際の条件（解精度及び制限時間）をユーザが指定するための画面である。
【００９３】
この問題入力画面１１０は、図２０に示すように、システム利用状況表示領域１１１、問題種別指定領域１１２、問題指定領域１１３、解精度指定領域１１４、制限時間指定領域１１５及び実行ボタン１１６を備えて構成される。
【００９４】
そしてシステム利用状況表示領域１１１には、本情報処理システム１の利用状況として、現在の空きスピン数（現在利用されていないスピンセル数）が表示される。
【００９５】
また問題種別指定領域１１２には、問題種別指定欄１１２Ａ及びプルダウンボタン１１２Ｂが表示される。そして問題入力画面１１０では、プルダウンボタン１１２Ｂをクリックすることによって、本情報処理システムにおいて解くことができる問題の種別の名称（組合せ最適化問題（「MAXCUT」）、巡回セールスマン問題（「TSP」）、画像セグメンテーション問題（「Image Segmentation」）など）が掲載されたプルダウンメニュー１１２Ｃを表示させることができ、このプルダウンメニュー１１２Ｃに表示された名称の中から該当する名称をクリックすることによってそのとき解こうとする問題種別の名称を選択することができる。このとき選択された問題種別の名称が問題種別指定欄１１２Ａに表示される。
【００９６】
問題指定領域１１３には、問題定義ファイル９４のファイル名を入力するためのテキストボックス（以下、これを問題定義ファイル名用テキストボックスと呼ぶ）１１３Ａが表示される。そして問題入力画面１１０では、ユーザが予め用意した問題の問題定義ファイル９４（図１８）ファイル名をこの問題ファイル名用テキストボックス１１３Ａに入力することによって、そのとき情報処理システム１が解くべき問題としてその問題を指定することができる。
【００９７】
解精度指定領域１１４は、問題指定領域１１３において問題定義ファイル９４のファイル名を指定した問題をどの程度の精度で解くべきかという解精度をユーザが指定するための領域である。この解精度指定領域１１４には、かかる解精度を指定するか否かを選択するためのチェックボックス１１４Ａと、目標とすべき解精度（以下、これを目標精度と呼ぶ）を入力するためのテキストボックス（以下、これを目標精度用テキストボックスと呼ぶ）１１４Ｂとが表示される。
【００９８】
また解精度指定領域１１４には、かかる解精度の基準となる値（以下、これを解精度基準値と呼ぶ）を指定するための領域（以下、これを解精度基準値指定領域と呼ぶ）１１４Ｃが設けられ、この解精度基準値指定領域１１４Ｃ内に、本情報処理システム１において解精度基準値とすることができる幾つかの値を表す文字列１１４Ｄ及びこれら文字列１１４Ｄとそれぞれ対応付けられた複数のトグルスイッチ１１４Ｅとが表示される。本実施の形態においては、かかる文字列１１４Ｄとして、「自明な下（上）界」、「グリーディアルゴリズム」及び「ユーザ指定の下（上）界」の３つが表示される。また「ユーザ指定の下（上）界」の下側には、実際にユーザが解精度基準値を指定するためのテキストボックス１１４Ｆが表示される。
【００９９】
かくしてユーザは、チェックボックス１１４Ａをクリックすることによって当該チェックボックス１１４Ａ内にチェックマーク１１４Ｇを表示させた上で、解精度基準値指定領域１１４Ｃにおいて所望する解精度基準値に対応するトグルスイッチ１１４Ｅをクリックすることによってその解精度基準値を選択（ただし「ユーザ指定の下（上）界」の場合には、さらに所望する解精度基準値をテキストボックス１１４Ｆに入力）し、さらにその目標精度を目標精度用テキストボックス１１４Ｂに入力することによって、所望する解精度を指定することができる。またユーザは、チェックボックス１１４Ａにチェックマーク１１４Ｇを表示させないことにより解精度を指定しないこともできる。
【０１００】
制限時間指定領域１１５には、解を出すまでの制限時間をユーザが指定するためのテキストボックス（以下、これを制限時間用テキストボックスと呼ぶ１１５Ａ）が表示される。かくしてユーザは、この制限時間用テキストボックス１１５Ａ内に所望する制限時間を入力することによって、かかる制限時間を指定することができる。
【０１０１】
そして問題入力画面１１０では、上述のようにしてそのとき解こうとする問題の種別、その問題定義ファイル９４のファイル名（問題定義ファイル名）及び条件（解精度及び制限時間）を指定した後、実行ボタン１１６をクリックすることによって、このときユーザがその問題入力画面１１０上で指定した問題定義ファイル９４のデータ及び条件（解精度及び制限時間）を操作端末５から管理ノード２に送信させることができる。かくして、この問題定義ファイル９４及び条件を受信した管理ノード２は、当該問題定義ファイル９４において定義された問題を指定された条件の元で解くようにホスト３（図１）を制御する。
【０１０２】
一方、図２１〜図２３は、操作端末５に表示される結果提示画面１２０〜１２２の画面構成を示す。この結果提示画面１２０〜１２２は、上述のようにユーザが問題入力画面１１０において問題や条件を指定し、実行ボタン１１６をクリックした結果、本情報処理システム１において実行された基底状態探索処理により得られた結果をユーザに提示するための画面である。
【０１０３】
図２１は、問題入力画面１１０において指定された問題が指定組合せ最大カット問題（「MAXCUT」）であった場合の結果提示画面１２０の画面例であり、図２２は、かかる問題が巡回セールスマン問題（「TSP」）であった場合の結果提示画面１２１の画面例である。これらの結果提示画面１２０，１２１では、解の評価指標１２０Ａ、１２１Ａ、基準値に対する解精度１２０Ｂ，１２１Ｂ及び問題固有の最適化結果１２０Ｃ，１２１Ｃがそれぞれ表示される。また図２２は、問題入力画面１１０において指定された問題が画像セグメンテーション問題（「Image Segmentation」）であった場合の結果提示画面１２２の画面例である。この場合、結果提示画面１２２には、問題固有の最適化結果１２２Ａが画像として表示される。
【０１０４】
（１−４）本情報処理システムにおいて実行される各種処理
次に、本情報処理システム１において実行される各種処理の流れについて説明する。なお、以下においては、適宜、各種処理の処理主体をプログラム（「〜部」）として説明するが、実際上は、管理ノード２のＣＰＵ１１（図１）やホスト３のＣＰＵ２１（図１）がそのプログラムに基づいてその処理を実行することは言うまでもない。
【０１０５】
（１−４−１）基本的な処理及びデータの流れ
図２４は、本情報処理システム１において実行されるイジングモデルの基底状態探索を行う処理（以下、これを単に基底状態探索処理と呼ぶ）に関する基本的な処理及びデータの流れを示す。
【０１０６】
本情報処理システム１では、問題定義ファイル９４（図１８）において定義された原問題をイジングモデル１３０に変換し（ＳＰ１）、このイジングモデル１３０を各ホスト３において基底状態探索が可能な大きさのイジングモデルである部分問題１３１に分割する（ＳＰ２）。また、これと並行して、ユーザが問題入力画面１１０（図２０）において指定した条件（解精度及び制限時間）１３２と、既定ソルバ動作条件８７（図１５）とに基づいてソルバ動作条件１３３を生成する（ＳＰ３）。
【０１０７】
この後、上述のようにして作成した部分問題１３１を各ホスト３にそれぞれ振り分け、各ホスト３においてそれぞれ対応する部分問題の基底状態探索を行う（ＳＰ４）。この基底状態探索により得られる解（スピン配列）１３４は、それぞれ対応する部分問題の解となるものである。そこで、これらの部分問題の解（スピン配列）を統合して原問題の解１３５を生成する（ＳＰ５）。
【０１０８】
（１−４−２）基底状態探索制御処理
図２５は、上述した基底状態探索処理に関連して管理ノード２において実行される基底状態探索制御処理の流れを示す。この基底状態探索制御処理は、図２０について上述した問題入力画面１１０においてユーザが問題定義ファイル９４（図１８）及び条件（解精度及び制限時間）を指定した上で実行ボタン１１６（図２０）をクリックした結果、かかる問題定義ファイル９４及び条件が操作端末５から管理ノード２に送信されることにより開始される。
【０１０９】
かかる問題定義ファイル９４及び条件を受信した管理ノード２では、まず、問題変換プログラム８１（図１３）が原問題を図１９について上述したデータ構造のイジングモデルに変換する（ＳＰ１０）。
【０１１０】
続いて、動作条件生成プログラム８３（図１３）が、既定ソルバ動作条件８７（図１５）と、操作端末５から送信されてきた条件（解精度及び制限時間）とに基づいて、そのとき実行する基底状態探索処理のソルバ動作条件を生成する（ＳＰ１１）。具体的に、動作条件生成プログラム８３は、既定ソルバ動作条件８７において規定された基底状態探索１回の所要時間が問題入力画面１１０においてユーザにより指定された制限時間以上である場合には、基底状態探索１回の所要時間が当該制限時間未満となるように、既定ソルバ動作条件８７において規定されている相互作用の繰返し回数を減らしたソルバ動作条件を生成する。
【０１１１】
次いで、問題分割プログラム８２が、原問題の係数範囲が各ホスト３内のイジングアクセラレータボード２５に搭載されたイジングチップ３２で対応可能な係数範囲よりも大きいか否かを判定し（ＳＰ１２）、肯定結果を得た場合には、原問題から複数の副問題を生成する副問題生成処理を実行する（ＳＰ１３）。
【０１１２】
この後、問題分割プログラム８２は、ステップＳＰ１３で生成した副問題の中から１つの副問題を選択する（ＳＰ１４）。さらに問題分割プログラム８２は、ステップＳＰ１２で否定結果を得た場合には原問題を、またステップＳＰ１２で肯定結果を得た場合にはステップＳＰ１４で選択した副問題をホスト３単位の部分問題に分割する（ＳＰ１５）。
【０１１３】
次いで、イジング制御プログラム８４（図１３）が、必要な各ホスト３に部分問題及びソルバ動作条件をそれぞれ送信し（ＳＰ１６）、この後、これらのホスト３に対して計算開始指示を送信する（ＳＰ１７）。この結果、この計算開始指示に応じて各ホスト３においてイジングモデルの基底状態探索処理が開始され、この後、この基底状態探索処理の処理結果が管理ノード２に送信される。
【０１１４】
管理ノード２では、上述のように各ホスト３からそれぞれ送信される基底状態探索処理の処理結果をイジング制御プログラム８４が受け取り（ＳＰ１８）、この後、ステップＳＰ１３で副問題を生成している場合には、すべての副問題についての結果（すべての副問題の解）を得たか否かを判断する（ＳＰ１９）。そして、この判断で否定結果を得た場合には、処理をステップＳＰ１４に戻し、この後、ステップＳＰ１９で肯定結果を得るまでステップＳＰ１４〜ステップＳＰ１９の処理を繰り返す。
【０１１５】
やがてステップＳＰ１３で生成したすべての副問題の解を得ることによりステップＳＰ１９で肯定結果を得た場合や、そもそも副問題を生成していない場合には、イジング制御プログラム８４が、上述のようにして得られた各ホスト３からの基底状態探索処理の結果を統合することにより原問題の解を算出し、算出した原問題の解を解品質評価プログラム８５（図１３）が評価する（ＳＰ２０）。また解品質評価プログラム８５は、ステップＳＰ２０で得た評価結果が、図２０について上述した問題入力画面１１０においてユーザにより指定された解精度よりも良いか否かを判断する（ＳＰ２１）。
【０１１６】
そして、この判断で肯定結果が得られた場合、ＵＩプログラム８０（図１３）が、図２１〜図２３について上述した形態の結果提示画面１２０〜１２２を操作端末５に表示させる（ＳＰ２６）。以上により、この基底状態探索制御処理が終了する。
【０１１７】
これに対して、ステップＳＰ２１の判断で否定結果が得られた場合、動作条件生成プログラム８３（図１３）がソルバ動作条件を更新する（ＳＰ２２）。具体的に、動作条件生成プログラム８３は、図２６に示すように、図１１について上述した冷却スケジュールにおける冷却係数を１に漸近するように増加させ、かつ、図２７に示すように、１回の基底状態探索時に実行すべき相互作用の回数を増やすようにソルバ動作条件を更新する。冷却スケジュールにおける冷却係数が１に近いほど温度（つまりスピンが反転する確率）の低下が遅くなるため、このようにソルバ動作条件を更新することによって、より多くのスピン状態の組合せを探索することができ、この結果として良い解に到達し易くすることができる。
【０１１８】
続いて、解品質評価プログラム８５が、ステップＳＰ２０の評価結果に基づいて、今回得られた解がこれまでに得られた解よりも良いか否かを判断する（ＳＰ２３）。そして解品質評価プログラム８５は、この判断で否定結果を得るとステップＳＰ２５に進み、これに対して肯定結果を得ると現在の解をメモリ１２に一時的に（図１）に格納した後に（ＳＰ２４）、本基底状態探索制御処理を開始してから現在までの経過時間がユーザにより指定された制限時間を超過したか否かを判断する（ＳＰ２５）。
【０１１９】
この判断で否定結果が得られた場合、処理がステップＳＰ１７に戻され、この後、ステップＳＰ１７〜ステップＳＰ２５の処理が繰り返される。この結果、管理ノード２のメモリ１２に格納された原問題の解が適宜更新されながら各ホスト３において基底状態探索処理が繰り返し行われ、繰り返し行われた基底状態探索処理により得られた原問題の解の中から最も評価結果の良い解が管理ノード２のメモリ１２に保持されることになる。
【０１２０】
そして、やがて本基底状態探索制御処理を開始してからの経過時間がユーザにより指定された制限時間を超過することによりステップＳＰ２５で肯定結果が得られると、ＵＩプログラム８０が、そのときメモリ１２に格納されている原問題の解を操作端末５に送信することにより、図２１〜図２３について上述した形態の結果提示画面１２０〜１２２を操作端末５の表示装置４４（図１）に表示させ（ＳＰ２６）、この後、この基底状態探索制御処理が終了する。
【０１２１】
（１−４−３）副問題生成処理
（１−４−３−１）副問題生成処理
図２８は、上述の基底状態探索制御処理（図２５）のステップＳＰ１３において問題分割プログラム８２（図１３）により実行される副問題生成処理を示す。問題分割プログラム８２は、この図２８に示す処理手順に従って複数の副問題を生成する。
【０１２２】
なお、以下においては、適宜、基底状態探索制御処理のステップＳＰ１０において得られた原問題のイジングモデルにおけるｉ番目スピンからｊ番目スピンへの相互作用係数を「原問題のＪｉ，ｊ」、ｉ番目スピンの外部磁場係数を「原問題のｈｉ」と呼ぶものとする。
【０１２３】
問題分割プログラム８２は、基底状態探索制御処理のステップＳＰ１３に進むとこの図２８に示す副問題生成処理を開始し、まず、原問題のＪｉ，ｊ及び原問題のｈｉを正規化する（ＳＰ３０）。原問題の相互作用係数と外部磁場係数は様々な値を含んでいるが、相互作用係数と外部磁場係数の両方を通して絶対値が最大の係数（これを係数深度と呼ぶ）で全ての係数を割って、係数を−１〜＋１に正規化する。なお、相互作用係数と外部磁場係数をそれぞれ別に正規化しても良い。この場合、相互作用係数については、絶対値が最大の相互作用係数を係数深度として、各相互作用係数を係数深度で割ることによりそれぞれ正規化し、外部磁場係数については、絶対値が最大の外部磁場係数を係数深度として、各外部磁場係数を係数深度で割ることによりそれぞれ正規化する。
【０１２４】
続いて、問題分割プログラム８２は、生成する副問題の個数を決定する（ＳＰ３１）。副問題の個数は、計算量と計算精度のトレードオフの関係にあることを考慮して決定する。すなわち、副問題の個数を多くすることで、より近似度の高い（大域最適解に近い）解が得られる可能性が高くなる半面、多くの副問題の基底状態探索を行わなければならないため、計算量は増加する。情報処理システム１の基底状態探索の処理速度や、応用上生じる制約時間、及び、要求される解精度から副問題の個数を決定する必要がある。一般的には、同じ近似度で解を求めるために必要な副問題の個数は、問題のサイズ（スピン数、相互作用の数、及び、外部磁場の数）と、ステップＳＰ３０で求めた係数深度に比例して増加する傾向にある。
【０１２５】
この後、問題分割プログラム８２は、ステップＳＰ３２〜ＳＰ３６において、ステップＳＰ３１で決定した副問題の個数分だけ、副問題を生成する処理を行う。実際上、問題分割プログラム８２は、まず変数ｉを１に設定し（ＳＰ３２）、変数ｉと同じ値のｉ番目のスピンに対する副問題の相互作用係数、及び、外部磁場係数を決定し（ＳＰ３３）、副問題データとして書き出す（ＳＰ３４）。さらに問題分割プログラム８２は、変数ｉを１増加させた値に更新し（ＳＰ３５）、変数ｉの値が副問題数よりも大きいか否かを判定する（ＳＰ３６）。そして問題分割プログラム８２は、変数ｉの値が副問題数よりも小さい場合にはＳＰ３３に戻り、この後、変数ｉの値が副問題数よりも大きくなるまでステップＳＰ３３〜ＳＰ３６の処理を繰り返す。
【０１２６】
ステップＳＰ３２、ステップＳＰ３５及びステップＳＰ３６は副問題の個数分だけステップＳＰ３３〜ステップＳＰ３４を実行するためのループであるが、このループはループ内で前後の依存関係を持たないので、並列に実行可能な計算機環境上ではループ展開して用意に並列実行可能である。つまり、十分な並列性を有する計算機環境があれば、副問題の個数にかかわらず、副問題の生成は定数時間で行うことができ、大規模な問題に対してもスケーラビリティを有する。
【０１２７】
（１−４−３−２）副問題相互作用係数生成処理
図２９は、上述の副問題生成処理のステップＳＰ３３において問題分割プログラム８２により実行される副問題相互作用係数生成処理の処理内容を示す。問題分割プログラム８２は、この図２９に示す処理手順に従って、正規化後の原問題（イジングモデル）の相互作用係数から副問題の相互作用係数を生成する。
【０１２８】
実際上、問題分割プログラム８２は、副問題生成処理のステップＳＰ３３に進むと、この図２９に示す相互作用係数生成処理を開始し、まず、ｉ番目のスピンに対応する変数ｉを初期化（０に設定）し（ＳＰ４０）、この後、変数ｉの値が全スピン数よりも小さいか否かを判定する（ＳＰ４１）。そして問題分割プログラム８２は、この判断で肯定結果を得ると、ｊ番目のスピンに対応する変数ｊを初期化し（ＳＰ４２）、この後、変数ｊの値が全スピン数よりも小さいか否かを判定する（ＳＰ４３）。
【０１２９】
問題分割プログラム８２は、この判断で肯定結果を得ると、変数ｉ及び変数ｊが同じ値であるか否かを判定する（ＳＰ４４）。そして問題分割プログラム８２は、この判断で肯定結果を得た場合には、副問題のｉ番目スピンからｊ番目スピンへの相互作用係数Ｊｉ，ｊを０に設定し（ＳＰ４５）、これに対して否定結果を得た場合には、原問題の相互作用係数Ｊｉ，ｊから副問題の相互作用係数Ｊｉ，ｊを生成する（ＳＰ４６）。そして問題分割プログラム８２は、この後、変数ｊの値を１増加させる（ＳＰ４７）。
【０１３０】
この後、問題分割プログラム８２は、ステップＳＰ４３に戻り、この後、ステップＳＰ４３以降の処理を繰り返す。そして問題分割プログラム８２は、やがてすべてのスピンについてステップＳＰ４３〜ステップＳＰ４７の処理を実行し終えることによりステップＳＰ４３で否定結果を得ると、変数ｉの値を１増加させ（ＳＰ４８）、この後、ステップＳＰ４１に戻って、当該ステップＳＰ４１以降の処理を繰り返す。
【０１３１】
そして問題分割プログラム８２は、やがてすべてのスピンについてステップＳＰ４１〜ステップＳＰ４８の処理を実行し終えることによりステップＳＰ４１で否定結果を得ると、この副問題相互作用係数生成処理を終了する。
【０１３２】
以上の副問題相互作用係数生成処理（図２９）において、ステップＳＰ４０〜ステップＳＰ４８は相互作用係数Ｊｉ，ｊを２次元平面上に行列のように並べたときに、それを端から順次走査していくような動きをする。なお、外側ループの変数がｉ、内側ループの変数がｊであることから、あるｉ，ｊが与えられた時にｉ＞ｊであれば、ｊ，ｉはすでに通過済み（処理済み）であることに留意されたい。
【０１３３】
相互作用は互いに異なる２つのスピン間にのみ存在するので、相互作用係数を順に走査する中で、ｉ＝ｊであるような相互作用係数（例えばＪ１，１）は無いはずである。そこで、上述のようにステップＳＰ４４〜ステップＳＰ４５でｉ＝ｊとなる相互作用係数は０に設定する。それ以外のｉ，ｊの組み合わせについては、ステップＳＰ４６で原問題のＪｉ，ｊから副問題のＪｉ，ｊを生成する。
【０１３４】
なお副問題相互作用係数生成処理のステップＳＰ４６の具体的な処理の一例を図３０に示す。この図３０は、原問題の相互作用係数のうち、正の係数のものを＋１／０で模擬し、負の係数のものを−１／０で模擬するように副問題の相互作用係数を生成する場合の処理手順である。
【０１３５】
実際上、問題分割プログラム８２は、副問題相互作用係数生成処理のステップＳＰ４６において、まず、与えられた変数ｉ，ｊで指定される原問題のＪｉ，ｊが、有向グラフとして与えられているものか、無向グラフの辺（無向辺）として与えられているものかの判定を行う（ＳＰ５０）。ここでは、原問題のＪｉ，ｊ及びＪｊ，ｉが同一の値であれば（Ｊｉ，ｊ＝Ｊｊ，ｉ）、無向辺であると判定する。なお、有向グラフの辺（有向辺）場合には、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用とが異なる、又は、どちらか一方の相互作用しかないため、原問題のＪｉ，ｊとＪｊ，ｉは異なる値をとる（Ｊｉ，ｊ≠Ｊｊ，ｉ）。
【０１３６】
図３０の処理では、ステップＳＰ５３〜ステップＳＰ５８において、原問題のＪｉ，ｊの大きさに比例した確率で、＋１ないしは−１を副問題の係数として発生させる。このとき乱数を用いるため、副問題のＪｉ，ｊとＪｊ，ｉは必ずしも同じ値にならない。原問題が有向辺で、もともと原問題のＪｉ，ｊとＪｊ，ｉが異なる値であれば、副問題のＪｉ，ｊとＪｊ，ｉが異なることは必然性がある。しかし、原問題が無向辺であるときには、副問題のＪｉ，ｊとＪｊ，ｉは同一の値になるべきである。
【０１３７】
そこで、ステップＳＰ５０で肯定結果を得た場合には、原問題のＪｊ，ｉから副問題のＪｊ，ｉを生成する処理が既に完了しているので（ｉ＞ｊを満たすときには、ｊ，ｉという組み合わせはすでに通過済みである）、問題分割プログラム８２は、既に生成済みの副問題のＪｊ，ｉの値を、副問題のＪｉ，ｊの値として出力し（ＳＰ５１）、この後、この図３０の処理を終了する。
【０１３８】
これに対して、問題分割プログラム８２は、ステップＳＰ５０で否定結果を得た場合（つまり無向辺ではないか、無向辺であったとしても１回目の副問題の係数生成であった場合）には、以下のステップＳＰ５２〜ステップＳＰ５８の処理を実行する。
【０１３９】
すなわち問題分割プログラム８２は、原問題のＪｊ，ｉが０であるか否かを判定する（ＳＰ５２）。そして問題分割プログラム８２は、この判断で肯定結果を得ると、副問題のＪｊ，ｉも０とし（ＳＰ５５）、この後、この図３０の処理を終了する。
【０１４０】
これに対して問題分割プログラム８２は、ステップＳＰ５２の判断で否定結果を得ると、原問題のＪｊ，ｉの値の大きさに応じた確率で、原問題のＪｊ，ｉが正であれば＋１又は０を、原問題のＪｊ，ｉが負であれば−１又は０を副問題のＪｊ，ｉとする処理をステップＳＰ５３〜ステップＳＰ５８で行う。
【０１４１】
具体的に、問題分割プログラム８２は、０以上１以下の値域を持つ乱数ｒを生成し（ＳＰ５３）、この後、ステップＳＰ５３で生成した乱数ｒが原問題のＪｊ，ｉの絶対値以下であるか否かを判断する（ＳＰ５４）。
【０１４２】
そして問題分割プログラム８２は、この判断で否定結果を得ると、副問題のＪｊ，ｉを０とし（ＳＰ５５）、この後、この処理を終了する。
【０１４３】
これに対して、問題分割プログラム８２は、ステップＳＰ５４の判断で肯定結果を得ると、副問題のＪｊ，ｉ正の値であるか否かを判定する（ＳＰ５６）。そして問題分割プログラム８２は、この判断で肯定結果を得た場合には、副問題のＪｊ，ｉを＋１とする一方（ＳＰ５７）、否定結果を得た場合には、副問題のＪｊ，ｉを−１とし（ＳＰ５８）、この後、この処理を終了する。
【０１４４】
このようにして原問題の係数の大きさに比例した確率で、＋１／０、又は、−１／０の副問題の相互作用係数を生成することができる。
【０１４５】
以上のアルゴリズムで、原問題の相互作用係数のうち、正の係数を＋１／０で模擬し、負の係数を−１／０で模擬するように副問題の相互作用係数を生成することができる。なお、この方法は、生成された複数の副問題の各辺の相互作用係数（副問題のＪｊ，ｉ）の期待値ないしは平均値が、正規化された原問題のＪｊ，ｉの値になるように、副問題のＪｊ，ｉに＋１／０／−１の値を与えているとも言うことができる。
【０１４６】
（１−４−３−３）副問題外部磁場係数生成処理
一方、図３１は、上述の副問題生成処理（図２８）のステップＳＰ３３において、上述の副問題相互作用係数生成処理（図２９）の前後、又は、副問題相互作用係数生成処理と並行して問題分割プログラム８２により実行される副問題外部磁場係数生成処理の処理内容を示す。問題分割プログラム８２は、この図３１に示す処理手順に従って、正規化後の原問題（イジングモデル）の外部磁場係数から副問題の外部磁場係数を生成する。
【０１４７】
実際上、問題分割プログラム８２は、この副問題外部磁場係数生成処理を開始すると、まず、スピンの番号を表す変数ｉを０に設定し（ＳＰ６０）、この後、変数ｉの値が全スピン数よりも小さいか否かを判断する（ＳＰ６１）。
【０１４８】
問題分割プログラム８２は、この判断で肯定結果を得ると、原問題のｈｉから副問題のｈｉを生成し（ＳＰ６２）、変数ｉの値を１増加させた値に更新した後に（ＳＰ６３）、ステップＳＰ６１に戻る。そして、問題分割プログラム８２は、この後、変数ｉの値が全スピン数よりも大きくなるまでステップＳＰ６１〜ステップＳＰ６３の処理を繰り返す。
【０１４９】
そして問題分割プログラム８２は、やがて変数ｉの値が全スピン数よりも大きくなると、この副問題外部磁場係数生成処理を終了する。
【０１５０】
なおステップＳＰ６２の処理の一例を図３２に示す。この図３２は、原問題の外部磁場係数のうち、正の係数のものを＋１／０で模擬し、負の係数のものを−１／０で模擬するように副問題の係数を生成する場合の処理手順である。
【０１５１】
実際上、問題分割プログラム８２は、副問題外部磁場係数生成処理のステップＳＰ６２に進むと、まず、原問題のｈｉが０であるかを判定する（ＳＰ７０）。そして問題分割プログラム８２は、この判断で肯定結果を得ると、副問題のｈｉも０とし（ＳＰ７１）、この後、この処理を終了する。
【０１５２】
これに対して、問題分割プログラム８２は、ステップＳＰ７０の判断で否定結果を得ると、原問題のｈｉの値の大きさに応じた確率で、原問題のｈｉが正であれば＋１又は０を、原問題のｈｉが負であれば−１又は０を副問題のｈｉとして出力する処理をステップＳＰ７２〜ステップＳＰ７６で行う。
【０１５３】
具体的に、問題分割プログラム８２は、０以上１以下の値域を持つ乱数ｒを生成し（ＳＰ７２）、この後、ステップＳＰ７２で生成した乱数ｒが原問題のｈｉの絶対値以下であるか否かを判断する（ＳＰ７３）。
【０１５４】
そして問題分割プログラム８２は、この判断で否定結果を得ると、副問題のｈｉを０とし（ＳＰ７１）、この後、この処理を終了する。
【０１５５】
これに対して、問題分割プログラム８２は、ステップＳＰ７３の判断で肯定結果を得ると、原問題のｈｉが正であるか否かを判断する（ＳＰ７４）。そして問題分割プログラム８２は、この判断で肯定結果を得た場合には、副問題のｈｉを＋１とする一方（ＳＰ７５）、否定結果を得た場合には、副問題のｈｉを−１とし（ＳＰ７６）、この後、この処理を終了する。
【０１５６】
このようにして、原問題の外部磁場係数の大きさに比例した確率で、＋１／０、又は、−１／０の副問題の外部磁場係数を生成することができる。
【０１５７】
以上のアルゴリズムで、原問題の外部磁場係数のうち、正の係数を＋１／０で模擬し、負の係数を−１／０で模擬するように副問題の外部磁場係数を生成することができる。なお、この方法は、生成された複数の副問題の各辺の外部磁場係数（副問題のｈｉ）の期待値又は平均値が、正規化された原問題のｈｉの値になるように、副問題のｈｉに＋１／０／−１の値を与えているとも言うことができる。
【０１５８】
（１−４−４）イジングアクセラレータボード制御処理
図３３は、図２５について上述した基底状態探索制御処理のステップＳＰ１６において管理ノード２から送信された、部分問題及びソルバ動作条件と、上述の計算開始指示とを受信したホスト３のボード制御プログラム９０（図１３）により実行されるイジングアクセラレータボード制御処理の処理手順を示す。
【０１５９】
ボード制御プログラム９０は、管理ノード２から部分問題及びソルバ動作条件と、上述の計算開始指示とが与えられると、この図３３に示すイジングアクセラレータボード制御処理を開始し、まず、管理ノード２から与えられた部分問題を各イジングアクセラレータボード２５にそれぞれ対応させて分割する（ＳＰ８０）。なお、以下においては、部分問題を分割することにより得られた各問題をそれぞれ分割部分問題と呼ぶものとする。
【０１６０】
続いて、ボード制御プログラム９０は、各イジングアクセラレータボード２５に対して、それぞれ対応する分割部分問題と、そのとき管理ノード２から与えられたソルバ動作条件とを送信し（ＳＰ８１）、この後、各イジングアクセラレータボード２５に対して分割部分問題についての計算を実行すべき旨の指示（以下、これを計算実行指示と呼ぶ）を与える（ＳＰ８２）。
【０１６１】
次いで、ボード制御プログラム９０は、かかる計算実行指示に応じて実行された計算処理の処理結果を各イジングアクセラレータボード２５からそれぞれ読み出し（ＳＰ８３）、読み出した各イジングアクセラレータボード２５の計算結果を統合して対応する部分問題の解を生成する（ＳＰ８４）。そしてボード制御プログラム９０は、このようにして生成した部分問題の解を管理ノード２に送信し（ＳＰ８５）、この後、このイジングアクセラレータボード制御処理を終了する。
【０１６２】
（１−４−５）イジングチップ制御処理
一方、図３４は、図３３について上述したイジングアクセラレータボード制御処理のステップＳＰ８２においてボード制御プログラム９０から送信された計算実行指示を受信したイジングアクセラレータボード２５のコントローラ３０（図２）により実行されるイジングチップ制御処理の処理手順を示す。
【０１６３】
コントローラ３０は、ボード制御プログラム９０から計算実行指示が与えられると、この図３４に示すイジングチップ制御処理を開始し、まず、ボード制御プログラム９０から与えられた分割部分問題に応じた係数を自イジングアクセラレータボードに搭載された各イジングチップ３２にそれぞれ設定する（ＳＰ９０）。
【０１６４】
続いて、コントローラ３０は、ボード制御プログラム９０から与えられたソルバ動作条件を参照して初期スピン値の指定があるか否かを判断する（ＳＰ９１）。そしてコントローラ３０は、この判断で肯定結果を得ると、指定された初期スピン値を各イジングチップ３２にそれぞれ設定し（ＳＰ９２）、この後、ステップＳＰ９４に進む。
【０１６５】
これに対して、コントローラ３０は、ステップＳＰ９１の判断で否定結果を得ると、対応する分割部分問題に応じた複数のランダムなスピン値をそれぞれ生成し、生成したスピン値をそれぞれ各イジングチップ３２にそれぞれ設定する（ＳＰ９３）。
【０１６６】
次いで、コントローラ３０は、ボード制御プログラム９０から与えられたソルバ動作条件に応じた冷却スケジュールのパラメータを各乱数生成器３３（図２）にそれぞれ設定し（ＳＰ９４）、この後、当該ソルバ動作条件において指定された繰返し回数分の相互作用動作を実行するよう、各イジングチップ３２をそれぞれ制御する（ＳＰ９５）。そしてコントローラ３０は、ソルバ動作条件において指定された繰返し回数分の相互作用動作を実行し終えると、その時点における各イジングチップ３２内のスピン配列を読み出し、これをホスト２１のＣＰＵ２１（図１）に送信した後、このイジングチップ制御処理を終了する。
【０１６７】
（１−４−６）チップ境界相互作用計算処理
図３５は、精度良く基底状態を求めるために、イジングアクセラレータボード２５において基底状態探索が実行されている間、管理ノード２のイジング制御プログラム８４（図１３）により適宜実行されるチップ境界相互作用計算処理を示す。
【０１６８】
本情報処理システム１では、上述のように各ホスト３内のイジングアクセラレータボード２５において、単一のイジングチップ３２に収まらないサイズの問題を解く際、複数のイジングチップ３２に問題を分割して、各イジングチップ３２において独立して基底状態探察を行う。
【０１６９】
しかしながら、このような方法によると、イジングチップ３２内に図９のように格子状に並べられたスピンユニット７０のうち、最外周の各スピンユニット７０がそれぞれ値を保持するスピン（以下、これをチップ境界のスピンと呼ぶ）については、図４について上述したイジングモデルにおいて隣接するスピンの値が他のイジングチップ３２内のスピンユニット７０に保持されているため、正しく相互作用を実行することができず、この結果、情報処理システム１全体としてそのとき対象としているイジングモデルの基底状態探索を精度良くすることができないという問題がある。
【０１７０】
そこで、本情報処理システム１では、管理ノード２のイジング制御プログラム８４（図１３）が、適宜、各イジングアクセラレータボード２５について、図３５に示す処理手順に従って、チップ境界の各スピンの値をそれぞれ読み出して相互作用計算を行い、計算結果を各イジングチップ３２に書き戻すチップ境界相互作用計算処理を実行する。
【０１７１】
実際上、イジング制御プログラム８４は、イジングアクセラレータボード２５において所定回数の相互作用が完了すると、この図３５に示すチップ境界相互作用計算処理を開始し、まず、チップ境界のスピンの中から１つのスピンを選択し（ＳＰ１００）、選択したスピン（以下、これを選択スピンと呼ぶ）の相互作用係数及び外部磁場係数の値を対応するイジングチップ３２から読み出す（ＳＰ１０１）。
【０１７２】
続いて、イジング制御プログラム８４は、その選択スピンの値を対応するイジングチップ３２から読み出と共に（ＳＰ１０２）、図４について上述したスピンモデルにおいて選択スピンに隣接する各スピン（以下、これらを隣接スピンと呼ぶ）の値を対応するイジングチップ３２からそれぞれ読み出す（ＳＰ１０３）。
【０１７３】
次いで、イジング制御プログラム８４は、ステップＳＰ１０１で取得した選択スピンについての相互作用係数及び外部磁場係数と、ステップＳＰ１０２で取得した選択スピンの値と、ステップＳＰ１０３で取得した選択スピンの各隣接スピンの値とに基づいて、選択スピンの次の状態（０又は１）を計算する（ＳＰ１０４）。
【０１７４】
さらにイジング制御プログラム８４は、ステップＳＰ１０４の計算結果を対応するイジングチップ３２の対応するスピンユニット７０のメモリセルＮ（図７参照）に書き込み（Ｓ１０５Ｐ）、この後、そのイジングアクセラレータボード２５内に存在するすべてのチップ境界のスピンについて同様の処理（ステップＳＰ１０１〜ステップＳＰ１０５）を実行し終えたか否かを判断する（ＳＰ１０６）。
【０１７５】
そしてイジング制御プログラム８４は、この判断で否定結果を得るとステップＳＰ１００に戻り、この後、ステップＳＰ１００で選択するスピンを未処理の他のチップ境界のスピンに順次切り替えながら、ステップＳＰ１００〜ステップＳＰ１０６の処理を繰り返す。
【０１７６】
そしてイジング制御プログラム８４は、やがてそのイジングアクセラレータボード２５内に存在するすべてのチップ境界のスピンについてステップＳＰ１０１〜ステップＳＰ１０５の処理を実行し終えることによりステップＳＰ１０６で肯定結果を得ると、このチップ境界相互作用計算処理を終了する。
【０１７７】
なおステップＳＰ１０１〜ステップＳＰ１０３におけるイジング制御プログラム８４によるイジングチップ３２からの各係数（相互作用係数及び外部磁場係数）並びにスピンの値の読み出しや、ステップＳＰ１０５におけるイジング制御プログラム８４によるイジングチップ３２へのスピンの値の書き込みは、ＳＲＡＭアクセスにより行うことができる。
【０１７８】
（１−５）操作端末に実装されたＡＰＩ
図３６は、本実施の形態による情報処理システム１の操作端末５に実装されたＡＰＩ（Application Programming Interface）１４０の構成を示す。この図３６に示すように、操作端末５にはユーザプログラム９３が各種コマンドや情報を管理ノード２やホスト３との間でやり取りするためのＡＰＩ１４０として、問題変換部１４１、解品質評価部１４２、システム使用状況取得部１４３、係数値入出力部１４４、スピン値入出力部１４５、相互作用開始部１４６及び相互作用条件設定部１４８を備える。
【０１７９】
問題変換部１４１は、図２０について上述した問題入力画面１１０や他の手法を用いてユーザにより指定された問題種別や問題定義ファイルを管理ノード２の問題変換プログラム８１に伝達する機能を有するスレッドであり、解品質評価部１４２は、図２１及び図２２について上述した結果提示画面や他の所定画面に表示すべき解の評価指標１２０Ａ、１２１Ａと、基準値に対する解精度１２０Ｂ，１２１Ｂとを管理ノード２の解品質評価プログラム８５から取得する機能を有するスレッドである。またシステム使用状況取得部１４３は、問題入力画面１１０のシステム利用状況表示領域１１１（図２０）や他の所定画面に表示する本情報処理システム１の利用状況を管理ノード２のシステム構成情報８６から取得する機能を有するスレッドである。
【０１８０】
一方、係数値入出力部１４４及びスピン値入出力部１４５は、所定の入力画面を用いてユーザによりイジングモデルの係数（相互作用係数及び外部磁場係数）やスピンの値が指定された場合に、これら係数やスピンの値を管理ノード２を介してホスト３のボード制御プログラム９０に伝達する機能を有するスレッドである。
【０１８１】
また相互作用開始部１４６は、例えば問題入力画面１１０の実行ボタン１１６（図２０）がクリックされた場合や、他の所定操作によりイジングモデルの基底状態探索処理の開始指示がユーザから与えられた場合に、これを管理ノード２を介してホスト３のボード制御プログラム９０に通知する機能を有するスレッドである。さらに相互作用条件設定部１４７は、問題入力画面１１０や他の画面を用いてユーザにより指定された少なくとも解精度及び制限時間を含む相互作用実行時の条件を管理ノード２を介してホスト３のボード制御プログラム９０に伝達する機能を有するスレッドである。
【０１８２】
（１−６）本実施の形態の効果
以上のように本実施の形態による情報処理システム１では、ユーザが問題入力画面１１０（図２０）で問題と、その問題を解く際の条件（解精度及び制限時間）とを指定することができ、この条件に従って管理ノード２の制御の元に各ホスト３においてその問題のイジングモデルの基底状態探索が行われる。
【０１８３】
従って、本情報処理システム１によれば、イジングチップ３２を用いて、ユーザが所望する条件の元でユーザが指定した問題の解を得ることができ、かくして利便性の高い情報処理システムを実現できる。
【０１８４】
（２）第２の実施の形態
（２−１）本実施の形態による情報処理システムの構成
図１との対応部分に同一符号を付して示す図３７は、第２の実施の形態による情報処理システム１５０を示す。この情報処理システム１５０は、過去に解いた問題の解を利用して新たな問題を解く機能を備える点を除いて第１の実施の形態による情報処理システム１と同様に構成されている。
【０１８５】
実際上、本実施の形態の情報処理システム１５０の場合、ネットワーク４には、管理ノード１５１及び複数のホスト３に加えて記憶装置１５２が接続されている。この記憶装置１５２は、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）や、ハードディスク装置又はＳＳＤを備える専用のサーバ装置等から構成される。そして記憶装置１５２には、本情報処理システム１５０が過去に解いた問題の各係数（相互作用係数及び外部磁場係数）及びその解（スピン配列）がそれぞれ係数データ１５３及びスピンデータ１５４として登録されたデータベース（以下、これを過去問題データベースと呼ぶ）１５５が格納されている。
【０１８６】
一方、管理ノード１５１に実装されたイジング制御プログラム１５６（図１３）は、新たな問題が投入されると、その新たな問題のイジングモデルと近い形態の問題を過去問題データベース１５５上で検索する。そしてイジング制御プログラム１５６は、そのような問題（過去に解いた問題）をかかる検索により検出した場合には、過去問題データベース１５５に登録されているその問題の解（スピン配列）をかかる新たな問題における初期のスピン配列として設定する。
【０１８７】
ここで、このように新たに投入された問題とイジングモデルの形態が近い過去の問題の解を新たな問題の初期のスピン配列として設定した場合、初期の段階で新たな問題のイジングモデルが基底状態に近い状態にあると推測される。一方で、図１１について上述した冷却スケジュールの初期温度が高いと、基底状態探索の初期時においてスピンの反転が頻繁に発生するため、新たな問題のイジングモデルの状態が基底状態から離れて行ってしまうおそれがある。
【０１８８】
そこで本情報処理システム１５０において、イジング制御プログラム１５６は、新たに投入された問題とイジングモデルの形態が近い過去の問題の解を新たな問題の初期のスピン配列として設定した場合には、図３８に示すように、冷却スケジュールの初期温度を、ユーザが図２０について上述した問題入力画面１１０において指定した解精度に応じて、当該解精度が得られる程度の温度に下げると共に、１回の基底状態探索における相互作用動作の繰返し回数を減らすようソルバ動作条件を更新する。これにより本情報処理システム１５０では、新たな問題を迅速かつ精度良く求めることができるようになされている。
【０１８９】
図３９は、本実施の形態による情報処理システム１５０において、基底状態探索処理に関連して管理ノード１５１において実行される本実施の形態による基底状態探索制御処理の流れを示す。この基底状態探索制御処理は、問題入力画面１１０（図２０）においてユーザが問題定義ファイル９４及び条件（解精度及び制限時間）を指定した上で実行ボタン１１６をクリックした結果、これら問題定義ファイル９４のデータ及び条件が操作端末５から管理ノード１５１に通知されることにより開始される。
【０１９０】
かかる情報を受信した管理ノード１５１では、ステップＳＰ１１０及びステップＳＰ１１１が、図２５について上述した第１の実施の形態による基底状態探索処理のステップＳＰ１０及びステップＳＰ１１と同様に処理される。
【０１９１】
続いて、イジング制御プログラム１５６が、過去問題データベース１５５に格納されている過去の各問題のイジングモデルの係数の値と、ステップＳＰ１１０において得られた新たな問題のイジングモデルの係数の値とを比較し（ＳＰ１１２）、比較結果に基づいて、過去の問題の中に、新たな問題のイジングモデルと近い形態のイジングモデルの問題があるか否かを判断する（ＳＰ１１３）。
【０１９２】
具体的に、ステップＳＰ１１２において、イジング制御プログラム１５６は、まず、過去問題データベース１５５に係数データ１５３等が登録されている過去の各問題の中に、そのイジングモデルの頂点の数及び係数の数と、新たな問題のイジングモデルの頂点の数及び係数の数との差が予め定められた閾値以内のイジングモデルが存在するか否かを判定する。そしてイジング制御プログラム１５６は、過去の各問題の中にそのような問題が存在する場合には、さらに当該過去の問題のイジングモデルと、今回の問題のイジングモデルとの同型性判定を行い、その判定結果に基づいて過去の問題の中に、新たな問題のイジングモデルと近い形態のイジングモデルの問題があるか否かを判断する。
【０１９３】
そして、ステップＳＰ１１３で否定結果が得られた場合には、ステップＳＰ１１６に処理が移る。これに対して、ステップＳＰ１１３で肯定結果が得られた場合には、イジング制御プログラム１５６が、過去の問題のうち、そのイジングモデルが新たな問題のイジングモデルと最も近いと判定された問題の解（スピン配列）を過去問題データベース１５５から読み出し、読み出した解を新たな問題のイジングモデルにおける初期スピン値に設定する（ＳＰ１１４）。
【０１９４】
またイジング制御プログラム１５６は、これと併せて冷却スケジュールの初期温度を、ユーザが問題入力画面１１０（図２０）において指定した解精度に応じた値だけ下げると共に、基底状態探索時における相互作用動作の繰返し回数を減らすようステップＳＰ１１１で生成したソルバ動作条件を更新する（ＳＰ１１５）。
【０１９５】
この後、管理ノード１５１では、図２５について上述した第１実施の形態による基底状態探索制御処理のステップＳＰ１２〜ステップＳＰ２５と同様にしてステップＳＰ１１６〜ステップＳＰ１２９が処理される。これにより情報処理システム１５０のホスト３において相互作用が実行される。
【０１９６】
続いて、イジング制御プログラム１５６が、今回の問題を変換することにより得られたイジングモデルの係数と、ステップＳＰ１２９までの処理により得られた今回の問題の解（スピン配列）とを、今回の問題の係数データ１５３及びスピンデータ１５４として記憶装置１５２（図３７）に格納する（ＳＰ１３０）。
【０１９７】
この後、ＵＩプログラム８０が、図２１〜図２３について上述した形態の結果提示画面１２０〜１２２を操作端末５に表示させる（ＳＰ１３１）。以上により、この基底状態探索制御処理が終了する。
【０１９８】
以上のように本実施の形態の情報処理システム１５０では、新たに投入された問題とイジングモデルの形態が近い過去の問題の解を新たな問題の初期のスピン配列として設定し、これと併せてソルバ動作条件に含まれる冷却スケジュールの初期温度をユーザが指定した解精度に応じた温度に下げると共に、１回の基底状態探索における相互作用動作の繰返し回数を減らすようソルバ動作条件を更新するようにしているため、第１の実施の形態による情報処理システム１により得られる効果に加えて、新たな問題を迅速かつ精度良く求めることができるという効果をも得ることができる。
【０１９９】
（３）他の実施の形態
なお上述の第１及び第２の実施の形態においては、本発明を、問題の解をイジングモデルの基底状態を探索するようにして求める情報処理システムに適用するようにした場合について述べたが、本発明はこれに限らず、イジングモデル以外の相互作用モデルにおけるノード間の相互作用を模擬するようにして問題の解を求める情報処理システムにも広く適用することができる。このような情報処理システムにおいて、相互作用モデルにおけるノード間の相互作用を模擬する半導体チップは、図１〜図２７について上述した第１及び第２の実施の形態のマルチイジングチップ６と同様に構成することができる。この場合、ノードごとのバイアスが存在しない場合には、そのバイアスの係数（以下、これをバイアス係数と呼ぶ）を保持するメモリセル対ＩＳｘを単位素子から省略することができ、またかかるバイアスが存在する場合には、外部磁場係数に代えてかかるバイアス係数をメモリセル対ＩＳｘに保持するようにすれば良い。
【０２００】
また上述の第１及び第２の実施の形態においては、イジングモデルの基底状態探索を実行する１又は複数のイジングチップ３２が搭載されたホスト部としての機能をホスト３に搭載し、ユーザが問題を指定するためのユーザインタフェースを提供する操作部としての機能を操作端末５に搭載し、ユーザインタフェースを用いてユーザにより指定された問題をイジングモデルに変換し、変換したイジングモデルの基底状態の探索をイジングチップ３２に行わせるようにホスト部を制御する管理部としての機能を管理ノード２に搭載するようにした場合について述べたが、本発明はこれに限らず、これらホスト部、操作部及び管理部としての機能を１つの装置に搭載するようにしても良い。
【０２０１】
さらに上述の第１及び第２の実施の形態においては、基底状態探索時に図１０について上述した局所最適解から脱出するための手法として、イジングチップ３２の各スピンユニット７０にそれぞれ乱数を供給することにより、これらスピンユニット７０が保持するスピンの値を確率的に反転させるようにした場合について述べたが、本発明はこれに限らず、この他種々の方法を広く適用することができる。
【０２０２】
例えば、半導体のもつランダム性を直接的に利用して局所最適解からの脱出に必要な動作を実現するために、イジングチップ３２への給電電圧を下げて意図的にビットエラーを誘発する方法を適用することができる。すなわち各スピンユニット７０のメモリセルに供給する電圧とビットエラーレイトとは反比例の関係があるため、各スピンユニット７０に供給する電圧を下げることにより確率的にビットエラーを誘発させて局所最適解からの脱出を図れる可能性がある。
【０２０３】
そこで、例えば図２との対応部分に同一符号を付した図４０に示すように、各イジングチップ３２にそれぞれ対応させて、対応するイジングチップ３２にそれぞれ給電を行う可変電圧電源１６１をイジングアクセラレータボード１６０上に設け、図１１について上述した冷却スケジュールの温度Ｔｔで決まる確率でイジングチップ３２内の各スピンユニット７０が保持するスピンの値が反転するよう、これら可変電圧電源１６１から各イジングチップ３２にそれぞれ供給する電圧を適宜下げるように、コントローラ１６２がこれら可変電圧電源１６１を制御するようにしても良い。
【０２０４】
また図２との対応部分に同一符号を付した図４１に示すように、各イジングチップ３２に乱数をそれぞれ供給する乱数発生器３３と、各イジングチップ３２に給電を行う可変電圧電源１７１とをイジングアクセラレータボード１７０上に設け、図１１について上述した冷却スケジュールの温度Ｔｔで決まる確率でイジングチップ３２内の各スピンユニット７０が保持するスピンの値が反転するように、コントローラ１７２が乱数発生器３３及び可変電圧電源１７１を制御するようにしても良い。
【産業上の利用可能性】
【０２０５】
本発明は、イジングモデルの基底状態探索を行う半導体装置を用いて組合せ最適化等の問題を解く機能を有する種々の構成の情報処理システムに広く適用することができる。
【符号の説明】
【０２０６】
１，１５０……情報処理システム、２，１５１……管理ノード、３……ホスト、５……操作端末、１１，２１，４１……ＣＰＵ、２５，１６０，１７０……イジングアクセラレータボード、３０，１６２，１７２……コントローラ、３２……イジングチップ、３３……乱数発生器、５０……スピンアレイ、７０……スピンユニット、８０……ＵＩプログラム、８１……問題変換プログラム、８２……問題分割プログラム、８３……動作条件生成プログラム、８４，１５６……イジング制御プログラム、８５……解品質評価プログラム、８６……システム構成情報、８７……既定ソルバ動作条件、９０……ボード制御プログラム、９３……ユーザプログラム、９４……問題定義ファイル、１１０……問題入力画面、１２０〜１２２……結果提示画面、１４０……ＡＰＩ、１４１……問題変換部、１４２……解品質評価部、１４３……システム使用状況取得部、１４４……係数値入出力部、１４５……スピン値入出力部、１４６……相互作用開始部、１４７……相互作用条件設定部、１５２……記憶装置、１５３……係数データ、１５４……スピンデータ、１５５……過去問題データベース、１６１，１７１……可変電圧電源。
【要約】
【課題】
ユーザが所望する条件の元で問題の解を得ることができる利便性の高い情報処理システム及び情報処理システムの利便性を向上させ得る管理装置を提案する。
【解決手段】
イジングモデルの基底状態探索を実行する１又は複数の半導体チップが搭載されたホスト部と、ユーザが問題を指定するためのユーザインタフェースを提供する操作部と、ユーザインタフェースを用いてユーザにより指定された問題をイジングモデルに変換し、変換したイジングモデルの基底状態の探索を半導体チップに行わせるようにホスト部を制御する管理部とを設け、ユーザは、ユーザインタフェースを用いて、問題を解く際の条件を指定し、管理部は、ユーザに指定された条件に応じた半導体チップの動作条件を生成し、生成した動作条件と、ユーザが指定した問題のイジングモデルとをホスト部に通知し、ホスト部は、管理部から通知された動作条件に従って半導体チップを制御するようにした。
【選択図】        図１３【図１】
0005865457.tif 000004
【図２】
0005865457.tif 000005
【図３】
0005865457.tif 000006
【図４】
0005865457.tif 000007
【図５】
0005865457.tif 000008
【図６】
0005865457.tif 000009
【図７】
0005865457.tif 000010
【図８】
0005865457.tif 000011
【図９】
0005865457.tif 000012
【図１０】
0005865457.tif 000013
【図１１】
0005865457.tif 000014
【図１２】
0005865457.tif 000015
【図１３】
0005865457.tif 000016
【図１４】
0005865457.tif 000017
【図１５】
0005865457.tif 000018
【図１６】
0005865457.tif 000019
【図１７】
0005865457.tif 000020
【図１８】
0005865457.tif 000021
【図１９】
0005865457.tif 000022
【図２０】
0005865457.tif 000023
【図２１】
0005865457.tif 000024
【図２２】
0005865457.tif 000025
【図２３】
0005865457.tif 000026
【図２４】
0005865457.tif 000027
【図２５】
0005865457.tif 000028
【図２６】
0005865457.tif 000029
【図２７】
0005865457.tif 000030
【図２８】
0005865457.tif 000031
【図２９】
0005865457.tif 000032
【図３０】
0005865457.tif 000033
【図３１】
0005865457.tif 000034
【図３２】
0005865457.tif 000035
【図３３】
0005865457.tif 000036
【図３４】
0005865457.tif 000037
【図３５】
0005865457.tif 000038
【図３６】
0005865457.tif 000039
【図３７】
0005865457.tif 000040
【図３８】
0005865457.tif 000041
【図３９】
0005865457.tif 000042
【図４０】
0005865457.tif 000043
【図４１】
0005865457.tif 000044