(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024038360
(43)【公開日】2024-03-19
(54)【発明の名称】情報処理装置、プログラム、情報処理方法、および電子回路
(51)【国際特許分類】
G06F 17/16 20060101AFI20240312BHJP
G06N 99/00 20190101ALI20240312BHJP
【FI】
G06F17/16 M
G06N99/00 180
【審査請求】有
【請求項の数】21
【出願形態】OL
(21)【出願番号】P 2024003017
(22)【出願日】2024-01-12
(62)【分割の表示】P 2019164742の分割
【原出願日】2019-09-10
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
(71)【出願人】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(71)【出願人】
【識別番号】301063496
【氏名又は名称】東芝デジタルソリューションズ株式会社
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100118876
【弁理士】
【氏名又は名称】鈴木 順生
(74)【代理人】
【識別番号】100202429
【弁理士】
【氏名又は名称】石原 信人
(72)【発明者】
【氏名】酒井 良哲
(72)【発明者】
【氏名】後藤 隼人
(72)【発明者】
【氏名】辰村 光介
(72)【発明者】
【氏名】遠藤 浩太郎
(72)【発明者】
【氏名】鈴木 賢
(57)【要約】 (修正有)
【課題】組合せ最適化問題の解を実用的な時間内で計算する情報処理装置および電子回路を提供する。
【解決手段】情報処理システムにおいて、情報処理装置である計算サーバは、積和演算部と、更新部と、を備える。積和演算部は、目的関数から導出された式に基づき第3ベクトルの要素を更新する。更新部は、第1ベクトルの要素に、第2ベクトルの対応する要素に重み付けした値を加算することによって第1ベクトルの要素を更新し、絶対値がしきい値より大きい第1ベクトルの要素の値を更新し、第2ベクトルの要素に、更新回数に応じて単調増加する第1係数と第1ベクトルの対応する要素との積を重み付けした値ならびに、前記第3ベクトルの対応する要素を重み付けした値を加算することによって第2ベクトルの要素を更新する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
目的関数を、すべての項に含まれる変数について偏微分した形式の基本式に基づき、第
3ベクトルのそれぞれの要素を更新するように構成され、前記基本式の変数は、第1ベク
トルの要素、または、前記第1ベクトルの要素を第1値もしくは前記第1値より大きい第
2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素である、積和演算部と
、
前記第1ベクトルの要素に、第2ベクトルの対応する要素、または、前記第2ベクトル
の対応する要素に重み付けした値を加算することによって前記第1ベクトルの要素を更新
し、
値が前記第1値より小さい前記第1ベクトルの要素を前記第1値に設定し、
値が前記第2値より大きい前記第1ベクトルの要素を前記第2値に設定し、
前記第2ベクトルの要素に、更新回数に応じて単調増加または単調減少する第1係数と
前記第1ベクトルの対応する要素との積を重み付けした値、ならびに、前記第3ベクトル
の対応する要素を重み付けした値を加算することによって前記第2ベクトルの要素を更新
するように構成された更新部とを備える、
情報処理装置。
【請求項2】
前記更新部は、値が前記第1値より小さい前記第1ベクトルの要素に対応する前記第2
ベクトルの要素、または、前記第2値より大きい前記第1ベクトルの要素に対応する前記
第2ベクトルの要素を、もとの前記第2ベクトルの要素に、第2係数を乗じた値に更新す
るように構成されている、
請求項1に記載の情報処理装置。
【請求項3】
前記積和演算部は、第1ベクトルの要素を変数として計算した前記基本式の値を前記第
1関数で変換した値に基づいて前記第3ベクトルのそれぞれの要素を更新するように構成
されている、
請求項1または2に記載の情報処理装置。
【請求項4】
前記更新部は、前記第1ベクトルのノルム、または、前記第4ベクトルのノルムを前記
第3ベクトルのノルムで除算した第3係数を計算し、
前記第2ベクトルの要素に、前記第1係数と更新された前記第1ベクトルの対応する要
素との積を重み付けした値ならびに、前記第3ベクトルの対応する要素を前記第3係数で
重み付けした値を加算することによって前記第2ベクトルの要素を更新するように構成さ
れている、
請求項1ないし2のいずれか一項に記載の情報処理装置。
【請求項5】
前記更新部は、前記第1ベクトルどうしの内積、または、前記第4ベクトルどうしの内
積を、前記第1ベクトルと前記第3ベクトルの内積の絶対値、または、前記第4ベクトル
と前記第3ベクトルの内積の絶対値で除算した第3係数を計算し、
前記第2ベクトルの要素に、前記第1係数と更新された前記第1ベクトルの対応する要
素との積を重み付けした値ならびに、前記第3ベクトルの対応する要素を前記第3係数で
重み付けした値を加算することによって前記第2ベクトルの要素を更新するように構成さ
れている、
請求項1ないし2のいずれか一項に記載の情報処理装置。
【請求項6】
前記更新部は、前記第3係数がローパスフィルタを通過した後の値である第4係数を計
算し、前記第3係数に代わり、前記第4係数を用いて前記第2ベクトルの要素を更新する
ように構成されている、
請求項4ないし5のいずれか一項に記載の情報処理装置。
【請求項7】
前記第1値は-1、前記第2値は1であり、
前記目的関数は、イジングモデルのエネルギー式に相当する項を含んでいる、
請求項1ないし6のいずれか一項に記載の情報処理装置。
【請求項8】
前記目的関数は、多体相互作用の項を含んでいる、
請求項7に記載の情報処理装置。
【請求項9】
目的関数を、すべての項に含まれる変数について偏微分した形式の基本式に基づく計算
をコンピュータに実行させるプログラムであって、
前記変数が第1ベクトルの要素、または、前記第1ベクトルの要素を第1値もしくは前
記第1値より大きい第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素
である、前記基本式に基づき、第3ベクトルのそれぞれの要素を更新するステップと、
前記第1ベクトルの要素に、第2ベクトルの対応する要素、または、前記第2ベクトル
の対応する要素に重み付けした値を加算することによって前記第1ベクトルの要素を更新
するステップと、
値が前記第1値より小さい前記第1ベクトルの要素を前記第1値に設定するステップと
、
値が前記第2値より大きい前記第1ベクトルの要素を前記第2値に設定するステップと
、
前記第2ベクトルの要素に、更新回数に応じて単調増加または単調減少する第1係数と
前記第1ベクトルの対応する要素との積を重み付けした値ならびに、前記第3ベクトルの
対応する要素を重み付けした値を加算することによって前記第2ベクトルの要素を更新す
るステップとを含む、
プログラム。
【請求項10】
目的関数を、すべての項に含まれる変数について偏微分した形式の基本式に基づく計算
をコンピュータに実行させる情報処理方法であって、
前記変数が第1ベクトルの要素、または、前記第1ベクトルの要素を第1値もしくは前
記第1値より大きい第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素
である、前記基本式に基づき、第3ベクトルのそれぞれの要素を更新するステップと、
前記第1ベクトルの要素に、第2ベクトルの対応する要素、または、前記第2ベクトル
の対応する要素に重み付けした値を加算することによって前記第1ベクトルの要素を更新
するステップと、
値が前記第1値より小さい前記第1ベクトルの要素を前記第1値に設定するステップと
、
値が前記第2値より大きい前記第1ベクトルの要素を前記第2値に設定するステップと
、
前記第2ベクトルの要素に、更新回数に応じて単調増加または単調減少する第1係数と
前記第1ベクトルの対応する要素との積を重み付けした値ならびに、前記第3ベクトルの
対応する要素を重み付けした値を加算することによって前記第2ベクトルの要素を更新す
るステップとを含む、
情報処理方法。
【請求項11】
目的関数を、すべての項に含まれる変数について偏微分した形式の基本式に基づき、第
3ベクトルのそれぞれの要素を更新するように構成され、前記基本式の変数は、第1ベク
トルの要素または、前記第1ベクトルの要素を第1値もしくは前記第1値より大きい第2
値のいずれかの値をとる第1関数で変換した第4ベクトルの要素である、第1回路と、
前記第1ベクトルの要素に、第2ベクトルの対応する要素、または、前記第2ベクトル
の対応する要素に重み付けした値を加算することによって前記第1ベクトルの要素を更新
し、
値が前記第1値より小さい前記第1ベクトルの要素を前記第1値に設定し、
値が前記第2値より大きい前記第1ベクトルの要素を前記第2値に設定し、
前記第2ベクトルの要素に、更新回数に応じて単調増加または単調減少する第1係数と
前記第1ベクトルの対応する要素との積を重み付けした値、ならびに、前記第3ベクトル
の対応する要素を重み付けした値を加算することによって前記第2ベクトルの要素を更新
するように構成された第2回路とを備える、
電子回路。
【請求項12】
前記第2回路は、値が前記第1値より小さい前記第1ベクトルの要素に対応する前記第
2ベクトルの要素、または、前記第2値より大きい前記第1ベクトルの要素に対応する前
記第2ベクトルの要素を、もとの前記第2ベクトルの要素に、第2係数を乗じた値に更新
するように構成されている、
請求項11に記載の電子回路。
【請求項13】
前記第1回路は、第1ベクトルの要素を変数として計算した前記基本式の値を前記第1
関数で変換した値に基づいて前記第3ベクトルのそれぞれの要素を更新するように構成さ
れている、
請求項11または12に記載の電子回路。
【請求項14】
前記第1回路の入力側と、前記第2回路の出力側に接続され、前記第4ベクトルまたは
前記第1ベクトルを格納するように構成された第1メモリを備え、
前記第1回路の出力側は、前記第2回路の入力側に接続されている、
請求項11ないし13のいずれか一項に記載の電子回路。
【請求項15】
前記第1メモリが前記第4ベクトルのそれぞれの要素の値を1ビットの情報で格納する
ように構成されており、
それぞれの前記第1回路は、前記第1メモリから読み出した前記1ビットの情報を符号
付き2進数に復号化するように構成された復号器を含んでいる、
請求項14に記載の電子回路。
【請求項16】
前記第2回路が前記第3ベクトルの要素に基づき、前記第1ベクトルの要素または前記
第2ベクトルの要素または前記第4ベクトルの要素の少なくともいずれかを計算している
ときに、
前記第1回路が、前記第2回路によって前記第1ベクトルの要素および前記第2ベクト
ルの要素および前記第4ベクトルの要素が次回計算されるときに使われる前記第3ベクト
ルの要素を計算するように構成されている、
請求項14に記載の電子回路。
【請求項17】
それぞれが入力側で前記第1メモリに接続されているPb個(Pbは2以上の整数)の
前記第1回路と、
それぞれが入力側でいずれかの前記第1回路に接続されており、それぞれが出力側で前
記第1メモリに接続されているPb個の前記第2回路とを備えている、
請求項14ないし16のいずれか一項に記載の電子回路。
【請求項18】
それぞれの前記第1回路は、N×N次元の結合係数行列をPb個に分割したN/Pb×
N次元の第1行列のいずれかと、前記第4ベクトルをPb個に分割した第5ベクトルのい
ずれかとの積である前記第3ベクトルの要素を計算するように構成されており、
それぞれの前記第2回路は、いずれかの前記第1回路が計算した前記第3ベクトルの要
素に基づき、前記第1ベクトルのN/Pb個の要素および前記第2ベクトルのN/Pb個
の要素および前記第4ベクトルのN/Pb個の要素を更新し、更新した前記第4ベクトル
のN/Pb個の要素を前記第1メモリに保存するように構成されている、
請求項17に記載の電子回路。
【請求項19】
それぞれの前記第1回路は、前記第1行列を、Pr×Pc次元の複数の第2行列に、前
記第5ベクトルを要素数Pcの複数の第6ベクトルにそれぞれ分割し、それぞれの前記第
2行列と、対応する前記第6ベクトルとの積演算を順次実行することにより、前記第3ベ
クトルの要素を計算するように構成されている、
請求項18に記載の電子回路。
【請求項20】
前記第1ベクトルのN/Pb個の要素を格納するようにそれぞれが構成されているPb
個の第2メモリと、
いずれかの前記第1行列を格納するようにそれぞれが構成されているPb個の第3メモ
リと、
前記第2ベクトルのN/Pb個の要素を格納するようにそれぞれが構成されているPb
個の第4メモリと、
第6ベクトルのN/Pb個の要素を格納するようにそれぞれが構成されているPb個の
第5メモリとを備え、
それぞれの前記第2メモリは、いずれかの前記第2回路の入力側および出力側に接続さ
れており、それぞれの前記第3メモリは、いずれかの前記第1回路の入力側に接続されて
おり、それぞれの前記第4メモリは、いずれかの前記第2回路の入力側および出力側に接
続されており、それぞれの前記第5メモリは、いずれかの前記第2回路の入力側に接続さ
れている、
請求項18または19に記載の電子回路。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置、プログラム、情報処理方法、および電子回路に関
する。
【背景技術】
【0002】
組合せ最適化問題とは、複数の組合せの中から目的に最も適した組合せを選ぶ問題であ
る。組合せ最適化問題は、数学的には、「目的関数」と呼ばれる、複数の離散変数を有す
る関数を最大化させる問題、または、当該関数を最小化させる問題に帰着される。組合せ
最適化問題は、金融、物流、交通、設計、製造、生命科学など各種の分野において普遍的
な問題であるが、組合せ数が問題サイズの指数関数のオーダーで増える、いわゆる「組合
せ爆発」のため、必ず最適解を求めることができるとは限らない。また、最適解に近い近
似解を得ることすら難しい場合が多い。
【0003】
各分野における問題を解決し、社会のイノベーションおよび科学技術の進歩を促進する
ために、組合せ最適化問題の解を実用的な時間内で計算する技術の開発が求められている
。
【先行技術文献】
【特許文献】
【0004】
【非特許文献】
【0005】
【非特許文献1】A. Lucas, Front. Physics 2, 5 (2014)
【非特許文献2】M. W. Johnson, et al., Nature 473, 194 (2011).
【非特許文献3】T. Inagaki et al., Science 354, 603 (2016).
【非特許文献4】H. Goto, Sci. Rep. 6, 21686 (2016).
【非特許文献5】M. Yamaoka et al., H. IEEE J. Solid-State Circuits 51, 303 (2016).
【非特許文献6】S. Tsukamoto et al., FUJITSU Sci. Tech. J. 53, 8 (2017).
【非特許文献7】H. Goto, K. Tatsumura, A. R. Dixon, Sci. Adv. 5, eaav2372 (2019).
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の実施形態は、組合せ最適化問題の解を実用的な時間内で計算する情報処理装置
、プログラム、情報処理方法、および電子回路を提供する。
【課題を解決するための手段】
【0007】
本発明の実施形態としての情報処理装置は、目的関数を、すべての項に含まれる変数に
ついて偏微分した形式の基本式に基づき、第3ベクトルのそれぞれの要素を更新するよう
に構成され、前記基本式の変数は、第1ベクトルの要素、または、前記第1ベクトルの要
素を第1値もしくは前記第1値より大きい第2値のいずれかの値をとる第1関数で変換し
た第4ベクトルの要素である、積和演算部と、前記第1ベクトルの要素に、第2ベクトル
の対応する要素、または、前記第2ベクトルの対応する要素に重み付けした値を加算する
ことによって前記第1ベクトルの要素を更新し、値が前記第1値より小さい前記第1ベク
トルの要素を前記第1値に設定し、値が前記第2値より大きい前記第1ベクトルの要素を
前記第2値に設定し、前記第2ベクトルの要素に、更新回数に応じて単調増加または単調
減少する第1係数と前記第1ベクトルの対応する要素との積を重み付けした値、ならびに
、前記第3ベクトルの対応する要素を重み付けした値を加算することによって前記第2ベ
クトルの要素を更新するように構成された更新部とを備える。
【図面の簡単な説明】
【0008】
【
図3】管理サーバの記憶部に保存されるデータの例を示す図。
【
図5】計算サーバのストレージに保存されるデータの例を示す図。
【
図6】最大カット問題を複数回解いた場合におけるカット数の第1の例を示す図。
【
図7】x
iの絶対値が1を超えないアルゴリズムにおける分岐の例を示す図。
【
図8】x
iの絶対値が1を超えうるアルゴリズムにおける分岐の例を示す図。
【
図9】最大カット問題を複数回解いた場合におけるカット数の第2の例を示す図。
【
図10】最大カット問題を複数回解いた場合におけるカット数の第3の例を示す図。
【
図11】最大カット問題を複数回解いた場合におけるカット数の第4の例を示す図。
【
図12】最大カット問題を複数回解いた場合におけるカット数の第5の例を示す図。
【
図13】最大カット問題を複数回解いた場合におけるカット数の第6の例を示す図。
【
図14】最大カット問題を複数回解いた場合におけるカット数の第7の例を示す図。
【
図15】最大カット問題を複数回解いた場合におけるカット数の第8の例を示す図。
【
図16】最大カット問題を複数回解いた場合におけるカット数の第9の例を示す図。
【
図17】最大カット問題を複数回解いた場合におけるカット数の第10の例を示す図。
【
図18】最大カット問題を複数回解いた場合におけるカット数の第11の例を示す図。
【
図19】最大カット問題を複数回解いた場合におけるカット数の第12の例を示す図。
【
図20】最大カット問題を複数回解いた場合におけるカット数の第13の例を示す図。
【
図21】マルチプロセッサ構成の例を概略的に示した図。
【
図22】PCクラスタを使ってN=3600の全結合イジング問題を解いたときの結果を示した図。
【
図23】GPUを使った構成の例を概略的に示した図。
【
図24】GPUを使ってN=3600の全結合イジング問題を解いたときの結果を示した図。
【
図25】情報処理システムが実行する処理の例を示したフローチャート。
【
図26】情報処理システムが実行する処理の例を示したフローチャート。
【
図29】行列とベクトルとの積を計算する方法の第1の例を示した図。
【
図33】複数の電子回路が接続された構成例を示した図。
【
図34】行列とベクトルとの積を計算する方法の第2の例を示した図。
【
図35】各電子回路で実行されるアルゴリズムの例を示した図。
【
図36】複数の電子回路が実行する処理の例を示すタイミングチャート。
【
図37】通信チャネルのより詳細な構成例を示した図。
【
図38】リングトポロジに対応したハードウェアの構成例を示したブロック図。
【
図39】通信フェーズのタイミングチャートの例を示した図。
【
図40】通信フェーズのタイミングチャートの例を示した図。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において
同一の構成要素は、同じ番号を付し、説明は、適宜省略する。
【0010】
図1は、情報処理システム100の構成例を示したブロック図である。
図1の情報処理
システム100は、管理サーバ1と、ネットワーク2と、計算サーバ(情報処理装置)3
a~3cと、ケーブル4a~4cと、スイッチ5を備えている。また、
図1には、情報処
理システム100と通信可能な情報端末6が示されている。管理サーバ1、計算サーバ3
a~3c、情報端末6は、ネットワーク2を介して互いにデータ通信をすることができる
。ネットワーク2は、例えば、複数のコンピュータネットワークが相互に接続されたイン
ターネットである。ネットワーク2は、通信媒体として有線、無線、または、これらの組
み合わせを用いることができる。また、ネットワーク2で使われる通信プロトコルの例と
しては、TCP/IPがあるが、通信プロトコルの種類については特に問わない。
【0011】
また、計算サーバ3a~3cは、それぞれケーブル4a~4cを介してスイッチ5に接
続されている。ケーブル4a~4cおよびスイッチ5は、計算サーバ間のインターコネク
トを形成している。計算サーバ3a~3cは、当該インターコネクトを介して互いにデー
タ通信をすることも可能である。スイッチ5は、例えば、Infinibandのスイッ
チであり、ケーブル4a~4cは、例えば、Infinibandのケーブルである。た
だし、Infinibandのスイッチ/ケーブルの代わりに、有線LANのスイッチ/
ケーブルを使ってもよい。ケーブル4a~4cおよびスイッチ5で使われる通信規格およ
び通信プロトコルについては、特に問わない。情報端末6の例としては、ノートPC、デ
スクトップPC、スマートフォン、タブレット、車載端末などが挙げられる。
【0012】
組合せ最適化問題の求解では、並列的な処理および/または処理の分散化を行うことが
できる。したがって、計算サーバ3a~3cおよび/または計算サーバ3a~3cのプロ
セッサは、一部の計算処理の一部のステップを分担して実行してもよいし、異なる変数に
ついて同様の計算処理を並列的に実行してもよい。管理サーバ1は、例えば、ユーザによ
って入力された組合せ最適化問題を各計算サーバに処理可能な形式に変換し、計算サーバ
を制御する。そして、管理サーバ1は、各計算サーバから計算結果を取得し、集約した計
算結果を組合せ最適化問題の解に変換する。これにより、ユーザは、組合せ最適化問題の
解を得ることができる。組合せ最適化問題の解は、最適解と、最適解に近い近似解とを含
むものとする。
【0013】
図1には、3台の計算サーバが示されているが、これは、情報処理システムに含まれる
計算サーバの台数を限定することを意図していない。また、組合せ最適化問題の求解に使
われる計算サーバの台数についても特に問わない。例えば、情報処理システムに含まれる
計算サーバは1台であってもよい。また、情報処理システムに含まれる複数の計算サーバ
のうち、1台の計算サーバを使って組合せ最適化問題の求解を行ってもよい。また、情報
処理システムに、数百台以上の計算サーバが含まれていてもよい。計算サーバは、データ
センターに設置されたサーバであってもよいし、オフィスに設置されたデスクトップPC
であってもよい。また、計算サーバは異なるローケーションに設置された複数の種類のコ
ンピュータであってもよい。計算サーバとして使われる情報処理装置の種類については特
に問わない。例えば、計算サーバは、汎用的なコンピュータであってもよいし、専用の電
子回路または、これらの組合せであってもよい。
【0014】
図2は、管理サーバ1の構成例を示したブロック図である。
図2の管理サーバ1は、例
えば、中央演算処理装置(CPU)とメモリとを含むコンピュータである。管理サーバ1
は、プロセッサ10と、記憶部14と、通信回路15と、入力回路16と、出力回路17
とを備えている。プロセッサ10、記憶部14、通信回路15、入力回路16、出力回路
17は、互いにバス20を介して接続されているものとする。プロセッサ10は、内部の
構成要素として、管理部11と、変換部12と、制御部13を含んでいる。
【0015】
プロセッサ10は、演算を実行し、管理サーバ1の制御を行う電子回路である。プロセ
ッサ10として、例えば、CPU、マイクロプロセッサ、ASIC、FPGA、PLDま
たはこれらの組み合わせを用いることができる。管理部11は、ユーザの情報端末6を介
して管理サーバ1の操作を行うためのインタフェースを提供する。管理部11が提供する
インタフェースの例としては、API、CLI、ウェブページなどが挙げられる。例えば
、ユーザは、管理部11を介して組合せ最適化問題の情報の入力を行ったり、計算された
組合せ最適化問題の解の閲覧および/またはダウンロードを行ったりすることができる。
変換部12は、組合せ最適化問題を各計算サーバが処理可能な形式に変換する。制御部1
3は、各計算サーバに制御指令を送信する。制御部13が各計算サーバから計算結果を取
得した後、変換部12は、複数の計算結果を集約し、組合せ最適化問題の解に変換する。
【0016】
記憶部14は、管理サーバ1のプログラム、プログラムの実行に必要なデータ、プログ
ラムによって生成されたデータを含む各種のデータを記憶する。ここで、プログラムは、
OSとアプリケーションの両方を含むものとする。記憶部14は、揮発性メモリ、不揮発
性メモリ、またはこれらの組み合わせであってもよい。揮発性メモリの例としては、DR
AM、SRAMなどがある。不揮発性メモリの例としては、NANDフラッシュメモリ、
NORフラッシュメモリ、ReRAM、MRAMが挙げられる。また、記憶部14として
、ハードディスク、光ディスク、磁気テープまたは外部の記憶装置を使ってもよい。
【0017】
通信回路15は、ネットワーク2に接続された各装置との間でデータの送受信を行う。
通信回路15は、例えば、有線LANのNIC(Network Interface
Card)である。ただし、通信回路15は、無線LANなど、その他の種類の通信回路
であってもよい。入力回路16は、管理サーバ1へのデータ入力を実現する。入力回路1
6は、外部ポートとして、例えば、USB、PCI-Expressなどを備えているも
のとする。
図2の例では、操作装置18が入力回路16に接続されている。操作装置18
は、管理サーバ1に情報を入力するための装置である。操作装置18は、例えば、キーボ
ード、マウス、タッチパネル、音声認識装置などであるが、これに限られない。出力回路
17は、管理サーバ1からのデータ出力を実現する。出力回路17は、外部ポートとして
HDMI、DisplayPortなどを備えているものとする。
図2の例では、表示装
置19が出力回路17に接続されている。表示装置19の例としては、LCD(液晶ディ
スプレイ)、有機EL(有機エレクトロルミネッセンス)ディスプレイ、プロジェクタが
あるが、これに限られない。
【0018】
管理サーバ1の管理者は、操作装置18および表示装置19を使って、管理サーバ1の
メンテナンスを行うことができる。なお、操作装置18および表示装置19は、管理サー
バ1に組み込まれたものであってもよい。また、必ず管理サーバ1に操作装置18および
表示装置19が接続されていなくてもよい。例えば、管理者は、ネットワーク2と通信可
能な情報端末を用いて管理サーバ1のメンテナンスを行ってもよい。
【0019】
図3は、管理サーバ1の記憶部14に保存されるデータの例を示している。
図3の記憶
部14には、問題データ14Aと、計算データ14Bと、管理プログラム14Cと、変換
プログラム14Dと、制御プログラム14Eとが保存されている。例えば、問題データ1
4Aは、組合せ最適化問題のデータを含む。例えば、計算データ14Bは、各計算サーバ
から収集された計算結果を含む。例えば、管理プログラム14Cは、上述の管理部11の
機能を実現するプログラムである。例えば、変換プログラム14Dは、上述の変換部12
の機能を実現するプログラムである。例えば、制御プログラム14Eは、上述の制御部1
3の機能を実現するプログラムである。
【0020】
図4は、計算サーバの構成例を示したブロックである。
図4には、例示的に計算サーバ
3aの構成が示されている。他の計算サーバは、計算サーバ3aと同様の構成であっても
よいし、計算サーバ3aと異なる構成であってもよい。計算サーバ3aは、例えば、第1
ベクトルと、第2ベクトルと、第3ベクトルの計算を単独で、または、他の計算サーバと
分担して実行する情報処理装置である。計算サーバ3aは、さらに第1ベクトルのそれぞ
れの要素を符号関数で変換した第4ベクトルの計算を行ってもよい。第3ベクトルのそれ
ぞれの要素の値は、例えば、イジングモデルのエネルギー式から導出された式によって求
められる。例えば、イジングモデルのエネルギー式を、すべての項に含まれる変数につい
て偏微分した形式の式(基本式とよぶ)に基づいて第3ベクトルのそれぞれの要素を計算
することができる。
【0021】
ここで、第1ベクトルは、変数xi(i=1、2、・・・、N)を要素とするベクトル
である。また、第2ベクトルは、変数yi(i=1、2、・・・、N)を要素とするベク
トルである。第3ベクトルは、変数zi(i=1、2、・・・、N)を要素とするベクト
ルである。第4ベクトルは、第1ベクトルの要素を第1値もしくは第1値より大きい第2
値のいずれかの値をとる第1関数で変換したベクトルである。上述の符号関数は、第1関
数の一例である。なお、変数xi、yi、ziの詳細については、後述する。
【0022】
計算サーバ3aは、例えば、通信回路31と、共有メモリ32と、プロセッサ33A~
33Dと、ストレージ34と、ホストバスアダプタ35とを備えている。通信回路31、
共有メモリ32、プロセッサ33A~33D、ストレージ34、ホストバスアダプタ35
は、バス36を介して互いに接続されているものとする。
【0023】
通信回路31は、ネットワーク2に接続された各装置との間でデータの送受信を行う。
通信回路31は、例えば、有線LANのNIC(Network Interface
Card)である。ただし、通信回路31は、無線LANなど、その他の種類の通信回路
であってもよい。共有メモリ32は、プロセッサ33A~33Dからアクセス可能なメモ
リである。共有メモリ32の例としては、DRAM、SRAMなどの揮発性メモリが挙げ
られる。ただし、共有メモリ32として、不揮発性メモリなどその他の種類のメモリが使
われてもよい。プロセッサ33A~33Dは、共有メモリ32を介してデータの共有を行
うことができる。なお、必ず計算サーバ3aのすべてのメモリが共有メモリとして構成さ
れていなくてもよい。例えば、計算サーバ3aの一部のメモリは、いずれかのプロセッサ
のみからアクセスできるローカルメモリとして構成されていてもよい。
【0024】
プロセッサ33A~33Dは、計算処理を実行する電子回路である。プロセッサは、例
えば、CPU(Central Processing Unit)、GPU(Grap
hics Processing Unit)、FPGA(Field-Program
mable Gate Array)、ASIC(Application Speci
fic Integrated Circuit)のいずれであってもよいし、これらの
組合せであってもよい。また、プロセッサは、CPUコアまたはCPUスレッドであって
もよい。プロセッサがCPUである場合、計算サーバ3aが備えるソケット数については
、特に問わない。また、プロセッサは、PCI expressなどのバスを介して計算
サーバ3aのその他の構成要素に接続されていてもよい。
【0025】
図4の例では、計算サーバが4つのプロセッサを備えている。ただし、1台の計算サー
バが備えているプロセッサの数はこれとは異なっていてもよい。例えば、計算サーバに実
装されているプロセッサの数および/または種類が異なっていてもよい。
【0026】
積和演算部51は、解きたい組合せ最適化問題の目的関数を、すべての項に含まれる変
数について偏微分した形式の基本式に基づき、第3ベクトルのそれぞれの要素を更新する
ように構成されている。ここで、基本式の変数は、第1ベクトルの要素、または、第1ベ
クトルの要素を第1値もしくは第1値より大きい第2値のいずれかの値をとる第1関数で
変換した第4ベクトルの要素である。更新部50は、例えば、第1ベクトルの要素に、第
2ベクトルの対応する要素、または、第2ベクトルの対応する要素に重み付けした値を加
算することによって第1ベクトルの要素を更新し、値が第1値より小さい第1ベクトルの
要素を第1値に設定し、値が第2値より大きい第1ベクトルの要素を第2値に設定し、第
2ベクトルの要素に、更新回数に応じて単調増加または単調減少する第1係数と第1ベク
トルの対応する要素との積を重み付けした値、ならびに、前記第3ベクトルの対応する要
素を重み付けした値を加算することによって第2ベクトルの要素を更新するように構成さ
れている。目的関数として、例えば、イジングモデルのエネルギー式を使うことができる
。ここで、イジングモデルは、多体相互作用を有するものであってもよい。また、第1値
として-1、第2値として+1を使うことができる。ただし、第1値および/または第2
値はその他の値であってもよい。
【0027】
図4の例では、プロセッサ33A~33Cが更新部に相当しており、プロセッサ33D
が積和演算部に相当している。ただし、
図4に示した更新部/積和演算部とプロセッサと
の対応関係は、一例にしかすぎない。したがって、更新部/積和演算部とプロセッサとの
対応関係はこれとは異なっていてもよい。また、更新部/積和演算部に割り当てられるプ
ロセッサ数については、特に限定しない。後述するように、同一のプロセッサが更新部お
よび積和演算部の役割を兼ね備えていてもよい。計算サーバに複数の種類のプロセッサ(
例えば、CPU、GPU、FPGA)が実装されている場合には、異なる種類のプロセッ
サを更新部および積和演算部に割り当ててもよい。
【0028】
ストレージ34は、計算サーバ3aのプログラム、プログラムの実行に必要なデータ、
プログラムによって生成されたデータを含む各種のデータを記憶する。ここで、プログラ
ムは、OSとアプリケーションの両方を含むものとする。ストレージ34は、揮発性メモ
リ、不揮発性メモリ、またはこれらの組み合わせであってもよい。揮発性メモリの例とし
ては、DRAM、SRAMなどがある。不揮発性メモリの例としては、NANDフラッシ
ュメモリ、NORフラッシュメモリ、ReRAM、MRAMが挙げられる。また、ストレ
ージ34として、ハードディスク、光ディスク、磁気テープまたは外部の記憶装置が使わ
れてもよい。
【0029】
ホストバスアダプタ35は、計算サーバ間のデータ通信を実現する。ホストバスアダプ
タ35は、ケーブル4aを介してスイッチ5に接続されている。ホストバスアダプタ35
は、例えば、HCA(Host Channel Adaptor)である。ホストバス
アダプタ35、ケーブル4a、スイッチ5で高スループットを実現可能なインターコネク
トを形成することにより、並列的な計算処理の速度を向上させることができる。
【0030】
図5は、計算サーバのストレージに保存されるデータの例を示している。
図5のストレ
ージ34には、計算データ34Aと、計算プログラム34Bと、制御プログラム34Cと
が保存されている。計算データ34Aは、計算サーバ3aの計算途中のデータまたは計算
結果を含んでいる。なお、計算データ34Aの少なくとも一部は、共有メモリ32、プロ
セッサのキャッシュ、プロセッサのレジスタなど、異なる記憶階層に保存されていてもよ
い。計算プログラム34Bは、所定のアルゴリズムに基づき、各プロセッサにおける計算
処理および、共有メモリ32およびストレージ34へのデータの保存処理を実現するプロ
グラムである。制御プログラム34Cは、管理サーバ1の制御部13から送信された指令
に基づき、計算サーバ3aを制御し、計算サーバ3aの計算結果を管理サーバ1に送信す
るプログラムである。
【0031】
次に、組合せ最適化問題の求解に関連する技術について説明する。組合せ最適化問題を
解くために使われる情報処理装置の一例として、イジングマシンが挙げられる。イジング
マシンとは、イジングモデルの基底状態のエネルギーを計算する情報処理装置のことをい
う。これまで、イジングモデルは、主に強磁性体や相転移現象のモデルとして使われるこ
とが多かった。しかし、近年、イジングモデルは、組み合わせ最適化問題を解くためのモ
デルとしての利用が増えている。下記の式(1)は、イジングモデルのエネルギーを示し
ている。
【数1】
ここで、s
i、s
jはスピンである、スピンは、+1または-1のいずれかの値をとる2
値変数である。Nは、スピンの数である。h
iは、各スピンに作用する局所磁場である。
Jは、スピン間における結合係数の行列である。行列Jは、対角成分が0である実対称行
列となっている。したがって、J
ijは行列Jのi行j列の要素を示している。なお、式
(1)のイジングモデルは、スピンについての2次式となっているが、スピンの3次以上
の項を含む拡張されたイジングモデル(多体相互作用を有するイジングモデル)を使って
もよい。多体相互作用を有するイジングモデルについては、後述する。
【0032】
式(1)のイジングモデルを使うと、エネルギーEIsingを目的関数とし、エネル
ギーEIsingを可能な限り小さくする解を計算することができる。イジングモデルの
解は、スピンのベクトル(s1、s2、・・・、sN)の形式で表される。特に、エネル
ギーEIsingが最小値となるベクトル(s1、s2、・・・、sN)は、最適解とよ
ばれる。ただし、計算されるイジングモデルの解は、必ず厳密な最適解でなくてもよい。
以降では、イジングモデルを使ってエネルギーEIsingが可能な限り小さくなる近似
解(すなわち、目的関数の値が可能な限り最適値に近くなる近似解)を求める問題をイジ
ング問題とよぶものとする。
【0033】
式(1)のスピンsiは2値変数であるため、式(1+si)/2を使うことにより、
組合せ最適化問題で使われる離散変数(ビット)との変換を容易に行うことができる。し
たがって、組合せ最適化問題をイジング問題に変換し、イジングマシンに計算を行わせる
ことにより、組合せ最適化問題の解を求めることが可能である。0または1のいずれかの
値をとる離散変数(ビット)を変数とする2次の目的関数を最小化する解を求める問題は
、QUBO(Quadratic Unconstrained Binary Opt
imization、制約なし2値変数2次最適化)問題とよばれる。式(1)で表され
るイジング問題は、QUBO問題と等価であるといえる。
【0034】
例えば、量子アニーラ、コヒーレントイジングマシン、量子分岐マシンなどがイジング
マシンのハードウェア実装として提案されている。量子アニーラは、超伝導回路を使って
量子アニーリングを実現する。コヒーレントイジングマシンは、光パラメトリック発振器
で形成されたネットワークの発振現象を利用する。量子分岐マシンは、カー効果を有する
パラメトリック発振器のネットワークにおける量子力学的な分岐現象を利用する。これら
のハードウェア実装は、計算時間の大幅な短縮を実現する可能性がある一方、大規模化や
安定的な運用が難しいという課題もある。
【0035】
そこで、広く普及しているデジタルコンピュータを使ってイジング問題の求解を行うこ
とも可能である。デジタルコンピュータは、上述の物理的現象を使ったハードウェア実装
と比べ、大規模化と安定運用が容易である。デジタルコンピュータでイジング問題の求解
を行うためのアルゴリズムの一例として、シミュレーティッドアニーリング(SA)が挙
げられる。シミュレーティッドアニーリングをより高速に実行する技術の開発が行われて
いる。ただし、一般のシミュレーティッドアニーリングはそれぞれの変数が逐次更新され
る逐次更新アルゴリズムであるため、並列化による計算処理の高速化は難しい。
【0036】
上述の課題を踏まえ、デジタルコンピュータにおける並列的な計算によって、規模の大
きい組合せ最適化問題の求解を高速に行うことが可能なシミュレーテッド分岐アルゴリズ
ムが提案されている(例えば、上述の非特許文献7)。以降では、シミュレーテッド分岐
アルゴリズムを使って組合せ最適化問題を解く情報処理装置および電子回路について説明
する。
【0037】
はじめに、シミュレーテッド分岐アルゴリズムの概要について述べる。シミュレーテッ
ド分岐アルゴリズムでは、それぞれN個ある2つの変数x
i,y
i(i=1、2、・・・
、N)について、下記の式(2)の連立常微分方程式を数値的に解く。N個の変数x
iの
それぞれは、イジングモデルのスピンs
iに対応している。一方、N個の変数y
iのそれ
ぞれは、運動量に相当している。変数x
i,y
iは、いずれも連続変数であるものとする
。
【数2】
【0038】
ここで、Hは、下記の式(3)のハミルトニアンである。係数Dは、離調(detun
ing)に相当する。係数p(t)は、ポンピング振幅(pumping amplit
ude)に相当し、シミュレーテッド分岐アルゴリズムの計算時に更新回数に応じて値が
単調増加する。係数p(t)の初期値は0に設定されていてもよい。係数p(t)は、第
1係数に相当する。係数Kは、正のカー係数(Kerr coefficient)に相
当する。f
iは、下記の式(4)で表される外力である。式(4)のz
iは、式(3)の
中のエネルギーE
Isingに対応する項の括弧内を変数x
iで偏微分した式となってい
る。
【数3】
【数4】
ここで、係数cとして、定数係数を使うことができる。この場合、係数cの値を、シミュ
レーテッド分岐アルゴリズムによる計算を実行する前に決める必要がある。例えば、計算
の精度を得るために、係数cをJ
(2)行列の最大固有値の逆数に近い値に設定すること
ができる。例えば、c=0.5D√(N/2n)という値を使うことができる。ここで、
nは、組合せ最適化問題に係るグラフのエッジ数である。また、α(t)は、p(t)と
ともに増加する係数である。例えば、α(t)として、√(p(t))を使うことができ
る。
【0039】
なお、シミュレーテッド分岐アルゴリズムを使うことにより、3次以上の目的関数を有
する組合せ最適化問題を解くことも可能である。2値変数を変数とする3次以上の目的関
数を最小化する変数の組合せを求める問題は、HOBO(Higher Order B
inary Optimization)問題とよばれる。HOBO問題を扱う場合、高
次へ拡張されたイジングモデルにおけるエネルギー式として、下記の式(5)を使うこと
ができる。
【数5】
ここで、J
(n)はn階テンソルであり、式(1)の局所磁場h
iと結合係数の行列Jを
一般化させたものである。例えば、テンソルJ
(1)は、局所磁場h
iのベクトル(第6
ベクトルとよぶ)に相当する。n階テンソルJ
(n)では、複数の添え字に同じ値がある
とき、要素の値は0となる。式(5)では、3次の項までが示されているが、それより高
次の項も式(5)と同様に定義することができる。式(5)は多体相互作用を含むイジン
グモデルのエネルギーに相当している。
【0040】
なお、QUBOと、HOBOはいずれも、制約なし多項式2値変数最適化(PUBO:
Polynomial Unconstrained Binary Optimiza
tion)の1種であるといえる。すなわち、PUBOのうち、2次の目的関数を有する
組合せ最適化問題は、QUBOである。また、PUBOのうち、3次以上の目的関数を有
する組合せ最適化問題は、HOBOであるといえる。
【0041】
シミュレーテッド分岐アルゴリズムを使ってHOBO問題を解く場合、上述の式(3)
のハミルトニアンHを下記の式(6)に、上述の式(4)の外力f
iを下記の式(7)に
それぞれ置き換えればよい。
【数6】
【数7】
例えば、(7)の2番目の式z
iを用いて、第3ベクトルのそれぞれの要素を計算するこ
とができる。この式は、(6)の2番目の式を、すべての項に含まれる変数x
iについて
偏微分した形式をとっている。また、第1ベクトルの要素を変数としている。このように
、ハミルトニアンが多体相互作用(3階以上のテンソル)の項を含んでもよい。また、ハ
ミルトニアンとして、多体相互作用(3階以上のテンソル)の項を含まないものを使って
もよい。(7)の2番目の式z
iは、ハミルトニアンの中のイジングモデルのエネルギー
に対応する項から導出された基本式の一例である。すなわち、第1値は-1、第2値は1
であってもよく、目的関数は、イジングモデルのエネルギー式に相当する項を含んでいて
もよい。この場合、目的関数は、多体相互作用の項を含んでいてもよい。
【0042】
シミュレーテッド分岐アルゴリズムでは、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のときにsg
n(xi)=1または-1になる関数を使うことができる。すなわち、更新部50は、値
が第1値と第2値の間にある第3値より小さい第1ベクトルの要素を第1値に変換し、値
が第3値より大きい第1ベクトルの要素を第2値に変換することによって、組合せ最適化
問題の解を求めるように構成されていてもよい。例えば、更新部50は、正値である第1
ベクトルの要素を+1に変換し、負値である第1ベクトルを-1に変換することによって
、組合せ最適化問題の解を求めるように構成されていてもよい。更新部50が組合せ最適
化問題の解(例えば、イジングモデルのスピンsi)を求めるタイミングについては、特
に問わない。例えば、更新部50は、第1ベクトル、第2ベクトル、第3ベクトルの更新
回数または第1係数pの値がしきい値より大きくなったときに組合せ最適化問題の解を求
めるように構成されていてもよい。イジング問題を解く場合、組合せ最適化問題の解は、
イジングモデルのスピンsiに相当する。
【0043】
例えば、シンプレクティック・オイラー法を使うと、式(2)、(3)、(4)または
、式(2)、(6)、(7)によって与えられる微分方程式を解くことができる。下記の
式(8)に示されているように、シンプレクティック・オイラー法を使う場合、微分方程
式が離散的な漸化式に書き換えられる。
【数8】
ここで、tは、時刻であり、Δtは、時間ステップ(時間刻み幅)である。式(8)の
非線形項Kx
2
i(t+Δt)は、計算中に変数x
iが発散するのを防止する。
【0044】
計算サーバでは、式(8)のアルゴリズムに基づき、それぞれN個ある2つの変数xi
,yi(i=1、2、・・・、N)を更新してもよい。すなわち、計算サーバが更新する
データには、変数xi(i=1、2、・・・、N)を要素とする第1ベクトル(x1,x
2,・・・,xN)と、変数yi(i=1、2、・・・、N)を要素とする第2ベクトル
(y1,y2,・・・,yN)と、変数zi(i=1、2、・・・、N)を要素とする第
3ベクトル(z1,z2,・・・,zN)が含まれていてもよい。計算サーバは、式(8
)のアルゴリズムに基づき、第3ベクトルのそれぞれの要素zi(i=1、2、・・・、
N)と、第1のベクトルのそれぞれの要素xi(i=1、2、・・・、N)と、第2ベク
トルのそれぞれの要素yi(i=1、2、・・・、N)を更新することができる。
【0045】
式(8)を参照すると、外力項fiに含まれる、行列またはテンソルの積和演算以外は
、1種類の添え字(i)しか現れていないことがわかる。このため、式(8)のうち、1
種類の添え字(i)しか現れていない部分の演算を並列化することによって、計算時間を
短縮することができる。
【0046】
なお、式(8)では、微分方程式との対応関係を示すために、時刻tおよび時間ステッ
プΔtが使われている。ただし、実際にシンプレクティック・オイラー法をソフトウェア
またはハードウェアに実装する際は、必ず明示的なパラメータとして時刻tおよび時間ス
テップΔtが含まれていなくてもよい。例えば、時間ステップΔtを1とすれば、実装時
のアルゴリズムから時間ステップΔtを除去することが可能である。アルゴリズムを実装
する際に、明示的なパラメータとして時間tを含めない場合には、式(8)において、x
i(t+Δt)をxi(t)の更新後の値であると解釈すればよい。すなわち、上述の式
(8)および以降の各式における“t”は、更新前の変数の値、“t+Δt”は、更新後
の変数の値を示すものとする。
【0047】
次に、シミュレーテッド分岐アルゴリズムをシンプレクティック・オイラー法によって
デジタルコンピュータに実装し、組合せ最適化問題を解いたときの結果を示す。以降では
、最大カット問題のベンチマークセット(G-set)のG22を1000回解いた場合
におけるカット数の平均値と最大値を示す。最大カット問題とは、分割時にカットされる
エッジの重みの合計値を最大化するよう、重み付きグラフのノードを2つのグループに分
割する問題である。最大カット問題は、組合せ最適化問題の一種である。
【0048】
図6は、上述の式(8)のアルゴリズムを使ったときにおける結果を示している。時間
ステップをΔt=0.5、合計時間ステップ数を100、1000、10000、100
000、1000000として計算を行っている。係数について、D=K=1、c=0.
5D√(N/2n)を使った。なお、nにはG22のグラフのエッジ数、19990が代
入される。時間ステップ数の増加に応じて係数p(第1係数)の値を0から1に線形に増
加させた。また、変数x
iの初期値に0を設定し、変数y
iの初期値として[-0.1,
0.1]の範囲の擬似乱数を設定した。
【0049】
図6上側のグラフは、カット数の平均値を示している。一方、
図6下側のグラフは、カ
ット数の最大値を示している。
図6のいずれのグラフにおいても、縦軸はカット数に、横
軸は時間ステップ数にそれぞれ対応している。
図6の両グラフにある水平方向の破線Cm
axは、G22で知られている最大カット数13359を示している。カット数が破線C
maxに近いほど、最適解に近い結果が得られているといえる。
図6を参照すると、合計
時間ステップ数が大きくなっても最大カット数に到達していない。スピンs
iが2値変数
ではなく、連続変数x
iで表現されていることに起因する誤差があるため、式(8)のア
ルゴリズムを使ったときに得られる解には、最適解との差がある。
【0050】
そこで、誤差を減らすために、式(8)のアルゴリズムを改良することができる。具体
的には、更新によって変数x
iの絶対値が1より大きくなったとき、変数x
iをsgn(
x
i)に置き換える。すなわち、更新によってx
i>1となったとき、変数x
iの値は1
に設定される。また、更新によってx
i<-1となったとき、変数x
iの値は-1に設定
される。これにより、変数x
iを使ってスピンs
iをより高い精度で近似することが可能
となる。すなわち、更新部50は、値が-1より小さい第1ベクトルの要素の値を-1に
設定し、値が+1より大きい第1ベクトルの要素の値を+1に設定するように構成されて
いてもよい。このような処理を含めることにより、アルゴリズムは、x
i=±1の位置に
壁があるN粒子の物理モデルと等価になる(
図7)。
【0051】
さらに、更新によってxi>1となったとき、変数xiに対応する変数yiに係数rを
乗算してもよい。例えば、-1<r≦0の係数rを使うと、上記の壁は、反射係数rの壁
となる。特に、r=0の係数rを使った場合、アルゴリズムは、xi=±1の位置に完全
非弾性衝突の起こる壁がある物理モデルと等価になる。すなわち、更新部50は、値が第
1値より小さい第1ベクトルの要素に対応する第2ベクトルの要素、または、第2値より
大きい第1ベクトルの要素に対応する第2ベクトルの要素を、もとの前記第2ベクトルの
要素に、第2係数を乗じた値に更新するように構成されていてもよい。例えば、更新部5
0は、値が-1より小さい第1ベクトルの要素に対応する第2ベクトルの要素、または、
値が1より大きい第1ベクトルの要素に対応する第2ベクトルの要素を、もとの第2ベク
トルの要素に第2係数を乗じた値に更新するように構成されていてもよい。ここで、第2
係数は上述の係数rに相当する。
【0052】
なお、更新によってxi>1となったとき、変数xiに対応する変数yiの値を擬似乱
数に設定してもよい。例えば、[-0.1,0.1]の範囲の乱数を使うことができる。
すなわち、更新部50は、値が第1値より小さい第1ベクトルの要素に対応する第2ベク
トルの要素の値、または、値が第2値より大きい第1ベクトルの要素に対応する第2ベク
トルの要素の値を、擬似乱数に設定するように構成されていてもよい。
【0053】
以上のようにして|x
i|>1とならないように更新すると、式(8)の非線形項Kx
2
i(t+Δt)を除去しても、x
iの値が発散することはなくなる。したがって、式(
8)のアルゴリズムに代わり、下記の式(9)のアルゴリズムを使うことが可能となる。
【数9】
【0054】
上述の式(9)のアルゴリズムでは、必ずしも擬似乱数を使う必要がない。また、式(
9)のアルゴリズムは、式(8)と同様、ハミルトン方程式を解くものであり、変数y
i
は運動量に相当する。そのため、シンプレクティック・オイラー法を使うことにより、時
間ステップΔtとして小さな値を使わなくても、安定的に解を求めることができる。また
、式(9)のアルゴリズムにおいても、3次以上の目的関数を有する組合せ最適化問題を
解くことが可能である。なお、対比のため、
図8には、式(8)のアルゴリズムを物理的
なモデルに見立てた場合のグラフを示した。
【0055】
図9は、式(9)のアルゴリズムを使ってG-setのG22を1000回解いたとき
の結果を示している。
図9では、式(9)のアルゴリズムを使っている。第2係数rの値
は0に設定され、時間ステップはΔt=1に設定されている。その他の計算条件は、
図6
と同様であるものとする。なお、式(9)では、非線形項がないため、時間ステップΔt
を
図8の倍に設定することができた。
【0056】
図9上側のグラフは、カット数の平均値を示している。一方、
図9下側のグラフは、カ
ット数の最大値を示している。各軸の対応関係および両グラフにある水平方向の破線Cm
axの定義は、
図6と同様である。また、
図9の両グラフにおいて実線で示されたデータ
は、式(9)のアルゴリズムの適用時の結果に相当している。一方、
図9の両グラフにお
いて破線で示されたデータは、式(8)のアルゴリズムを使ったときの結果に相当する。
【0057】
図9を参照すると、
図6と比べ、カット数の平均値およびカット数の最大値のいずれも
最適解に近づいていることがわかる。ただし、
図9の結果でも依然として計算値と最適解
との間に差がある。この誤差は、第3ベクトルの要素の値z
iを定義する基本式において
、変数としてスピンs
iではなく、連続変数x
iが使われていることに起因していると考
えられる。特に、高次の項が増えるほど、z
iにおける変数xどうしの積演算は、誤差を
大きくする原因となりうる。例えば、1より大きい変数を複数回乗算すると、値が1より
著しく大きくなってしまう。
【0058】
そこで、誤差を軽減するために、式(9)のアルゴリズムをさらに改良することができ
る。例えば、下記の式(10)のように、z
iにおいて、連続変数x
iに代わって連続変
数x
iを符号関数で変換した値sgn(x
i)を代入することができる。連続変数x
iを
符号関数で変換した値sgn(x
i)は、スピンs
iに相当する。
【数10】
式(10)では、z
iの1階のテンソルを含む項の係数αを定数(例えば、α=1)に
してもよい。式(10)のアルゴリズムは、式(8)、(9)とは異なり、ハミルトン方
程式を解くものではない。式(10)は、外場によって制御された力学系であると見なす
ことが可能である。式(10)のアルゴリズムでは、高次の目的関数を有するHOMOを
扱った場合、z
iのどのスピンどうしの積も-1または1のいずれかの値をとるため、積
演算による誤差の発生を防ぐことができる。
【0059】
上述の式(10)のアルゴリズムのように、計算サーバが計算するデータは、さらに、
変数si(i=1、2、・・・、N)を要素とする第4ベクトル(s1,s2,・・・,
sN)を含んでいてもよい。第1ベクトルのそれぞれの要素を符号関数で変換することに
より、第4ベクトルを得ることができる。すなわち、積和演算部51は、イジングモデル
のエネルギー式を、すべての項に含まれる変数について偏微分した形式の基本式を使って
、第3ベクトルのそれぞれの要素の値を更新するように構成されていてもよい。ここで、
基本式の変数として、第1ベクトルの要素または、第1ベクトルの要素を符号関数で変換
した第4ベクトルの要素を使うことができる。
【0060】
図10は、式(10)のアルゴリズムを使ってG-setのG22を1000回解いた
ときの結果を示している。使用されるアルゴリズムの違いを除けば、
図10の計算条件(
例えば、時間ステップΔt、各係数)は、
図9と同様であるものとする。
図10上側のグ
ラフは、カット数の平均値を示している。一方、
図10下側のグラフは、カット数の最大
値を示している。各軸の対応関係および両グラフにある水平方向の破線Cmaxの定義は
、
図6、
図9と同様である。また、
図10の両グラフにおいて実線で示されたデータは、
式(10)のアルゴリズムの適用時の結果に相当する。一方、
図10の両グラフにおいて
破線で示されたデータは、式(8)のアルゴリズムを使ったときの結果に相当する。
【0061】
図10を参照すると、カット数の平均値およびカット数の最大値のいずれにおいても、
図9と比べて最適解により近い値が得られることがわかる。
図10下側のグラフを参照す
ると、式(10)のアルゴリズムを使うことにより、カット数の最大値13359が得ら
れることがわかる。
【0062】
シンプレクティック・オイラー法を使ったシミュレーテッド分岐アルゴリズムには、さ
らに下記の式(11)のような変形例も存在する。
【数11】
【0063】
式(11)のアルゴリズムは、外力に相当する項fiの計算方法が上述の各例とは異な
っている。(11)4番目の式を使って計算された値ziを符号関数で変換し、1で規格
化している。すなわち、積和演算部51は、第1ベクトルの要素を変数として計算した基
本式の値(zi)を第1関数で変換した値に基づいて第3ベクトルのそれぞれの要素を更
新するように構成されていてもよい。第1関数として、例えば、符号関数を使うことがで
きる。ただし、後述するように、その他の関数を第1関数として使ってもよい。
【0064】
また、式(11)では、係数cの代わりに、関数g(t)が使われている。一般に、第
3ベクトルの要素の値z
iの計算結果への寄与度は、問題によって異なる。しかし、式(
11)では、第3ベクトルの要素の値z
iが1で規格化されているため、問題ごとに係数
cの値を決定する必要がなくなる。関数g(t)として、例えば、下記の式(12)を使
うことができる。
【数12】
式(12)の関数は、更新回数に応じて、単調増加してから単調減少する。ただし、上
述の式(12)は一例にすぎず、g(t)として、p(t)をパラメータとする、これと
は異なる関数を使ってもよい。すなわち、積和演算部51は、第1係数pをパラメータと
する第2関数を乗じることによって第3ベクトルのそれぞれの要素を更新するように構成
されていてもよい。
【0065】
図11は、式(11)のアルゴリズムを使ってG-setのG22を1000回解いた
ときの結果を示している。使用されるアルゴリズムの違いを除けば、
図11の計算条件(
例えば、時間ステップΔt、使われる係数)は、
図9と同様であるものとする。
図11上
側のグラフは、カット数の平均値を示している。一方、
図11下側のグラフは、カット数
の最大値を示している。各軸の対応関係および両グラフにある水平方向の破線Cmaxの
定義は、
図6、
図9と同様である。また、
図11の両グラフにおいて実線で示されたデー
タは、式(11)のアルゴリズムの適用時の結果に相当する。一方、
図11の両グラフに
おいて破線で示されたデータは、式(8)のアルゴリズムを使ったときの結果に相当する
。
【0066】
図11を参照すると、カット数の平均値およびカット数の最大値のいずれにおいても、
式(8)のアルゴリズムと比べて最適解により近い値が得られることがわかる。
図11下
側のグラフを参照すると、式(11)のアルゴリズムを使うことにより、最大値1335
9に近い、カット数13358が得られていることがわかる。
【0067】
式(9)~式(11)のアルゴリズムでは、基本式(ziの式)の1階のテンソルを含
む項の係数αを定数係数(例えば、α=1)として計算を行ってもよい。また、式(9)
~式(11)のアルゴリズムでは、基本式(ziの式)の1階のテンソルを含む項の係数
αとして更新回数に応じて単調減少または単調増加する係数を使ってもよい。この場合、
基本式の1階のテンソルを含む項は、更新回数に応じて単調減少または単調増加する。
【0068】
上述の式(9)のアルゴリズムおよび式(10)のアルゴリズムには、係数cが含まれ
ている。係数cをJ
(2)行列の最大固有値の逆数に近い値にしたい場合、J
(2)行列
の最大固有値を計算するか、J
(2)行列の最大固有値の見積もりを行う必要がある。最
大固有値の計算は、必要な計算量が大きい。一方、最大固有値の見積もりは、値の正確性
が保証されていない。そこで、係数cの代わりに上述の式(12)のような、更新回数に
応じて値が変動する関数を使うことができる。また、係数cの代わりに、下記の式(13
)のように、第1のベクトル(x
1、x
2、・・・、x
N)および第3ベクトル(z
1、
z
2、・・・、z
N)に基づいて計算される、近似値c1を使ってもよい。
【数13】
式(13)を参照すると、分母と分子がいずれもベクトルのノルムとなっている。式(1
3)のように、ベクトルのノルムとして、ベクトルの各要素の2乗和の平方根である、L
2ノルムを使うことができる。ただし、ベクトルの要素の絶対値の和である、L1ノルム
など、その他の定義によるノルムを使ってもよい。
【0069】
すなわち、更新部50は、第1ベクトルのノルムを第3ベクトルのノルムで除算した第
3係数c1を計算し、第2ベクトルの要素に、第1係数p(t+Δt)と更新された第1
ベクトルの対応する要素との積を重み付けした値ならびに、第3ベクトルの対応する要素
を第3係数c1で重み付けした値を加算することによって第2ベクトルの要素を更新する
ように構成されていてもよい。
【0070】
さらに、係数cの代わりに、下記の式(14)のような内積によって定義される近似値
c´1を使ってもよい。
【数14】
【0071】
すなわち、更新部50は、第1ベクトルどうしの内積を、第1ベクトルと第3ベクトル
の内積の絶対値で除算した第3係数c´1を計算し、第2ベクトルの要素に、第1係数p
(t+Δt)と更新された第1ベクトルの対応する要素との積を重み付けした値ならびに
、第3ベクトルの対応する要素を第3係数c´1で重み付けした値を加算することによっ
て第2ベクトルの要素を更新するように構成されていてもよい。
【0072】
近似値c1、c´1は、各計算タイミングにおける第1ベクトル(x1,x2,・・・
,xN)および第3ベクトル(z1,z2,・・・,zN)の値に基づいて計算されるた
め、係数cのような定数ではなく、動的に制御される係数となる。なお、第1ベクトル(
x1,x2,・・・,xN)および第3ベクトル(z1,z2,・・・,zN)について
は、変数の更新処理で計算されたものを利用することができるため、近似値c1、c´1
を計算したとしても、計算量が大幅に増えることはない。局所磁場のないイジング問題に
おいて、(x1,x2,・・・,xN)がJ(2)の最大固有値に対応する固有ベクトル
であるとき、近似値c1、c´1はJ(2)の最大固有値の逆数に等しくなる。また、(
x1,x2,・・・,xN)が固有ベクトルからずれていると、近似値c1、c´1はJ
(2)の最大固有値の逆数より大きな値となるため、解の収束が早まる。
【0073】
図12は、式(9)のアルゴリズムにおいて、係数cの代わりに近似値c1を使い、G
-setのG22を1000回解いたときの結果を示している。
図13は、式(9)のア
ルゴリズムにおいて、係数cの代わりに近似値c´1を使い、G-setのG22を10
00回解いたときの結果を示している。
図14は、式(10)のアルゴリズムにおいて、
係数cの代わりに近似値c1を使い、G-setのG22を1000回解いたときの結果
を示している。
図15は、式(10)のアルゴリズムにおいて、係数cの代わりに近似値
c´1を使い、G-setのG22を1000回解いたときの結果を示している。
【0074】
図12~
図15において、上側のグラフは、カット数の平均値を示している。一方、図
12~
図15において、下側のグラフは、カット数の最大値を示している。各軸の対応関
係および両グラフにある水平方向の破線Cmaxの定義は、上述の各グラフと同様である
。
図12~
図15の各グラフにおいて破線で示されたデータは、式(8)のアルゴリズム
を使ったときの結果を示している。
【0075】
図12~
図15を参照すると、カット数の平均値およびカット数の最大値のいずれにお
いても、式(8)のアルゴリズムと比べて最適解により近い値が得られることがわかる。
特に、式(10)のアルゴリズムにおいて、近似値c1またはc´1を使うと、カット数
の最大値13359が得られていることがわかる。
【0076】
なお、式(9)のアルゴリズムおよび式(10)のアルゴリズムでは、近似値c1およ
びc´1の代わりに下記の式(15)で定義される近似値c2またはc´2を使ってもよ
い。
【数15】
【0077】
すなわち、更新部50は、第1ベクトルのそれぞれの要素を符号関数で変換した第4ベ
クトルのノルムを、第3ベクトルのノルムで除算した第3係数c2を計算し、第2ベクト
ルの要素に、第1係数p(t+Δt)と更新された第1ベクトルの対応する要素との積を
重み付けした値ならびに、第3ベクトルの対応する要素を第3係数c2で重み付けした値
を加算することによって第2ベクトルの要素を更新するように構成されていてもよい。
【0078】
また、更新部50は、第1ベクトルのそれぞれの要素を符号関数で変換した第4ベクト
ルどうしの内積を、第4ベクトルと第3ベクトルの内積の絶対値で除算した第3係数c´
2を計算し、第2ベクトルの要素に、第1係数p(t+Δt)と更新された前記第1ベク
トルの対応する要素との積を重み付けした値ならびに、第3ベクトルの対応する要素を第
3係数c´2で重み付けした値を加算することによって第2ベクトルの要素を更新するよ
うに構成されていてもよい。
【0079】
式(15)の第3ベクトル(z1,z2,・・・,zN)については、アルゴリズムで
計算されたものを使うことができるため、近似値c2、c´2を求めたとしても、計算量
が大幅に増えることはない。
【0080】
図16は、式(10)のアルゴリズムで係数cの代わりに近似値c2を使い、G-se
tのG22を1000回解いたときの結果を示している。
図17は、式(10)のアルゴ
リズムで係数cの代わりに近似値c´2を使い、G-setのG22を1000回解いた
ときの結果を示している。
図16および
図17おいて、上側のグラフは、カット数の平均
値を示している。一方、
図16および
図17において、下側のグラフは、カット数の最大
値を示している。各軸の対応関係および両グラフにある水平方向の破線Cmaxの定義は
、上述の各グラフと同様である。
図16および
図17の各グラフにおいて破線で示された
データは、式(8)のアルゴリズムを使ったときの結果を示している。
【0081】
図16および
図17を参照すると、式(8)のアルゴリズムと比べて最適解により近い
値が得られることがわかる。式(10)のアルゴリズムにおいて、近似値c2またはc´
2を使うと、カット数の最大値13359が得られていることがわかる。
【0082】
アルゴリズムの実行中における各ベクトルの値を使って、近似値c1、c´1、c2、
c´2を計算すると、各計算タイミングによって値が激しく変動することがある。近似値
c1、c´1、c2、c´2の変動を抑制するため、近似値c1、c´1、c2、c´2
の代わりに近似値c1、c´1、c2、c´2を所定の規則に基づいて変換した値を使っ
てもよい。例えば、所定の規則として下記の式(16)を使うことができる。
【数16】
ここで、γに1より小さい値を設定することができる。式(16)のc(t+Δt)に
は、例えば、上述の式(13)~(15)によって計算された近似値が代入される。c(
t+Δt)を、各計算タイミングにおいて振動成分を含む信号をサンプリングした値であ
るとみなすと、d(t+Δt)は、c(t+Δt)が一定帯域のローパスフィルタを通過
した後の値に相当するといえる。
【0083】
すなわち、更新部50は、第3係数(近似値c1、c´1、c2、c´2のいずれか)
がローパスフィルタを通過した後の値である第4係数を計算し、第3係数に代わり、第4
係数を用いて第2ベクトルの要素を更新するように構成されていてもよい。
【0084】
図18は、係数cの代わりに、近似値c1を式(16)の規則に基づき変換した値(第
4係数)を使った式(9)のアルゴリズムにおいて、G-setのG22を1000回解
いたときの結果を示している。
図19は、係数cの代わりに、近似値c1を式(16)の
規則に基づき変換した値(第4係数)を使った式(10)のアルゴリズムにおいて、G-
setのG22を1000回解いたときの結果を示している。
図20は、係数cの代わり
に、近似値c2を式(16)の規則に基づき変換した値(第4係数)を使った式(10)
のアルゴリズムにおいて、G-setのG22を1000回解いたときの結果を示してい
る。
図18~
図20では、d(t)の初期値を0、γ=0.1として計算を行った。
【0085】
図18~
図20において、上側のグラフは、カット数の平均値を示している。一方、図
18~
図20において、下側のグラフは、カット数の最大値を示している。各軸の対応関
係および両グラフにある水平方向の破線Cmaxの定義は、上述の各グラフと同様である
。
図18~
図20の各グラフにおいて破線で示されたデータは、式(8)のアルゴリズム
を使ったときの結果を示している。
【0086】
図18~
図20を参照すると、いずれの場合においても、式(8)のアルゴリズムと比
べて最適解により近い値が得られることがわかる。特に
図19および
図20では、カット
数の最大値13359が得られていることがわかる。
【0087】
上述では、シミュレーテッド分岐アルゴリズムを用いて、イジングモデルの解を求める
例について説明した。ただし、シミュレーテッド分岐アルゴリズムによる求解が可能な組
合せ最適化問題は、イジング問題に限られない。シミュレーテッド分岐アルゴリズムを用
いることによって、一般的な2値変数の組合せ最適化問題を解くことが可能である。例え
ば、上述の各アルゴリズムは、目的関数の変数が、a(第1値)と、aより大きいb(第
2値)のいずれかをとる2値変数である、組合せ最適化問題に適用することが可能である
。例えば、上述の式(9)のアルゴリズムを使った場合、更新によって変数xiがaより
小さくなったとき、変数xiの値をaに設定する。また、更新によって変数xiがbより
大きくなったとき、変数xiの値をbに設定する。また、一定の更新回数の後に目的関数
の解を求める場合、符号関数の代わりに、値域がaまたはbの2値である関数f(xi)
を使ってもよい。この関数f(xi)がとる値は、変数xiの値をしきい値v(a<v<
b)と比較した結果に基づいて決まる。例えば、xi<vであるならば、f(xi)=a
となる。また、v<xiであるならば、f(xi)=bとなる。例えば、xi=vである
場合、f(xi)=aまたは、f(xi)=bとなる。ここで、しきい値vの値として、
例えば、(a+b)/2を使うことができる。上述の関数f(xi)は、第1ベクトルの
要素を第4ベクトルの要素に変換する第1関数として使われてもよい。
【0088】
ここまでは、シンプレクティック・オイラー法によって実装されたシミュレーテッド分
岐アルゴリズムの例と、それぞれのアルゴリズムを使って組合せ最適化問題を計算した結
果について説明した。以降では、上述のアルゴリズムの実装例について述べる。
【0089】
(PCクラスタへの実装例)
はじめに、PCクラスタへ上述のアルゴリズムを実装した例について説明する。PCク
ラスタとは、複数台のコンピュータを接続し、1台のコンピュータでは得られない計算性
能を実現するシステムである。例えば、
図1に示した情報処理システム100は、複数台
の計算サーバおよびプロセッサを含んでおり、PCクラスタとして利用することが可能で
ある。例えば、PCクラスタにおいては、MPI(Message Passing I
nterface)を使うことにより、情報処理システム100のような複数の計算サー
バにメモリが分散して配置されている構成でも並列的な計算を実行することが可能である
。例えば、MPIを使って管理サーバ1の制御プログラム14E、各計算サーバの計算プ
ログラム34Bおよび制御プログラム34Cを実装することができる。
【0090】
PCクラスタで利用するプロセッサ数がQである場合、それぞれのプロセッサに、第1
ベクトル(x
1,x
2,・・・,x
N)に含まれる変数x
iのうち、L個の変数の計算を
行わせることができる。同様に、それぞれのプロセッサに、第2ベクトル(y
1,y
2,
・・・,y
N)に含まれる変数y
iのうち、L個の変数の計算を行わせることができる。
すなわち、プロセッサ#j(j=1,2,・・・,Q)は、変数{x
m|m=(j-1)
L+1,(j-1)L+2,・・・,jL}および{y
m|m=(j-1)L+1,(j
-1)L+2,・・・,jL}の計算を行う。また、プロセッサ#jによる{y
m|m=
(j-1)L+1,(j-1)L+2,・・・,jL}の計算に必要な下記の式(17)
に示されたテンソルJ
(n)は、プロセッサ#jがアクセス可能な記憶領域(例えば、レ
ジスタ、キャッシュ、メモリなど)に保存されるものとする。
【数17】
【0091】
ここでは、それぞれのプロセッサが第1ベクトルおよび第2ベクトルの一定数の変数を
計算する場合を説明した。ただし、プロセッサによって、計算する第1ベクトルおよび第
2ベクトルの変数の数が異なっていてもよい。例えば、計算サーバに実装されるプロセッ
サによって性能差がある場合、プロセッサの性能に応じて計算対象とする変数の数を決め
ることができる。
【0092】
すなわち、情報処理装置(例えば、計算サーバ)は、複数のプロセッサを備えていても
よい。更新部50は、複数のプロセッサを含んでおり、更新部50の複数のプロセッサの
それぞれは、第1ベクトルの一部の要素の値および第2ベクトルの一部の要素の値を更新
するように構成されていてもよい。
【0093】
変数yiの値を更新するためには、第1ベクトル(x1,x2,・・・,xN)または
第1ベクトルの各要素を2値変数に変換した第4ベクトル(s1,s2,・・・,sN)
のすべての成分の値が必要となる。2値変数への変換は、例えば、符号関数sgn()を
使うことによって行うことができる。そこで、Allgather関数を使い、第1ベク
トル(x1,x2,・・・,xN)または第4ベクトル(s1,s2,・・・,sN)の
すべての成分の値をQ個のプロセッサに共有させることができる。第1ベクトル(x1,
x2,・・・,xN)または第4ベクトル(s1,s2,・・・,sN)については、プ
ロセッサ間での値の共有が必要であるものの、第2ベクトル(y1,y2,・・・,yN
)およびテンソルJ(n)については、プロセッサ間での値の共有を行うことは必須では
ない。プロセッサ間でのデータの共有は、例えば、プロセッサ間通信を使ったり、共有メ
モリにデータを保存したりすることによって実現することができる。
【0094】
プロセッサ#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}を更新する。
【0095】
上述の各式に示したように、ベクトル(z1,z2,・・・,zN)の計算では、テン
ソルJ(n)と、ベクトル(x1,x2,・・・,xN)または(s1,s2,・・・,
sN)との積の計算を含む、積和演算が必要である。積和演算は、上述のアルゴリズムに
おいて最も計算量の大きい処理であり、計算速度の向上においてボトルネックとなりうる
。そこで、PCクラスタの実装では、積和演算を、Q=N/L個のプロセッサに分散して
並列的に実行し、計算時間の短縮をはかることができる。
【0096】
すなわち、情報処理装置(例えば、計算サーバ)は、複数のプロセッサを備えていても
よい。積和演算部51は、複数のプロセッサを含み、積和演算部51の複数のプロセッサ
のそれぞれは、第3ベクトルの一部の要素を更新するように構成されていてもよい。更新
部50は、複数のプロセッサを含み、更新部50の複数のプロセッサのそれぞれは、第1
ベクトルの一部の要素および第2ベクトルの一部の要素を更新するように構成されていて
もよい。
【0097】
図21は、マルチプロセッサ構成の例を概略的に示している。
図21の複数の計算ノー
ドは、例えば、情報処理システム100の複数の計算サーバに相当する。また、
図21の
高速リンクは、例えば、情報処理システム100のケーブル4a~4cおよびスイッチ5
によって形成された計算サーバ間のインターコネクトに相当する。
図21の共有メモリは
、例えば、共有メモリ32に相当する。
図21のプロセッサは、例えば、各計算サーバの
プロセッサ33A~33Dに相当している。なお、
図21には複数の計算ノードが示され
ているが、単一計算ノードの構成を用いることを妨げるものではない。
【0098】
図21には、各構成要素に配置されるデータおよび構成要素間で転送されるデータが示
されている。各プロセッサでは、変数x
i、(s
i)、y
i、z
iの値が計算される。ま
た、プロセッサと共有メモリ間では、変数x
iまたはs
iが転送される。各計算ノードの
共有メモリには、例えば、第1ベクトル(x
1,x
2,・・・,x
N)、第2ベクトル(
y
1,y
2,・・・,y
N)のL個の変数、およびテンソルJ(n)の一部が保存される
。なお、式(10)のアルゴリズムを実行する場合、各計算ノードの共有メモリには、第
1ベクトル(x
1,x
2,・・・,x
N)に代わって第4ベクトル(s
1,s
2,・・・
,s
N)が保存されていてもよい。そして、計算ノード間を接続する高速リンクでは、例
えば、第1ベクトル(x
1,x
2,・・・,x
N)が転送される。Allgather関
数を使った場合、各プロセッサで変数y
iおよびz
iを更新するために、第1ベクトル(
x
1,x
2,・・・,x
N)の全要素が必要だからである。なお、式(10)のアルゴリ
ズムにしたがって変数z
iを更新する場合には、各プロセッサは第4ベクトル(s
1,s
2,・・・,s
N)の全要素にアクセスする必要がある。このため、高速リンクでは、第
4ベクトル(s
1,s
2,・・・,s
N)が転送されてもよい。
【0099】
ただし、
図21に示したデータの配置および転送は一例にしかすぎない。例えば、各プ
ロセッサが積和演算を含む{z
m|m=(j-1)L+1,(j-1)L+2,・・・,
jL}の計算を並列的に実行しているのであれば、それぞれのプロセッサと共有メモリ間
および計算ノード間で変数z
iの値を転送し、共有されたベクトル(z
1,z
2,・・・
,z
N)を参照し、変数y
iの値を計算してもよい。このように、PCクラスタにおける
データの配置方法、転送方法および並列化の実現方法については、特に問わない。
【0100】
すなわち、情報処理装置(例えば、計算サーバ)は、複数のプロセッサからアクセス可
能に構成されている共有メモリを備えていてもよい。この場合、更新部50は、更新され
た後の第1ベクトルの要素または、更新された後の第1ベクトルのそれぞれの要素を2値
変数に変換した第4ベクトルを共有メモリに保存することができる。
【0101】
次に、PCクラスタに上述の各アルゴリズムを実行させたときにおける結果について説
明する。
図23は、PCクラスタを使ってN=3600の(局所磁場のない)全結合イジ
ング問題を解いたときの結果を示している。
図23の全結合イジング問題では、結合係数
の行列Jの各成分の値は、[-1,1]の範囲の一様乱数に設定した。また、合計時間ス
テップ数は、10000とした。
図23上側の棒グラフは、各アルゴリズムを使って10
回全結合イジング問題を解いたときにおけるエネルギーE
Isingの平均値を示してい
る。
図23下側の棒グラフは、各アルゴリズムを使って10回全結合イジング問題を解い
たときにおける計算時間の平均値を秒単位で示している。
【0102】
図23上側および
図23下側の棒グラフには、左側から右側に向かって、
(i) 式(8)のアルゴリズムが使われた場合、
(ii) 式(9)のアルゴリズムが使われた場合、
(iii) 式(10)のアルゴリズムが使われた場合、
(iv) 式(11)のアルゴリズムが使われた場合、
(v) 式(9)のアルゴリズムにおいて、係数cの代わりに近似値c1が使われ
た場合、
(vi) 式(10)のアルゴリズムにおいて、係数cの代わりに近似値c1が使わ
れた場合、
(vii) 式(10)のアルゴリズムにおいて、係数cの代わりに近似値c2が使わ
れた場合、
(viii) 式(9)のアルゴリズムにおいて、係数cの代わりに近似値c1を式(1
6)の規則に基づき変換した値(第4係数)が使われた場合、
(ix) 式(10)のアルゴリズムにおいて、係数cの代わりに近似値c1を式(
16)の規則に基づき変換した値(第4係数)が使われた場合、
(x) 式(10)のアルゴリズムにおいて、係数cの代わりに近似値c2を式(
16)の規則に基づき変換した値が使われた場合の10のケースの結果が示されている。
【0103】
また、
図23上側および
図23下側の棒グラフには、各ケースのそれぞれについて、左
側から右側に向かって、プロセッサ数Qが1、36、72の場合における結果が示されて
いる。なお、プロセッサ数Qが1または36の場合、PCクラスタの計算ノード数は1で
あった。また、プロセッサ数Qが72の場合、PCクラスタの計算ノード数は2であった
。式(8)のアルゴリズムが使われた場合、式(9)のアルゴリズムが使われた場合、式
(10)のアルゴリズムが使われた場合において、係数cとして定数0.5D√(3/N
)を用いた。また、近似値c1またはc2を式(16)の規則に基づき変換した場合にお
いては、γ=0.1に設定した。
【0104】
図23上側の棒グラフを参照すると、(ii)~(x)のケースでは、(i)のケース
と比べ、エネルギーE
Isingの平均値が低くなっており、最適解により近い解が得ら
れやすいことがわかる。また、
図23下側の棒グラフを参照すると、マルチプロセッサ構
成による並列計算を行うことにより、計算時間が著しく短縮されることがわかる。
【0105】
(GPUへの実装例)
GPU(Graphics Processing Unit)を使って上述の各アル
ゴリズムの計算を行ってもよい。
図24は、GPUを使った構成の例を概略的に示してい
る。
図24には、互いに高速リンクで接続された複数のGPUが示されている。それぞれ
のGPUには、共有メモリにアクセス可能な複数のコアが搭載されている。また、
図24
3の構成例では、複数のGPUが高速リンクを介して接続されており、GPUクラスタを
形成している。例えば、GPUが
図1のそれぞれの計算サーバに搭載されている場合、高
速リンクは、ケーブル4a~4cおよびスイッチ5によって形成された計算サーバ間のイ
ンターコネクトに相当する。なお、
図24の構成例では、複数のGPUが使われているが
、ひとつのGPUを使った場合にも、並列的な計算を実行することが可能である。すなわ
ち、
図24のそれぞれのGPUは、
図21のそれぞれの計算ノードに相当する計算を実行
できる。すなわち、情報処理装置(計算サーバ)のプロセッサは、Graphics P
rocessing Unit(GPU)のコアであってもよい。
【0106】
GPUにおいて、変数xiおよびyi、ならびにテンソルJ(n)はデバイス変数とし
て定義される。GPUは、変数yiの更新に必要なテンソルJ(n)と第1ベクトル(x
1,x2,・・・,xN)または第4ベクトル(s1,s2,・・・,sN)の積を、行
列ベクトル積関数によって並列的に計算することができる。なお、行列とベクトルの積演
算を繰り返し実行することにより、テンソルとベクトルの積を求めることができる。また
、第1ベクトル(x1,x2,・・・,xN)の計算と、第2ベクトル(y1,y2,・
・・,yN)のうち、積和演算以外の部分については、それぞれのスレッドにi番目の要
素(xi,yi)の更新処理を実行させ、処理の並列化を実現することができる。
【0107】
図24は、GPUを使ってN=3600の全結合イジング問題を解いたときの結果を示
している。
図24上側の棒グラフは、各アルゴリズムを使って10回全結合イジング問題
を解いたときにおけるエネルギーE
Isingの平均値を示している。
図24下側の棒グ
ラフは、各アルゴリズムを使って10回全結合イジング問題を解いたときにおける計算時
間の平均値を秒単位で示している。
【0108】
図24上側および
図24下側の棒グラフには、左側から右側に向かって、式(8)のア
ルゴリズムが使われた場合、式(9)のアルゴリズムが使われた場合、式(10)のアル
ゴリズムが使われた場合、式(11)のアルゴリズムが使われた場合の4つのケースにお
ける結果が示されている。式(8)のアルゴリズムが使われた場合、式(9)のアルゴリ
ズムが使われた場合、式(10)のアルゴリズムが使われた場合において、係数cとして
定数0.5D√(3/N)を用いた。いずれの結果においても合計時間ステップ数は、1
0000である。また、それぞれのアルゴリズムについて、左側が1計算ノードのPCク
ラスタ、右側が1GPUを用いたときの結果が示されている。
【0109】
図24上側の棒グラフを参照すると、式(9)~式(11)のアルゴリズムが使われた
場合には、式(8)のアルゴリズムが使われた場合と比べ、エネルギーE
Isingの平
均値が低くなっており、最適解により近い解が得られやすいことがわかる。また、
図24
下側の棒グラフを参照すると、GPUによる並列計算を行うことにより、1計算ノードの
PCクラスタと比べて計算時間を著しく短縮できることがわかる。これは、GPUの計算
の並列度が、一般的なCPUと比べて高いことに起因する。
【0110】
(処理フローの例)
図25および
図26は、情報処理システム100が実行する処理の例を示したフローチ
ャートである。以下では、
図25および
図26を参照しながら、処理を説明する。
【0111】
はじめに、更新部50は、定数係数に値を設定し、第1ベクトル、第2ベクトルおよび
第1係数pを初期化する(ステップS101)。ステップS101では、例えば、定数係
数D、Δtの値が設定される。係数cが定数係数である場合には、係数cの値を設定して
もよい。例えば、第1ベクトルおよび第2ベクトルの初期化では、それぞれの要素の値を
[-0.1,+0.1]の範囲の擬似乱数に設定することができる。例えば、第1係数p
の初期値として、0を使うことができる。なお、第3ベクトルの要素の値の計算で用いら
れる係数αが定数係数でない場合には、ステップS101で係数αを初期化してもよい。
例えば、係数αの初期値として、0を使うことができる。なお、ステップS101では、
テンソルJ(n)の要素の値が設定されてもよい。テンソルJ(n)の要素の値は、例え
ば、組合せ最適化問題を各計算サーバが処理可能な形式に変換する際に得られる。なお、
上述では、係数pとαを更新回数に応じて単調増加させるアルゴリズムについて説明した
。ただし、代わりに係数pとαを更新回数に応じて単調減少させるアルゴリズムを使って
もよい。
【0112】
次に、更新部50は、第1ベクトルの要素の値に第2ベクトルの対応する要素に重み付
けした値を加算し、第1ベクトルの要素の値を更新する(ステップS102)。例えば、
ステップS102では、上述の式(9)~(11)に示したxiの式に基づいて第1ベク
トルの要素の値を更新することができる。
【0113】
そして、更新部50は、第1ベクトルの要素のうち、値が-1より小さい要素の値を-
1に設定する(ステップS103)。また、更新部50は、第1ベクトルの要素のうち、
値が+1より小さい要素の値を+1に設定する(ステップS104)。ステップS103
、ステップS104の処理は同時に行われてもよい。また、ステップS103の処理がス
テップS104の処理の後に実行されてもよい。
【0114】
図25には示されていないものの、ステップS103およびステップS104のタイミ
ングで、更新部50は、絶対値が1より大きい第1ベクトルの要素に対応する第2ベクト
ルの要素を、もとの第2ベクトルの要素に、-1より大きく0以下の第2係数rを乗じた
値に更新してもよい。ステップS103およびステップS104のタイミングで、更新部
50は、絶対値が1より大きい第1ベクトルの要素に対応する第2ベクトルの要素を、絶
対値が1より小さい擬似乱数に置き換えてもよい。
【0115】
次に、積和演算部51は、第3ベクトルのそれぞれの要素の値を更新する(ステップS
105)。第3ベクトルの要素は、例えば、上述の式(9)~(11)に示したziの式
(基本式)に基づいて計算することができる。式(10)のアルゴリズムに基づき、zi
の式の変数として、第1ベクトルの要素の値を第1関数(例えば、符号関数)で変換した
値を使うことによって第3ベクトルのそれぞれの要素の値を更新してもよい。この場合、
ステップS105では、ステップS102で更新された第1ベクトルを2値変数に変換し
た第4ベクトル(s1,s2,・・・,sN)を使って第3ベクトルの要素の値を計算す
る。
【0116】
そして、更新部50は、第1係数pの値を増やす(ステップS106)。例えば、ステ
ップS106では、第1係数pに一定の値を加算してもよい。これにより、第1係数pの
値を更新回数に応じて単調増加させることができる。なお、係数αが定数係数でない場合
には、ステップS106で係数αに一定の値を加算してもよい。なお、ステップS106
のタイミングに、式(13)~(15)の方法で第3係数を更新してもよい。また、式(
16)の方法で第3係数を変換した第4係数を計算してもよい。
【0117】
次に、更新部50は、第2ベクトルの要素の値に第1係数pと第1ベクトルの対応する
要素の値との積を重み付けした値ならびに、第3ベクトルの対応する要素を重み付けした
値を加算し、第2ベクトルの要素の値を更新する(ステップS107)。例えば、ステッ
プS107では上述の式(9)~(11)に示したyiの式に基づいて、第2ベクトルの
要素の値を更新することができる。第2ベクトルの要素の値の更新では、定数係数c、第
3係数、第4係数のいずれかを使って第3ベクトルの対応する要素を重み付けすることが
できる。
【0118】
次に、更新部50は、第1~第3ベクトルの更新回数または第1係数pの値がしきい値
より大きいか否かを判定する(ステップS108)。ステップS108の判定で用いられ
るしきい値については、特に限定しない。ステップS108の判定の結果に応じて、実行
される処理が分岐する。ステップS108の判定の結果が肯定的である場合(ステップS
108のYES)、処理はステップS109に進む。ステップS109では、更新部50
が正値である第1ベクトルの要素の値を+1に変換し、負値である第1ベクトルの要素の
値を-1に変換し、イジングモデルのスピンの値が求められる。なお、ステップS109
の処理は、管理サーバなど、計算サーバ以外の情報処理装置によって実行されてもよい。
この場合、第1ベクトルが計算サーバから管理サーバに送信される。また、ステップS1
08の判定の結果が否定的である場合(ステップS108のNO)、ステップS102以
降の処理が再び実行される。
【0119】
図25および
図26に示したフローチャートは、情報処理システム100が実行する処
理の一例にしかすぎない。ステップS102~ステップS107の処理が実行される順序
は、上述と異なっていてもよい。例えば、後述の電子回路への実施例では、
図25および
図26に示したフローチャートとは異なる順序でステップS102~ステップS107の
処理が実行される。また、ステップS101~ステップS109の少なくともいずれかの
処理は、複数のプロセッサ、情報処理装置(コンピュータ)または、電子回路によって並
列的に実行されてもよい。ただし、第3ベクトルの要素(変数z
i)を更新するときに、
最新の更新回における第1ベクトル(x
1,x
2,・・・,x
N)または第4ベクトル(
s
1,s
2,・・・,s
N)の全要素の値を参照できるよう、情報処理システム、情報処
理装置(コンピュータ)または、電子回路を実装する必要がある。
【0120】
計算されたイジングモデルのスピンの値は、ディスプレイに表示されてもよい。また、
管理サーバ1の変換部12は、スピンの値を組み合わせ最適化問題の解に変換してもよい
。この場合、管理サーバ1の管理部11は、組合せ最適化問題の解を情報端末6のディス
プレイに表示させることができる。
【0121】
プログラムを使ってシミュレーテッド分岐アルゴリズムを実装してもよい。この場合、
目的関数を、すべての項に含まれる変数について偏微分した形式の基本式に基づく計算を
コンピュータに実行させるプログラムを実装することができる。当該プログラムは、変数
が第1ベクトルの要素または、第1ベクトルの要素を第1値もしくは第1値より大きい第
2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素である、基本式に基づ
き、第3ベクトルのそれぞれの要素を更新するステップと、第1ベクトルの要素に、第2
ベクトルの対応する要素、または、第2ベクトルの対応する要素に重み付けした値を加算
することによって第1ベクトルの要素を更新するステップと、値が第1値より小さい第1
ベクトルの要素を第1値に設定するステップと、値が第2値より大きい第1ベクトルの要
素を第2値に設定するステップと、第2ベクトルの要素に、更新回数に応じて単調増加ま
たは単調減少する第1係数と第1ベクトルの対応する要素との積を重み付けした値ならび
に、第3ベクトルの対応する要素を重み付けした値を加算することによって第2ベクトル
の要素を更新するステップとを含んでいてもよい。プログラムは、例えば、計算サーバの
ストレージ34に保存される。そして、計算サーバは、プログラムを実行することにより
、上述の情報処理装置の機能を提供する。
【0122】
また、コンピュータは、下記の情報処理方法によってシミュレーテッド分岐アルゴリズ
ムを実行することができる。情報処理方法は、目的関数を、すべての項に含まれる変数に
ついて偏微分した形式の基本式に基づく計算をコンピュータに実行させるものであっても
よい。当該情報処理方法は、変数が第1ベクトルの要素または、第1ベクトルの要素を第
1値もしくは第1値より大きい第2値のいずれかの値をとる第1関数で変換した第4ベク
トルの要素である、基本式に基づき、第3ベクトルのそれぞれの要素を更新するステップ
と、第1ベクトルの要素に、第2ベクトルの対応する要素、または、第2ベクトルの対応
する要素に重み付けした値を加算することによって第1ベクトルの要素を更新するステッ
プと、値が第1値より小さい第1ベクトルの要素を第1値に設定するステップと、値が第
2値より大きい第1ベクトルの要素を第2値に設定するステップと、第2ベクトルの要素
に、更新回数に応じて単調増加または単調減少する第1係数と第1ベクトルの対応する要
素との積を重み付けした値ならびに、第3ベクトルの対応する要素を重み付けした値を加
算することによって第2ベクトルの要素を更新するステップをコンピュータに実行させる
ものであってもよい。コンピュータとして、例えば、上述の計算サーバを使うことができ
る。
【0123】
(電子回路への実装例)
上述のように、ソフトウェアを使うことによってシミュレーテッド分岐アルゴリズムを
実行する情報処理装置を実現することができる。ただし、上述の各アルゴリズムの少なく
とも一部を電子回路に実装し、処理速度の大幅な向上させてもよい。以下では、シミュレ
ーテッド分岐アルゴリズムを電子回路に実装した例について説明する。電子回路の例とし
ては、FPGA(Field-Programmable Gate Array)があ
る。ただし、電子回路は、ASIC(Application Specific In
tegrated Circuit)などその他の種類のものであってもよい。
【0124】
図27は、電子回路に実装されるアルゴリズムの一例を示している。
図27は、上述の
式(10)のアルゴリズムの擬似的なコードに相当する。以下では、主に電子回路に式(
10)のアルゴリズムを実装した場合を例に、説明をする。ただし、電子回路に、式(9
)、式(11)など、上述で説明したその他のアルゴリズムを実装してもよい。
図27(
a)は、それぞれの変数x
i、y
i、s
i(i=1,2,・・・,N)を更新する処理(
すなわち、時刻“t”の変数を時刻“t+Δt”の変数にする処理)を示している。それ
ぞれの種類の変数はN個あるため、
図27(a)では、それぞれの種類の変数について更
新の処理がN回実行されている(ループ37、38)。
図27(a)のループ37から関
数JS()が呼び出されている。関数JS()は、
図27(b)に定義されており、J行
列の行iおよびベクトル(s
1,s
2,・・・,s
N)を引数としている。また、
図27
(a)のループ38から関数TE()が呼び出されている。関数TE()は、
図27(c
)に定義されている。また、関数TE()からは、
図27(d)に定義されている関数F
X()およびFY()が呼び出されている。なお、並列処理に対応した電子回路を使う場
合、
図27のループ(for文)の少なくとも一部を、並列的な処理に置き換えて実装す
ることができる。
【0125】
図27は、壁と複数の粒子i(i=1,2,・・・,N)とを含む力学系の状態を計算
するアルゴリズムと見なすことができる。以下では、粒子iの運動状態との対応を示しな
がら、アルゴリズムの各ステップで実行される処理を説明する。
図27のアルゴリズムは
、行列ベクトル積を計算する部分(MMパート)と、時間発展(Time-evolut
ion)に相当する計算を行う部分(TEパート)とを含む。
【0126】
MMパートでは、それぞれの粒子iについて、他の粒子との相互作用によって生ずる運
動量yiの変更量(Δyi)が計算される。TEパートは、それぞれの粒子iの位置xi
および運動量yiを更新する。粒子の位置および運動量の更新処理は、時間ステップΔt
の時間発展の計算処理に相当するといえる。
【0127】
TEパートでは、粒子iの運動量yiにΔyiを加算した後、外場(external
field)hiの影響を受けた後の運動量yiを計算する。そして、粒子iの運動量
yiに当該粒子の位置xiに依存する量δyi=FX(xi)を加算する。次に、粒子i
の位置xiに当該粒子の運動量yiに依存する量δxi=FY(yi)を加算する。さら
に、粒子iが完全非弾性衝突壁(x=±1.0)に衝突したか否かを判定し、衝突があっ
た場合には粒子iの位置xiを壁の位置に配置する処理が実行される。この処理は、電子
回路では、例えば、
図32のコンパレータcomp1およびマルチプレクサMUX1によ
って実装される。そして、粒子iが完全非弾性衝突壁(x=±1.0)に衝突した場合に
は、運動量yiを0.0に設定する処理が実行される。この処理は、例えば、電子回路で
は、
図32のコンパレータcomp2およびマルチプレクサMUX2によって実装される
。TEパートの最後に、粒子iの位置xiを二値化する処理が実行される。この処理は、
電子回路では、例えば、
図32のコンパレータcomp3およびマルチプレクサMUX3
によって実装される。
【0128】
図27のアルゴリズムを参照すると、N個の粒子に係る変数(例えば、位置および運動
量)を並列的に計算できれば、全般的な処理速度の高速が可能であることがわかる。ただ
し、アルゴリズムの実装を行う際には、他の粒子から独立して変数を計算でき、処理の並
列化が容易である部分と、他の粒子の変数との依存関係があるため、処理の並列化におい
て制約となりうる部分との違いを考慮する必要がある。
【0129】
図27のアルゴリズムの計算複雑性(computational complexi
ty)について考察する。TEパートの計算複雑性はO(N)である。一方、MMパート
の計算複雑性はO(N
2)となっている。TEパートは、逐次的な処理が必要であるもの
の、それぞれの粒子について独立した計算が可能である。このため、TEパートでは、処
理のパイプライン化または時間並列化の手法による処理の高速化が可能である。MMパー
トの処理は、並列的な処理要素(PE:Processing element)と、デ
ータの供給を行うためのメモリサブシステムを使うことにより、処理時間を短縮すること
ができる。
【0130】
以下では、複数のTEパイプライン回路を使うことによって、MMパートの処理とTE
パートの処理を時間領域においてオーバーラップさせ、処理のさらなる高速化を実現する
構成について説明する。
図27のアルゴリズムを参照すると、第4ベクトル(s
1,s
2
,・・・,s
N)を更新するためには、MMパートの処理が行われ、すべてのi(i=1
,2,・・・,N)についてΔyiの値が算出されている必要があることがわかる。すな
わち、
図27のアルゴリズムでは、第4ベクトル(s
1,s
2,・・・,s
N)について
、データ依存性がある。当該データ依存性は、MMパートの処理とTEパートの処理の時
間領域におけるオーバーラップ化を妨げる。データ依存性の問題を解決するために、第4
ベクトル(s
1,s
2,・・・,s
N)の要素の値をダブルバッファ構成のメモリ(メモ
リSmemとよぶ)に保存することができる。
【0131】
図28は、電子回路の構成例を示したブロック図である。
図28の電子回路200は、
図27のアルゴリズムに示したループ処理を実行できるよう、データが回路内の各構成要
素を循環できる構成となっている。電子回路200では、上述のN個の粒子をPb個のグ
ループに分割し、それぞれの粒子に係る変数の更新処理が実行されるものとする(
図29
参照)。電子回路200は、少なくともPb個の回路ブロックMMTE(MMTE
1~M
MTE
Pb)を備えている。回路ブロックMMTEは、各グループに属するNb個(Nb
=N/Pb)の粒子について、MMパートの処理と、TEパートの処理とを実行する。ま
た、それぞれの回路ブロックMMTEは、メモリSmemに接続されている。
【0132】
メモリSmemは、それぞれの回路ブロックMMTE1~MMTEPbからグローバル
にアクセス可能な記憶領域を提供する。メモリSmemは、例えば、揮発性メモリ、不揮
発性メモリまたはこれらの組合せによって構成されている。ただし、メモリSmemで使
われるメモリの種類については特に問わない。それぞれの回路ブロックMMTEは、メモ
リSmemへのデータの書き込みと、メモリSmemからのデータ読み出しを並行して行
えるように構成されていてもよい。メモリSmemは、Pb個の領域SB1,SB2,・
・・,SBPbを含んでいる。また、メモリSmemのそれぞれの領域は、evenバッ
ファと、oddバッファとを含むダブルバッファ構成となっている。evenバッファお
よびoddバッファは、第1の動作と第2の動作を交互に実行する。それぞれの期間にお
いて、evenバッファと、oddバッファで異なる動作を実行することが可能である。
すなわち、一方のバッファが第1の動作を実行している期間において、他方のバッファは
第2の動作を実行することができる。第1の動作において、バッファは、第4ベクトル(
s1,s2,・・・,sN)を回路ブロックMMTE1~MMTEPbにブロードキャス
トする。第2の動作において、バッファは、回路ブロックMMTE1~MMTEPbから
受信した更新後の変数siを記憶領域に保存する。ここで、バッファは、evenバッフ
ァまたはoddバッファのいずれかを示すものとする。
【0133】
このように、電子回路の第1メモリ(メモリSmem)は、第1領域と第2領域とをそ
れぞれPb個ずつ有していてもよい。第1領域および第2領域は、第1領域からPb個の
第1回路(回路ブロックMMk)に第4ベクトルの要素がブロードキャストされている期
間に、第2領域に第2回路(回路ブロックTEk)から入力された更新後の第4ベクトル
の要素が保存され、第2領域からPb個の第1回路に第4ベクトルの要素がブロードキャ
ストされている期間に、第1領域に第2回路から入力された更新後の第4ベクトルの要素
が保存されるように構成されていてもよい。
【0134】
回路ブロックMMTE
k(k=1,2,・・・,Pb)は、回路ブロックMM
kと、回
路ブロックTE
kと、メモリX
Bkと、メモリY
Bkと、メモリH
Bkと、メモリJ
Bk
とを備える。メモリX
Bkには、Nb個の変数x
iが格納される。メモリY
Bkには、N
b個の変数y
iが格納される。メモリH
Bkには、Nb個のh
iの値が格納される。また
、メモリJ
Bkには、J行列のNb×N個の要素が格納される。回路ブロックMM
kは、
メモリSmemとメモリJ
Bkに接続されている。回路ブロックMM
kは、メモリSme
mから受信した第4ベクトル(s
1,s
2,・・・,s
N)と、メモリJ
Bkから読み出
したJ行列のNb×N個の要素を用いて、下記の式(18)の積和(MAC:multi
ply-accumulate)演算を実行し、Δy
iを出力する。
【数18】
【0135】
回路ブロックTEkは、メモリXBkと、メモリYBkと、メモリHBkと、メモリS
memと、回路ブロックMMkに接続されている。回路ブロックTEkは、メモリXBk
から読み出した変数xiの値と、メモリYBkから読み出した変数yiの値と、メモリH
Bkから読み出したhiの値と、回路ブロックMMkから出力されたΔyiの値を用いて
、TEパートの処理をパイプライン方式で実行する。そして、回路ブロックTEkは、更
新後の変数xi、yi、siを出力する。また、回路ブロックTEkは、更新後の変数x
i、yi、siをそれぞれメモリXBk、YBkおよびメモリSmemの領域SBkに書
き出す。回路ブロックTEkの実行する処理により、それぞれのメモリには、変数の更新
後の値が格納される。
【0136】
電子回路は、第1回路(回路ブロックMM)と、第2回路(回路ブロックTE)とを備
えていてもよい。例えば、第1回路は、目的関数を、すべての項に含まれる変数について
偏微分した形式の基本式に基づき、第3ベクトルのそれぞれの要素を更新するように構成
されている。ここで、基本式の変数は、例えば、第1ベクトルの要素、または、第1ベク
トルの要素を第1値もしくは第1値より大きい第2値のいずれかの値をとる第1関数で変
換した第4ベクトルの要素である。第2回路は、第1ベクトルの要素に、第2ベクトルの
対応する要素、または、第2ベクトルの対応する要素に重み付けした値を加算することに
よって第1ベクトルの要素を更新し、値が第1値より小さい第1ベクトルの要素を第1値
に設定し、値が第2値より大きい第1ベクトルの要素を第2値に設定し、第2ベクトルの
要素に、更新回数に応じて単調増加または単調減少する第1係数と第1ベクトルの対応す
る要素との積を重み付けした値、ならびに、第3ベクトルの対応する要素を重み付けした
値を加算することによって第2ベクトルの要素を更新するように構成されていてもよい。
ここでは、主に、複数(Pb個)の第1回路と、Pb個の第2回路を備えた電子回路を例
に説明する。ただし、電子回路は、少なくともひとつの第1回路と、少なくともひとつの
第2回路とを備えていてもよい。
【0137】
第2回路は、値が第1値と第2値の間にある第3値より小さい第1ベクトルの要素を第
1値に変換し、値が第3値より大きい第1ベクトルの要素を第2値に変換することによっ
て、目的関数の解を求めるように構成されていてもよい。また、第2回路は、第1ベクト
ル、第2ベクトル、第3ベクトルの更新回数または第1係数の値がしきい値より大きくな
ったときに目的関数の解を求めるように構成されていてもよい。さらに、第2回路は、値
が第1値より小さい第1ベクトルの要素に対応する第2ベクトルの要素、または、第2値
より大きい第1ベクトルの要素に対応する第2ベクトルの要素を、もとの第2ベクトルの
要素に、第2係数を乗じた値に更新するように構成されていてもよい。代わりに、第2回
路は、値が第1値より小さい第1ベクトルの要素に対応する第2ベクトルの要素の値、ま
たは、値が第2値より大きい第1ベクトルの要素に対応する第2ベクトルの要素の値を、
擬似乱数に設定するように構成されていてもよい。
【0138】
第1回路は、第1ベクトルの要素を変数として計算した基本式の値を第1関数で変換し
た値に基づいて第3ベクトルのそれぞれの要素を更新するように構成されていてもよい。
また、第1回路は、第1係数をパラメータとする第2関数を乗じることによって第3ベク
トルのそれぞれの要素を更新するように構成されていてもよい。
【0139】
電子回路は、さらに、第1回路の入力側と、第2回路の出力側に接続され、第4ベクト
ルまたは第1ベクトルを格納するように構成された第1メモリを備えていてもよい。ここ
で、第1回路の出力側は、第2回路の入力側に接続されていてもよい。
【0140】
また、電子回路は、第1メモリ(メモリSmem)と、Pb個(Pbは2以上の整数)
の第1回路(回路ブロックMMk)と、Pb個の第2回路(回路ブロックTEk)とを備
えていてもよい。この場合、Pb個の第1回路は、それぞれが入力側で第1メモリに接続
されている。Pb個の第2回路は、それぞれが入力側でいずれかの第1回路に接続されて
おり、それぞれが出力側で第1メモリに接続されている。
【0141】
それぞれの第1回路(回路ブロックMM
k)は、例えば、
図29に示されているように
、N×N次元の結合係数行列をPb個に分割したN/Pb×Pc次元の第1行列のいずれ
かと、第4ベクトル(s
1,s
2,・・・,s
N)をPb個に分割した第5ベクトルのい
ずれかとの積である第3ベクトルの要素Δy
iを計算するように構成されている。また、
それぞれの第2回路(回路ブロックTE
k)は、いずれかの第1回路が計算した第3ベク
トルの要素Δy
iに基づき、第1ベクトルのN/Pb個の要素および第2ベクトルのN/
Pb個の要素および第4ベクトルのN/Pb個の要素を更新し、更新した第4ベクトルの
N/Pb個の要素を第1メモリに保存するように構成されていてもよい。なお、それぞれ
の第1回路は、上述の第3ベクトルの要素Δy
iの計算を複数回に分けて実行してもよい
。例えば、それぞれの第1回路は、N/Pb×Pc次元の第1行列を、Pr×Pc次元の
複数の第2行列(Jサブ行列)に、第5ベクトルを要素数Pcの複数の第6ベクトル(s
サブベクトル)にそれぞれ分割してもよい。そして、それぞれの第1回路は、それぞれの
Pr×Pc次元の第2行列と、対応する要素数Pcの第6ベクトルとの積演算を順次実行
することにより、第3ベクトルの要素を計算するように構成されていてもよい。また、そ
れぞれの第2回路は、値が第1値より小さい第1ベクトルの要素を第1値に設定し、値が
第2値より大きい第1ベクトルの要素を第2値に設定するように構成されていてもよい。
【0142】
すなわち、電子回路の実装例における、第1回路(回路ブロックMMk)は、上述の積
和演算部に相当する処理を実行する。また、第1回路(回路ブロックMMk)は、上述の
更新部に相当する処理を実行する。
【0143】
電子回路は、さらにPb個の第2メモリ(メモリXBk)と、Pb個の第3メモリ(メ
モリJBk)と、Pb個の第4メモリ(メモリYBk)と、Pb個の第5メモリ(メモリ
HBk)とを備えていてもよい。それぞれの第2メモリは、第1ベクトルのNb=N/P
b個の要素を格納するように構成されている。それぞれの第3メモリは、いずれかの第1
行列を格納するように構成されている。それぞれの第4メモリは、第2ベクトルのN/P
b個の要素を格納するように構成されている。それぞれの第5メモリは、第6ベクトルの
N/Pb個の要素を格納するように構成されている。
【0144】
それぞれの第2メモリは、いずれかの第2回路(回路ブロックTEk)の入力側および
出力側に接続されている。それぞれの第3メモリは、いずれかの第1回路(回路ブロック
MMk)の入力側に接続されている。それぞれの第4メモリは、いずれかの第2回路の入
力側および出力側に接続されている。それぞれの第5メモリは、いずれかの第2回路の入
力側に接続されている。
【0145】
図30は、複数の並列化手法の例を示している。
図30のタイムチャートには、(a)
~(d)の複数のケースが示されている。
図30のタイムチャートの横軸は時刻を示して
いる。時刻は、クロックサイクル数および実行ステップ数に対応している。(a)のケー
スは、プロセッサ上で逐次的な処理が行われる場合を示している。(a)のケースにおい
て、MMパートを実行するためには、処理ステップあたりN×Nクロックサイクルが必要
である。一方、(a)のケースにおいて、TEパートを実行するためには、処理ステップ
あたりN×λ
TEクロックサイクルが必要である。ここで、λ
TEは、TEパートにおい
てそれぞれの粒子iについて必要なクロックサイクル数を意味するものとする。
【0146】
(b)のケースには、レベルIの並列化の例が示されている。レベルIの並列化では、
積和演算において、Pr個の行と、Pc個の列を対象とした演算を並列的に実行する回路
ブロックMM
kと、パイプラインによって処理を実行する回路ブロックTE
kとが用いら
れる。
図29に示されているように、回路ブロックMM
kは、Pr×Pc次元のJサブ行
列と、要素数Pcのsサブベクトルの積の演算をそれぞれのクロックサイクルにおいて実
行する。そして、この積の演算を開始してからN/Pcクロックサイクル経過したら、要
素数PrのΔyサブベクトルを出力する。それぞれのΔyサブベクトルが出力されるまで
に実行される、N/Pcクロックサイクルの処理を1フェーズの処理とよぶものとする。
そして、すべてのΔy
i(i=1,2,・・・,N)の値が求められるまで、N/Prフ
ェーズの処理を繰り返し実行する。これより、(b)のケースでは、(a)のケースと比
べてMMパートの処理速度がPr×Pc倍となっていることがわかる。ここで、サブ行列
は、アルゴリズムが計算対象としている行列の一部であることを意味している。同様に、
サブベクトルは、アルゴリズムが計算対象としているベクトルの一部であることを意味し
ている。
【0147】
一方、(b)のケースにおいて、回路ブロックTEkは、それぞれのクロックサイクル
で入力されたxi、yi、hi、Δyiの値に基づき、計算を行う。そして、回路ブロッ
クTEkは、パイプラインレイテンシ(λp)の後、更新されたxi、yi、hi、Δy
iの値を出力する。回路ブロックTEkは、TEパートの処理を1回あたりN+λpクロ
ックサイクルで実行する。(b)のケースにおいて、TEパートの処理速度は、(a)の
ケースと比べて約λTE倍となっている。
【0148】
(c)のケースには、レベルIIの並列化の例が示されている。レベルIIの並列化で
は、回路ブロックMMkによる処理と、回路ブロックTEkによる処理とが並列的に実行
される。第1のフェーズで回路ブロックMMkが要素数PrのΔyサブベクトルを計算し
た後、第2のフェーズで回路ブロックTEkは、TEパートのうち、その要素数PrのΔ
yサブベクトルを使って計算可能な変数si、xi、yiの更新後の値を計算する。第2
のフェーズでは、回路ブロックTEkによる変数の計算に並行し、回路ブロックMMkが
次のΔyサブベクトル(要素数Pr)を計算する。レベルIIの並列化を行う場合、N/
Pr+1個のフェーズの処理を実行することが必要となる。また、レベルIIの並列化が
行われた場合、回路ブロックTEkは、最初のフェーズでアイドル状態となる。また、回
路ブロックMMkは、最後のフェーズでアイドル状態となる。
【0149】
(d)のケースには、レベルIIIの並列化の例が示されている。レベルIIIの並列
化を行いたい場合、電子回路において、回路ブロックMM
kと回路ブロックTE
kのペア
(回路ブロックMMTE
k)をPb個用意する必要がある(例えば、
図28の電子回路2
00)。処理ステップあたりのクロックサイクル数は、N
cyc_step=(N/Pc
)×(N/Pr/Pb+1)+λとなる。ここで、λは、処理ステップのレイテンシであ
る。電子回路200では、最後の繰り返し処理において、最新のベクトル(s
1,s
2,
・・・,s
N)がメモリSmemに格納されたことを保証するため、λクロックサイクル
待機する必要がある。
図30の(a)~(d)のケースを比較すると、レベルIIIの並
列化を採用すると、最も短縮されていることがわかる。
【0150】
すなわち、電子回路は、第2回路(回路ブロックTEk)が第3ベクトルの要素Δyi
に基づき、第1ベクトルのN/Pb個の要素または第2ベクトルのN/Pb個の要素また
は第4ベクトルのN/Pb個の要素の少なくともいずれかを計算しているときに、第1回
路(回路ブロックMMk)が、第2回路によって第1ベクトルのN/Pb個の要素または
第2ベクトルのN/Pb個の要素または第4ベクトルのN/Pb個の要素が次回計算され
るときに使われる第3ベクトルの要素を計算するように構成されていてもよい。
【0151】
ここまでは、電子回路200の概要について説明した。次に、回路ブロックの詳細な構
成について述べる。
【0152】
図31は、回路ブロックMM
kの構成例を示している。回路ブロックMM
kは、Pr個
の回路ブロックMACと、バッファΔYbufとを備えている。必要に応じ、Pr個の回
路ブロックMACを含む回路ブロックを回路ブロックJSkとよぶものとする。Pr個の
回路ブロックMACの出力は、バッファΔYbufに入力される。回路ブロックMACは
、それぞれのクロックサイクルにおいてメモリSmemのいずれかの領域S
Bk(k=1
,2,・・・,Pb)より要素数Pcのsサブベクトルを読み出す。sサブベクトルのP
c個の要素の並列的な読み出しを実現するため、メモリSmemのそれぞれの領域S
Bk
(k=1,2,・・・,Pb)は、さらにPc個のサブ領域に分けられる。Pc個のサブ
領域は、それぞれ対応するreadポートを備えている。また、メモリSmemのそれぞ
れの領域S
Bk(k=1,2,・・・,Pb)は、Pr個の回路ブロックMACにそれぞ
れ接続されている。これらの接続(配線)により、それぞれの領域S
Bk(k=1,2,
・・・,Pb)から読み出されたsサブベクトルのPc個の要素の値を、Pr個の回路ブ
ロックMACにブロードキャストすることができる。なお、
図31では、作図の都合上、
領域S
B1以外の領域からPr個の回路ブロックMACへの接続(配線)が示されていな
い。
【0153】
Pr個の回路ブロックMACを含む回路ブロックJSkは、全体としてメモリJBkか
らPr×Pc次元のJサブ行列を読み出す。メモリJBkは、Pc個の領域に分けられて
いる。メモリJBkのPc個の領域は、それぞれ対応するreadポートを備えている。
それぞれのreadポートは、Pr個の回路ブロックMACのそれぞれに接続されている
。Pc個の領域のそれぞれは、1ワードあたりPr個のJ行列の要素Jijの値を格納し
ている。それぞれのクロックサイクルにおいて、メモリJBkからは、要素Jijの値が
Pc個読み出される。メモリJBkの各領域に対応するreadポートでは、データのp
oint-to-point通信が行われるため、各ワードに格納されたPr個の要素J
ijは、それぞれ異なる回路ブロックMACに転送される。このような構成を採用するこ
とにより、メモリJBkの記憶領域およびreadポートを含むアクセスポートを効率的
に利用することができる。
【0154】
Pr個の回路ブロックMACは、上述の式(18)の積和演算を実行し、N/Pcクロ
ックサイクルごとに(それぞれのフェーズの最終クロックサイクルに)、並列的にPr個
のΔy
iの値をバッファΔYbufに出力する。そして、バッファΔYbufは、入力さ
れたPr個のΔy
iの値を次のフェーズにおいて、逐次(シーケンシャルに)出力する。
すなわち、バッファΔYbufは、parallel-input/sequentia
l-output bufferの一種であるといえる。
図28の電子回路200は、合
計でPb×Pr×Pc個のMAC演算回路が含まれている。それぞれのMAC演算回路は
、メモリJ
Bkのいずれかの領域に対応するreadポート(ポートJ
in)と、メモリ
Smemのいずれかの領域S
Bk(k=1,2,・・・,Pb)のいずれかのサブ領域に
対応するreadポート(ポートS
in)に接続されている。また、MAC演算回路は、
readポートごとに、対応する乗算器と、加算器とを備えている(復号器47)。復号
器47の詳細については、後述する。
【0155】
図32は、回路ブロックTE
kの構成例を示している。
図32の回路ブロックTE
kは
、入力ポートxin、yin、hin、Δyinと、出力ポートxout、 yout、
soutとを備えている。feedforward型組合せ回路によって回路ブロックT
E
kを構成することができる。また、回路ブロックTE
kは、加算器ADD1~ADD4
と、乗算器MUL1と、演算器FXと、演算器FYと、マルチプレクサMUX1~MUX
3と、コンパレータcomp1~comp3とを備えている。加算器ADD1~ADD4
および乗算器MUL1は、いずれも少なくとも2つの入力端子と1つの出力端子を備える
。演算器FXは、入力された信号に対し、
図27(d)に定義された関数FX(nx)の
演算を実行した信号を出力するように構成されている。演算器FYは、入力された信号に
対し、
図27(d)に定義された関数FY(ny)の演算を実行した信号を出力するよう
に構成されている。マルチプレクサMUX1は、少なくとも、3つの入力端子と、1つの
制御端子と、1つの出力端子とを備えている。マルチプレクサMUX2、MUX3は、少
なくとも、2つの入力端子と、1つの制御端子と、1つの出力端子とを備えている。
【0156】
回路ブロックTEkの入力ポートΔyin、yinは、それぞれ加算器ADD1の第1
入力端子、第2入力端子に接続されている。加算器ADD1の出力端子には、加算器AD
D2の第1入力端子が接続されている。加算器ADD2の第1入力端子には、加算器AD
D1の出力端子が接続されている。また、ADD2の第2入力端子には、乗算器MULの
出力端子が接続されている。回路ブロックTEkの入力ポートhinは、乗算器MULの
第1入力端子に接続されている。
【0157】
また、加算器ADD2の出力端子は、加算器ADD3の第1入力端子が接続されている
。加算器ADD3の第2入力端子は、演算器FXの出力端子に接続されている。加算器A
DD3の出力端子には、演算器FYと、マルチプレクサMUX2が接続されている。演算
器FYの出力端子は、加算器ADD4の第2入力端子が接続されている。乗算器MUL1
の第1入力端子は、入力ポートhinに接続されている。また、乗算器MUL1の第2入
力端子は、カウンタ52に接続されている。カウンタ52は、クロックサイクル数に応じ
て単調増加する第2値を出力するように構成されている。第2値として、例えば、cΔt
×aを使うことができる。
図27(a)に示したように、aは更新回数に応じてインクリ
メントされる。一般に、更新回数はクロックサイクル数に比例するため、cΔt×aはク
ロックサイクル数に応じて単調増加する値となる。
【0158】
回路ブロックTEkの入力ポートxinには、演算器FXと、加算器ADD4の第1入
力端子とが接続されている。加算器ADD4の出力端子には、マルチプレクサMUX1と
、コンパレータcomp1~comp3とが接続されている。コンパレータcomp1~
comp3の出力側は、それぞれマルチプレクサMUX1~MUX3の制御端子に接続さ
れている。
【0159】
加算器ADD1は、回路ブロックTE
kの入力ポートΔyin、yinのそれぞれの入
力を加算した信号を配線ny1に出力する。加算器ADD2は、配線ny1、nh1のそ
れぞれの入力を加算した信号を配線ny2に出力する。配線nh1には、乗算器MUL1
より、回路ブロックTE
kの入力ポートhinから入力された信号にcΔt×aを乗じた
信号が出力される。加算器ADD3は、配線δy、ny2のそれぞれ入力を加算した信号
を配線ny3に出力する。配線δyには、演算器FXより、回路ブロックTE
kの入力ポ
ートxinから入力された信号に、
図27(d)の関数FX(nx)の演算を実行した信
号が出力される。加算器ADD4は、回路ブロックTE
kの入力ポートxin、配線δx
のそれぞれの入力を加算した信号を配線nx1に出力する。配線δxには、演算器FYよ
り、加算器ADD3の出力端子から入力された信号に、
図27(d)の関数FY(ny)
の演算を実行した結果が出力される。
【0160】
コンパレータcomp1~comp3は、それぞれ配線nx1を介して、加算器ADD
4の出力端子に接続されている。したがって、コンパレータcomp1~comp3には
、いずれも加算器ADD4から出力された信号が入力される。コンパレータcomp1、
comp2は、更新後に粒子iがxi<-1.0またはxi>1.0の位置にあるか否か
の判定を行う。これは、粒子iが壁に接触したか否かを判定する処理に相当する。コンパ
レータcomp3は、更新後の粒子iの位置xiに基づき、スピンsiの符号を特定する
。
【0161】
マルチプレクサMUX1の3つの入力端子は、それぞれ加算器ADD4の出力端子(配
線nx1)、+1の定数信号を入力する素子、-1の定数信号を入力する素子に接続され
ている。また、マルチプレクサMUX1の制御端子は、コンパレータcomp1の出力端
子に接続されている。そして、マルチプレクサMUX1の出力端子は、回路ブロックTE
kの出力ポートxoutに接続されている。マルチプレクサMUX1は、コンパレータc
omp1から入力される制御信号に基づき、配線nx1の信号、+1の定数信号、-1の
定数信号のいずれかを出力ポートxoutに出力する。
【0162】
マルチプレクサMUX2の2つの入力端子は、それぞれ、加算器ADD3の出力端子(
配線ny3)、0の定数信号を入力する素子に接続されている。また、マルチプレクサM
UX2の制御素子は、コンパレータcomp2の出力端子に接続されている。そして、マ
ルチプレクサMUX2の出力端子は、回路ブロックTEkの出力ポートyoutに接続さ
れている。マルチプレクサMUX2は、コンパレータcomp2から入力される制御信号
に基づき、加算器ADD3から入力される信号または0の定数信号のいずれかを出力ポー
トyoutに出力する。
【0163】
マルチプレクサMUX3の2つの入力端子は、+1の定数信号を入力する素子、0の定
数信号を入力する素子に接続されている。また、マルチプレクサMUX3の制御素子は、
コンパレータcomp3の出力端子に接続されている。そして、そして、マルチプレクサ
MUX3の出力端子は、回路ブロックTEkの出力ポートsoutに接続されている。マ
ルチプレクサMUX3は、コンパレータcomp3から入力される制御信号に基づき、+
1の定数信号または0の定数信号のいずれかを出力ポートsoutに出力する。
【0164】
このように、それぞれの第2回路(回路ブロックTEk)は、カウンタと、第1加算器
(加算器ADD1)と、第1乗算器(乗算器MUL1)と、第2加算器(加算器ADD2
)と、第1演算器(演算器FX)と、第3加算器(加算器ADD3)と、第2演算器(演
算器FY)と、第4加算器(加算器ADD4)と、第1コンパレータ(コンパレータco
mp1)と、第1マルチプレクサとを備えていてもよい。
【0165】
カウンタは、クロックサイクル数に応じて単調増加または単調減少する第2値を出力す
るように構成されている。第1加算器は、入力側で第4メモリ(メモリYBk)および第
1回路(回路ブロックMMk)に接続されている。第1乗算器は、入力側で第5メモリ(
メモリHBk)およびカウンタに接続されている。第2加算器は、入力側で第1加算器お
よび第1乗算器に接続されている。第1演算器は、入力側で第2メモリ(メモリXBk)
に接続され、クロックサイクル数に応じて単調増加または単調減少する第3値を乗じた値
を出力するように構成されている。ここで、第3値として、例えば、(-D+p)Δtを
用いることができる。第3加算器は、入力側で第2加算器および第1演算器に接続されて
いる。第2演算器は、入力側で第3加算器に接続され、第3加算器からの入力に重み付け
した信号を出力するように構成されている。第4加算器は、入力側で第2メモリおよび第
2演算器に接続されている。第1コンパレータは、入力側で第4加算器に接続されている
。第1マルチプレクサは、入力側で第4加算器に接続され、第1コンパレータからの入力
に基づき、第1値(例えば、-1)の定数信号、第2値(例えば、+1)の定数信号、第
4加算器の出力信号のいずれかを第2メモリに出力するように構成されている。
【0166】
また、それぞれの第2回路(回路ブロックTEk)は、さらに第2コンパレータ(コン
パレータcomp2)と、第2マルチプレクサ(マルチプレクサMUX2)とを備えてい
てもよい。第2コンパレータは、入力側で第4加算器(加算器ADD4)に接続されてい
る。第2マルチプレクサは、入力側で第3加算器(加算器ADD3)に接続され、第2コ
ンパレータからの入力に基づき、0の定数信号または第3加算器の出力信号を第4メモリ
(メモリYBk)に出力するように構成されている。
【0167】
なお、それぞれの第2回路(回路ブロックTEk)は、必ず第2コンパレータ(コンパ
レータcomp2)および第2マルチプレクサ(マルチプレクサMUX2)を備えていな
くてもよい。この場合、第3加算器(加算器ADD3)の出力端子は、出力ポートyou
tに接続される。すなわち、第3加算器の出力信号は、第4メモリ(メモリYBk)に入
力される。
【0168】
また、それぞれの第2回路(回路ブロックTEk)は、第3コンパレータ(コンパレー
タcomp3)と、第3マルチプレクサ(マルチプレクサMUX3)とを備えていてもよ
い。第3コンパレータは、入力側で第4加算器(加算器ADD4)に接続されている。第
3マルチプレクサは、第3コンパレータからの入力に基づき、+1の定数信号または0の
定数信号を第1メモリ(メモリSmem)に出力するように構成されている。
【0169】
一般に、スピンs
iの値は、-1または+1の2値のいずれかをとる。これらの値を符
号付き2進数で表現する場合、少なくとも2ビットの情報が必要となる。ただし、回路中
では、スピンs
iを0または1の2値変数に符号化してもよい。このような符号化を行う
と、スピンの値は、1ビットの情報で表現することが可能である。1ビットの情報でスピ
ンs
iの値を表現することにより、配線におけるデータの伝送量や、記憶領域の消費量を
抑制することができる。これにより、例えば、
図28に示した、回路ブロックTE
k(k
=1,2,・・・,Pb)の出力側より更新後のスピンs
iの値をメモリSmemに伝送
する配線39として、複数ビットではなく、1ビットの情報を伝送する配線を用いること
ができる。また、メモリSmemでは、1ビットの情報量にそれぞれのスピンs
iの値を
格納することができる。さらに、メモリSmemから読み出されたスピンs
iの値を回路
ブロックMM
k(k=1,2,・・・,Pb)に伝送する配線40として、複数ビットで
はなく、1ビットの情報を伝送する配線を用いることができる。回路ブロックMAC1の
入力段にある回路ブロックMUL(
図31)において符号付き2進数に復号化を行うこと
ができる。これにより、電子回路200において、配線39、40で1ビットの情報量の
伝送を行い、メモリSmemに1ビットの情報でスピンs
iの値を保存したとしても、機
能面への影響は生じない。
【0170】
ここでは、
図31を参照しながら、1ビットの情報を符号付き2進数に復号化する回路
について説明する。
図31の復号器47は、回路ブロックMAC1の入力段にある回路ブ
ロックMULの詳細な構成を示している。復号器47は、マルチプレクサMUXと、乗算
器とを備えている。マルチプレクサMUXは、少なくとも、2つの入力端子と、1つの制
御端子と、1つの出力端子とを備えている。乗算器は、2つの入力端子と、1つの出力端
子とを備えている。マルチプレクサMUXの2つの入力端子には、それぞれ+cΔtの定
数信号を入力する素子、-cΔtの定数信号を入力する素子が接続されている。また、マ
ルチプレクサMUXの制御端子には、メモリSmemのいずれかの領域S
Bk(k=1,
2,・・・,Pb)いずれかのサブ領域に対応するreadポート(ポートS
in)が接
続されている。そして、マルチプレクサMUXの出力端子は、乗算器の第2入力に接続さ
れている。なお、乗算器の第1入力は、メモリJ
Bkのいずれかの領域に対応するrea
dポート(ポートJ
in)に接続されている。マルチプレクサMUXは、ポートS
inか
ら入力された信号が1であるとき、出力端子より+cΔtを出力する。また、マルチプレ
クサMUXは、ポートS
inから入力された信号が0であるとき、出力端子より-cΔt
を出力する。乗算器は、出力端子OutよりマルチプレクサMUXから入力された信号と
ポートJ
inから入力された信号とを乗算した信号を出力する。
【0171】
すなわち、電子回路では、第1メモリ(メモリSmem)が第4ベクトルのそれぞれの
要素の値を1ビットの情報で格納するように構成されていてもよい。このとき、それぞれ
の第1回路(回路ブロックMMk)は、第1メモリから読み出した1ビットの情報を符号
付き2進数に復号化するように構成された復号器を含んでいてもよい。
【0172】
なお、電子回路の第1メモリ(メモリSmem)は、第4ベクトルのそれぞれの要素の
値を符号付き2進数で格納してもよい。この場合、第2回路(回路ブロックTEk)の第
3マルチプレクサ(マルチプレクサMUX3)は、第3コンパレータ(コンパレータco
mp3)からの入力に応じて、+1または-1を第1メモリに出力してもよい。この場合
には、それぞれの第1回路(回路ブロックMMk)において、第1メモリから読み出した
情報を復号化する復号器を実装しなくてもよい。また、第1ベクトルの要素を変数として
第3ベクトルの要素を計算するアルゴリズムを実装する場合、第1メモリに第1ベクトル
のそれぞれの要素の値を格納してもよい。
【0173】
(複数の電子回路への実装例)
シミュレーテッド分岐アルゴリズムをN個の粒子のモデルと見なした場合、シミュレー
テッド分岐アルゴリズムは、N個の粒子の位置および運動量を繰り返し更新するアルゴリ
ズムであるといえる。すなわち、シミュレーテッド分岐アルゴリズムは、N個の粒子の位
置および運動量を時間発展させるモデルであると見なせる。ここで、粒子の状態といった
場合には、粒子iの位置に相当するxiと、粒子iの運動量に相当するyiのことを意味
するものとする。
【0174】
複数の電子回路を使ってN個の粒子の状態の計算処理の少なくとも一部を並列に実行し
てもよい。ただし、
図27(a)のアルゴリズムでは、n
cycle=u+1におけるN
個の粒子の状態を計算するためには、n
cycle=uにおけるN個の粒子の状態が必要
である。例えば、M個の電子回路がある場合を想定する。この場合、それぞれの電子回路
は、記憶しているn
cycle=uにおけるN個の粒子の状態(全粒子の状態)に関する
情報に基づき、n
cycle=u+1においてN/M個の粒子の状態を更新することがで
きる。ただし、それぞれの電子回路は、他の電子回路がn
cycle=u+1において計
算した(N-N/M)個の粒子の状態を参照しないと、n
cycle=u+2におけるN
/M個の粒子の状態を計算できない。そこで、それぞれの電子回路が、他の電子回路が計
算した粒子の状態に関する情報を取得できる構成を採用することができる。
【0175】
図33は、複数の電子回路が接続された構成例を示している。
図33には、電子回路2
01~208(HW_CIRCUIT#1~#8)が示されている。
図33は、M=8の
場合に相当する。ただし、電子回路の数Mは、これとは異なっていてもよい。電子回路2
01~208は、それぞれSBカーネル回路41と、通信回路ch1と、通信回路ch2
とを備えている。電子回路201~208として、例えば、FPGAを使うことができる
。ただし、ASICなどを使ってもよく、電子回路の種類については特に問わない。電子
回路201~208は、上述の電子回路200の構成要素に加え、通信回路ch1、ch
2と、バッファメモリbufLと、バッファメモリbufRとを備えている。以下では、
上述の電子回路200との相違点を中心に、複数の電子回路201~208が接続された
計算システムと、それぞれの電子回路の構成について説明する。
【0176】
図33の通信回路ch1、ch2は、いずれも送信ポートTXと、受信ポートRXとを
備えている。送信ポートTXと、受信ポートRXは、それぞれ独立して動作することがで
きる。このため、通信回路ch1、ch2は、全二重(full-duplex)通信を
行うことが可能である。SBカーネル回路41は、メモリ43(Smem)と、演算回路
42(SB Core)と、バッファメモリbufL、bufRとを備えている。メモリ
43は、要素数Nのベクトル(s
1,s
2,・・・,s
N)を保存することができる。メ
モリ43は、上述のメモリSmemに相当する。バッファメモリbufL、bufRは、
それぞれメモリ43に接続されている。演算回路42(SB Core)は、Pb個の回
路ブロックMM
k(第1回路)と、Pb個の回路ブロックTE
k(第2回路)と、Pb個
のメモリX
Bk(第2メモリ)と、Pb個のメモリJ
Bk(第3メモリ)と、Pb個のメ
モリY
Bk(第4メモリ)と、Pb個のメモリH
Bk(第5メモリ)とを含む。すなわち
、演算回路42(SB Core)と、メモリ43は、上述の電子回路200に相当する
構成要素である。
【0177】
このように、電子回路は、さらに第1通信回路(通信回路ch1)と、第2通信回路(
通信回路ch2)と、第1バッファメモリ(バッファメモリbufL)と、第2バッファ
メモリ(バッファメモリbufR)とを備えていてもよい。第1通信回路は、第1送信ポ
ート(通信回路ch1の送信ポートTX)と、第1受信ポート(通信回路ch1の受信ポ
ートRX)とを含む。第2通信回路は、第2送信ポート(通信回路ch2の送信ポートT
X)と、第2受信ポート(通信回路ch2の受信ポートRX)とを含む。第1バッファメ
モリは、第1メモリ(メモリ43)、第2回路(回路ブロックTEk)、第2受信ポート
および第1送信ポートに接続されている。第2バッファメモリは、第1メモリ、第2回路
(回路ブロックTEk)、第1受信ポートおよび第2送信ポートに接続されている。
【0178】
図33を参照すると、電子回路201~208がリングトポロジを形成するように接続
されていることがわかる。すなわち、HW_CIRCUIT#h(h=1,2,・・・,
M)の通信回路ch2は、HW_CIRCUIT#(h+1)の通信回路ch1に接続さ
れる。また、HW_CIRCUIT#Mの通信回路ch2は、HW_CIRCUIT#1
の通信回路ch1に接続される。電子回路間の接続は、通信ケーブルによって実現されて
もよいし、ボード上の配線によって実現されてもよく、実装方式については問わない。図
33では、リングトポロジで時計回りの方向に通信が行われるデータリングringRと
、リングトポロジで反時計回りの方向に通信が行われるデータリングringLが形成さ
れている。このようなトポロジはダブルリングトポロジとよばれる。リングトポロジで時
計回りの通信経路と、リングトポロジで反時計回りの通信経路があるため、
図33の構成
では、単一方向の通信経路しかないシングルリンクトポロジと比べて、約2倍のデータ転
送速度を実現することが可能である。
【0179】
すなわち、計算システムは、複数の電子回路を備えていてもよい。一方の電子回路の第
1送信ポート(通信回路ch1の送信ポートTX)が他方の電子回路の第2受信ポート(
通信回路ch2の受信ポートRX)に接続され、一方の電子回路の第1受信ポート(通信
回路ch1の受信ポートRX)が他方の電子回路の第2送信ポート(通信回路ch1の送
信ポートTX)に接続され、複数の電子回路でリング状の通信経路が時計回りと反時計周
りの両方向に形成されていてもよい。
【0180】
図34は、処理を分散させたときにそれぞれの電子回路で実行されるアルゴリズムの例
を示している。
図34のアルゴリズムでは、カウンタ変数n
cycleがインクリメント
されて所定値になるまで、各変数の更新処理が繰り返し行われる。ループ44では、それ
ぞれの電子回路について、通信回路ch1、ch2の送信ポートTXでデータを送信する
処理と、通信回路ch1、ch2の受信ポートRXでデータを受信する処理とが行われて
いる。ループ45では、それぞれの電子回路に、行列ベクトル積(積和演算)の一部を実
行させている。ループ46では、それぞれの電子回路に、時間発展(Time-evol
ution)に相当する計算(TEパートの処理)を実行させている。
【0181】
図35は、行列とベクトルとの積を計算する方法の第2の例を示している。
図35は、
電子回路の数Mが8である場合における、行列積の計算方法を示している。
図35に示さ
れているように、行列およびベクトルをそれぞれM個に分割して積和演算が行われている
。例えば、HW_CIRCUIT#hは、N/M行N列の行列J
hを用いて、N/M個の
相互作用項(ΔY
h)を計算する。
【0182】
図27の説明で述べたように、HW_CIRCUIT#h(h=1,2,・・・,M)
がそれぞれの変数の更新処理を行うためには、要素数N(フルサイズ)のベクトル(s
1
,s
2,・・・,s
N)のデータが必要となる。そこで、HW_CIRCUIT#hは、
それぞれの変数の更新処理を行った後、HW_CIRCUIT#hが更新したN/M個の
変数{s
m|m=(h-1)N/M+1,(h-1)N/M+2,・・・,hN/M}を
HW_CIRCUIT#hに接続されている他の電子回路に送信することができる(送信
モード)。また、HW_CIRCUIT#hは、それぞれの変数の更新処理を行った後、
CIRCUIT#hに接続されている他の電子回路が更新したN/M個の変数を受信する
ことができる。
【0183】
例えば、HW_CIRCUIT#1がデータリングringRについて送信モードにあ
るとき、更新された変数{sm|m=1,2,・・・,N/M}がHW_CIRCUIT
#2に送信される。このとき、HW_CIRCUIT#2は、データリングringRに
ついて受信モードになっている。同時に、HW_CIRCUIT#1は、データリングr
ingLについて受信モードになっていてもよい。このため、HW_CIRCUIT#1
は、データリングringLについて送信モードになっているHW_CIRCUIT#2
から、更新された変数{sm|m=N/M+1,(N/M+2,・・・,2N/M}を受
信してもよい。この後、HW_CIRCUIT#2は、変数{sm|m=1,2,・・・
,N/M}と、変数{sm|m=N/M+1,(N/M+2,・・・,2N/M}をHW
_CIRCUIT#3に送信することができる。このように、電子回路は、直接接続され
ている他の電子回路に当該電子回路が更新した変数を送信してもよい。これに並行し、電
子回路は、直接接続されている他の電子回路から他の電子回路が更新した変数を受信して
もよい。また、電子回路は、第1の電子回路が更新した変数を第2の電子回路に中継して
もよい。
【0184】
上述のように、データの中継を含む送信処理および受信処理を、リングトポロジを形成
するように接続された、それぞれの電子回路に行わせることができる。これにより、M個
の電子回路は、変数の更新処理のそれぞれのイタレーションにおいて、直前に更新された
要素数N(フルサイズ)の第4ベクトル(s1,s2,・・・,sN)のデータを使うこ
とができる。ただし、リングトポロジを形成するように接続された複数の電子回路に、デ
ータの中継を含む送信処理および受信処理を行わせ、それぞれの電子回路が変数の更新タ
イミングにおいて同じデータを得られるようにするためには、同期的な動作を実現する必
要がある。
【0185】
図36は、複数の電子回路が実行する処理の例を示すタイミングチャートである。
図3
6の横軸は、時刻を示している。処理のそれぞれのイタレーションの期間Tstepは、
通信期間Tcommと、演算期間Tcoreとを含んでいる。演算期間Tcoreでは、
演算回路42(SB Core)において、それぞれの変数の更新後の値が計算される。
また、通信期間Tcommは、電子回路の数Mに等しい数の通信フェーズを含んでいる。
ここでは、説明が複雑化するのを避けるため、M個の電子回路が同期して動作すると仮定
する。HW_CIRCUIT#hの演算回路42は、演算期間Tcoreにおいて、N/
M個の粒子に対応する変数{s
m|m=(h-1)N/M+1,(h-1)N/M+2,
・・・,hN/M}の値を更新する。
【0186】
次に、通信期間Tcommの1通信フェーズで実行される処理について説明する。演算
回路42は、更新した変数{sm|m=(h-1)N/M+1,(h-1)N/M+2,
・・・,hN/M}を2つのグループ(グループSh1、Sh2)に分割し、一方のグル
ープSh1をバッファメモリbufLに、他方のグループSh2をバッファメモリbuf
Rに、それぞれ格納する。それぞれの電子回路(HW_CIRCUIT#1~#M)は、
データリングringLを使って、バッファメモリbufLに格納されたデータを、通信
回路ch1の通信ポートTXを介して他の電子回路に送信することができる。また、それ
ぞれの電子回路(HW_CIRCUIT#1~#M)は、データリングringRを使い
、バッファメモリbufRに格納されたデータを、通信回路ch2の通信ポートTXを介
して他の電子回路に送信することができる。バッファメモリbufLに格納されたデータ
の送信処理と、バッファメモリbufRに格納されたデータの送信処理とが並行して実行
されてもよい。
【0187】
なお、バッファメモリbufL、bufRに格納されたデータをメモリ43(Smem
)に保存してもよい。すなわち、メモリ43(Smem)には、送信ポートTXに送信さ
れたデータと同じデータが保存される。また、バッファメモリbufL、bufRに格納
されたデータを送信ポートTXに送信する処理と、当該データをメモリ43(Smem)
に保存する処理は、並行して実行されてもよい。このような動作を、“send & w
rite動作”とよぶ。
【0188】
すなわち、電子回路は、Pb個の第2回路(回路ブロックTEk)によって更新された
第4ベクトルを分割し、一方の第1データを第1バッファメモリ(バッファメモリbuf
L)に格納し、他方の第2データを第2バッファメモリ(バッファメモリbufR)に格
納するように構成されていてもよい。さらに、電子回路は、第1バッファメモリに格納さ
れた第1データを第1送信ポート(通信回路ch1の送信ポートTX)より送信し、第2
バッファメモリに格納された第2データを第2送信ポート(通信回路ch2の送信ポート
TX)より送信し、第1バッファメモリに格納された第1データと、第2バッファメモリ
に格納された第2データを第1メモリ(メモリ43)に格納するように構成されていても
よい。
【0189】
バッファメモリbufLに格納されたデータの送信処理と、バッファメモリbufRに
格納されたデータの送信処理とが完了したら、それぞれの電子回路(HW_CIRCUI
T#1~#M)は、他の電子回路から送信されたデータを受信し、バッファメモリbuf
R、bufLに格納する。すなわち、それぞれの電子回路(HW_CIRCUIT#1~
#M)は、データリングringLに接続された通信回路ch2の通信ポートRXを介し
て受信したデータを、バッファメモリbufLに保存する。また、それぞれの電子回路(
HW_CIRCUIT#1~#M)は、データリングringRに接続された通信回路c
h1の通信ポートRXを介して受信したデータを、バッファメモリbufRに保存する。
データリングringLに接続された通信回路ch2の通信ポートRXにおけるデータの
受信処理と、データリングringRに接続された通信回路ch1の通信ポートRXにお
けるデータの受信処理は同時に実行されてもよい。ここで説明したような、送信処理が行
われた後に受信処理が行われる動作を“first-send-then-receiv
e”ポリシとよぶ。
【0190】
すなわち、電子回路は、第2受信ポート(通信回路ch2の通信ポートRX)より受信
した第3データを第1バッファメモリ(バッファメモリbufL)に格納し、第1受信ポ
ート(通信回路ch1の通信ポートRX)より受信した第4データを第2バッファメモリ
に格納(バッファメモリbufR)し、第3データおよび第4データは、第1メモリ(メ
モリ43)に格納されるように構成されていてもよい。
【0191】
上述のデータリングringR、ringLにおけるデータの送信処理(メモリ43へ
のデータ保存処理を含んでいてもよい)と、その後のデータリングringR、ring
Lにおけるデータの受信処理とが1通信フェーズに実行される処理である。この1通信フ
ェーズの処理を電子回路の数Mに等しい回数だけ繰り返すことにより、M個の電子回路は
、変数の更新処理のそれぞれのイタレーション(演算期間Tcore)において、最近更
新された要素数N(フルサイズ)のベクトル(s1,s2,・・・,sN)のデータを使
うことができるようになる。最近更新された要素数N(フルサイズ)のベクトル(s1,
s2,・・・,sN)のデータは、メモリ43(Smem)に保存される。
【0192】
図33では、バッファメモリbufLから通信回路ch1の通信ポートTXにデータが
直接転送され、通信回路ch2のポートRXから受信されたデータは、直接バッファメモ
リbufLに転送されていた。また、
図33では、バッファメモリbufRから通信回路
ch2の通信ポートTXにデータが直接転送され、通信回路ch1の通信ポートRXから
受信されたデータは、直接バッファメモリbufRに転送されていた。ただし、
図37の
構成例ように、通信回路ch1、ch2と、バッファメモリbufL、bufRの間に他
のメモリが配置されていてもよい。
【0193】
図37は、通信チャネルのより詳細な構成例を示している。
図37のHW_CIRCU
IT#hは、
図33の電子回路201~208の構成要素に加え、メモリ44a、44b
、45a、45bを備えている。なお、
図37の送信器TX PHYは、上述の送信ポー
トTXに対応する。また、受信器RX PHYは、上述の受信ポートRXに対応する。メ
モリ44aは、通信回路ch1の通信ポートTXと、バッファメモリbufLとの間に接
続されている。メモリ44bは、通信回路ch2の通信ポートTXと、バッファメモリb
ufRとの間に接続されている。メモリ45aは、通信回路ch1の通信ポートRXと、
バッファメモリbufRとの間に接続されている。メモリ45bは、通信回路ch2の通
信ポートRXと、バッファメモリbufLとの間に接続されている。メモリ44a、44
bは、TX FIFOメモリに相当する。一方、メモリ45a、45bは、RX FIF
Oメモリに相当する。ここで、FIFOメモリとは、First-In-First-O
ut型メモリである。なお、
図37では、作図の都合上、演算回路42(SB Core
)と、メモリ43(Smem)とが省略されている。
【0194】
演算回路42(SB Core)がバッファメモリbufLに格納したデータは、メモ
リ44a(TX FIFOメモリ)を介して、通信回路ch1の通信ポートTXよりHW
_CIRCUIT#(h-1)に送信される。演算回路42がバッファメモリbufRに
格納したデータは、メモリ44b(TX FIFOメモリ)を介して、通信回路ch2の
通信ポートTXよりHW_CIRCUIT#(h+1)に送信される。通信回路ch1の
通信ポートRXで受信したデータは、メモリ45a(RX FIFOメモリ)を介して、
バッファメモリbufRに転送される。通信回路ch2の通信ポートRXで受信したデー
タは、メモリ45b(RX FIFOメモリ)を介して、バッファメモリbufLに転送
される。すなわち、通信チャネルは、通信ポートTX、TX FIFOメモリ、バッファ
メモリの組合せまたは、通信ポートRX、RX FIFOメモリ、バッファメモリの組合
せを含む。
【0195】
SBカーネル回路41の駆動周波数FSBkernelと、通信チャネルの駆動周波数
FIOPHYは、等しくてもよいし、異なっていてもよい。メモリ44a、44b、45
a、45b(TX FIFOメモリおよびRX FIFOメモリ)は、非対称なread
/writeスピードのストリーミングデータバッファを形成してもよい。例えば、TX
FIFOメモリのwriteポートは、周波数FSBkernelで駆動され、TX
FIFOメモリのreadポートは、周波数FIOPHYで駆動されてもよい。また、R
X FIFOメモリのreadポートは、writeスピードは、周波数FIOPHYで
駆動され、RX FIFOメモリの周波数FSBkernelで駆動されてもよい。
【0196】
図38は、リングトポロジに対応したハードウェアの構成例を示したブロック図である
。
図38には、演算回路42(SB Core)と、メモリ43(Smem)が示されて
いる。演算回路42は、上述の電子回路200の回路ブロックMMTE
1~MMTE
Pb
に相当する構成および機能を備えている。上述の電子回路200では、データ依存性の問
題を解決するため、メモリSmemはダブルバッファ構成を採用していた。ただし、
図3
3および
図37に示している、複数の電子回路への実装例では、バッファメモリbufL
、bufRがデータ依存性の問題を解決する。したがって、メモリ43として、ダブルバ
ッファ構造のメモリを使わなくてもよい。
【0197】
次に、電子回路間で同期をとる方法について説明する。複数の電子回路は、必ず同時に
起動されなくてもよい。また、複数の電子回路のクロックが同期されていなくてもよい。
以下では、異なるタイミングに起動され、クロックが同期していない複数の電子回路が使
われた場合でも、動作タイミングを自発的に同期させる方法について説明する。はじめに
、複数の電子回路が同期して動作する場合(
図39のタイムチャート)について説明した
後、複数の電子回路が時差をもって順次起動した場合(
図40のタイムチャート)につい
て説明する。
図39、
図40のタイムチャートでは、いずれも横軸が時刻に対応している
。
【0198】
図39のタイムチャートにおいて、HW_CIRCUIT#hのSBカーネル回路41
は、バッファメモリbufL、bufRに格納されたデータを、TX FIFO(メモリ
44a、44b)に書き込む(Twrite_TX FIFO)。この時点で、送信器T
X PHYによる送信動作が開始する。送信器TX PHYは、TX FIFOからデー
タを読み出し、読み出したデータを通信回路ch1、ch2のポートTX(TX PHY
)から同時に転送する(Tread_TX FIFO)。なお、TX FIFOにデータ
が格納されていない場合、送信器TX PHYは、TX FIFOからのデータ読み出し
を行わない。転送されたデータは、物理遅延λ
PHYの後、HW_CIRCUIT#(h
-1)の通信回路ch2に対応するRX FIFOおよびHW_CIRCUIT#(h+
1)の通信回路ch1に対応するRX FIFOに格納される。なお、物理遅延λ
PHY
は、例えば、送信器TX PHYの内部レイテンシ、受信器RX PHYの内部レイテン
シ、伝送線による遅延を含む。光電変換が行われている場合、物理遅延λ
PHYは、光電
変換素子における送信時および/または受信時のレイテンシを含んでいてもよい。
【0199】
SBカーネル回路41は、TX FIFO(メモリ44a、44b)へのデータ書き込
み(送信動作)が終わった後に、動作に遷移することができる。受信器RX PHYは、
データを受信したら、当該データをRX FIFO(メモリ45a、45b)に書き込む
。SBカーネル回路41は、RX FIFO(メモリ45a、45b)に格納されている
データを、バッファメモリbufL、bufRに書き込む。SBカーネル回路41は、ス
トール可能(Stallable)に構成されている。このため、いずれかのRX FI
FO(メモリ45a、45bのいずれか)にデータが格納されていない場合、SBカーネ
ル回路41は、バッファメモリbufL、bufRへの書き込みを行わず、一時的に待機
状態(stall状態)に入ってもよい。
図39のタイムチャートでは、SBカーネル回
路41が受信動作に遷移する前に、受信器RX PHYが受信したデータをRX FIF
Oに書き込んでいるため、RX FIFOがemptyにならず、SBカーネル回路41
のストールは発生しない。
【0200】
図40のタイムチャートにおいて、HW_CIRCUIT#hのSBカーネル回路41
は、他の電子回路(HW_CIRCUIT)の動作状態に関わらず、送信時の動作(TX
FIFOへのデータ書き込み)を実行する。通信回路ch1、ch2の送信器TX P
HYは、TX FIFO(メモリ44a、44b)にデータがあれば、任意のタイミング
でTX FIFO(メモリ44a、44b)からデータを読み出し、それを送信する。H
W_CIRCUIT#hのTX FIFOから読み出されたデータは、物理遅延λ
PHY
の後、HW_CIRCUIT#(h-1)の通信回路ch2に対応するRX FIFOと
、HW_CIRCUIT#(h+1)の通信回路ch1に対応するRX FIFOに格納
される。なお、HW_CIRCUIT#(h-1)の通信回路ch2およびHW_CIR
CUIT#(h+1)の通信回路ch1では、受信器RX PHYがホスト側(SBカー
ネル回路41側)の制御に関わらず、受信状態となっている。すなわち、受信器RX P
HYは、auto-runモードに設定されている。この場合、受信器RX PHYがデ
ータを受信すれば、タイミングに関係なく、受信されたデータがRX FIFOに書き込
まれる。
【0201】
HW_CIRCUIT#hの受信器RX PHYは、SBカーネル回路41によるTX
FIFO(メモリ44a、44b)へのデータ書き込み(送信動作)が終わった後に受
信動作を開始する。ただし、HW_CIRCUIT#hの通信回路ch1に対応するRX
FIFOまたは、HW_CIRCUIT#hの通信回路ch2に対応するRX FIF
Oのいずれかにデータが格納されていない場合、SBカーネル回路41は、一時的に待機
状態(stall状態)に入ってもよい。そして、SBカーネル回路41は、通信回路c
h1に対応するRX FIFOまたは、通信回路ch2に対応するRX FIFOの両方
にデータが格納されたら、受信時における動作を再開することができる。すなわち、HW
_CIRCUIT#(h-1)およびHW_CIRCUIT#(h+1)の両方がデータ
の送信を開始する。そして、両方の電子回路(HW_CIRCUIT)がデータの送信を
完了した時刻から物理遅延λPHYに等しい期間が経過すると、RX FIFOの両方に
データが格納される。このとき、SBカーネル回路41は、待機状態(stall状態)
から離脱し、受信時における動作を再開する。SBカーネル回路41は、RX FIFO
(メモリ45a、45b)に格納されているデータを、バッファメモリbufL、buf
Rに書き込むことができる。
【0202】
図40のタイムチャートの動作では、RX FIFO(メモリ45a、45b)にデー
タが格納されていない電子回路(HW_CIRCUIT)が待機状態(stall状態)
に入り、当該電子回路のRX FIFOに他の電子回路より送信されたデータが格納され
たら、SBカーネル回路41が待機状態(stall状態)から離脱するという動作が繰
り返される。この動作が繰り返されることによって、電子回路間の同期が行われる。電子
回路間で同期をとることによって、起動時刻の違いによるタイミングのずれが1通信フェ
ーズの長さより小さくなるまで、軽減される。
【0203】
すなわち、電子回路は、さらに第1FIFOメモリ(メモリ44a)と、第2FIFO
メモリ(メモリ45a)と、第3FIFO(メモリ45b)メモリと、第4FIFOメモ
リ(メモリ44b)とを備えていてもよい。第1FIFOメモリは、第1送信ポート(通
信回路ch1の送信ポートTX)と、第1バッファメモリ(バッファメモリbufL)と
の間に接続されている。第2FIFOメモリは、第1受信ポート(通信回路ch1の受信
ポートRX)と、第2バッファメモリ(バッファメモリbufR)との間に接続されてい
る。第3FIFOメモリは、第2受信ポート(通信回路ch2の受信ポートRX)と、第
1バッファメモリとの間に接続されている。第4FIFOメモリは、第2送信ポート(通
信回路ch2の送信ポートTX)と、第2バッファメモリとの間に接続されている。電子
回路は、第2FIFOメモリまたは第4FIFOメモリの両方にデータが格納されていな
い場合には、待機状態に遷移し、第2FIFOメモリまたは第4FIFOメモリの両方に
データが格納されている場合には、待機状態が解除されるように構成されていてもよい。
【0204】
上述では、シミュレーテッド分岐アルゴリズムの複数の実装例について説明した。ただ
し、シミュレーテッド分岐アルゴリズムのありうる実装例はこれに限らず、その他の構成
が採用されてもよい。また、上述の複数の実装例を組み合わせることによってシミュレー
テッド分岐アルゴリズムを実行する電子回路または情報処理装置を実現してもよい。上述
の実施形態に係る電子回路または情報処理装置を使うことにより、組合せ最適化問題の解
を実用的な時間内で計算することが可能となる。また、上述の実施形態に係る電子回路ま
たは情報処理装置を使うことにより、組合せ最適化問題の最適解または、組合せ最適化問
題の最適解により近い、近似解を計算することができるようになる。
【0205】
特に、上述の情報処理装置、プログラム、情報処理方法、電子回路および計算システム
を用いることにより、HOBO(Higher Order Binary Optim
ization)を含む制約なし多項式2値変数最適化(PUBO:Polynomia
l Unconstrained Binary Optimization)を解くこ
とができる。3次以上の項を含む目的関数を扱える情報処理装置、プログラム、情報処理
方法、電子回路および計算システムを使えば、ペナルティ関数などを導入して3次以上の
項を含む目的関数を2次の目的関数に変換する必要がなくなる。このため、上述の情報処
理装置、プログラム、情報処理方法、電子回路および計算システムを提供することにより
、各種の組合せ最適化問題の求解をより容易に行うことができるようになる。
【0206】
なお、本発明の実施形態は、下記の構成例を含んでいてもよい。
【0207】
(構成例1)
目的関数を、すべての項に含まれる変数について偏微分した形式の基本式に基づき、第
3ベクトルのそれぞれの要素を更新するように構成され、前記基本式の変数は、第1ベク
トルの要素、または、前記第1ベクトルの要素を第1値もしくは前記第1値より大きい第
2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素である、積和演算部と
、
前記第1ベクトルの要素に、第2ベクトルの対応する要素、もしくは、前記第2ベクト
ルの対応する要素に重み付けした値を加算することによって前記第1ベクトルの要素を更
新し、
値が前記第1値より小さい前記第1ベクトルの要素を前記第1値に設定し、
値が前記第2値より大きい前記第1ベクトルの要素を前記第2値に設定し、
前記第2ベクトルの要素に、更新回数に応じて単調増加または単調減少する第1係数と
前記第1ベクトルの対応する要素との積を重み付けした値、ならびに、前記第3ベクトル
の対応する要素を重み付けした値を加算することによって前記第2ベクトルの要素を更新
するように構成された更新部とを備える、
情報処理装置。
【0208】
(構成例2)
前記更新部は、値が前記第1値と前記第2値の間にある第3値より小さい前記第1ベク
トルの要素を前記第1値に変換し、値が前記第3値より大きい前記第1ベクトルの要素を
前記第2値に変換することによって、組合せ最適化問題の解を求めるように構成されてい
る、
構成例1に記載の情報処理装置。
【0209】
(構成例3)
前記更新部は、前記第1ベクトル、前記第2ベクトル、前記第3ベクトルの更新回数ま
たは前記第1係数の値がしきい値より大きくなったときに前記組合せ最適化問題の解を求
めるように構成されている、
構成例2に記載の情報処理装置。
【0210】
(構成例4)
前記更新部は、値が前記第1値より小さい前記第1ベクトルの要素に対応する前記第2
ベクトルの要素、または、前記第2値より大きい前記第1ベクトルの要素に対応する前記
第2ベクトルの要素を、もとの前記第2ベクトルの要素に、第2係数を乗じた値に更新す
るように構成されている、
構成例1ないし3のいずれか一項に記載の情報処理装置。
【0211】
(構成例5)
前記更新部は、値が前記第1値より小さい前記第1ベクトルの要素に対応する前記第2
ベクトルの要素の値、または、値が前記第2値より大きい前記第1ベクトルの要素に対応
する前記第2ベクトルの要素の値を、擬似乱数に設定するように構成されている、
構成例1ないし3のいずれか一項に記載の情報処理装置。
【0212】
(構成例6)
前記更新部は、値が-1より小さい前記第1ベクトルの要素に対応する前記第2ベクト
ルの要素、または、値が1より大きい前記第1ベクトルの要素に対応する前記第2ベクト
ルの要素を、もとの前記第2ベクトルの要素に第2係数を乗じた値に更新するように構成
されている、
構成例1ないし3のいずれか一項に記載の情報処理装置。
【0213】
(構成例7)
前記積和演算部は、第1ベクトルの要素を変数として計算した前記基本式の値を前記第
1関数で変換した値に基づいて前記第3ベクトルのそれぞれの要素を更新するように構成
されている、
構成例1ないし6のいずれか一項に記載の情報処理装置。
【0214】
(構成例8)
前記積和演算部は、前記第1係数をパラメータとする第2関数を乗じることによって前
記第3ベクトルのそれぞれの要素を更新するように構成されている、
構成例7に記載の情報処理装置。
【0215】
(構成例9)
前記更新部は、前記第1ベクトルのノルムを前記第3ベクトルのノルムで除算した第3
係数を計算し、
前記第2ベクトルの要素に、前記第1係数と更新された前記第1ベクトルの対応する要
素との積を重み付けした値ならびに、前記第3ベクトルの対応する要素を前記第3係数で
重み付けした値を加算することによって前記第2ベクトルの要素を更新するように構成さ
れている、
構成例1ないし8のいずれか一項に記載の情報処理装置。
【0216】
(構成例10)
前記更新部は、前記第1ベクトルどうしの内積を、前記第1ベクトルと前記第3ベクト
ルの内積の絶対値で除算した第3係数を計算し、
前記第2ベクトルの要素に、前記第1係数と更新された前記第1ベクトルの対応する要
素との積を重み付けした値ならびに、前記第3ベクトルの対応する要素を前記第3係数で
重み付けした値を加算することによって前記第2ベクトルの要素を更新するように構成さ
れている、
構成例1ないし8のいずれか一項に記載の情報処理装置。
【0217】
(構成例11)
前記更新部は、前記第4ベクトルのノルムを、前記第3ベクトルのノルムで除算した第
3係数を計算し、
前記第2ベクトルの要素に、前記第1係数と更新された前記第1ベクトルの対応する要
素との積を重み付けした値ならびに、前記第3ベクトルの対応する要素を前記第3係数で
重み付けした値を加算することによって前記第2ベクトルの要素を更新するように構成さ
れている、
構成例1ないし8のいずれか一項に記載の情報処理装置。
【0218】
(構成例12)
前記更新部は、前記第4ベクトルどうしの内積を、前記第4ベクトルと前記第3ベクト
ルの内積の絶対値で除算した第3係数を計算し、
前記第2ベクトルの要素に、前記第1係数と更新された前記第1ベクトルの対応する要
素との積を重み付けした値ならびに、前記第3ベクトルの対応する要素を前記第3係数で
重み付けした値を加算することによって前記第2ベクトルの要素を更新するように構成さ
れている、
構成例1ないし8のいずれか一項に記載の情報処理装置。
【0219】
(構成例13)
前記更新部は、前記第3係数がローパスフィルタを通過した後の値である第4係数を計
算し、前記第3係数に代わり、前記第4係数を用いて前記第2ベクトルの要素を更新する
ように構成されている、
構成例9ないし12のいずれか一項に記載の情報処理装置。
【0220】
(構成例14)
前記第1値は-1、前記第2値は1であり、
前記目的関数は、イジングモデルのエネルギー式に相当する項を含んでいる、
構成例1ないし13のいずれか一項に記載の情報処理装置。
【0221】
(構成例15)
前記目的関数は、多体相互作用の項を含んでいる、
構成例14に記載の情報処理装置。
(構成例16)
前記基本式の1階のテンソルを含む項は、更新回数に応じて単調減少または単調増加す
る、
構成例1ないし14のいずれか一項に記載の情報処理装置。
【0222】
(構成例17)
複数のプロセッサを備え、
前記更新部は、前記複数のプロセッサを含み、前記更新部の前記複数のプロセッサのそ
れぞれは、前記第1ベクトルの一部の要素および前記第2ベクトルの一部の要素を更新す
るように構成されている、
構成例1ないし16のいずれか一項に記載の情報処理装置。
【0223】
(構成例18)
前記積和演算部は、前記複数のプロセッサを含み、前記積和演算部の前記複数のプロセ
ッサのそれぞれは、前記第3ベクトルの一部の要素を更新するように構成されている、
構成例17に記載の情報処理装置。
【0224】
(構成例19)
前記複数のプロセッサからアクセス可能に構成されている共有メモリを備え、
前記更新部は、更新された後の前記第1ベクトルの要素または、更新された後の前記第
1ベクトルのそれぞれの要素を2値変数に変換した前記第4ベクトルを前記共有メモリに
保存するように構成されている、
構成例17または18に記載の情報処理装置。
【0225】
(構成例20)
前記複数のプロセッサは、Graphics Processing Unitのコア
である、
構成例17ないし19のいずれか一項に記載の情報処理装置。
【0226】
(構成例21)
目的関数を、すべての項に含まれる変数について偏微分した形式の基本式に基づく計算
をコンピュータに実行させるプログラムであって、
前記変数が第1ベクトルの要素、または、前記第1ベクトルの要素を第1値もしくは前
記第1値より大きい第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素
である、前記基本式に基づき、第3ベクトルのそれぞれの要素を更新するステップと、
前記第1ベクトルの要素に、第2ベクトルの対応する要素、または、前記第2ベクトル
の対応する要素に重み付けした値を加算することによって前記第1ベクトルの要素を更新
するステップと、
値が前記第1値より小さい前記第1ベクトルの要素を前記第1値に設定するステップと
、
値が前記第2値より大きい前記第1ベクトルの要素を前記第2値に設定するステップと
、
前記第2ベクトルの要素に、更新回数に応じて単調増加または単調減少する第1係数と
前記第1ベクトルの対応する要素との積を重み付けした値ならびに、前記第3ベクトルの
対応する要素を重み付けした値を加算することによって前記第2ベクトルの要素を更新す
るステップとを含む、
プログラム。
【0227】
(構成例22)
目的関数を、すべての項に含まれる変数について偏微分した形式の基本式に基づく計算
をコンピュータに実行させる情報処理方法であって、
前記変数が第1ベクトルの要素、または、前記第1ベクトルの要素を第1値もしくは前
記第1値より大きい第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素
である、前記基本式に基づき、第3ベクトルのそれぞれの要素を更新するステップと、
前記第1ベクトルの要素に、第2ベクトルの対応する要素、または、前記第2ベクトル
の対応する要素に重み付けした値を加算することによって前記第1ベクトルの要素を更新
するステップと、
値が前記第1値より小さい前記第1ベクトルの要素を前記第1値に設定するステップと
、
値が前記第2値より大きい前記第1ベクトルの要素を前記第2値に設定するステップと
、
前記第2ベクトルの要素に、更新回数に応じて単調増加または単調減少する第1係数と
前記第1ベクトルの対応する要素との積を重み付けした値ならびに、前記第3ベクトルの
対応する要素を重み付けした値を加算することによって前記第2ベクトルの要素を更新す
るステップとを含む、
情報処理方法。
【0228】
(構成例23)
目的関数を、すべての項に含まれる変数について偏微分した形式の基本式に基づき、第
3ベクトルのそれぞれの要素を更新するように構成され、前記基本式の変数は、第1ベク
トルの要素、または、前記第1ベクトルの要素を第1値もしくは前記第1値より大きい第
2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素である、第1回路と、
前記第1ベクトルの要素に、第2ベクトルの対応する要素、または、前記第2ベクトル
の対応する要素に重み付けした値を加算することによって前記第1ベクトルの要素を更新
し、
値が前記第1値より小さい前記第1ベクトルの要素を前記第1値に設定し、
値が前記第2値より大きい前記第1ベクトルの要素を前記第2値に設定し、
前記第2ベクトルの要素に、更新回数に応じて単調増加または単調減少する第1係数と
前記第1ベクトルの対応する要素との積を重み付けした値、ならびに、前記第3ベクトル
の対応する要素を重み付けした値を加算することによって前記第2ベクトルの要素を更新
するように構成された第2回路とを備える、
電子回路。
【0229】
(構成例24)
前記第2回路は、値が前記第1値と前記第2値の間にある第3値より小さい前記第1ベ
クトルの要素を前記第1値に変換し、値が前記第3値より大きい前記第1ベクトルの要素
を前記第2値に変換することによって、前記目的関数の解を求めるように構成されている
、
構成例23に記載の電子回路。
【0230】
(構成例25)
前記第2回路は、前記第1ベクトル、前記第2ベクトル、前記第3ベクトルの更新回数
または前記第1係数の値がしきい値より大きくなったときに前記目的関数の解を求めるよ
うに構成されている、
構成例23または24に記載の電子回路。
【0231】
(構成例26)
前記第2回路は、値が前記第1値より小さい前記第1ベクトルの要素に対応する前記第
2ベクトルの要素、または、前記第2値より大きい前記第1ベクトルの要素に対応する前
記第2ベクトルの要素を、もとの前記第2ベクトルの要素に、第2係数を乗じた値に更新
するように構成されている、
構成例23ないし25のいずれか一項に記載の電子回路。
【0232】
(構成例27)
前記第2回路は、値が前記第1値より小さい前記第1ベクトルの要素に対応する前記第
2ベクトルの要素の値、または、値が前記第2値より大きい前記第1ベクトルの要素に対
応する前記第2ベクトルの要素の値を、擬似乱数に設定するように構成されている、
構成例23ないし25のいずれか一項に記載の電子回路。
【0233】
(構成例28)
前記第1回路は、第1ベクトルの要素を変数として計算した前記基本式の値を前記第1
関数で変換した値に基づいて前記第3ベクトルのそれぞれの要素を更新するように構成さ
れている、
構成例23ないし27のいずれか一項に記載の電子回路。
【0234】
(構成例29)
前記第1回路は、前記第1係数をパラメータとする第2関数を乗じることによって前記
第3ベクトルのそれぞれの要素を更新するように構成されている、
構成例28に記載の電子回路。
【0235】
(構成例30)
前記第1回路の入力側と、前記第2回路の出力側に接続され、前記第4ベクトルまたは
前記第1ベクトルを格納するように構成された第1メモリを備え、
前記第1回路の出力側は、前記第2回路の入力側に接続されている、
構成例23ないし29のいずれか一項に記載の電子回路。
【0236】
(構成例31)
前記第1メモリが前記第4ベクトルのそれぞれの要素の値を1ビットの情報で格納する
ように構成されており、
それぞれの前記第1回路は、前記第1メモリから読み出した前記1ビットの情報を符号
付き2進数に復号化するように構成された復号器を含んでいる、
構成例30に記載の電子回路。
【0237】
(構成例32)
前記第2回路が前記第3ベクトルの要素に基づき、前記第1ベクトルの要素または前記
第2ベクトルの要素または前記第4ベクトルの要素の少なくともいずれかを計算している
ときに、
前記第1回路が、前記第2回路によって前記第1ベクトルの要素および前記第2ベクト
ルの要素および前記第4ベクトルの要素が次回計算されるときに使われる前記第3ベクト
ルの要素を計算するように構成されている、
構成例30に記載の電子回路。
【0238】
(構成例33)
それぞれが入力側で前記第1メモリに接続されているPb個(Pbは2以上の整数)の
前記第1回路と、
それぞれが入力側でいずれかの前記第1回路に接続されており、それぞれが出力側で前
記第1メモリに接続されているPb個の前記第2回路とを備えている、
構成例30ないし32のいずれか一項に記載の電子回路。
【0239】
(構成例34)
それぞれの前記第1回路は、N×N次元の結合係数行列をPb個に分割したN/Pb×
N次元の第1行列のいずれかと、前記第4ベクトルをPb個に分割した第5ベクトルのい
ずれかとの積である前記第3ベクトルの要素を計算するように構成されており、
それぞれの前記第2回路は、いずれかの前記第1回路が計算した前記第3ベクトルの要
素に基づき、前記第1ベクトルのN/Pb個の要素および前記第2ベクトルのN/Pb個
の要素および前記第4ベクトルのN/Pb個の要素を更新し、更新した前記第4ベクトル
のN/Pb個の要素を前記第1メモリに保存するように構成されている、
構成例33に記載の電子回路。
【0240】
(構成例35)
それぞれの前記第1回路は、前記第1行列を、Pr×Pc次元の複数の第2行列に、前
記第5ベクトルを要素数Pcの複数の第6ベクトルにそれぞれ分割し、それぞれの前記第
2行列と、対応する前記第6ベクトルとの積演算を順次実行することにより、前記第3ベ
クトルの要素を計算するように構成されている、
構成例34に記載の電子回路。
【0241】
(構成例36)
前記第2回路は、
クロックサイクル数に応じて単調増加する第2値を出力するように構成されたカウンタ
と、
入力側で前記第4メモリおよび前記第1回路に接続された第1加算器と、
入力側で前記第5メモリおよび前記カウンタに接続された第1乗算器と、
入力側で前記第1加算器および前記第1乗算器に接続された第2加算器と、
入力側で前記第2メモリに接続され、前記クロックサイクル数に応じて単調増加する第
3値を乗じた値を出力するように構成された第1演算器と、
入力側で前記第2加算器および前記第1演算器に接続された第3加算器と、
入力側で前記第3加算器に接続され、前記第3加算器からの入力に重み付けした信号を
出力するように構成された第2演算器と、
入力側で前記第2メモリおよび前記第2演算器に接続された第4加算器と、
入力側で前記第4加算器に接続された第1コンパレータと、
入力側で前記第4加算器に接続され、前記第1コンパレータからの入力に基づき、第1
値の定数信号、第2値の定数信号、前記第4加算器の出力信号のいずれかを前記第2メモ
リに出力するように構成された第1マルチプレクサとを含む、
構成例35に記載の電子回路。
【0242】
(構成例37)
それぞれの前記第2回路は、
入力側で前記第4加算器に接続された第2コンパレータと、
入力側で前記第3加算器に接続され、前記第2コンパレータからの入力に基づき、0の
定数信号または前記第3加算器の出力信号を前記第4メモリに出力するように構成された
第2マルチプレクサとを含む、
構成例36に記載の電子回路。
【0243】
(構成例38)
それぞれの前記第2回路は、
入力側で前記第4加算器に接続された第3コンパレータと、
前記第3コンパレータからの入力に基づき、+1の定数信号または0の定数信号を前記
第1メモリに出力するように構成された第3マルチプレクサとを含む、
構成例37に記載の電子回路。
【0244】
(構成例39)
前記第1メモリは、第1領域と第2領域とをそれぞれPb個ずつ有し、
前記第1領域および前記第2領域は、
前記第1領域からPb個の前記第1回路に前記第4ベクトルの要素がブロードキャスト
されている期間に、前記第2領域に前記第2回路から入力された更新後の前記第4ベクト
ルの要素が保存され、
前記第2領域からPb個の前記第1回路に前記第4ベクトルの要素がブロードキャスト
されている期間に、前記第1領域に前記第2回路から入力された更新後の前記第4ベクト
ルの要素が保存されるように構成されている、
構成例36ないし38のいずれか一項に記載の電子回路。
【0245】
(構成例40)
第1送信ポートと、第1受信ポートとを含む第1通信回路と、
第2送信ポートと、第2受信ポートとを含む第2通信回路と、
前記第1メモリ、前記第2回路、前記第2受信ポートおよび前記第1送信ポートに接続
された第1バッファメモリと、
前記第1メモリ、前記第2回路、前記第1受信ポートおよび前記第2送信ポートに接続
された第2バッファメモリとを備える、
構成例30ないし39のいずれか一項に記載の電子回路。
【0246】
(構成例41)
Pb個の前記第2回路によって更新された前記第4ベクトルを分割し、一方の第1デー
タを前記第1バッファメモリに格納し、他方の第2データを前記第2バッファメモリに格
納し、
前記第1バッファメモリに格納された前記第1データを前記第1送信ポートより送信し
、
前記第2バッファメモリに格納された前記第2データを前記第2送信ポートより送信し
、
前記第1バッファメモリに格納された前記第1データと、前記第2バッファメモリに格
納された前記第2データを前記第1メモリに格納するように構成されている、
構成例40に記載の電子回路。
【0247】
(構成例42)
前記第2受信ポートより受信した第3データを前記第1バッファメモリに格納し、
前記第1受信ポートより受信した第4データを前記第2バッファメモリに格納し、
前記第3データおよび前記第4データは、前記第1メモリに格納されるように構成され
ている、
構成例41に記載の電子回路。
【0248】
(構成例43)
前記第1送信ポートと、前記第1バッファメモリとの間に接続された第1FIFOメモ
リと、
前記第1受信ポートと、前記第2バッファメモリとの間に接続された第2FIFOメモ
リと、
前記第2受信ポートと、前記第1バッファメモリとの間に接続された第3FIFOメモ
リと、
前記第2送信ポートと、前記第2バッファメモリとの間に接続された第4FIFOメモ
リとを備え、
前記第2FIFOメモリまたは前記第4FIFOメモリの両方にデータが格納されてい
ない場合には、待機状態に遷移し、
前記第2FIFOメモリまたは前記第4FIFOメモリの両方にデータが格納されてい
る場合には、前記待機状態が解除されるように構成されている、
構成例40ないし42のいずれかに記載の電子回路。
【0249】
(構成例44)
構成例40ないし43のいずれか一項に記載の電子回路を複数備え、
一方の前記電子回路の前記第1送信ポートが他方の前記電子回路の前記第2受信ポート
に接続され、
一方の前記電子回路の前記第1受信ポートが他方の前記電子回路の前記第2送信ポート
に接続され、
複数の前記電子回路でリング状の通信経路が時計回りと反時計周りの両方向に形成され
ている、
計算システム。
【0250】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要
旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示され
ている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実
施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実
施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0251】
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 ホストバスアダプタ
37、38、44、45、46 ループ
39、40 配線
41 SBカーネル回路
42 演算回路(SB core)
43、44a、44b、45a、45b メモリ
47 復号器
50 更新部
51 積和演算部
52 カウンタ
100 情報処理システム
200、201、202、208 電子回路
【手続補正書】
【提出日】2024-02-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
目的関数を、すべての項に含まれる変数について偏微分した形式の基本式に基づき、第
3ベクトルのそれぞれの要素を更新するように構成され、前記基本式の変数は、第1ベク
トルの要素、または、前記第1ベクトルの要素を第1値もしくは前記第1値より大きい第
2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素である、積和演算部と
、
前記第1ベクトルの要素に、第2ベクトルの対応する要素、または、前記第2ベクトル
の対応する要素に重み付けした値を加算することによって前記第1ベクトルの要素を更新
し、
値が前記第1値より小さい前記第1ベクトルの要素を前記第1値に設定し、
値が前記第2値より大きい前記第1ベクトルの要素を前記第2値に設定し、
前記第2ベクトルの要素に、更新回数に応じて単調増加または単調減少する第1係数と
前記第1ベクトルの対応する要素との積を重み付けした値、ならびに、前記第3ベクトル
の対応する要素を重み付けした値を加算することによって前記第2ベクトルの要素を更新
するように構成された更新部とを備える、
情報処理装置。
【手続補正書】
【提出日】2024-02-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ハードウェア記述言語により記述され、回路を、目的関数に対応する項に含まれる、位置ベクトルに対応する第1ベクトル、運動量ベクトルに対応する第2ベクトル及び力ベクトルに対応する第3ベクトルを用いて前記目的関数を評価指標とした最適化問題を探索する計算を実行する計算装置としての電子回路にする、回路情報であって、
前記計算装置は、
前記目的関数に基づく基本式から、前記第3ベクトルのそれぞれの要素を計算し、前記基本式の変数が、前記第1ベクトルの要素、又は、前記第1ベクトルの要素を所定の第1値もしくは前記第1値より大きい所定の第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素であり、
前記第1ベクトルの要素を、前記第2ベクトルの対応する要素に基づいて更新し、
前記第2ベクトルの要素を、更新回数に応じた第1係数、前記第1ベクトルの対応する要素、及び、前記第3ベクトルの対応する要素に基づいて更新し、
前記第3ベクトルの計算、前記第1ベクトル及び前記第2ベクトルの更新を繰り返し実行し、前記最適化問題の解を探索する、
ように構成される、回路情報。
【請求項2】
再構成可能な半導体装置を、目的関数に対応する項に含まれる位置ベクトルに対応する第1ベクトル、運動量ベクトルに対応する第2ベクトル及び力ベクトルに対応する第3ベクトルを用いて、前記目的関数を評価指標とした最適化問題を探索する計算を実行する計算装置にする、前記再構成可能な半導体装置に書き込まれる回路情報であって、
前記計算装置は、
前記目的関数に基づく基本式から、前記第3ベクトルのそれぞれの要素を計算し、前記基本式の変数が、前記第1ベクトルの要素、又は、前記第1ベクトルの要素を所定の第1値もしくは前記第1値より大きい所定の第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素であり、
前記第1ベクトルの要素を、前記第2ベクトルの対応する要素に基づいて更新し、
前記第2ベクトルの要素を、更新回数に応じた第1係数、前記第1ベクトルの対応する要素、及び、前記第3ベクトルの対応する要素に基づいて更新し、
前記第3ベクトルの計算、前記第1ベクトル及び前記第2ベクトルの更新を繰り返し実行し、前記最適化問題の解を探索する、
ように構成される、回路情報。
【請求項3】
前記計算装置は、値が前記第1値より小さい前記第1ベクトルの要素に対応する前記第2ベクトルの要素、又は、前記第2値より大きい前記第1ベクトルの要素に対応する前記第2ベクトルの要素を、もとの前記第2ベクトルの要素に、第2係数を乗じた値に更新するように構成される、
請求項1又は請求項2に記載の回路情報。
【請求項4】
前記計算装置は、前記第1ベクトルの要素を変数として計算した前記基本式の値を前記第1関数で変換した値に基づいて前記第3ベクトルのそれぞれの要素を更新するように構成される、
請求項1から請求項3のいずれかに記載の回路情報。
【請求項5】
前記計算装置に接続され、前記第1ベクトル又は前記第4ベクトルを格納する、第1メモリを備えることが可能である、
請求項1から請求項4のいずれかに記載の回路情報。
【請求項6】
前記第1メモリが前記第4ベクトルのそれぞれの要素の値を1ビットの情報で格納することが可能であり、
前記計算装置は、前記第1メモリから読み出した前記1ビットの情報を符号付き2進数に復号化するように構成された復号器を含む、
請求項5に記載の回路情報。
【請求項7】
前記計算装置は、
前記第3ベクトルの要素に基づき、前記第1ベクトルの要素、前記第2ベクトルの要素又は前記第4ベクトルの要素の少なくともいずれかを計算しているタイミングにおいて、前記第1ベクトルの要素、前記第2ベクトルの要素及び前記第4ベクトルの要素が次回計算されるときに使われる前記第3ベクトルの要素を計算する、
ように構成されている、
請求項5に記載の回路情報。
【請求項8】
前記計算装置は、それぞれが入力側及び出力側で前記第1メモリに接続されているPb個(Pbは2以上の整数)備えられることが可能である、
請求項5から請求項7のいずれかに記載の回路情報。
【請求項9】
それぞれの前記計算装置は、N×N次元の結合係数行列をPb個に分割したN/Pb×N次元の第1行列のいずれかと、前記第4ベクトルをPb個に分割した第5ベクトルのいずれかとの積である前記第3ベクトルの要素を計算するように構成されており、
それぞれの前記計算装置は、いずれかの前記計算装置が計算した前記第3ベクトルの要素に基づき、前記第1ベクトルのN/Pb個の要素及び前記第2ベクトルのN/Pb個の要素及び前記第4ベクトルのN/Pb個の要素を更新し、更新した前記第4ベクトルのN/Pb個の要素を前記第1メモリに保存するように構成される、
請求項8に記載の回路情報。
【請求項10】
それぞれの前記計算装置は、前記第1行列を、Pr×Pc次元の複数の第2行列に、前記第5ベクトルを要素数Pcの複数の第6ベクトルにそれぞれ分割し、それぞれの前記第2行列と、対応する前記第6ベクトルとの積演算を順次実行することにより、前記第3ベクトルの要素を計算するように構成される、
請求項9に記載の回路情報。
【請求項11】
それぞれが、前記第1ベクトルのN/Pb個の要素を格納する、前記計算装置と接続されるPb個の第2メモリと、
それぞれが、いずれかの前記第1行列を格納する、Pb個の第3メモリと、
それぞれが、前記第2ベクトルのN/Pb個の要素を格納する、前記計算装置と接続されるPb個の第4メモリと、
それぞれが、第6ベクトルのN/Pb個の要素を格納する、前記計算装置と接続されるPb個の第5メモリと、
を備える、
請求項9又は請求項10に記載の回路情報。
【請求項12】
前記計算装置は、前記第3ベクトルの複数の要素を計算する演算回路を複数含み、前記複数の演算回路を用いて、前記第3ベクトルの複数の要素を同じタイミングで計算する、
請求項1から請求項11のいずれかに記載の回路情報。
【請求項13】
前記計算装置は、複数の乗算回路を含み、
前記第3ベクトルの複数の要素の計算は、複数の乗算を含み、前記複数の乗算回路を使って、前記複数の乗算を同じタイミングで計算する、 請求項1から請求項11のいずれかに記載の回路情報。
【請求項14】
前記計算装置は、前記第2ベクトルの複数の要素を更新する演算回路を複数含み、前記複数の演算回路を用いて、前記第2ベクトルの複数の要素を同じタイミングで計算する、
請求項1から請求項11のいずれかに記載の回路情報。
【請求項15】
前記計算装置は、
値が前記第1値より小さい前記第1ベクトルの要素を前記第1値に設定し、
値が前記第2値より大きい前記第1ベクトルの要素を前記第2値に設定する、
ことにより、前記第1ベクトルの要素を前記第2ベクトルの対応する要素に基づいて更新する、
請求項1から請求項14のいずれかに記載の回路情報。
【請求項16】
ハードウェア記述言語により記載された、複数の電子回路のそれぞれの構成を表す回路情報であり、目的関数に対応する項に含まれる、位置ベクトルに対応する第1ベクトル、運動量ベクトルに対応する第2ベクトル及び力ベクトルに対応する第3ベクトルを用いて前記目的関数を評価指標とした最適化問題を探索する計算を実行する電子回路にする、回路情報であって、
前記複数の電子回路のそれぞれは、
前記目的関数に基づく基本式から、前記第3ベクトルのそれぞれの要素を計算し、前記基本式の変数が、前記第1ベクトルの要素、又は、前記第1ベクトルの要素を所定の第1値もしくは前記第1値より大きい所定の第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素であり、
前記第1ベクトルの要素を、前記第2ベクトルの対応する要素に基づいて更新し、
前記第2ベクトルの要素を、更新回数に応じた第1係数、前記第1ベクトルの対応する要素、及び、前記第3ベクトルの対応する要素に基づいて更新し、
前記第3ベクトルの計算、前記第1ベクトル及び前記第2ベクトルの更新を繰り返し実行し、前記最適化問題の解を探索し、
前記の更新の繰り返し実行のそれぞれにおいて、前記第1ベクトルの要素、又は、前記第4ベクトルの要素の内容を相互通信によって、前記複数の電子回路で共有する、
ように構成される、回路情報。
【請求項17】
複数の再構成可能な半導体装置を動作させるために、前記複数の再構成可能な半導体装置のそれぞれに書き込まれる回路情報であり、目的関数に対応する項に含まれる、位置ベクトルに対応する第1ベクトル、運動量ベクトルに対応する第2ベクトル及び力ベクトルに対応する第3ベクトルを用いて前記目的関数を評価指標とした最適化問題を探索する計算を実行する再構成可能な半導体装置にする、回路情報であって、
前記再構成可能な半導体装置のそれぞれは、
前記目的関数に基づく基本式から、前記第3ベクトルのそれぞれの要素を計算し、前記基本式の変数が、前記第1ベクトルの要素、又は、前記第1ベクトルの要素を所定の第1値もしくは前記第1値より大きい所定の第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素であり、
前記第1ベクトルの要素を、前記第2ベクトルの対応する要素に基づいて更新し、
前記第2ベクトルの要素を、更新回数に応じた第1係数、前記第1ベクトルの対応する要素、及び、前記第3ベクトルの対応する要素に基づいて更新し、
前記第3ベクトルの計算、前記第1ベクトル及び前記第2ベクトルの更新を繰り返し実行し、前記最適化問題の解を探索し、
前記の更新の繰り返し実行のそれぞれにおいて、前記第1ベクトルの要素、又は、前記第4ベクトルの要素の内容を相互通信によって、前記複数の再構成可能な半導体装置で共有する、
ように構成される、回路情報。
【請求項18】
プロセッサ、を備え、目的関数に対応する項に含まれる、位置ベクトルに対応する第1ベクトル、運動量ベクトルに対応する第2ベクトル及び力ベクトルに対応する第3ベクトルを用いて前記目的関数を評価指標とした最適化問題を探索する、情報処理装置であって、
前記プロセッサは、
前記目的関数に基づく基本式から、前記第3ベクトルのそれぞれの要素を計算し、前記基本式の変数が、前記第1ベクトルの要素、又は、前記第1ベクトルの要素を所定の第1値もしくは前記第1値より大きい所定の第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素であり、
前記第1ベクトルの要素を、前記第2ベクトルの対応する要素に基づいて更新し、
前記第2ベクトルの要素を、更新回数に応じた第1係数、前記第1ベクトルの対応する要素、及び、前記第3ベクトルの対応する要素に基づいて更新し、
前記第3ベクトルの計算、前記第1ベクトル及び前記第2ベクトルの更新を繰り返し実行し、前記最適化問題の解を探索する、
情報処理装置。
【請求項19】
目的関数に対応する項に含まれる、位置ベクトルに対応する第1ベクトル、運動量ベクトルに対応する第2ベクトル及び力ベクトルに対応する第3ベクトルを用いて前記目的関数を評価指標とした最適化問題を探索する電子回路であって、
前記目的関数に基づく基本式から、前記第3ベクトルのそれぞれの要素を計算し、前記基本式の変数が、前記第1ベクトルの要素、又は、前記第1ベクトルの要素を所定の第1値もしくは前記第1値より大きい所定の第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素である、第1回路と、
前記第1ベクトルの要素を、前記第2ベクトルの対応する要素に基づいて更新し、
前記第2ベクトルの要素を、更新回数に応じた第1係数、前記第1ベクトルの対応する要素、及び、前記第3ベクトルの対応する要素に基づいて更新する第2回路と、を備え、
前記第3ベクトルの計算、前記第1ベクトル及び前記第2ベクトルの更新を繰り返し実行し、前記最適化問題の解を探索する、
電子回路。
【請求項20】
コンピュータが、目的関数に対応する項に含まれる、位置ベクトルに対応する第1ベクトル、運動量ベクトルに対応する第2ベクトル及び力ベクトルに対応する第3ベクトルを用いて前記目的関数を評価指標とした最適化問題を探索する情報処理方法であって、
前記目的関数に基づく基本式から、前記第3ベクトルのそれぞれの要素を計算し、前記基本式の変数が、前記第1ベクトルの要素、又は、前記第1ベクトルの要素を所定の第1値もしくは前記第1値より大きい所定の第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素であり、
前記第1ベクトルの要素を、前記第2ベクトルの対応する要素に基づいて更新し、
前記第2ベクトルの要素を、更新回数に応じた第1係数、前記第1ベクトルの対応する要素、及び、前記第3ベクトルの対応する要素に基づいて更新し、
前記第3ベクトルの計算、前記第1ベクトル及び前記第2ベクトルの更新を繰り返し実行し、前記最適化問題の解を探索する、
情報処理方法。
【請求項21】
コンピュータに、目的関数に対応する項に含まれる、位置ベクトルに対応する第1ベクトル、運動量ベクトルに対応する第2ベクトル及び力ベクトルに対応する第3ベクトルを用いて前記目的関数を評価指標とした最適化問題を探索させるプログラムであって、
前記目的関数に基づく基本式から、前記第3ベクトルのそれぞれの要素を計算させ、前記基本式の変数が、前記第1ベクトルの要素、又は、前記第1ベクトルの要素を所定の第1値もしくは前記第1値より大きい所定の第2値のいずれかの値をとる第1関数で変換した第4ベクトルの要素であり、
前記第1ベクトルの要素を、前記第2ベクトルの対応する要素に基づいて更新させ、
前記第2ベクトルの要素を、更新回数に応じた第1係数、前記第1ベクトルの対応する要素、及び、前記第3ベクトルの対応する要素に基づいて更新させ、
前記第3ベクトルの計算、前記第1ベクトル及び前記第2ベクトルの更新を繰り返し実行し、前記最適化問題の解を探索させる、
情報処理方法。