JP7421545B2 - 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム - Google Patents
情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム Download PDFInfo
- Publication number
- JP7421545B2 JP7421545B2 JP2021509666A JP2021509666A JP7421545B2 JP 7421545 B2 JP7421545 B2 JP 7421545B2 JP 2021509666 A JP2021509666 A JP 2021509666A JP 2021509666 A JP2021509666 A JP 2021509666A JP 7421545 B2 JP7421545 B2 JP 7421545B2
- Authority
- JP
- Japan
- Prior art keywords
- variable
- vector
- coefficient
- information processing
- processors
- 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
Links
- 230000010365 information processing Effects 0.000 title claims description 64
- 238000003860 storage Methods 0.000 title claims description 35
- 238000003672 processing method Methods 0.000 title claims description 14
- 239000013598 vector Substances 0.000 claims description 234
- 238000004364 calculation method Methods 0.000 claims description 192
- 230000005366 Ising model Effects 0.000 claims description 21
- 230000003993 interaction Effects 0.000 claims description 7
- 238000000034 method Methods 0.000 description 112
- 238000012545 processing Methods 0.000 description 62
- 230000008569 process Effects 0.000 description 60
- 238000005457 optimization Methods 0.000 description 44
- 230000015654 memory Effects 0.000 description 39
- 238000007726 management method Methods 0.000 description 37
- 230000006870 function Effects 0.000 description 28
- 238000004891 communication Methods 0.000 description 20
- 230000007704 transition Effects 0.000 description 17
- 239000011159 matrix material Substances 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000002922 simulated annealing Methods 0.000 description 8
- 230000005291 magnetic effect Effects 0.000 description 6
- 239000002245 particle Substances 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005374 Kerr effect Effects 0.000 description 1
- 238000000137 annealing Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005401 electroluminescence Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 239000003302 ferromagnetic material Substances 0.000 description 1
- 230000005283 ground state Effects 0.000 description 1
- 238000004770 highest occupied molecular orbital Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 238000005086 pumping Methods 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000010129 solution processing Methods 0.000 description 1
- 238000005496 tempering Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
- G06N10/60—Quantum algorithms, e.g. based on quantum optimisation, quantum Fourier or Hadamard transforms
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Probability & Statistics with Applications (AREA)
- Complex Calculations (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
本発明の実施形態は、情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラムに関する。
組合せ最適化問題とは、複数の組合せの中から目的に最も適した組合せを選ぶ問題である。組合せ最適化問題は、数学的には、「目的関数」と呼ばれる、複数の離散変数を有する関数を最大化させる問題、または、当該関数を最小化させる問題に帰着される。組合せ最適化問題は、金融、物流、交通、設計、製造、生命科学など各種の分野において普遍的な問題であるが、組合せ数が問題サイズの指数関数のオーダーで増える、いわゆる「組合せ爆発」のため、必ず最適解を求めることができるとは限らない。また、最適解に近い近似解を得ることすら難しい場合が多い。
各分野における問題を解決し、社会のイノベーションおよび科学技術の進歩を促進するために、組合せ最適化問題の解を実用的な時間内で計算する技術の開発が求められている。
H. Goto, K. Tatsumura, A. R. Dixon, Sci. Adv. 5, eaav2372 (2019).
H. Goto, Sci. Rep. 6, 21686 (2016).
土屋、西山、辻田:分岐特性を用いた組合せ最適化問題の近似解法URL:http://www.ynl.t.u-tokyo.ac.jp/project/RobotBrainCREST/publications/pdf/tsuchiya/4_01.pdf
土屋、西山、辻田:決定論的アニーリングアルゴリズムの解析URL:http://www.ynl.t.u-tokyo.ac.jp/project/RobotBrainCREST/publications/pdf/tsuchiya/4_02.pdf
本発明の実施形態は、組合せ最適化問題の解を実用的な時間内で計算する情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラムを提供する。
本発明の実施形態としての情報処理装置は、それぞれが第1変数を要素とする第1ベクトルおよび前記第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新するように構成されている、複数の演算回路と、データ交換回路とを備えている。それぞれの前記演算回路は、前記第1変数を対応する第2変数に基づいて更新し、前記第1変数を第1係数で重み付けし対応する前記第2変数に加算し、複数の前記第1変数を用いて問題項を計算し、前記問題項を前記第2変数に加算するように構成されており、それぞれの前記演算回路において前記第1係数に異なる値が設定されており、前記データ交換回路は、前記演算回路間で前記第1ベクトルおよび前記第2ベクトルの交換、または前記第1係数の交換の少なくともいずれかを実行するように構成されている。
以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において同一の構成要素は、同じ番号を付し、説明は、適宜省略する。
図1は、情報処理システム100の構成例を示したブロック図である。図1の情報処理システム100は、管理サーバ1と、ネットワーク2と、計算サーバ(情報処理装置)3a~3cと、ケーブル4a~4cと、スイッチ5と、記憶装置7を備えている。また、図1には、情報処理システム100と通信可能なクライアント端末6が示されている。管理サーバ1、計算サーバ3a~3c、クライアント端末6および記憶装置7は、ネットワーク2を介して互いにデータ通信をすることができる。例えば、計算サーバ3a~3cは、記憶装置7にデータを保存したり、記憶装置7よりデータを読み出したりすることができる。ネットワーク2は、例えば、複数のコンピュータネットワークが相互に接続されたインターネットである。ネットワーク2は、通信媒体として有線、無線、または、これらの組合せを用いることができる。また、ネットワーク2で使われる通信プロトコルの例としては、TCP/IPがあるが、通信プロトコルの種類については特に問わない。
また、計算サーバ3a~3cは、それぞれケーブル4a~4cを介してスイッチ5に接続されている。ケーブル4a~4cおよびスイッチ5は、計算サーバ間のインターコネクトを形成している。計算サーバ3a~3cは、当該インターコネクトを介して互いにデータ通信をすることも可能である。スイッチ5は、例えば、Infinibandのスイッチである。ケーブル4a~4cは、例えば、Infinibandのケーブルである。ただし、Infinibandのスイッチ/ケーブルの代わりに、有線LANのスイッチ/ケーブルを使ってもよい。ケーブル4a~4cおよびスイッチ5で使われる通信規格および通信プロトコルについては、特に問わない。クライアント端末6の例としては、ノートPC、デスクトップPC、スマートフォン、タブレット、車載端末などが挙げられる。
組合せ最適化問題の求解では、処理の並列化および/または処理の分散化を行うことができる。したがって、計算サーバ3a~3cおよび/または計算サーバ3a~3cのプロセッサは、計算処理の一部のステップを分担して実行してもよいし、異なる変数について同様の計算処理を並列的に実行してもよい。管理サーバ1は、例えば、ユーザによって入力された組合せ最適化問題を各計算サーバが処理可能な形式に変換し、計算サーバを制御する。そして、管理サーバ1は、各計算サーバから計算結果を取得し、集約した計算結果を組合せ最適化問題の解に変換する。こうして、ユーザは、組合せ最適化問題の解を得ることができる。組合せ最適化問題の解は、最適解と、最適解に近い近似解とを含むものとする。
図1には、3台の計算サーバが示されている。ただし、情報処理システムに含まれる計算サーバの台数を限定するものではない。また、組合せ最適化問題の求解に使われる計算サーバの台数についても特に問わない。例えば、情報処理システムに含まれる計算サーバは1台であってもよい。また、情報処理システムに含まれる複数の計算サーバのうち、いずれかの計算サーバを使って組合せ最適化問題の求解を行ってもよい。また、情報処理システムに、数百台以上の計算サーバが含まれていてもよい。計算サーバは、データセンターに設置されたサーバであってもよいし、オフィスに設置されたデスクトップPCであってもよい。また、計算サーバは異なるロケーションに設置された複数の種類のコンピュータであってもよい。計算サーバとして使われる情報処理装置の種類については特に問わない。例えば、計算サーバは、汎用的なコンピュータであってもよいし、専用の電子回路または、これらの組合せであってもよい。
図2は、管理サーバ1の構成例を示したブロック図である。図2の管理サーバ1は、例えば、中央演算処理装置(CPU)とメモリとを含むコンピュータである。管理サーバ1は、プロセッサ10と、記憶部14と、通信回路15と、入力回路16と、出力回路17とを備えている。プロセッサ10、記憶部14、通信回路15、入力回路16および出力回路17は、互いにバス20を介して接続されているものとする。プロセッサ10は、内部の構成要素として、管理部11と、変換部12と、制御部13とを含んでいる。
プロセッサ10は、演算を実行し、管理サーバ1の制御を行う電子回路である。プロセッサ10として、例えば、CPU、マイクロプロセッサ、ASIC、FPGA、PLDまたはこれらの組合せを用いることができる。管理部11は、ユーザのクライアント端末6を介して管理サーバ1の操作を行うためのインタフェースを提供する。管理部11が提供するインタフェースの例としては、API、CLI、ウェブページなどが挙げられる。例えば、ユーザは、管理部11を介して組合せ最適化問題の情報の入力を行ったり、計算された組合せ最適化問題の解の閲覧および/またはダウンロードを行ったりすることができる。変換部12は、組合せ最適化問題を各計算サーバが処理可能な形式に変換する。制御部13は、各計算サーバに制御指令を送信する。制御部13が各計算サーバから計算結果を取得した後、変換部12は、複数の計算結果を集約し、組合せ最適化問題の解に変換する。また、制御部13は、各計算サーバまたは各サーバ内のプロセッサが実行する処理内容を指定してもよい。
記憶部14は、管理サーバ1のプログラム、プログラムの実行に必要なデータおよびプログラムによって生成されたデータを含む各種のデータを記憶する。ここで、プログラムは、OSとアプリケーションの両方を含むものとする。記憶部14は、揮発性メモリ、不揮発性メモリ、またはこれらの組合せであってもよい。揮発性メモリの例としては、DRAM、SRAMなどがある。不揮発性メモリの例としては、NANDフラッシュメモリ、NORフラッシュメモリ、ReRAM、またはMRAMが挙げられる。また、記憶部14として、ハードディスク、光ディスク、磁気テープまたは外部の記憶装置を使ってもよい。
通信回路15は、ネットワーク2に接続された各装置との間でデータの送受信を行う。通信回路15は、例えば、有線LANのNIC(Network Interface Card)である。ただし、通信回路15は、無線LANなど、その他の種類の通信回路であってもよい。入力回路16は、管理サーバ1へのデータ入力を実現する。入力回路16は、外部ポートとして、例えば、USB、PCI-Expressなどを備えているものとする。図2の例では、操作装置18が入力回路16に接続されている。操作装置18は、管理サーバ1に情報を入力するための装置である。操作装置18は、例えば、キーボード、マウス、タッチパネル、音声認識装置などであるが、これに限られない。出力回路17は、管理サーバ1からのデータ出力を実現する。出力回路17は、外部ポートとしてHDMI、DisplayPortなどを備えているものとする。図2の例では、表示装置19が出力回路17に接続されている。表示装置19の例としては、LCD(液晶ディスプレイ)、有機EL(有機エレクトロルミネッセンス)ディスプレイ、またはプロジェクタがあるが、これに限られない。
管理サーバ1の管理者は、操作装置18および表示装置19を使って、管理サーバ1のメンテナンスを行うことができる。なお、操作装置18および表示装置19は、管理サーバ1に組み込まれたものであってもよい。また、管理サーバ1に必ず操作装置18および表示装置19が接続されていなくてもよい。例えば、管理者は、ネットワーク2と通信可能なクライアント端末を用いて管理サーバ1のメンテナンスを行ってもよい。
図3は、管理サーバ1の記憶部14に保存されるデータの例を示している。図3の記憶部14には、問題データ14Aと、計算データ14Bと、管理プログラム14Cと、変換プログラム14Dと、制御プログラム14Eとが保存されている。例えば、問題データ14Aは、組合せ最適化問題のデータを含む。例えば、計算データ14Bは、各計算サーバから収集された計算結果を含む。例えば、管理プログラム14Cは、上述の管理部11の機能を実現するプログラムである。例えば、変換プログラム14Dは、上述の変換部12の機能を実現するプログラムである。例えば、制御プログラム14Eは、上述の制御部13の機能を実現するプログラムである。
図4は、計算サーバの構成例を示したブロックである。図4には、例示的に計算サーバ3aの構成が示されている。他の計算サーバは、計算サーバ3aと同様の構成であってもよいし、計算サーバ3aと異なる構成であってもよい。計算サーバ3aは、例えば、第1ベクトルおよび第2ベクトルの計算を単独で、または、他の計算サーバと分担して実行する情報処理装置である。また、少なくともいずれかの計算サーバは、第1ベクトルの要素間の問題項を計算してもよい。ここで、問題項は、後述するイジングモデルに基づいて計算されるものであってもよい。また、問題項は、後述する多体相互作用を含むものであってもよい。
例えば、第1ベクトルは、変数xi(i=1、2、・・・、N)または変数X(m)
i(i=1、2、・・・、N)を要素とするベクトルである。例えば、第2ベクトルは、変数yi(i=1、2、・・・、N)または変数Y(m)i(i=1、2、・・・、N)を要素とするベクトルである。ここで、mは、1~Mの整数のレプリカ番号を示している。レプリカの詳細については、後述する。
計算サーバ3aは、例えば、通信回路31と、共有メモリ32と、プロセッサ33A~33Dと、ストレージ34と、ホストバスアダプタ35とを備えている。通信回路31、共有メモリ32、プロセッサ33A~33D、ストレージ34、ホストバスアダプタ35は、バス36を介して互いに接続されているものとする。
通信回路31は、ネットワーク2に接続された各装置との間でデータの送受信を行う。通信回路31は、例えば、有線LANのNIC(Network Interface Card)である。ただし、通信回路31は、無線LANなど、その他の種類の通信回路であってもよい。共有メモリ32は、プロセッサ33A~33Dからアクセス可能なメモリである。共有メモリ32の例としては、DRAM、SRAMなどの揮発性メモリが挙げられる。ただし、共有メモリ32として、不揮発性メモリなどその他の種類のメモリが使われてもよい。プロセッサ33A~33Dは、共有メモリ32を介してデータの共有を行うことができる。なお、必ず計算サーバ3aのすべてのメモリが共有メモリとして構成されていなくてもよい。例えば、計算サーバ3aの一部のメモリは、いずれかのプロセッサのみからアクセスできるローカルメモリとして構成されていてもよい。
プロセッサ33A~33Dは、計算処理を実行する電子回路である。プロセッサは、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)、またはASIC(Application Specific Integrated Circuit)のいずれであってもよいし、これらの組合せであってもよい。また、プロセッサは、CPUコアまたはCPUスレッドであってもよい。プロセッサがCPUである場合、計算サーバ3aが備えるソケット数については、特に問わない。また、プロセッサは、PCI expressなどのバスを介して計算サーバ3aのその他の構成要素に接続されていてもよい。
図4の例では、計算サーバが4つのプロセッサを備えている。ただし、1台の計算サーバが備えているプロセッサの数はこれとは異なっていてもよい。例えば、計算サーバに実装されているプロセッサの数および/または種類が異なっていてもよい。
情報処理装置は、例えば、第1変数xi(i=1、2、・・・、N)を要素とする第1ベクトルおよび第1変数に対応する第2変数yi(i=1、2、・・・、N)を要素とする第2ベクトルを繰り返し更新するように構成されている。情報処理装置の記憶部は、第1ベクトルの要素である第1変数および第2ベクトルの要素である第2変数を記憶するように構成されていてもよい。
例えば、複数の演算回路50は、それぞれが第1変数を要素とする第1ベクトルおよび第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新するように構成されている。例えば、それぞれの演算回路50は、第1変数を対応する第2変数に基づいて更新し、第1変数を第1係数で重み付けし対応する第2変数に加算し、複数の第1変数を用いて問題項を計算し、問題項を第2変数に加算するように構成されている。また、それぞれの演算回路50において第1係数に異なる値が設定されていてもよい。例えば、データ交換回路51は、演算回路50間で第1ベクトルおよび第2ベクトルの交換、または第1係数の交換の少なくともいずれかを実行するように構成されている。演算回路が計算する問題項は、イジングモデルに基づいていてもよい。また、演算回路が計算する問題項は、多体相互作用を含んでいてもよい。問題項の詳細については、後述する。
図4の例では、プロセッサ33A~33Cが複数の演算回路に相当しており、プロセッサ33Dがデータ交換回路に相当している。ただし、図4に示した演算回路/データ交換回路とプロセッサとの対応関係は、一例にしかすぎない。したがって、演算回路/データ交換回路とプロセッサとの対応関係はこれとは異なっていてもよい。また、演算回路/データ交換回路に割り当てられるプロセッサ数については、特に限定しない。後述するように、同一のプロセッサが演算回路およびデータ交換回路の役割を兼ね備えていてもよい。計算サーバに複数の種類のプロセッサ(例えば、CPU、GPU、FPGA)が実装されている場合には、異なる種類のプロセッサを演算回路およびデータ交換回路に割り当ててもよい。
ここでは、プロセッサ単位に処理内容の割り当てが行われる場合を例に説明した。ただし、処理内容の割り当てが行われる計算資源の単位を限定するものではない。例えば、計算機単位で処理内容の割り当てを行ってもよい。この場合、情報処理システムは、複数の第1計算機と、第2計算機とを備えていてもよい。例えば、第1計算機は、それぞれが第1変数を要素とする第1ベクトルおよび第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新するように構成されている。例えば、第2計算機は、第1計算機間におけるデータの交換を実行するように構成されている。第1計算機と、第2計算機は、例えば、上述の計算サーバに相当する。
それぞれの第1計算機は、第1変数を対応する第2変数に基づいて更新し、第1変数を第1係数で重み付けし対応する第2変数に加算し、複数の第1変数を用いて問題項を計算し、問題項を第2変数に加算するように構成されていてもよい。第2計算機は、第1計算機間で第1ベクトルおよび第2ベクトルの交換、または第1係数の交換の少なくともいずれかを実行するように構成されていてもよい。また、それぞれの第1計算機において第1係数に異なる値が設定されていてもよい。
以下では、再び図4を参照し、計算サーバの構成要素を説明する。
ストレージ34は、計算サーバ3aのプログラム、プログラムの実行に必要なデータ、およびプログラムによって生成されたデータを含む各種のデータを記憶する。ここで、プログラムは、OSとアプリケーションの両方を含むものとする。ストレージ34は、揮発性メモリ、不揮発性メモリ、またはこれらの組合せであってもよい。揮発性メモリの例としては、DRAM、またはSRAMなどがある。不揮発性メモリの例としては、NANDフラッシュメモリ、NORフラッシュメモリ、ReRAM、またはMRAMが挙げられる。また、ストレージ34として、ハードディスク、光ディスク、磁気テープまたは外部の記憶装置が使われてもよい。
ホストバスアダプタ35は、計算サーバ間のデータ通信を実現する。ホストバスアダプタ35は、ケーブル4aを介してスイッチ5に接続されている。ホストバスアダプタ35は、例えば、HCA(Host Channel Adaptor)である。ホストバスアダプタ35、ケーブル4a、およびスイッチ5を使って高スループットを実現可能なインターコネクトを形成することにより、並列的な計算処理の速度を向上させることができる。
図5は、計算サーバのストレージに保存されるデータの例を示している。図5のストレージ34には、計算データ34Aと、計算プログラム34Bと、制御プログラム34Cとが保存されている。計算データ34Aは、計算サーバ3aの計算途中のデータまたは計算結果を含んでいる。なお、計算データ34Aの少なくとも一部は、共有メモリ32、プロセッサのキャッシュ、またはプロセッサのレジスタなど、異なる記憶階層に保存されていてもよい。計算プログラム34Bは、所定のアルゴリズムに基づき、各プロセッサにおける計算処理および、共有メモリ32およびストレージ34へのデータの保存処理を実現するプログラムである。制御プログラム34Cは、管理サーバ1の制御部13から送信された指令に基づき、計算サーバ3aを制御し、計算サーバ3aの計算結果を管理サーバ1に送信するプログラムである。
次に、組合せ最適化問題の求解に関連する技術について説明する。組合せ最適化問題を解くために使われる情報処理装置の一例として、イジングマシンが挙げられる。イジングマシンとは、イジングモデルの基底状態のエネルギーを計算する情報処理装置のことをいう。これまで、イジングモデルは、主に強磁性体や相転移現象のモデルとして使われることが多かった。しかし、近年、イジングモデルは、組合せ最適化問題を解くためのモデルとしての利用が増えている。下記の式(1)は、イジングモデルのエネルギーを示している。
ここで、si、sjはスピンである、スピンは、+1または-1のいずれかの値をとる2値変数である。Nは、スピンの数である。hiは、各スピンに作用する局所磁場である。Jは、スピン間における結合係数の行列である。行列Jは、対角成分が0である実対称行列となっている。したがって、Jijは行列Jのi行j列の要素を示している。なお、式(1)のイジングモデルは、スピンについての2次式となっているが、スピンの3次以上の項を含む拡張されたイジングモデル(多体相互作用を有するイジングモデル)を使ってもよい。
式(1)のイジングモデルを使うと、エネルギーEIsingを目的関数とし、エネルギーEIsingを可能な限り小さくする解を計算することができる。イジングモデルの解は、スピンのベクトル(s1、s2、・・・、sN)の形式で表される。特に、エネルギーEIsingが最小値となるベクトル(s1、s2、・・・、sN)は、最適解とよばれる。ただし、計算されるイジングモデルの解は、必ず厳密な最適解でなくてもよい。以降では、イジングモデルを使ってエネルギーEIsingが可能な限り小さくなる近似解(すなわち、目的関数の値が可能な限り最適値に近くなる近似解)を求める問題をイジング問題とよぶものとする。
式(1)のスピンsiは2値変数であるため、式(1+si)/2を使うことにより、組合せ最適化問題で使われる離散変数(ビット)との変換を容易に行うことができる。したがって、組合せ最適化問題をイジング問題に変換し、イジングマシンに計算を行わせることにより、組合せ最適化問題の解を求めることが可能である。0または1のいずれかの値をとる離散変数(ビット)を変数とする2次の目的関数を最小化する解を求める問題は、QUBO(Quadratic Unconstrained Binary Optimization、制約なし2値変数2次最適化)問題とよばれる。式(1)で表されるイジング問題は、QUBO問題と等価であるといえる。
例えば、量子アニーラ、コヒーレントイジングマシン、または量子分岐マシンなどがイジングマシンのハードウェア実装として提案されている。量子アニーラは、超伝導回路を使って量子アニーリングを実現する。コヒーレントイジングマシンは、光パラメトリック発振器で形成されたネットワークの発振現象を利用する。量子分岐マシンは、カー効果を有するパラメトリック発振器のネットワークにおける量子力学的な分岐現象を利用する。これらのハードウェア実装は、計算時間の大幅な短縮を実現する可能性がある一方、大規模化や安定的な運用が難しいという課題もある。
そこで、広く普及しているデジタルコンピュータを使ってイジング問題の求解を行うことも可能である。デジタルコンピュータは、上述の物理的現象を使ったハードウェア実装と比べ、大規模化と安定運用が容易である。デジタルコンピュータでイジング問題の求解を行うためのアルゴリズムの一例として、シミュレーテッドアニーリング(SA)が挙げられる。シミュレーテッドアニーリングをより高速に実行する技術の開発が行われている。ただし、一般のシミュレーテッドアニーリングはそれぞれの変数が逐次更新される逐次更新アルゴリズムであるため、並列化による計算処理の高速化は難しい。
上述の課題を踏まえ、デジタルコンピュータにおける並列的な計算によって、規模の大きい組合せ最適化問題の求解を高速に行うことが可能なシミュレーテッド分岐アルゴリズムが提案されている。以降では、シミュレーテッド分岐アルゴリズムを使って組合せ最適化問題を解く情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラムについて説明する。
はじめに、シミュレーテッド分岐アルゴリズムの概要について述べる。
シミュレーテッド分岐アルゴリズムでは、それぞれN個ある2つの変数xi,yi(i=1、2、・・・、N)について、下記の(2)の連立常微分方程式を数値的に解く。N個の変数xiのそれぞれは、イジングモデルのスピンsiに対応している。一方、N個の変数yiのそれぞれは、運動量に相当している。変数xi,yiは、いずれも連続変数であるものとする。以下では、変数xi(i=1、2、・・・、N)を要素とするベクトルを第1ベクトル、変数yi(i=1、2、・・・、N)を要素とするベクトルを第2ベクトルとそれぞれよぶものとする。
シミュレーテッド分岐アルゴリズムの時間発展を計算することにより、変数xi,yi(i=1、2、・・・、N)の値を繰り返し更新し、イジングモデルのスピンsi(i=1、2、・・・、N)を求めることができる。すなわち、時間発展の計算が行われる場合、第1ベクトルの要素の値と、第2ベクトルの要素の値が繰り返し更新される。ここでは、時間発展の計算が行われると想定し、各係数を説明する。ただし、シミュレーテッド分岐アルゴリズムでは、必ず時間発展の計算を行わなくてもよい。例えば、後述するようにレプリカ交換法(replica exchange method/parallel tempering)によってシミュレーテッド分岐アルゴリズムの求解を行ってもよい。
(2)および(3)において、係数Dは、離調(detuning)に相当する。係数p(t)は、ポンピング振幅(pumping amplitude)に相当する。シミュレーテッド分岐アルゴリズムの時間発展を計算する場合、係数p(t)は、更新回数に応じて値が単調増加する。係数p(t)の初期値は0に設定されていてもよい。係数Kは、正のカー係数(Kerr coefficient)に相当する。係数cとして、定数係数を使うことができる。例えば、係数cの値を、シミュレーテッド分岐アルゴリズムによる計算の実行前に決めてもよい。例えば、係数cをJ(2)行列の最大固有値の逆数に近い値に設定することができる。例えば、c=0.5D√(N/2n)という値を使うことができる。ここで、nは、組合せ最適化問題に係るグラフのエッジ数である。また、a(t)は、時間発展の計算時においてp(t)とともに増加する係数である。例えば、a(t)として、√(p(t)/K)を使うことができる。なお、(3)および(4)における局所磁場のベクトルhiは、省略すること可能である。
時間発展の計算を行う場合、係数p(t)の値が所定の値を超えた時に、第1ベクトルにおいて、正値である変数xiを+1、負値である変数xiを-1にそれぞれ変換すると、スピンsiを要素とする解ベクトルを得ることができる。この解ベクトルは、イジング問題の解に相当する。なお、第1ベクトルおよび第2ベクトルの更新回数に基づき、上述の変換を実行し、解ベクトルを求めるか否かの判定を行ってもよい。
シミュレーテッド分岐アルゴリズムの時間発展を計算する場合、シンプレクティック・オイラー法を使い、上述の(2)を離散的な漸化式に変換し、求解を行うことができる。下記の(4)は、漸化式に変換後のシミュレーテッド分岐アルゴリズムの例を示している。
ここで、tは、時刻であり、Δtは、時間ステップ(時間刻み幅)である。なお、(4)では、微分方程式との対応関係を示すために、時刻tおよび時間ステップΔtが使われている。ただし、実際にアルゴリズムをソフトウェアまたはハードウェアに実装する際に必ず時刻tおよび時間ステップΔtが明示的なパラメータとして含まれていなくてもよい。例えば、時間ステップΔtを1とすれば、実装時のアルゴリズムから時間ステップΔtを除去することが可能である。アルゴリズムを実装する際に、明示的なパラメータとして時間tを含めない場合には、(4)において、xi(t+Δt)をxi(t)の更新後の値であると解釈すればよい。すなわち、上述の(4)における“t”は、更新前の変数の値、“t+Δt”は、更新後の変数の値を示すものとする。
シミュレーテッド分岐アルゴリズムの時間発展を計算する場合、p(t)の値を初期値(例えば、0)から所定の値まで増加させた後における変数xiの符号に基づき、スピンsiの値を求めることができる。例えば、xi>0のときsgn(xi)=1、xi<0のときsgn(xi)=-1となる符号関数を使うと、p(t)の値が所定の値まで増加したとき、変数xiを符号関数で変換することによってスピンsiの値を求めることができる。符号関数として、例えば、xi≠0のときに、sgn(xi)=xi/|xi|、xi=0のときにsgn(xi)=1または-1になる関数を使うことができる。組合せ最適化問題の解(例えば、イジングモデルのスピンsi)を求めるタイミングについては、特に問わない。例えば、第1ベクトルおよび第2ベクトルの更新回数または第1係数pの値がしきい値より大きくなったときに組合せ最適化問題の解(解ベクトル)を求めてもよい。
図6のフローチャートは、時間発展によってシミュレーテッド分岐アルゴリズムの解を計算する場合における処理の例を示している。以下では、図6を参照しながら処理を説明する。
はじめに、計算サーバは、管理サーバ1より問題に対応する行列Jijおよびベクトルhiを取得する(ステップS101)。そして、計算サーバは、係数p(t)およびa(t)を初期化する(ステップS102)。例えば、ステップS102で係数pおよびaの値を0にすることができるが、係数pおよびaの初期値を限定するものではない。次に、計算サーバは、第1変数xiおよび第2変数yiを初期化する(ステップS103)。ここで、第1変数xiは、第1ベクトルの要素である。また、第2変数yiは、第2ベクトルの要素である。ステップS103で計算サーバは、例えば、擬似乱数によってxiおよびyiを初期化してもよい。ただし、xiおよびyiの初期化の方法を限定するものではない。また、これとは異なるタイミングに変数の初期化を行ってもよいし、少なくともいずれかの変数を複数回初期化してもよい。
次に、計算サーバは、第1ベクトルの要素xiに対応する第2ベクトルの要素yiを重み付け加算することによって第1ベクトルを更新する(ステップS104)。例えば、ステップS104では、変数xiにΔt×D×yiを加算することができる。そして、計算サーバは、第2ベクトルの要素yiを更新する(ステップS105およびS106)。例えば、ステップS105では、変数yiにΔt×[(p-D-K×xi×xi)×xi]を加算することができる。ステップS106では、さらに変数yiに-Δt×c×hi×a-Δt×c×ΣJij×xjを加算することができる。
次に、計算サーバは、係数pおよびaの値を更新する(ステップS107)。例えば、係数pに一定の値(Δp)を加算し、係数aを更新後の係数pの正の平方根に設定することができる。ただし、後述するように、これは係数pおよびaの値の更新方法の一例にしかすぎない。そして、計算サーバは、第1ベクトルおよび第2ベクトルの更新回数がしきい値未満であるか否かを判定する(ステップS108)。更新回数がしきい値未満である場合(ステップS108のYES)、計算サーバは、ステップS104~S107の処理を再度実行する。更新回数がしきい値以上である場合(ステップS108のNO)、第1ベクトルの要素xiに基づいて解ベクトルの要素であるスピンsiを求める(ステップS109)。ステップS109では、例えば、第1ベクトルにおいて、正値である変数xiを+1、負値である変数xiを-1にそれぞれ変換し、解ベクトルを得ることができる。
なお、ステップS108の判定において、更新回数がしきい値未満である場合(ステップS108のYES)に第1ベクトルに基づきハミルトニアンの値を計算し、第1ベクトルおよびハミルトニアンの値を記憶してもよい。これにより、ユーザは、複数の第1ベクトルより最適解に最も近い近似解を選択することが可能となる。
なお、図6のフローチャートに示した少なくともいずれかの処理を並列的に実行してもよい。例えば、第1ベクトルおよび第2ベクトルのそれぞれが有するN個の要素の少なくとも一部が並列的に更新されるよう、ステップS104~S106の処理を並列的に実行してもよい。例えば、複数台の計算サーバを使って処理を並列化してもよい。複数のプロセッサによって処理を並列化してもよい。ただし、処理の並列化を実現するための実装および処理の並列化の態様を限定するものではない。
上述のステップS105~S106に示した変数xiおよびyiの更新処理の実行順序は、一例にしかすぎない。したがって、これとは異なる順序で変数xiおよびyiの更新処理を実行してもよい。例えば、変数xiの更新処理と変数yiの更新処理が実行される順序が入れ替わっていてもよい。また、各変数の更新処理に含まれるサブ処理の順序も限定しない。例えば、変数yiの更新処理に含まれる加算処理の実行順序が図6の例とは異なっていてもよい。各変数の更新処理を実行するための前提となる処理の実行順序およびタイミングも特に限定しない。例えば、問題項の計算処理が、変数xiの更新処理を含むその他の処理と並行で実行されていてもよい。変数xiおよびyiの更新処理、各変数の更新処理に含まれるサブ処理および問題項の計算処理が実行される順序およびタイミングが限定されない点は、以降に示す各フローチャートの処理についても、同様である。
図7のグラフは、時間発展の計算を行う場合における係数pの更新パターンの例を示している。図7の縦軸は、係数pの値を示している。また、図7の横軸は、時刻または更新回数に相当する。図7は、初期値p1よりM回の更新後の値であるpMに至る複数の更新パターンがあることを示している。p1<pMの条件を満たすのであれば、p1およびpMを任意の実数に設定することが可能である。このように、係数pの更新パターンは、無数に存在するといえる。
なお、シミュレーテッド分岐アルゴリズムにおける係数pは、シミュレーテッドアニーリング(SA)における温度Tの逆数に相当する。したがって、係数pに応じて粒子の遷移確率を調整することができる。係数pが小さいほど、粒子の遷移確率が高くなる。一方、係数pが大きいほど、粒子の遷移確率が低くなる。このため、シミュレーテッド分岐アルゴリズムにおける係数pの更新パターンは、シミュレーテッドアニーリングにおける冷却スケジュールに相当するといえる。
例えば、図7に示されているように、更新回数に応じて係数pを一定の割合でインクリメントしてもよい。また、更新タイミングによって係数pを異なる増分でインクリメントしてもよい。さらに、一部の更新タイミングにおいて係数pの値を更新し、残りの更新タイミングにおいて係数pの値の更新をスキップしてもよい。
シミュレーテッド分岐アルゴリズムの求解処理においては、複数の局所解を含む解空間のできる限り広い領域を探索し、問題の最適解またはそれに近い近似解に到達することが望ましい。係数pおよびaの更新パターンは、探索対象とする解空間の領域と探索の粒度を指定する。このため、大域的な最適解が見つかりやすくなるよう、係数pおよびaの更新パターンを調整する必要がある。ただし、一般に求解の対象となるそれぞれの問題ごとに最適な更新パターンを見つけるのは容易であるとは限らない。ユーザが様々な更新パターンを試し、経験的に使用する更新パターンを選ぶことになるケースも想定される。
そこで、時間発展の計算に代わり、レプリカ交換法によってシミュレーテッド分岐アルゴリズムの求解を行ってもよい。
図8は、レプリカ交換法によって計算を行う場合に使われる係数pを概念的に示したものである。図8の縦軸は、係数pの値を示している。レプリカ交換法によって計算を行う場合、情報処理装置は、必ず係数pの時間発展を計算しなくてもよい。このため、図8の横軸は、図7との対比のために用意された仮想的な軸となっている。
図8に示されているように、レプリカ交換法を使う場合、決められた複数の係数pの組合せ(p(1)、p(2)、・・・、p(M))ごとに、第1ベクトルおよび第2ベクトルの更新を行う。以下の説明では、それぞれの係数pごとに用意される第1ベクトルおよび第2ベクトルをレプリカとよぶものとする。そして、レプリカ間で第1ベクトルおよび第2ベクトルの交換を行うことにより、解空間内の異なる領域における解の探索を実現することができる。レプリカ交換法では、第1ベクトルおよび第2ベクトルの交換を繰り返すことにより、問題の最適解またはそれに近い近似解に到達する確率を高めることが可能である。
例えば、計算サーバのプロセッサごとにレプリカを割り当ててもよい。また、情報処理システム内の計算サーバごとにレプリカを割り当ててもよい。また、レプリカによって割り当てられる計算資源の量が異なっていてもよい。レプリカによって割り当てられる計算資源の種類または組合せが異なっていてもよい。ただし、それぞれのレプリカへの計算資源の割り当て方法を限定するものではない。
レプリカ交換法を使う場合、それぞれのレプリカにおける第1ベクトル、第2ベクトルおよびそれらの関数の計算を並列的に行うことができる(第1レベルの並列化)。また、それぞれが複数の要素を含む第1ベクトルおよび第2ベクトルの更新処理も並列的に行うことができる(第2レベルの並列化)。計算資源において第1レベルの並列化が行われる粒度と、第2レベルの並列化が行われる粒度は異なっていてもよい。前者の粒度より後者の粒度を大きくしてもよい。例えば、第1レベルの並列化を計算サーバ、仮想計算機の粒度で実現することができる。また、第2レベルの並列化をプロセッサの粒度で実現することができる。レプリカ交換法を使うと、複数レベルにおける処理の並列化を行うことができるため、効率的に計算を行うことができる。このため、比較的短時間で問題の最適解またはそれに近い近似解を求めることが可能となる。
[係数pの組合せを自動的に決める場合]
はじめに、レプリカ交換法による計算を行う際に、使用する係数pの組合せを自動的に決める場合における処理を説明する。
はじめに、レプリカ交換法による計算を行う際に、使用する係数pの組合せを自動的に決める場合における処理を説明する。
レプリカ交換法を使う場合、レプリカごとにハミルトニアンの計算が行われる。このため、以下の説明では、対応するレプリカm(m=1、2、・・・、M)を示すため、下記の式(7)のような表記を用いるものとする。
統計力学的な平衡分布への収束を保証するために、レプリカm1よりレプリカm1+1に遷移する確率W(m1,m1+1)と、レプリカm1+1よりレプリカm1に遷移する確率W(m1+1,m1)は、下記の式(8)の詳細釣り合い条件が課せられる。係数βは、一般的なシミュレーテッドアニーリングにおける逆温度に相当する。レプリカ交換法の各レプリカに係数pの組合せ(p(1)、p(2)、・・・、p(M))を割り当てているため、係数βとして、有限の正定数を使うことができる。
また、レプリカm1とレプリカm1+1との間の交換確率は、下記の式(9)のように表される。
例えば、データ交換回路51は、式(9)の値を0以上1未満の範囲の擬似乱数と比較し、前者の値と後者の値との大小関係に基づく条件判定を行うことができる。前者の値より後者の値の方が大きい場合、条件判定は肯定的となり、データ交換回路51は、レプリカm1とレプリカm1+1との間で第1ベクトルおよび第2ベクトルを交換することができる。一方、前者の値より後者の値の方が大きい場合、条件判定は否定的となり、レプリカm1とレプリカm1+1との間で第1ベクトルおよび第2ベクトルの交換処理をスキップすることができる。
例えば、それぞれのレプリカは、演算回路ごとに割り当てられるものであってもよい。この場合、データ交換回路は、演算回路のペアごとに、条件判定を実行し、条件判定が肯定的であるときに演算回路間で計算に使われる第1ベクトルおよび第2ベクトルの交換、または第1係数の交換の少なくともいずれかを実行するように構成されていてもよい。また、データ交換回路は、ペアに含まれる演算回路における第1ベクトル(複数の第1変数)、第2ベクトル(複数の第2変数)および第1係数に基づいて条件判定を実行するように構成されていてもよい。例えば、式(9)を使って条件判定を行ってもよいし、その他の式を使って条件判定を行ってもよい。
それぞれのレプリカは、計算機ごとに割り当てられるものであってもよい。この場合、情報処理システムの第2計算機は、第1計算機のペアごとに、条件判定を実行し、条件判定が肯定的であるときに第1計算機間で計算に使われる第1ベクトルおよび第2ベクトルの交換、または第1係数の交換の少なくともいずれかを実行するように構成されていてもよい。
レプリカ交換法では、効率的な計算(平衡状態への収束)を実現するために、係数pの値の相違に関わらず交換確率が一定となるよう、それぞれのレプリカにおける係数p(m)の値を設定することが好ましい。特に、複数のレプリカにおける係数p(m)(m=1、2、・・・、M)の値が等比数列を形成するよう、各係数p(m)の値を設定すると、レプリカ間における交換確率の値が一定となることが知られている。したがって、それぞれのレプリカにおける係数p(m)として、等比数列を形成する係数p(m)の組合せ(m=1、2、・・・、M)を使って計算を行ってもよい。すなわち、それぞれの演算回路で使われる第1係数(例えば、係数p)は、互いに等比数列の関係となっていてもよい。ただし、レプリカ交換法による計算において使われる係数p(m)(m=1、2、・・・、M)の値の決め方を限定するものではない。
各レプリカでは、それぞれN個ある2つの変数X(m)
i,Y(m)
i(i=1、2、・・・、N)について、下記の(10)の連立常微分方程式を数値的に解く処理が実行される。N個の変数X(m)
iのそれぞれは、イジングモデルのスピンsiに対応している。一方、N個の変数Y(m)
iのそれぞれは、運動量に相当している。変数X(m)
i,Y(m)
iは、いずれも連続変数であるものとする。以下では、変数X(m)
i(i=1、2、・・・、N)を要素とするベクトルを第1ベクトル、変数Y(m)
i(i=1、2、・・・、N)を要素とするベクトルを第2ベクトルとそれぞれよぶものとする。
シンプレクティック・オイラー法を使い、上述の(10)を離散的な漸化式に変換し、レプリカ交換法によってシミュレーテッド分岐アルゴリズムの計算を行うことができる。下記の(11)は、漸化式に変換後のシミュレーテッド分岐アルゴリズムの例を示している。
なお、(11)のうち、下記の(12)の項は、イジングエネルギーに由来する。この項の形式は、解きたい問題に応じて決まるため、問題項(problem term)とよぶものとする。
後述するように、計算において(12)とは異なる問題項を使ってもよい。
上述のように、レプリカ交換法によってシミュレーテッド分岐アルゴリズムの計算を行うと、処理の並列度を高め、比較的短時間で問題の最適解またはそれに近い近似解を得ることができる。特に、係数pの組合せが自動的に決まる上述の方法を用いると、シミュレーテッド分岐アルゴリズムの実装および実行が容易となる。
図9のフローチャートは、レプリカ交換法によってシミュレーテッド分岐アルゴリズムの計算を行ったときにおける処理の例を示している。以下では、図9を参照しながら処理を説明する。
はじめに、計算サーバは、問題に対応する行列Jijおよびベクトルhiを取得し、カウンタtおよび係数p(m)、a(m)を初期化する(ステップS111)。例えば、ステップS111では、等比数列を形成するように、係数p(m)の値を設定することができる。カウンタtは、例えば、0に設定される。そして、計算サーバは、第1ベクトルの要素X(m)
iおよび第2ベクトルの要素Y(m)
iを初期化し、m1に1を代入する(ステップS112)。ここで、m1は、レプリカmの指定に使われるパラメータである。例えば、ステップS112では、擬似乱数によって第1ベクトルの要素X(m)
iおよび第2ベクトルの要素Y(m)
iの初期値を設定することができる。次に、計算サーバは、第1ベクトルの要素X(m1)
iを対応する第2ベクトルの要素Y(m)
iに基づき更新する(ステップS113)。例えば、ステップS113では、第1ベクトルの要素X(m1)
iにΔt×D×Y(m1)
iを加算することができる。そして、計算サーバは、第2ベクトルの要素Y(m1)
iを更新する(ステップS114)。例えば、ステップS114では、第2ベクトルの要素Y(m1)
iにΔt×[(p-D-K×X(m1)
i×X(m1)
i)×X(m1)
i]を加算することができる。ステップS114では、さらに変数Y(m1)
iに-Δt×c×hi×a-Δt×c×ΣJij×X(m1)
iを加算することができる。
次に、計算サーバは、m1をインクリメントし、m1<=Mを満たすか否かを判定する(ステップS115)。ステップS115の判定が肯定的である場合(ステップS115のYES)、ステップS113~S115の処理を再度実行する。ステップS115の判定が否定的である場合(ステップS115のNO)、計算サーバは、k回ごとに0~Mのランダムなm1を選択し、遷移条件を満たすのであれば、X(m1)
iとX(m1+1)
iの値、Y(m1)
iとY(m1+1)
iの値をそれぞれ交換する(ステップS116)。例えば、計算サーバは、0以上1未満の擬似乱数rを生成し、rの値を上述の式(9)の値と比較することができる。上述の式(9)の値の方が擬似乱数rの値より大きい場合、遷移条件を満たしていると判定することができる。一方、擬似乱数rの値が上述の式(9)の値以上である場合、遷移条件が満たされていないと判定することができる。そして、計算サーバは、カウンタtを更新する(ステップS117)。例えば、ステップS117では、tにΔtを加算することができる。
次に、カウンタtがT未満であるか否かを判定する(ステップS118)。ステップS118の判定が肯定的である場合(ステップS118のYES)、計算サーバは、ステップS113~S117の処理を再度実行する。ステップS118の判定が否定的である場合(ステップS118のNO)、計算サーバは、第1ベクトルの要素(変数)X(m)
iの値に基づいて解ベクトルの要素であるスピンsiを求める(ステップS119)。例えば、ステップS119では、正値である変数X(m)
iを+1、負値である変数X(m)
iを-1にそれぞれ変換すればよい。なお、ステップS118では、代わりに、ステップS116の処理の実行回数がしきい値を超えたか否かの判定を行ってもよい。
ステップS119における変数X(m)
iとして、1~Mのいずれかのレプリカより選択された変数X(m1)
iの代表値を使うことができる。ここで、代表値は、1~Mのいずれかのレプリカより選択された変数X(m1)
iであってもよいし、1~Mの少なくともいずれかのレプリカより選択された変数X(m1)
iの平均値であってもよい。
上述の図9のフローチャートでは、ステップS112~S114およびS116のすくなくとも一部において第1ベクトルの要素および第2ベクトルの要素(i=1,2,・・・N)の更新処理を並列的に実行してもよい(第2レベルの並列化)。また、それぞれのレプリカに係る処理の少なくとも一部を並列化してもよい(第1レベルの並列化)。例えば、計算サーバ、仮想計算機またはプロセッサごとに異なるレプリカに係るステップS112~S114の処理を実行させてもよい。この場合、ステップS116の処理は、いずれかの計算サーバ上で動作するプログラムによって実行されてもよいし、上述の管理サーバ1の制御部13によって実行されてもよい。また、ステップS119の処理は、管理サーバ1など、その他のサーバによって実行されてもよい。
ここでは、本実施形態による情報処理方法、記憶媒体およびプログラムについて述べる。
情報処理方法は、複数の第1計算機と、第2計算機とを使うものであってもよい。例えば、複数の第1計算機は、それぞれが第1変数を要素とする第1ベクトルおよび第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新するように構成されている。例えば、第2計算機は、第1計算機間におけるデータの交換を実行するように構成されている。この場合、情報処理方法は、それぞれの第1計算機が第1変数を対応する第2変数に基づいて更新するステップと、それぞれの第1計算機が第1変数を第1係数で重み付けし対応する第2変数に加算するステップと、それぞれの第1計算機が複数の第1変数を用いて問題項を計算するステップと、それぞれの第1計算機が問題項を第2変数に加算するステップと、第2計算機が第1計算機間で第1ベクトルおよび第2ベクトルの交換、または第1係数の交換の少なくともいずれかを実行するステップとを含んでいてもよい。
また、情報処理方法は、複数の第1プロセッサと、第2プロセッサとを使うものであってもよい。例えば、複数の第1プロセッサは、それぞれが第1変数を要素とする第1ベクトルおよび第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新するように構成されている。例えば、第2プロセッサは、第1プロセッサ間におけるデータの交換を実行するように構成されている。この場合、情報処理方法は、それぞれの第1プロセッサが第1変数を対応する第2変数に基づいて更新するステップと、それぞれの第1プロセッサが第1変数を第1係数で重み付けし対応する第2変数に加算するステップと、それぞれの第1プロセッサが複数の第1変数を用いて問題項を計算するステップと、それぞれの第1プロセッサが問題項を第2変数に加算するステップと、第2プロセッサが第1プロセッサ間で第1ベクトルおよび第2ベクトルの交換、または第1係数の交換の少なくともいずれかを実行するステップとを含んでいてもよい。本実施形態によるプログラムは、当該情報処理方法と同様のステップを含んでいてもよい。さらに、本実施形態による非一時的なコンピュータ可読な記憶媒体は、当該プログラムを格納するものであってもよい。
[係数pの値が変動する場合]
ここまでは、各レプリカにおける係数p(m)、a(m)の値がループ処理の前のステップ(図9のステップS111)で決まり、以降のループ処理を含むステップでは、固定された係数p(m)、a(m)の値が使われる場合を想定し、説明を行った。ただし、レプリカ交換法によってシミュレーテッド分岐アルゴリズムの計算が行われる場合、必ず係数p(m)、a(m)の値は、固定されていなくてもよい。
ここまでは、各レプリカにおける係数p(m)、a(m)の値がループ処理の前のステップ(図9のステップS111)で決まり、以降のループ処理を含むステップでは、固定された係数p(m)、a(m)の値が使われる場合を想定し、説明を行った。ただし、レプリカ交換法によってシミュレーテッド分岐アルゴリズムの計算が行われる場合、必ず係数p(m)、a(m)の値は、固定されていなくてもよい。
例えば、情報処理装置は、下記の式(13)に基づいて係数p(m)の値を変動させてもよい。式(13)は、レプリカの交換タイミングまたは交換判定タイミングによって変動しうる係数p(m)の一例である。
式(13)のp(m)(t)は、係数p(m)の値がパラメータtに依存していることを示している。
条件(a)
はじめに、パラメータtの値が0またはT0の偶数倍である場合におけるp(m)の値について説明する。
はじめに、パラメータtの値が0またはT0の偶数倍である場合におけるp(m)の値について説明する。
レプリカ番号mが偶数である場合、式(13)のcos(・・・)の値は、+1となり、p(m)=p0
(m+1)が成り立つ。一方、レプリカ番号mが奇数である場合、式(13)のcos(・・・)の値は、-1となり、p(m)=p0
(m)が成り立つ。
条件(b)
次に、パラメータtの値がT0の奇数倍である場合におけるp(m)の値について説明する。
次に、パラメータtの値がT0の奇数倍である場合におけるp(m)の値について説明する。
レプリカ番号mが偶数である場合、式(13)のcos(・・・)の値は、-1となり、p(m)=p0
(m)が成り立つ。一方、レプリカ番号mが奇数である場合、式(13)のcos(・・・)の値は、+1となり、p(m)=p0
(m+1)が成り立つ。
条件(c)
最後に、パラメータtの値について、上述の条件(a)および(b)のいずれにも該当しない場合におけるp(m)の値について説明する。
最後に、パラメータtの値について、上述の条件(a)および(b)のいずれにも該当しない場合におけるp(m)の値について説明する。
この場合、式(13)のcos(・・・)は、(-1,+1)の範囲の値をとるため、p(m)は、αp0
(m+1)+βp0
(m)のようなp0
(m+1)とp0
(m)がそれぞれ重み付けされた値をとる。cos(・・・)の周期性より、番号mが偶数のレプリカと、番号mが奇数のレプリカで異なる値のp(m)が使われることになる。このように、それぞれの演算回路は、第1ベクトルおよび第2ベクトルの更新回数に応じて、第1係数の値を周期的に変化させてもよい。
上述の式(13)で定義される係数p(m)を使うことにより、レプリカ間の交換判定の行われるタイミングにおいて、下記の式(14)が成り立つ。
レプリカ間の交換判定タイミングにおいて、式(14)の関係が成立する場合、それぞれの交換判定タイミングにおいてレプリカm1とレプリカm1+1について、第1ベクトルおよび第2ベクトルの交換が行われる。それぞれの交換判定タイミングにおいて式(9)に示した計算を行うことが不要となるため、計算資源の消費を抑制することができる。また、図9のフローチャートにおける交換判定タイミング(ステップS116)で、交換を行うか否かの判定処理をスキップすることができるため、図9の交換判定タイミングは、交換タイミングに置き換わる。
式(13)に示した係数p(m)を使う場合、ユーザは、事前にp0
(m+1)およびp0
(m)の値を決める必要がある。しかし、時間発展の計算を行う場合のように係数p(m)の更新パターンおよび係数a(m)の定義を決める必要がないため、シミュレーテッド分岐アルゴリズムの実行に要する工数を削減することが可能である。また、式(13)に示した係数p(m)を使うことにより、レプリカ間における第1ベクトルおよび第2ベクトルの交換を効率的に行い、比較的短時間で問題の最適解またはそれに近い近似解を得ることが可能となる。
なお、式(13)に示した係数p(m)の定義は、一例にしかすぎない。したがって、これとは異なる定義の係数p(m)を用いることを妨げるものではない。
図10のフローチャートは、変動する係数p(m)を使って計算を行ったときにおける処理の例を示している。以下では、図10を参照しながら処理を説明する。
はじめに、計算サーバは、問題に対応する行列Jijおよびベクトルhiを取得し、カウンタtおよび係数p(m)、a(m)を初期化する(ステップS121)。カウンタtは、例えば、0に設定される。式(13)の定義にしたがう場合、番号mが偶数のレプリカでは、p(m)=p0
(m+1)に設定される。また、番号mが奇数のレプリカでは、p(m)=p0
(m)に設定される。
ステップS122~ステップS125の処理は、それぞれ図9のステップS112~ステップS115の処理に相当するため、詳細な説明を省略する。ステップS125の判定が肯定的である場合(ステップS125のYES)、計算サーバは、k回ごとに0~Mのランダムなm1を選択し、X(m1)
iとX(m1+1)
iの値、Y(m1)
iとY(m1+1)
iの値をそれぞれ交換する(ステップS126)。式(14)の関係が成立する場合には、レプリカ間で交換を行うか否かの判定を行う必要がなくなるため、ステップS126は、レプリカ間における第1ベクトルおよび第2ベクトルの交換タイミングに相当する。そして、計算サーバは、カウンタtを更新する(ステップS127)。例えば、ステップS127では、tにΔtを加算することができる。
次に、カウンタtがT未満であるか否かを判定する(ステップS128)。ステップS128の判定が肯定的である場合(ステップS128のYES)、計算サーバは、ステップS123~S127の処理を再度実行する。ステップS128の判定が否定的である場合(ステップS128のNO)、計算サーバは、第1ベクトルの要素(変数)X(m)
iの値に基づいて解ベクトルの要素であるスピンsiを求める(ステップS129)。例えば、ステップS129では、正値である変数X(m)
iを+1、負値である変数X(m)
iを-1にそれぞれ変換すればよい。ステップS129における変数X(m)
iとして、使うことができる代表値の選び方および計算方法を限定しない点は、図9のステップS119と同様である。また、ステップS129の処理は、計算サーバ以外のサーバ(計算機)によって実行されてもよい。
上述の図10のフローチャートでは、ステップS122~S124およびS126のすくなくとも一部において第1ベクトルの要素および第2ベクトルの要素(i=1,2,・・・N)の更新処理を並列的に実行してもよい(第2レベルの並列化)。また、それぞれのレプリカに係る処理の少なくとも一部を並列化してもよい(第1レベルの並列化)。例えば、計算サーバ、仮想計算機またはプロセッサごとに異なるレプリカに係るステップS122~S124の処理を実行させてもよい。この場合、ステップS126の処理は、いずれかの計算サーバ上で動作するプログラムによって実行されてもよいし、上述の管理サーバ1の制御部13によって実行されてもよい。
情報処理装置が式(13)に示した係数p(m)を使い、図10のフローチャートの処理を実行することにより、計算量を抑えつつ、処理の並列度を高め、比較的短時間で問題の最適解またはそれに近い近似解を得ることが可能となる。
[レプリカ交換処理の並列化]
レプリカ交換法によるシミュレーテッド分岐アルゴリズムの計算において、レプリカ間における第1ベクトルおよび第2ベクトルの交換処理を行うためには、少なくともレプリカ交換タイミングにおいて、交換対象のレプリカm1およびm1+1の処理が同期している必要がある。このため、実装次第でレプリカ交換処理は、レプリカ交換法によるシミュレーテッド分岐アルゴリズムの高速化におけるボトルネックとなりうる。そこで、レプリカ交換処理を並列に実行し、交換対象のレプリカ間で処理の同期をとりやすくする対策がとることができる。
レプリカ交換法によるシミュレーテッド分岐アルゴリズムの計算において、レプリカ間における第1ベクトルおよび第2ベクトルの交換処理を行うためには、少なくともレプリカ交換タイミングにおいて、交換対象のレプリカm1およびm1+1の処理が同期している必要がある。このため、実装次第でレプリカ交換処理は、レプリカ交換法によるシミュレーテッド分岐アルゴリズムの高速化におけるボトルネックとなりうる。そこで、レプリカ交換処理を並列に実行し、交換対象のレプリカ間で処理の同期をとりやすくする対策がとることができる。
例えば、偶数番号のレプリカm1と、レプリカm1+1との間における第1ベクトルおよび第2ベクトルの交換処理(第1交換処理)と、奇数番号のレプリカm1と、レプリカm1+1との間における第1ベクトルおよび第2ベクトルの交換処理(第2交換処理)とを交互に実行することができる。これにより、レプリカ間における第1ベクトルおよび第2ベクトルの交換処理を並列化することが可能となる。
図11のフローチャートは、並列的にレプリカ交換を行う場合における処理の例を示している。以下では、図11を参照しながら処理を説明する。
はじめに、計算サーバは、問題に対応する行列Jijおよびベクトルhiを取得し、カウンタtおよび係数p(m)、a(m)を初期化する(ステップS131)。例えば、ステップS131における係数p(m)の初期化の方法は、上述のステップS121と同様であってもよい。また、ステップS131における係数p(m)の初期化の方法は、上述のステップS111と同様であってもよい。また、ステップS131では、経験側で得られた係数p(m)の組合せを使ってもよい。カウンタtは、例えば、0に設定される。
そして、計算サーバは、第1ベクトルの要素X(m)
iおよび第2ベクトルの要素Y(m)
iを初期化し、m1に1を代入する(ステップS132)。ここで、m1は、レプリカmの指定に使われるパラメータである。例えば、ステップS132では、擬似乱数によって第1ベクトルの要素X(m)
iおよび第2ベクトルの要素Y(m)
iの初期値を設定することができる。次に、計算サーバは、第1ベクトルの要素X(m1)
iを対応する第2ベクトルの要素Y(m)
iに基づき更新する(ステップS133)。例えば、ステップS133では、第1ベクトルの要素X(m1)
iにΔt×D×Y(m1)
iを加算することができる。そして、計算サーバは、第2ベクトルの要素Y(m1)
iを更新する(ステップS134)。例えば、ステップS134では、第2ベクトルの要素Y(m1)
iにΔt×[(p-D-K×X(m1)
i×X(m1)
i)×X(m1)
i]を加算することができる。ステップS134では、さらに第2ベクトルの要素Y(m1)
iに-Δt×c×hi×a-Δt×c×ΣJij×X(m1)
iを加算することができる。
次に、計算サーバは、k回ごとに偶数であるm1または奇数であるm1を交互に選択して遷移条件を判定し、遷移条件が満たされるのであれば、X(m1)
iとX(m1+1)
iの値、Y(m1)
iとY(m1+1)
iの値をそれぞれ交換する(ステップS135)。例えば、計算サーバは、0以上1未満の擬似乱数rを生成し、rの値を上述の式(9)の値と比較することができる。上述の式(9)の値の方が擬似乱数rの値より大きい場合、遷移条件を満たしていると判定することができる。一方、擬似乱数rの値が上述の式(9)の値以上である場合、遷移条件が満たされていないと判定することができる。
そして、計算サーバは、m1をインクリメントし、m1<=Mを満たすか否かを判定する(ステップS136)。ステップS136の判定が肯定的である場合(ステップS136のYES)、ステップS133~S135の処理を再度実行する。ステップS136の判定が否定的である場合(ステップS136のNO)、計算サーバは、カウンタtを更新する(ステップS137)。例えば、ステップS137では、tにΔtを加算することができる。
次に、カウンタtがT未満であるか否かを判定する(ステップS138)。ステップS138の判定が肯定的である場合(ステップS138のYES)、計算サーバは、ステップS133~S137の処理を再度実行する。ステップS138の判定が否定的である場合(ステップS138のNO)、計算サーバは、第1ベクトルの要素(変数)X(m)
iの値に基づいて解ベクトルの要素であるスピンsiを求める(ステップS139)。例えば、ステップS139では、正値である変数X(m)
iを+1、負値である変数X(m)
iを-1にそれぞれ変換すればよい。ステップS139における変数X(m)
iとして、使うことができる代表値の選び方および計算方法を限定しない点は、図9のステップS119と同様である。また、ステップS139の処理は、計算サーバ以外のサーバ(情報処理装置)によって実行されてもよい。
上述の図11のフローチャートでは、ステップS132~S135のすくなくとも一部において第1ベクトルの要素および第2ベクトルの要素(i=1,2,・・・N)の更新処理を並列的に実行してもよい(第2レベルの並列化)。また、それぞれのレプリカに係る処理の少なくとも一部を並列化してもよい(第1レベルの並列化)。例えば、計算サーバ、仮想計算機またはプロセッサごとに異なるレプリカに係るステッS132~S135の処理を実行させてもよい。この場合、ステップS135の処理は、いずれかの計算サーバ上で動作するプログラムによって実行されてもよいし、上述の管理サーバ1の制御部13によって実行されてもよい。
図12は、レプリカ交換法における処理フローを概念的に示している。図12において、それぞれの正方形は、番号が1~Mのレプリカに相当する。
図12のステップS10は、各レプリカについて第1ベクトルおよび第2ベクトルの更新処理が実行されているときを示している。そして、ステップS11では、偶数番号のレプリカについて、遷移条件を満たすか否かを判定し、遷移条件が満たされる場合には、第1ベクトルおよび第2ベクトルの交換処理が実行されている。また、ステップS12では、偶数番号のレプリカについて、遷移条件を満たすか否かを判定し、遷移条件が満たされる場合には、第1ベクトルおよび第2ベクトルの交換処理が実行されている。遷移条件の判定は、上述のように、0以上1未満の擬似乱数rを生成し、rの値を上述の式(9)の値と比較することによって行うことができる。
データ交換回路は、タイミングによって異なる演算回路のペアを選択し、第1ベクトルおよび第2ベクトルの交換、または第1係数の交換の少なくともいずれかを実行するように構成されていてもよい。また、データ交換回路は、複数の演算回路において、第1組合せのペアと、第2組合せのペアとを交互に選択し、第1ベクトルおよび第2ベクトルの交換、または第1係数の交換の少なくともいずれかを実行するように構成されていてもよい。例えば、番号1~番号6のレプリカがある場合を想定する。番号1~番号6のレプリカは、それぞれいずれかの演算回路に割り当てられているものとする。この場合、第1組合せには、番号1および番号2のレプリカのペアと、番号3および番号4のレプリカのペアと、番号5および番号6のレプリカのペアとが含まれていてもよい。一方、第2組合せには、番号2および番号3のレプリカのペアと、番号4および番号5のレプリカのペアと、番号6および番号1のレプリカのペアとが含まれていてもよい。
図12に示されているように、タイミングによってステップS11の処理と、ステップS12の処理を交互に実施することができる。これにより、レプリカ交換処理を並列的に実行し、一層短時間で問題の最適解またはそれに近い近似解を得ることが可能となる。
図13は、レプリカ交換法に関連する式の例を示している。図13の式(E1)は、それぞれのレプリカで使われるハミルトニアンの例を示している。式(E2)は、カノニカルアンサンブルの例を示している。式(E3)は、一般的な詳細釣り合いの式を示している。式(E4)は、カノニカルアンサンブルにおける詳細釣り合いの式を示している。式(E5)は、カノニカルアンサンブルにおける詳細釣り合いの式の項を整理したものである。式(E6)は、レプリカm1とレプリカm2の間における遷移確率を示している。
図14のグラフは、レプリカ交換法によってシミュレーテッド分岐アルゴリズムの計算が行われる場合と、時間発展によってシミュレーテッド分岐アルゴリズムの計算が行われる場合のそれぞれにおいて、最適解を得られるまでに必要な試行回数の例を示したヒストグラムである。図14は、シミュレーテッド分岐アルゴリズムを使って48ノード96エッジのハミルトン閉路問題を解いた場合におけるデータを示している。図14の縦軸は、最適解が得られた回数を示している。レプリカ交換法による計算では、10個のレプリカを使って計算を行っている。したがって、レプリカ交換法による1回の計算における試行回数は、10回とカウントしている。なお、時間発展による計算の場合には、200サイクルごとに最適解が得られているか否かの判定を行っている。一方、レプリカ交換法による計算の場合には、50サイクルごとに最適解が得られているか否かの判定を行っている。図14の結果を参照すると、レプリカ交換法を使うと、時間発展を計算する場合と比べて少ない試行回数で最適解を得られている。
レプリカ交換法による計算を行うことにより、情報処理システムに冗長性を持たせることができる。例えば、いずれかのレプリカにおける第1ベクトルおよび第2ベクトルの計算を実行している計算機が異常停止したとしても、その他のレプリカにおける第1ベクトルおよび第2ベクトルの計算を実行している計算機が稼働を続けているのであれば、情報処理システムにおける計算処理を継続させることができる。この場合、その他のレプリカにおけるデータに基づき、異常停止した計算機で使われていたレプリカのデータを復旧させてもよい。いずれかのレプリカにおける第1ベクトルおよび第2ベクトルの計算を実行しているプロセッサが異常停止した場合についても、その他のプロセッサにおいて計算を継続することが可能である。
[多体相互作用の項を含む計算]
シミュレーテッド分岐アルゴリズムを使うことにより、3次以上の目的関数を有する組合せ最適化問題を解くことも可能である。2値変数を変数とする3次以上の目的関数を最小化する変数の組合せを求める問題は、HOBO(Higher Order Binary Optimization)問題とよばれる。HOBO問題を扱う場合、高次へ拡張されたイジングモデルにおけるエネルギー式として、下記の式(15)を使うことができる。
ここで、J(n)はn階テンソルであり、式(1)の局所磁場hiと結合係数の行列Jを一般化させたものである。例えば、テンソルJ(1)は、局所磁場hiのベクトルに相当する。n階テンソルJ(n)では、複数の添え字に同じ値があるとき、要素の値は0となる。式(15)では、3次の項までが示されているが、それより高次の項も式(15)と同様に定義することができる。式(15)は多体相互作用を含むイジングモデルのエネルギーに相当する。
シミュレーテッド分岐アルゴリズムを使うことにより、3次以上の目的関数を有する組合せ最適化問題を解くことも可能である。2値変数を変数とする3次以上の目的関数を最小化する変数の組合せを求める問題は、HOBO(Higher Order Binary Optimization)問題とよばれる。HOBO問題を扱う場合、高次へ拡張されたイジングモデルにおけるエネルギー式として、下記の式(15)を使うことができる。
なお、QUBOと、HOBOはいずれも、制約なし多項式2値変数最適化(PUBO:Polynomial Unconstrained Binary Optimization)の1種であるといえる。すなわち、PUBOのうち、2次の目的関数を有する組合せ最適化問題は、QUBOである。また、PUBOのうち、3次以上の目的関数を有する組合せ最適化問題は、HOBOであるといえる。
また、式(16)より下記の式(17)に示した問題項が導かれる。
(17)の問題項ziは、(16)の2番目の式を、いずれかの変数xi(第1ベクトルの要素)について偏微分した形式をとっている。偏微分される変数xiは、インデックスiによって異なる。ここで、変数xiのインデックスiは、第1ベクトルの要素および第2ベクトルの要素を指定するインデックスに相当する。
上述に示した問題項は、本実施形態による情報処理装置が使うことができる問題項の例にしかすぎない。したがって、計算で使われる問題項の形式は、これらとは異なるものであってもよい。
[アルゴリズムの変形例]
ここでは、シミュレーテッド分岐アルゴリズムの変形例について説明する。例えば、誤差の軽減または計算時間の短縮を目的に、上述のシミュレーテッド分岐アルゴリズムに各種の変形を行ってもよい。
ここでは、シミュレーテッド分岐アルゴリズムの変形例について説明する。例えば、誤差の軽減または計算時間の短縮を目的に、上述のシミュレーテッド分岐アルゴリズムに各種の変形を行ってもよい。
例えば、計算の誤差を軽減するために、第1ベクトルの要素の更新時に追加の処理を実行してもよい。例えば、更新によって第1ベクトルの要素X(n)
iの絶対値が1より大きくなったとき、第1ベクトルの要素X(n)
iの値をsgn(X(n)
i)に置き換える。すなわち、更新によってX(n)
i>1となったとき、変数X(n)
iの値は1に設定される。また、更新によってX(n)
i<-1となったとき、変数X(n)
iの値は-1に設定される。これにより、変数X(n)
iを使ってスピンsiをより高い精度で近似することが可能となる。このような処理を含めることにより、アルゴリズムは、xi=±1の位置に壁があるN粒子の物理モデルと等価になる。より一般的に述べると、演算回路は、値が第1値より小さい第1変数を第1値に設定し、値が第2値より大きい第1変数を第2値に設定するように構成されていてもよい。
さらに、更新によってX(n)
i>1となったとき、変数X(n)
iに対応する変数Y(n)
iに係数rfを乗算してもよい。例えば、-1<r≦0の係数rfを使うと、上記の壁は、反射係数rfの壁となる。特に、rf=0の係数rfを使った場合、アルゴリズムは、X(n)
i=±1の位置に完全非弾性衝突の起こる壁がある物理モデルと等価になる。より一般的に述べると、演算回路は、値が第1値より小さい第1変数に対応する第2変数、または、第2値より大きい第1変数に対応する第2変数を、もとの第2変数に、第2係数を乗じた値に更新するように構成されていてもよい。例えば、演算回路は、値が-1より小さい第1変数に対応する第2変数、または、値が1より大きい第1変数に対応する第2変数を、もとの第2変数に第2係数を乗じた値に更新するように構成されていてもよい。ここで、第2係数は上述の係数rfに相当する。
なお、演算回路は、更新によってX(n)
i>1となったとき、変数X(n)
iに対応する変数Y(n)
iの値を擬似乱数に設定してもよい。例えば、[-0.1,0.1]の範囲の乱数を使うことができる。すなわち、演算回路は、値が第1値より小さい第1変数に対応する第2変数の値、または、値が第2値より大きい第1変数に対応する第2変数の値を、擬似乱数に設定するように構成されていてもよい。
以上のようにして|X(n)
i|>1となることを抑止するように更新処理を実行すれば、(11)および(18)の非線形項K×X(n1)
i(t+Δt)×X(n1)
i(t+Δt)を除去しても、X(n)
iの値が発散することはなくなる。したがって、下記の(19)に示したアルゴリズムを使うことが可能となる。
(19)のアルゴリズムでは、問題項において、離散変数ではなく、連続変数Xが使われている。このため、本来の組合せ最適化問題で使われている離散変数との誤差が生ずる可能性がある。この誤差を軽減するために、下記の(20)のように、問題項の計算において、連続変数Xの代わりに、連続変数Xを符号関数で変換した値sgn(X)を使うことができる。
(20)において、sgn(X)は、スピンsに相当する。
(20)では、問題項の中の1階のテンソルを含む項の係数αを定数(例えば、α=1)にしてもよい。(20)のアルゴリズムでは、問題項で現れるスピンどうしの積が必ず-1または1のいずれかの値をとるため、高次の目的関数を有するHOMO問題を扱った場合、積演算による誤差の発生を防ぐことができる。上述の(20)のアルゴリズムのように、計算サーバが計算するデータは、さらに、変数si(i=1、2、・・・、N)を要素とするスピンのベクトル(s1,s2,・・・,sN)を含んでいてもよい。第1ベクトルのそれぞれの要素を符号関数で変換することにより、スピンのベクトルを得ることができる。
[変数の更新処理の並列化の例]
以下では、シミュレーテッド分岐アルゴリズムの計算時における変数の更新処理の並列化の例について説明する。
はじめに、PCクラスタへシミュレーテッド分岐アルゴリズムを実装した例について説明する。PCクラスタとは、複数台のコンピュータを接続し、1台のコンピュータでは得られない計算性能を実現するシステムである。例えば、図1に示した情報処理システム100は、複数台の計算サーバおよびプロセッサを含んでおり、PCクラスタとして利用することが可能である。例えば、PCクラスタにおいては、MPI(Message Passing Interface)を使うことにより、情報処理システム100のような複数の計算サーバにメモリが分散して配置されている構成でも並列的な計算を実行することが可能である。例えば、MPIを使って管理サーバ1の制御プログラム14E、各計算サーバの計算プログラム34Bおよび制御プログラム34Cを実装することができる。
以下では、シミュレーテッド分岐アルゴリズムの計算時における変数の更新処理の並列化の例について説明する。
はじめに、PCクラスタへシミュレーテッド分岐アルゴリズムを実装した例について説明する。PCクラスタとは、複数台のコンピュータを接続し、1台のコンピュータでは得られない計算性能を実現するシステムである。例えば、図1に示した情報処理システム100は、複数台の計算サーバおよびプロセッサを含んでおり、PCクラスタとして利用することが可能である。例えば、PCクラスタにおいては、MPI(Message Passing Interface)を使うことにより、情報処理システム100のような複数の計算サーバにメモリが分散して配置されている構成でも並列的な計算を実行することが可能である。例えば、MPIを使って管理サーバ1の制御プログラム14E、各計算サーバの計算プログラム34Bおよび制御プログラム34Cを実装することができる。
PCクラスタで利用するプロセッサ数がQである場合、それぞれのプロセッサに、第1ベクトル(x1,x2,・・・,xN)に含まれる変数xiのうち、L個の変数の計算を行わせることができる。同様に、それぞれのプロセッサに、第2ベクトル(y1,y2,・・・,yN)に含まれる変数yiのうち、L個の変数の計算を行わせることができる。すなわち、プロセッサ#j(j=1,2,・・・,Q)は、変数{xm|m=(j-1)L+1,(j-1)L+2,・・・,jL}および{ym|m=(j-1)L+1,(j-1)L+2,・・・,jL}の計算を行う。また、プロセッサ#jによる{ym|m=(j-1)L+1,(j-1)L+2,・・・,jL}の計算に必要な下記の(21)に示されたテンソルJ(n)は、プロセッサ#jがアクセス可能な記憶領域(例えば、レジスタ、キャッシュ、メモリなど)に保存されるものとする。
ここでは、それぞれのプロセッサが第1ベクトルおよび第2ベクトルの一定数の変数を計算する場合を説明した。ただし、プロセッサによって、計算する第1ベクトルおよび第2ベクトルの変数の数が異なっていてもよい。例えば、計算サーバに実装されるプロセッサによって性能差がある場合、プロセッサの性能に応じて計算対象とする変数の数を決めることができる。
変数yiの値を更新するためには、第1ベクトル(x1,x2,・・・,xN)のすべての成分の値が必要となる。2値変数への変換は、例えば、符号関数sgn()を使うことによって行うことができる。そこで、Allgather関数を使い、第1ベクトル(x1,x2,・・・,xN)のすべての成分の値をQ個のプロセッサに共有させることができる。第1ベクトル(x1,x2,・・・,xN)については、プロセッサ間での値の共有が必要であるものの、第2ベクトル(y1,y2,・・・,yN)およびテンソルJ(n)については、プロセッサ間での値の共有を行うことは必須ではない。プロセッサ間でのデータの共有は、例えば、プロセッサ間通信を使ったり、共有メモリにデータを保存したりすることによって実現することができる。
プロセッサ#jは、問題項{zm|m=(j-1)L+1,(j-1)L+2,・・・,jL}の値を計算する。そして、プロセッサ#jは、計算した問題項{{zm|m=(j-1)L+1,(j-1)L+2,・・・,jL}の値に基づき、変数{ym|m=(j-1)L+1,(j-1)L+2,・・・,jL}を更新する。
上述の各式に示したように、問題項のベクトル(z1,z2,・・・,zN)の計算では、テンソルJ(n)と、ベクトル(x1,x2,・・・,xN)との積の計算を含む、積和演算が必要である。積和演算は、上述のアルゴリズムにおいて最も計算量の大きい処理であり、計算速度の向上においてボトルネックとなりうる。そこで、PCクラスタの実装では、積和演算を、Q=N/L個のプロセッサに分散して並列的に実行し、計算時間の短縮をはかることができる。
図15は、マルチプロセッサ構成の例を概略的に示している。図15の複数の計算ノードは、例えば、情報処理システム100の複数の計算サーバに相当する。また、図15の高速リンクは、例えば、情報処理システム100のケーブル4a~4cおよびスイッチ5によって形成された計算サーバ間のインターコネクトに相当する。図15の共有メモリは、例えば、共有メモリ32に相当する。図15のプロセッサは、例えば、各計算サーバのプロセッサ33A~33Dに相当している。なお、図15には複数の計算ノードが示されているが、単一計算ノードの構成を用いることを妨げるものではない。
図15には、各構成要素に配置されるデータおよび構成要素間で転送されるデータが示されている。各プロセッサでは、変数xi、yiの値が計算される。また、プロセッサと共有メモリ間では、変数xiが転送される。各計算ノードの共有メモリには、例えば、第1ベクトル(x1,x2,・・・,xN)、第2ベクトル(y1,y2,・・・,yN)のL個の変数、およびテンソルJ(n)の一部が保存される。そして、計算ノード間を接続する高速リンクでは、例えば、第1ベクトル(x1,x2,・・・,xN)が転送される。Allgather関数を使う場合、各プロセッサで変数yiを更新するために、第1ベクトル(x1,x2,・・・,xN)の全要素が必要となる。
レプリカ交換法を使う場合、それぞれのレプリカにおける第1ベクトルおよび第2ベクトルの計算のために1または複数の計算ノードを割り当てることができる。この場合、レプリカ交換処理の実行タイミングでは、高速リンクを介して第1ベクトルおよび第2ベクトルのデータが計算ノード間で転送される。例えば、管理サーバ1の制御部13が計算ノードの制御を行うことができる。なお、図15に示したデータの配置および転送は一例にしかすぎない。PCクラスタにおけるデータの配置方法、転送方法および並列化の実現方法については、特に問わない。
また、GPU(Graphics Processing Unit)を使ってシミュレーテッド分岐アルゴリズムの計算を行ってもよい。
図16は、GPUを使った構成の例を概略的に示している。図16には、互いに高速リンクで接続された複数のGPUが示されている。それぞれのGPUには、共有メモリにアクセス可能な複数のコアが搭載されている。また、図16の構成例では、複数のGPUが高速リンクを介して接続されており、GPUクラスタを形成している。例えば、GPUが図1のそれぞれの計算サーバに搭載されている場合、高速リンクは、ケーブル4a~4cおよびスイッチ5によって形成された計算サーバ間のインターコネクトに相当する。なお、図16の構成例では、複数のGPUが使われているが、ひとつのGPUを使った場合にも、並列的な計算を実行することが可能である。すなわち、図16のそれぞれのGPUは、図15のそれぞれの計算ノードに相当する計算を実行できる。すなわち、情報処理装置(計算サーバ)のプロセッサは、Graphics Processing Unit(GPU)のコアであってもよい。
GPUにおいて、変数xiおよびyi、ならびにテンソルJ(n)はデバイス変数として定義される。GPUは、変数yiの更新に必要なテンソルJ(n)と第1ベクトル(x1,x2,・・・,xN)の積を、行列ベクトル積関数によって並列的に計算することができる。なお、行列とベクトルの積演算を繰り返し実行することにより、テンソルとベクトルの積を求めることができる。また、第1ベクトル(x1,x2,・・・,xN)の計算と、第2ベクトル(y1,y2,・・・,yN)のうち、積和演算以外の部分については、それぞれのスレッドにi番目の要素(xi,yi)の更新処理を実行させ、処理の並列化を実現することができる。
[組合せ最適化問題を解くための全体的な処理]
以下では、シミュレーテッド分岐アルゴリズムを用いて組合せ最適化問題を解くために実行される全体的な処理を説明する。
以下では、シミュレーテッド分岐アルゴリズムを用いて組合せ最適化問題を解くために実行される全体的な処理を説明する。
図17のフローチャートは、組合せ最適化問題を解くために実行される全体的な処理の例を示している。以下では、図17を参照しながら、処理を説明する。
はじめに、組合せ最適化問題を定式化する(ステップS201)。そして、定式化された組合せ最適化問題をイジング問題(イジングモデルの形式)に変換する(ステップS202)。次に、イジングマシン(情報処理装置)によってイジング問題の解を計算する(ステップS203)。そして、計算された解を検証する(ステップS204)。例えば、ステップS204では、制約条件が満たされているか否かの確認が行われる。また、ステップS204でエネルギー関数(ハミルトニアン)の値を参照し、得られた解が最適解またはそれに近い近似解であるか否かの確認を行ってもよい。
そして、ステップS204における検証結果または計算回数の少なくともいずれかに応じて再計算をするか否かを判定する(ステップS205)。再計算をすると判定された場合(ステップS205のYES)、ステップS203およびS204の処理が再び実行される。一方、再計算をしないと判定された場合(ステップS205のNO)、解の選択を行う(ステップS206)。例えば、ステップS206では、制約条件の充足またはエネルギー関数の値の少なくともいずれかに基づき選択を行うことができる。なお、複数の解が計算されていない場合には、ステップS206の処理をスキップしてもよい。最後に、選択した解を組合せ最適化問題の解に変換し、組合せ最適化問題の解を出力する(ステップS207)。
上述で説明した情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラムを使うことにより、組合せ最適化問題の解を実用的な時間内で計算することが可能となる。これにより、組合せ最適化問題の求解がより容易となり、社会のイノベーションおよび科学技術の進歩を促進することが可能となる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組合せてもよい。
1 管理サーバ
2 ネットワーク
3a、3b、3c 計算サーバ
4a、4b、4c ケーブル
5 スイッチ
6 クライアント端末
10 プロセッサ
11 管理部
12 変換部
13 制御部
14 記憶部
14A 問題データ
14B 計算データ
14C 管理プログラム
14D 変換プログラム
14E、34C 制御プログラム
15、31 通信回路
16 入力回路
17 出力回路
18 操作装置
19 表示装置
20 バス
32 共有メモリ
33A、33B、33C、33D プロセッサ
34 ストレージ
34A 計算データ
34B 計算プログラム
35 ホストバスアダプタ
2 ネットワーク
3a、3b、3c 計算サーバ
4a、4b、4c ケーブル
5 スイッチ
6 クライアント端末
10 プロセッサ
11 管理部
12 変換部
13 制御部
14 記憶部
14A 問題データ
14B 計算データ
14C 管理プログラム
14D 変換プログラム
14E、34C 制御プログラム
15、31 通信回路
16 入力回路
17 出力回路
18 操作装置
19 表示装置
20 バス
32 共有メモリ
33A、33B、33C、33D プロセッサ
34 ストレージ
34A 計算データ
34B 計算プログラム
35 ホストバスアダプタ
Claims (15)
- それぞれが第1変数を要素とする第1ベクトルおよび前記第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新するように構成されている、複数の演算回路と、
データ交換回路とを備え、
それぞれの前記演算回路は、前記第1変数を対応する第2変数に基づいて更新し、前記第1変数を第1係数で重み付けし対応する前記第2変数に加算し、複数の前記第1変数を用いて問題項を計算し、前記問題項を前記第2変数に加算するように構成されており、
それぞれの前記演算回路において前記第1係数に異なる値が設定されており、
前記データ交換回路は、前記演算回路間で前記第1ベクトルおよび前記第2ベクトルの交換、または前記第1係数の交換の少なくともいずれかを実行するように構成されており、
情報処理装置。 - 前記データ交換回路は、前記演算回路のペアごとに、条件判定を実行し、前記条件判定が肯定的であるときに前記演算回路間で計算に使われる前記第1ベクトルおよび前記第2ベクトルの交換、または前記第1係数の交換の少なくともいずれかを実行するように構成されている、
請求項1に記載の情報処理装置。 - 前記データ交換回路は、前記ペアに含まれる前記演算回路における前記第1ベクトル、前記第2ベクトルおよび前記第1係数に基づいて前記条件判定を実行するように構成されている、
請求項2に記載の情報処理装置。 - それぞれの前記演算回路で使われる前記第1係数は、互いに等比数列の関係となっている、
請求項1ないし3のいずれか一項に記載の情報処理装置。 - それぞれの前記演算回路は、前記第1ベクトルおよび前記第2ベクトルの更新回数に応じて、前記第1係数の値を周期的に変化させる、
請求項1ないし3のいずれか一項に記載の情報処理装置。 - 前記データ交換回路は、タイミングによって異なる前記演算回路のペアを選択し、前記第1ベクトルおよび前記第2ベクトルの交換、または前記第1係数の交換の少なくともいずれかを実行するように構成されている、
請求項1に記載の情報処理装置。 - 前記データ交換回路は、複数の前記演算回路において、第1組合せの前記ペアと、第2組合せの前記ペアとを交互に選択し、前記第1ベクトルおよび前記第2ベクトルの交換、または前記第1係数の交換の少なくともいずれかを実行するように構成されている、
請求項6に記載の情報処理装置。 - 前記演算回路が計算する前記問題項は、イジングモデルに基づいている、
請求項1ないし7のいずれか一項に記載の情報処理装置。 - 前記演算回路が計算する前記問題項は、多体相互作用を含んでいる、
請求項8に記載の情報処理装置。 - それぞれが第1変数を要素とする第1ベクトルおよび前記第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新するように構成されている、複数の第1計算機と、
前記第1計算機間におけるデータの交換を実行するように構成された第2計算機とを備え、
それぞれの前記第1計算機は、第1変数を対応する第2変数に基づいて更新し、前記第1変数を第1係数で重み付けし対応する前記第2変数に加算し、複数の前記第1変数を用いて問題項を計算し、前記問題項を前記第2変数に加算するように構成されており、
前記第2計算機は、前記第1計算機間で前記第1ベクトルおよび前記第2ベクトルの交換、または前記第1係数の交換の少なくともいずれかを実行するように構成されており、
それぞれの前記第1計算機において前記第1係数に異なる値が設定されている、
情報処理システム。 - 前記第2計算機は、前記第1計算機のペアごとに、条件判定を実行し、前記条件判定が肯定的であるときに前記第1計算機間で計算に使われる前記第1ベクトルおよび前記第2ベクトルの交換、または前記第1係数の交換の少なくともいずれかを実行するように構成されている、
請求項10に記載の情報処理システム。 - それぞれが第1変数を要素とする第1ベクトルおよび前記第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新するように構成されている、複数の第1計算機と、前記第1計算機間におけるデータの交換を実行するように構成された第2計算機とを使った情報処理方法であって、
それぞれの前記第1計算機が第1変数を対応する第2変数に基づいて更新するステップと、
それぞれの前記第1計算機が前記第1変数を第1係数で重み付けし対応する前記第2変数に加算するステップと、
それぞれの前記第1計算機が複数の前記第1変数を用いて問題項を計算するステップと、
それぞれの前記第1計算機が前記問題項を前記第2変数に加算するステップと、
前記第2計算機が前記第1計算機間で前記第1ベクトルおよび前記第2ベクトルの要素の交換、または前記第1係数の交換の少なくともいずれかを実行するステップとを含む、
情報処理方法。 - それぞれが第1変数を要素とする第1ベクトルおよび前記第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新するように構成されている、複数の第1プロセッサと、前記第1プロセッサ間におけるデータの交換を実行するように構成された第2プロセッサとを使った情報処理方法であって、
それぞれの前記第1プロセッサが第1変数を対応する第2変数に基づいて更新するステップと、
それぞれの前記第1プロセッサが前記第1変数を第1係数で重み付けし対応する前記第2変数に加算するステップと、
それぞれの前記第1プロセッサが複数の前記第1変数を用いて問題項を計算するステップと、
それぞれの前記第1プロセッサが前記問題項を前記第2変数に加算するステップと、
前記第2プロセッサが前記第1プロセッサ間で前記第1ベクトルおよび前記第2ベクトルの交換、または前記第1係数の交換の少なくともいずれかを実行するステップとを含む、
情報処理方法。 - 複数の第1プロセッサのそれぞれに第1変数を要素とする第1ベクトルおよび前記第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新させ、第2プロセッサが前記第1プロセッサ間におけるデータの交換を実行させるプログラムであって、
複数の第1プロセッサのそれぞれが第1変数を対応する第2変数に基づいて更新するステップと、
それぞれの前記第1プロセッサが前記第1変数を第1係数で重み付けし対応する前記第2変数に加算するステップと、
それぞれの前記第1プロセッサが複数の前記第1変数を用いて問題項を計算するステップと、
それぞれの前記第1プロセッサが前記問題項を前記第2変数に加算するステップと、
第2プロセッサが前記第1プロセッサ間で前記第1ベクトルおよび前記第2ベクトルの交換、または前記第1係数の交換の少なくともいずれかを実行するステップとをコンピュータに実行させるプログラムを格納している、
非一時的なコンピュータ可読な記憶媒体。 - 複数の第1プロセッサのそれぞれに第1変数を要素とする第1ベクトルおよび前記第1変数に対応する第2変数を要素とする第2ベクトルを繰り返し更新させ、第2プロセッサが前記第1プロセッサ間におけるデータの交換を実行させるプログラムであって、
複数の第1プロセッサのそれぞれが第変数を対応する第2変数に基づいて更新するステップと、
それぞれの前記第1プロセッサが前記第1変数を第1係数で重み付けし対応する前記第2変数に加算するステップと、
それぞれの前記第1プロセッサが複数の前記第1変数を用いて問題項を計算するステップと、
それぞれの前記第1プロセッサが前記問題項を前記第2変数に加算するステップと、
第2プロセッサが前記第1プロセッサ間で前記第1ベクトルおよび前記第2ベクトルの交換、または前記第1係数の交換の少なくともいずれかを実行するステップとを含む、
プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019064699 | 2019-03-28 | ||
JP2019064699 | 2019-03-28 | ||
PCT/JP2020/014190 WO2020196872A1 (ja) | 2019-03-28 | 2020-03-27 | 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2020196872A1 JPWO2020196872A1 (ja) | 2020-10-01 |
JP7421545B2 true JP7421545B2 (ja) | 2024-01-24 |
Family
ID=72608459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021509666A Active JP7421545B2 (ja) | 2019-03-28 | 2020-03-27 | 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220012017A1 (ja) |
JP (1) | JP7421545B2 (ja) |
CN (1) | CN113646787A (ja) |
CA (1) | CA3135142A1 (ja) |
WO (1) | WO2020196872A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3135145A1 (en) * | 2019-03-28 | 2020-10-01 | Kabushiki Kaisha Toshiba | Information processing device, information processing system, information processing method, storage medium, and program |
CA3135147A1 (en) * | 2019-03-28 | 2020-10-01 | Kabushiki Kaisha Toshiba | Information processing device, information processing system, information processing method, storage medium, and program |
CN113646782A (zh) * | 2019-03-28 | 2021-11-12 | 株式会社东芝 | 信息处理设备、信息处理系统、信息处理方法、存储介质及程序 |
CA3135128A1 (en) * | 2019-03-28 | 2020-10-01 | Kabushiki Kaisha Toshiba | Information processing device, information processing system, information processing method, storage medium, and program |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7877333B2 (en) * | 2006-09-06 | 2011-01-25 | D-Wave Systems Inc. | Method and system for solving integer programming and discrete optimization problems using analog processors |
US10691771B2 (en) * | 2017-03-13 | 2020-06-23 | Universities Space Research Association | System and method to hardcode interger linear optimization problems on physical implementations of the Ising model |
US12033027B2 (en) * | 2018-02-26 | 2024-07-09 | Microsoft Technology Licensing, Llc | Short path quantum procedures for solving combinatorial optimization problems |
CA3135145A1 (en) * | 2019-03-28 | 2020-10-01 | Kabushiki Kaisha Toshiba | Information processing device, information processing system, information processing method, storage medium, and program |
CA3135147A1 (en) * | 2019-03-28 | 2020-10-01 | Kabushiki Kaisha Toshiba | Information processing device, information processing system, information processing method, storage medium, and program |
CN113646782A (zh) * | 2019-03-28 | 2021-11-12 | 株式会社东芝 | 信息处理设备、信息处理系统、信息处理方法、存储介质及程序 |
US11132422B2 (en) * | 2019-06-20 | 2021-09-28 | Fujitsu Limited | Automating solving NP problems in annealer systems |
US11556830B2 (en) * | 2019-11-19 | 2023-01-17 | International Business Machines Corporation | Efficient quadratic ising hamiltonian generation with qubit reduction |
-
2020
- 2020-03-27 CA CA3135142A patent/CA3135142A1/en active Pending
- 2020-03-27 CN CN202080025407.3A patent/CN113646787A/zh active Pending
- 2020-03-27 WO PCT/JP2020/014190 patent/WO2020196872A1/ja active Application Filing
- 2020-03-27 JP JP2021509666A patent/JP7421545B2/ja active Active
-
2021
- 2021-09-28 US US17/487,179 patent/US20220012017A1/en active Pending
Non-Patent Citations (3)
Title |
---|
Hayato Goto, Kosuke Tatsumura, Alexander R. Dixon,Combinatorial optimization by simulating adiabatic bifurcations in nonlinear Hamiltonian systems,SCIENCE ADVANCE,5(4), eaav2372,2019年04月19日,P.1-8,https://advances.sciencemag.org/content/5/4/eaav2372,DOI:10.1126/sciadv.aav2372 |
Hayato Goto,Bifurcation-based adiabatic quantum computation with a nonlinear oscillator network,SCIENTIFIC REPORT,Rep.6, 21686,2016年02月22日,P.1-8,https://www.nature.com/articles/srep21686,DOI:10.1038/srep21686(2016) |
Kosuke Tatsumura, Alexander R. Dixon, Hayato Goto,FPGA-Based Simulated Bifurcation Machine,2019 29th International Conference on Field Programable Logic and Applications (FPL),P.59-66,https://ieeexplore.ieee.org/document/8892209,DOI:10.1109/FPL.2019.00019 |
Also Published As
Publication number | Publication date |
---|---|
WO2020196872A1 (ja) | 2020-10-01 |
CN113646787A (zh) | 2021-11-12 |
JPWO2020196872A1 (ja) | 2020-10-01 |
CA3135142A1 (en) | 2020-10-01 |
US20220012017A1 (en) | 2022-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7421545B2 (ja) | 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム | |
JP7502269B2 (ja) | 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム | |
JP7562509B2 (ja) | 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム | |
JP7562508B2 (ja) | 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム | |
JP7474242B2 (ja) | 情報処理装置、情報処理システム、情報処理方法、記憶媒体およびプログラム | |
JP7421291B2 (ja) | 情報処理装置、プログラム、情報処理方法、および電子回路 | |
WO2019216277A1 (ja) | 情報処理装置、演算装置、及び情報処理方法 | |
JP7007520B6 (ja) | 情報処理装置、演算装置、及び情報処理方法 | |
Gyoten et al. | Area efficient annealing processor for ising model without random number generator | |
KR20210134724A (ko) | 시뮬레이션된 양자 알고리즘에 기초한 데이터 검색 방법 및 장치 및 디바이스 | |
JP7341965B2 (ja) | 計算装置、計算方法およびプログラム | |
JP7472062B2 (ja) | 計算装置、計算方法およびプログラム | |
JP7536710B2 (ja) | 求解装置、求解方法およびプログラム | |
CN117313879A (zh) | 量子电路处理方法、装置及电子设备 | |
CN117313884A (zh) | 量子电路处理方法、装置及电子设备 | |
CN117313882A (zh) | 量子电路处理方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230324 |
|
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: 20231215 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240112 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7421545 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |