説明

双極子相互作用の高速演算装置と演算方法

【課題】双極子間の相互作用を高速に演算できる技術を提案する。
【解決手段】高速演算装置を構成する複数の演算装置のそれぞれが、独立かつ並列に演算を実行できるように記述された動作ユニットに基づいて動作する仕組みを提案する。この動作ユニットは、各動作ユニットがデータの読み書きに使用するアドレス範囲をアクセス不可領域として他の動作ユニットに通知する仕組みを提案する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、双極子相互作用の高速演算技術に関する。例えば永久磁石、磁気センサ、磁気記録媒体その他の磁性材料の集合体における磁化分布の解析処理や磁化曲線の解析処理の高速化を実現する技術に関する。
【背景技術】
【0002】
永久磁石、磁気センサ、磁気記録媒体等は、磁化を帯びる性質を有する材料(磁性材料)を主に含んでいる。一般に磁性材料の磁化特性は、マイクロマグネティクスに基づいた数値計算により定量的な評価がなされている。このマイクロマグネティクスに基づく解析方法には、ブラウン方程式(Brown’s equation)を用いて磁気エネルギーの平衡状態を探索する方法と、ランダウ-リフシッツ-ギルバート方程式(Landau-Lifshitz-Gilbert equation)を用いて磁化の動的過程から磁化集団の平衡状態を求める方法の2方法がある。どちらの方法においても、解析対象の磁性体を多数のセルに分割し、各セルに微小磁化ベクトルを与え、磁化ベクトルの状態(向き)と磁気エネルギーを計算する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−124479号公報
【特許文献2】特開平8−282745号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
以上のように、磁化分布や磁化曲線の解析では、多数のセル上に配置した磁化ベクトルの状態と対応した磁気エネルギーの計算が必要である。磁気エネルギーの計算は、磁化間の双極子相互作用エネルギー、磁化に働く交換相互作用エネルギー、磁化の異方性エネルギー、そして、外部から印加した磁場との相互作用エネルギーの4種の計算が必要である。
【0005】
これらの計算のうち磁化間の双極子相互作用の計算は、全ての磁化ベクトル間のペア(組)に対して計算を行う必要があり、最も多くの計算量を必要とする。このため、セル数の規模が大きい場合、ベクトル型スーパーコンピュータに代表される高性能な逐次処理型コンピュータを用いても非常に長い計算時間を必要としてしまう。
【0006】
この大規模系に対する磁化分布や磁化曲線の解析の高速化の課題に対して、高速フーリエ変換を利用する方法、磁位を利用する方法、方程式全体の並列処理化(特許文献1参照)などの幾つかの提案がなされている。
【0007】
しかしながら、高速フーリエ変換を利用した方法は、周期的で十分に滑らかな磁化にしか適用できない欠点がある。また、磁位を利用した方法は、磁位を求めるのにポワソン方程式又はラプラス方程式を解く必要があり、任意の形状や形状変化に対して汎用的に扱えない欠点がある。
【0008】
また、方程式全体を並列処理化して解析を高速化する方法(特許文献2参照)では、最も計算時間のかかる反磁界を、メモリ分散型のマルチプロセッサ型コンピュータシステムで直接法により計算すると示されているが、高速化の要に関しては言及されていない。また、特許文献1の開示内容はブラウン方程式の解析に関するもののみであり、磁化の動的過程の解析を行うための情報が記載されていない。
【課題を解決するための手段】
【0009】
そこで、発明者は、双極子間の相互作用を高速に演算できる技術を提案する。具体的には、高速演算装置(計算機システム)を構成する複数の演算装置のそれぞれが、独立かつ並列に演算を実行できるように記述された動作ユニットに基づいて動作する技術を提案する。また、発明者は、各動作ユニットがデータの読み書きに使用するアドレス範囲をアクセス不可領域として他の動作ユニットに通知する仕組みを提案する。
【発明の効果】
【0010】
本発明は、演算装置の数ではなく、動作ユニットを基準として並列処理動作を実現する。このため、高速演算装置を構成する演算装置の並列数の制約を受けることがなく、解析対象とする磁化ベクトルの数を自由に与えることができる。また、本発明の場合、各動作ユニットがデータの読み書きを行うアドレス範囲を、相互にアクセス不可領域として通知し合うことにより、各演算装置と外部の記憶装置との間のアクセスを最小化できる。すなわち、バス上での待ち時間を最小化することができる。結果として、高速演算装置全体としての処理能力を高めることができる。
【図面の簡単な説明】
【0011】
【図1】形態例に係る演算システムの全体構成を例示する図である。
【図2】演算装置の形態例を示す図である。
【図3】LLG解析フローと高速演算装置上で実行される処理動作の関係を説明する図である。
【図4】ベクトル和の算出動作例を説明する図である。
【発明を実施するための形態】
【0012】
以下、図面に基づいて、双極子の相互作用を高速演算する装置の形態例を説明する。
(1)形態例
(1−1)演算システムの全体構成
図1に、形態例に係る演算システムの全体構成例を示す。演算システムは、高速演算装置100と外部計算機160で構成され、これらの協働動作によって磁化エネルギーの計算動作が実行される。すなわち、高速演算装置100と外部計算機160の協働動作により、(1) 磁化間の双極子相互作用エネルギーの計算、(2) 磁化に働く交換相互作用エネルギーの計算、(3) 磁化の異方性エネルギーの計算、(4) 外部から印加した磁場との相互作用エネルギーの計算が実行される。
【0013】
この4つの計算のうち、磁化間の双極子相互作用エネルギーの計算(特に、双極子相互作用力の計算)を高速演算装置100が実行し、他の3つの計算は外部計算機160が実行する。
【0014】
なお、高速演算装置100は、複数個の演算装置200と、双極子−双極子行列、磁化ベクトルを格納する記憶装置130(以下、「メモリG」という。)と、演算結果を格納する記憶装置140(以下、「メモリS」という。)と、これらを相互に接続するバス120で構成される。すなわち、高速演算装置100は、並列プロセッサ構造を有している。
【0015】
因みに、メモリGは、特許請求の範囲における第1の記憶装置に対応する。また、メモリSは、特許請求の範囲における第2の記憶装置に対応する。また、バス120の一端はコネクタ150を介して外部計算機160と接続されている。
【0016】
一方、外部計算機160は、バス162と、中央演算装置164と、メモリ166とで構成されている。
【0017】
(1−2)演算装置200の内部構成
図2に、演算装置200の内部構成例を示す。この明細書において、この演算装置200は、AUP(Action Unit Processor)ともいう。形態例に係る演算装置200は、演算器210、キャッシュメモリ220、リストメモリ230で構成される。演算器210は、数値データの演算を実際に実行する部分である。キャッシュメモリ220は、データやアドレスを格納する記憶領域である。リストメモリ230は、読み書きできるメモリ領域を特定するアドレスの情報(アドレス範囲)を格納する記憶領域である。
【0018】
この形態例の場合、リストメモリ230には、2つのリストが格納される。1つは、メモリG上でのアクセス可能領域を指定するアクセス許可リスト(以下、「allowリスト」という。)240である。他の1つは、メモリS上でのアクセス不可領域を指定するアクセス不可リスト(以下、「denyリスト」という。)250である。なお、allowリストは特許請求の範囲における第1のリストに対応し、denyリストは特許請求の範囲における第2のリストに対応する。
【0019】
(1−3)動作ユニットの構造
続いて、演算装置200の動作を規定する動作ユニットAU(Action Unit)の内容を説明する。動作ユニットAUは、数値データを指定されたメモリからの読み込み、指定される演算、指定されたメモリに対する演算結果の書き込みそれぞれの任意回数の組合せとして記述されている。なお、動作ユニットAUの内容は、外部計算機160又はメモリGに格納されたプログラム内に記述されている。すなわち、プログラムには、複数の動作ユニットAUの内容が記述されている。
【0020】
演算装置200は、この動作ユニットAUを読み込み、独立に実行する。このため、高速演算装置100の全体では、動作ユニットAUが並列に実行される。また、この形態例の場合、各動作ユニットAUには、固有の数字(認識番号)が付されている。演算装置200は、この認識番号を用いて動作ユニットAUを識別する。
【0021】
動作ユニットAU間におけるデータの受け渡しは、各動作ユニットAUがメモリSを介して実行する。動作ユニットAUがメモリS上にデータを書き込む場合又は読み込む場合、動作ユニットAUは、前述した認識番号とメモリアドレスの情報を、他の演算装置200で動作している動作ユニットAUに通知する。演算装置200上で動作している他の動作ユニットAUは、通知された認識番号とメモリアドレスの情報の組を、リストメモリ230のdenyリスト250に格納する。このdenyリスト250に存在するアドレスに対しては、その通知を受けた他の動作ユニットAUはアクセスすることができない。なお、動作ユニットAUによるメモリSに対する書き込み動作又は読み込み動作が終了する場合、自身の認識番号を他動作ユニットAUに対して通知する。通知を受けた動作ユニットAU側では、通知された認識番号に関連する全てのメモリアドレスの組をdenyリスト250から全て削除するように動作する。
【0022】
(1−4)LLG解析動作
図3に、LLG解析法に基づいて、演算システム(図1)において実行される計算動作例を説明する。
【0023】
(初期動作)
最初に、LLG解析フローの初期動作1000が実行される。この初期動作では、双極子−双極子行列Gijが外部計算機160において計算される。計算された双極子−双極子行列Gijのデータは、外部計算機160からコネクタ150及びバス120を通じ、高速演算装置200内のメモリGに書き込まれる。
【0024】
ここで、磁化ベクトルの数をNとすると、双極子−双極子行列Gijの書き込みに必要なメモリ容量は、N×N×3×3×Wバイトで与えられる。ここでのWは、1つの浮動小数点実数を記録するのに必要なバイト数である。好適な例として、単精度実数(W=4バイト)と倍精度実数(W=8バイト)が挙げられる。
【0025】
また、この初期動作において、各動作ユニットAUがアクセスするメモリ上のアドレス範囲も決定される。すなわち、初期動作において、一連の演算に必要な動作ユニットAUが発生される。ここで、動作ユニットAUは、磁化ベクトルの数N又はその整数倍の数だけ発生される。後述する動作は、この動作ユニットAUの記述に従って実行される。
【0026】
(磁化に働く力の計算)
次に、外部計算機160と高速演算装置200の協働動作により、磁化に働く力の計算1100が実行される。なお、双極子相互作用の力の計算以外は、外部計算機160で計算される。以下では、双極子相互作用の力の計算で実行される処理動作の内容を説明する。
【0027】
(a)磁化ベクトルの転送
まず、磁化ベクトル転送2100が実行される。この動作では、更新された磁化ベクトルの集合が、外部計算機160からコネクタ150及びバス120を通じてメモリGに書き込まれる。磁化ベクトルの数をNとすると、磁化ベクトルの集合の格納に必要なメモリ容量はN×3×Wバイトである。ここでのWは、1つの浮動小数点実数を記録するのに必要なバイト数である。好適な例として、単精度実数(W=4バイト)と倍精度実数(W=8バイト)とが挙げられる。
このとき、各動作ユニットAUが計算に使用する磁化ベクトルMのデータが、対応する演算装置200のキャッシュメモリ220に格納される動作も実行される。
【0028】
(b)ベクトル行列積の演算
次に、ベクトル行列積の演算2200が実行される。この動作は、特許請求の範囲における第1のステップの動作に対応する。ここでは、N個の磁化集合の中から2個の磁化を取り出し、この2つの磁化の番号をi,jとして説明する。また、2つの磁化i,j間の双極子−双極子行列はGijで与えられるものとする。この場合、各動作ユニットAUは、Gij×Mj で表現される行列演算を実行する。また、算出結果である3次元ベクトルVijは、バス120を通じてメモリSに書き込まれる。
【0029】
以下では、この動作の詳細内容を説明する。この形態例の場合、各動作ユニットAUは、ベクトル行列積の演算動作が演算装置200において並列かつ独立に実行されるように記述されている。例えば、各動作ユニットAUには、演算動作で使用する数値データのアドレス情報が予め指定されている。例えば双極子−双極子行列Gij(メモリG上に存在する。)のアドレス情報は、i,jの2つの整数値と、1つの3×3行列に必要なメモリサイズW_33(9個の浮動小数点実数のサイズ)を用いて以下のように記述される。
【0030】
ここでは、i,jをゼロから始まる整数とする。その場合、双極子−双極子行列Gijの開始アドレスGij_startと、終了アドレスGij_endは、次式により与えられる。
Gij_start=i×(N−1)×W_33+j×W_33={i×(N−1)+j}×W_33
Gij_end=Gij_start+W_33
従って、このステップで使用される動作ユニットAUには、(i) 認識番号、(ii)磁化を指定する整数値(i,j)、(iii) 双極子−双極子行列Gijのアドレス範囲(Gij_start,Gij_end)、(iv)磁化ベクトルMjのアドレス及びベクトル値のいずれか、(v)3次元ベクトルVijを格納するアドレスが設定されている。
【0031】
これらの情報に基づき、各演算装置200は、独立かつ並列に、双極子−双極子行列データと磁化ベクトルを読み込み、キャッシュメモリ220に格納する。また、各演算装置200は、磁化ベクトル(3次元)と双極子-双極子行列(3×3次元)の積演算を演算器210で実行し、演算結果をメモリS上に確保された3次元ベクトルVij用のアドレス領域に格納する。
【0032】
このステップ1に対応する全ての動作ユニットAUの実行が終了すると、N個の磁化集合中の全ての2つの磁化の組合せに対する双極子−双極子行列と磁化ベクトル間の積演算が完了することになる。
【0033】
(c)ベクトル和の演算
次に、ベクトル和の演算2300が実行される。この動作は、特許請求の範囲における第2のステップの動作に対応する。算出された3次元ベクトルVijを、ある添字jについてのみ加算すると、磁化iに作用する双極子相互作用力Fi (=ΣVij)となる。ただし、i≠jである。更に、この双極子相互作用力Fi と磁化Mi の内積を求め、全てのiに関する和を求めると、双極子エネルギーになる。従って、添字jについてのベクトル和を効率良く算出することが計算速度の向上にとって重要である。以下では、その好適な計算例を示す。
【0034】
(c−1)基本動作
ここでは、磁化ベクトルの集合中の磁化ベクトルの数をNとし、Nを超えない最大の2のベキ数をLとする。この基本動作では、N=Lの場合を考える。さて、L=2を満たす整数Pを最大とする整数の集合{1,2,…,P}を用意する。この集合の要素pを1からPまで順番に取り出し、その都度、以下の処理動作を実行する。
【0035】
まず、認識番号が2p*n+2(p-1)(ただし、n=0,1,2…)で与えられる動作ユニットAUだけを動作させる。このとき、動作した動作ユニットAUは、自身がメモリSに書き込んだ3次元ベクトルVijと、自身の認識番号から整数2p を引いた認識番号の動作ユニットAUが書き込んだ3次元ベクトルVijとを読み込み、これらのデータ間の和演算を実行する。このとき、この和演算で用いられる2つの3次元ベクトル(特許請求の範囲における「ベクトル行列積」又は「ベクトル行列積和」に対応する。)は、他の動作ユニットAUとの間で排他的に選択された動作になる。なお、動作ユニットは、和演算によって得られた結果をメモリS上に確保された特定の格納領域に書き込む。例えば加算演算の対象である2つの認識番号の大きい方の認識番号に対応する格納領域に書き込まれる。この格納領域は、要素pが1つ繰り上がった場合に読み出し領域として再び使用される。
【0036】
この処理動作を繰り返しにより、認識番号が2P-1 の動作ユニットAUの処理結果としてL(=N)個の3次元ベクトルVijの総和(=ΣVij)が算出される。そして、この総和である双極子相互作用力Fi がメモリSに書き込まれる。
【0037】
なお、以上の動作を全ての添字iについて実行すると、全ての磁化に作用する双極子相互作用力Fi を算出することができる。
【0038】
(c−2)変形動作
ところで、前述の基本動作ではN=Lの場合について説明したが、必ずしもそのような条件を満たすとは限らない。そのような場合は、以下の動作を実行する。NとLが等しくならない場合には、まず、Nを超えない最大のべき乗数Lを求める。そして、この整数Lで与えられる範囲を(c−1)項の基本動作を適用する部分集合に設定する。
【0039】
次に、整数Q(=N−L)を超えない最大の2ベキ乗数LLで与えられる個数の3次元ベクトルの部分集合について、(c−1)項のLをLLに入れ替えた動作を適用する。この場合は、整数Lまでの範囲に属する3次元ベクトルの集合に対して求められた部分総和と、整数Lを越えて整数LLまでの範囲に属する3次元ベクトルの集合に対して求められた部分総和との和演算を実行することにより、3次元ベクトルの総和(=ΣVij)を算出することができる。
【0040】
更に、NとL+LLとが等しくならない場合には、同様に部分集合を設定し、その範囲について(c−1)項の処理を適用する。例えば、整数の部分集合R={N−L−LL+1,N−L−LL+2,…,N}に認識番号が属する動作ユニットAUによって、当該整数範囲に対応する3次元ベクトルの和演算が実行される。以上の処理イメージを図4に示す。図4は、2のべき乗で与えられる3つの範囲についてそれぞれ(c−1)項の基本動作が実行され、その演算結果が更に加算される様子を表している。
【0041】
(d)双極子相互作用力の転送
次に、算出された双極子相互作用力の転送2400が実行される。この動作では、3次元ベクトルのN個の集合データである双極子相互作用力Fi が外部計算機160に転送される。
【0042】
(次の磁化状態の決定)
ここまでの作業により、外部計算機160上には磁化に働く全ての双極子相互作用力Fiが求まる。次の磁化状態の決定1200の中で、これらの双極子相互作用力Fi をLLG方程式の定める方法に適用し、時間刻み幅だけ進んだときの磁化状態を求める。
【0043】
(終了判断)
その後、計算が所定の回数まで実行したかの判断(すなわち、終了判断1300)が実行され、所定回数に満たない場合には磁化の時間発展の繰返し起点1010に戻る。
【0044】
(終了処理)
そして、計算が所定回数に達した場合には、終了処理1400(2500)を行い、終了する。
【0045】
(1−5)まとめ
以上説明したように、この形態例によれば、プロセッサの数ではなく、プロセッサ上で動作する作業単位(動作ユニットAU)による並列分割を行っているので、ハードウエア的な並列数に制約されることなく、解析する磁化ベクトルの数を変化させることができる。従って、膨大な数の磁化ベクトルの解析においても、非常に容易に対応することが可能である。
【0046】
また、この形態例の場合には、計算負荷の最も重い双極子双極子相互作用部分を実行し、それ以外の計算を外部計算機に委ねることができるので、解析方程式や手法の拡張へ柔軟に対応することが可能である。
【0047】
また、この形態例によれば、磁性体の磁化の動的過程(スピン反転)や磁化分布や磁化曲線の解析において、磁性体形状由来の反磁場効果などを近似的に取り入れることなく、高速かつ高精度に解析することができる。従って、ナノサイズ磁性体上のスピン反転特性、複雑な界面形状を有する磁性体での磁化反転特性、3次元的な多層構造磁性体の磁気特性だけでなく、2次元磁性体膜などの特性解析に有効である。
【0048】
(2)他の形態例
(2−1)前述の形態例においては、ベクトル和の演算2300において、認識番号が2p*n+2(p-1) で与えられる動作ユニットAUと、この数値よりも2p を引いた認識番号で与えられる動作ユニットAUで算出された3次元ベクトル同士を加算し、その加算結果を2p*n+2(p-1) で与えられる認識番号を有する動作ユニットAUのメモリ領域に書き込む場合について説明した。しかし、2p*n+2(p-1) よりも2p を引いた認識番号を有する動作ユニットAUのメモリ領域に書き込んでも良い。
また、全ての3次元ベクトルが重複することなく全て加算した結果が得られれば、加算演算の対象とする2つの3次元ベクトル対の与え方は任意である。
【0049】
(2−2)前述した形態例の場合には、各動作ユニットAUが使用するメモリS上の記憶領域をアクセス不可領域として他の動作ユニットAUに通知する場合について説明した。しかし、各動作ユニットAUが使用するメモリG上の記憶領域をアクセス不可領域として通知しても良い。例えばベクトル行列積の演算2200を実行する場合、各動作ユニットAUは、全く任意の磁化についてベクトル行列積を演算する。この場合において、演算対象である2つの磁化ベクトルを指定する整数値(i,j)のいずれか一方が、他の動作ユニットAUとの間で競合することも考えられる。すなわち、複数の動作ユニットが同じ磁化ベクトルMjの読み出しを行う可能性がある。しかし、実行中の動作ユニットAUがこれらのアドレスをアクセス不可アドレスとして通知し合っていれば、各動作ユニットAUはメモリGにアクセスを開始する前に、当該アドレスに対する読み出しを停止することができる。
【0050】
(2−3)前述した形態例の場合には、高速演算装置100が、双極子相互作用力の演算のみを分担する場合について説明した。しかしながら、演算装置200において、その他の演算処理を実行しても良い。
【0051】
(2−4)前述した形態例の場合には、演算システムが全体として磁気エネルギーを計算する場合について説明した。しかし、形態例で説明した技術は、その他の汎用演算にも応用することができる。なお、高速演算装置100の構成は形態例1と同じものを想定する。このとき、演算装置200を特定することなく発生される動作ユニットの少なくとも一部に、処理対象として記憶装置から読み出す数値データのアドレス範囲と、演算結果を書き込むアドレス範囲と、読み出された数値データに対する演算動作を指定する処理内容と、数値データの読み出し又は書き込み先を与えるアドレス範囲を、アクセス不可領域として他の演算装置に通知させる処理と、読み出し又は書き込みの終了を他の演算装置に通知して第2のリストから削除させる処理とが記述されていれば良い。
【符号の説明】
【0052】
100…高速演算装置
120…バス
130…記憶装置(メモリG)
140…記憶装置(メモリS)
150…コネクタ
160…外部計算機
162…バス
164…中央演算装置
166…メモリ
200…演算装置
210…演算器
220…キャッシュメモリ(レジスタ)
230…リストメモリ
240…allowリスト
250…denyリスト
260…内部バス

【特許請求の範囲】
【請求項1】
双極子−双極子行列データ及び磁化ベクトルデータの集合を保持する第1の記憶装置と、
演算結果を格納する第2の記憶装置と、
演算器と、数値データ及びそのアドレス情報を格納するキャッシュメモリと、前記第1の記憶装置のアクセス可能領域を指定する第1のリストと、前記第2の記憶装置のアクセス不可領域を指定する第2のリストを格納するリストメモリとをそれぞれが有する複数の演算装置と、
前記第1の記憶装置と、前記第2の記憶装置と、前記複数の演算装置とを相互に接続するバスを有し、
双極子−双極子行列データと磁化ベクトルデータとの行列積演算を実行する第1のステップにおいて、
前記複数の演算装置のそれぞれが、独立かつ並列に、
演算装置を特定することなく事前に発生された複数の動作ユニットのうちの一つを読み込んで、当該動作ユニットに記述された磁化ベクトルデータのアドレス範囲と双極子−双極子行列データのアドレス範囲を前記第1のリストに追加すると共に、次に当該2つのアドレス範囲に基づいて演算対象としての磁化ベクトルデータと双極子−双極子行列データを前記第1の記憶装置から読み出して前記キャッシュメモリに書き込み、次に書き込まれた磁化ベクトルデータと双極子−双極子行列データの積演算を前記演算器で実行し、その演算結果である行列積データを動作ユニットで指定された前記第2の記憶装置のアドレス範囲に書き込む処理動作を実行し、
算出された前記行列積データの和演算を実行する第2のステップにおいて、
前記複数の演算装置のそれぞれが、独立かつ並列に、
1つ目の処理として、前記第1のステップによって算出された行列積データの集合に基づいて、全ての行列積データ対間で要素の重複が排除されるように行列積データ対の個数分だけ発生される動作ユニットの一つを読み込み、当該動作ユニットによる数値データの読み書きが終了するまでの間、数値データの読み書きを行うアドレス範囲を前記アクセス不可アドレスとして他の全ての動作ユニット置に通知し、次に動作ユニットで指定された行列積データ対を構成する2つの行列積データの各アドレス範囲を前記第1のリストに追加すると共に、次に指定された行列積データ対を構成する行列積データを前記第2の記憶装置の各アドレス範囲から読み出して前記キャッシュメモリに書き込み、次に書き込まれた2つの行列積データの和演算を前記演算器で実行し、その演算結果である行列積和データを動作ユニットで指定された前記第2の記憶装置のアドレス範囲に書き込む動作を実行し、
引き続き2つ目の処理として、算出された行列積和データの集合に基づいて、全ての行列積和データ対間で要素の重複が排除されるように行列積和データ対の個数分だけ発生される動作ユニットのうちの一つを読み込み、当該動作ユニットで指定された行列積和データ対を構成する2つの行列積和データの各アドレス範囲を前記第1のリストに追加すると共に、当該動作ユニットによる演算結果の書き込み動作が終了するまでの間、演算結果の書き込み先を与える1つのアドレス範囲を他の全ての動作ユニットに対して前記第2のリストに書き込むように通知し、次に指定された行列積和データ対を構成する行列積和データを前記第2の記憶装置の各アドレス範囲から読み出して前記キャッシュメモリに書き込み、次に書き込まれた2つの行列積和データの和演算を前記演算器で実行し、その演算結果である行列積和データを動作ユニットで指定された前記第2の記憶装置のアドレス範囲に書き込む動作を実行し、
以後、前記2つ目の処理を、演算結果が1つの行列積和データに統合されるまで繰り返し実行する
ことを特徴とする双極子相互作用の高速演算装置。
【請求項2】
個々の演算装置に実行させる動作内容を記述する各動作ユニットには、それぞれに固有の認識番号が付されており、各演算装置は、当該認識番号に基づいて自他の演算装置が実行する動作ユニットを識別する
ことを特徴とする請求項1に記載の高速演算装置。
【請求項3】
前記第2のステップにおける前記1つ目又は前記2つ目の処理で実行される各動作ユニットにおいては、
和演算の対象としての行列積データ又は行列積和データの集合のうち、各行列積データ又は行列積和データの認識番号の並び順に取り出された2つの行列積データ又は行列積和データが和演算の対象として指定される
ことを特徴とする請求項2に記載の高速演算装置。
【請求項4】
前記第2のステップにおいて、
各動作ユニットは、和演算の対象に指定された2つの行列積データ又は行列積和データのいずれか一方を読み出したアドレス範囲を、演算結果の書き込み先のアドレス範囲に使用する
ことを特徴とする請求項3に記載の高速演算装置。
【請求項5】
前記第2のステップにおける前記1つ目の処理で和演算の対象となる行列積データの総数が2のべき乗数と一致しない場合、
前記行列積データの集合を、前記総数を超えない最大の2のべき乗数で表される個数分の部分集合に処理範囲を分割し、その後、残りの行列積データの集合に対して、その総数を超えない最大の2のべき乗数で表される個数分の部分集合に処理範囲を分割する処理を、全ての行列積データがいずれかの部分集合に割り当てられるまで繰り返し、
生成された個々の部分集合を対象として、前記1つ目の処理及び前記2つ目の処理を適用し、
それぞれの部分集合についてそれぞれ1つの行列積和データが得られると、それらを対象として前記2つ目の処理を実行する
ことを特徴とする請求項4に記載の高速演算装置。
【請求項6】
数値データの集合を保持する第1の記憶装置と、
演算結果を格納する第2の記憶装置と、
演算器と、数値データ及びそのアドレス情報を格納するキャッシュメモリと、前記記憶装置のアクセス可能領域を指定する第1のリストと、前記記憶装置のアクセス不可領域を指定する第2のリストを格納するリストメモリとをそれぞれが有する複数の演算装置と、
前記第1の記憶装置と、前記第2の記憶装置と、前記複数の演算装置とを相互に接続するバスとを有し、
前記演算装置を特定することなく発生される動作ユニットの少なくとも一部が、
処理対象として前記第1の記憶装置から読み出す数値データのアドレス範囲と、
演算結果を書き込むアドレス範囲と、
読み出された数値データに対する演算動作を指定する処理内容と、
数値データの読み出し又は書き込み先を与えるアドレス範囲を、前記アクセス不可領域として他の演算装置に通知させる処理と、
読み出し又は書き込みの終了を他の演算装置に通知して前記第2のリストから削除させる処理と
を記述内容として有する
ことを特徴とする双極子相互作用の高速演算装置。
【請求項7】
双極子−双極子行列データ及び磁化ベクトルデータの集合を保持する第1の記憶装置と、演算結果を格納する第2の記憶装置と、演算器と、数値データ及びそのアドレス情報を格納するキャッシュメモリと、前記第1の記憶装置のアクセス可能領域を指定する第1のリストと、前記第2の記憶装置のアクセス不可領域を指定する第2のリストを格納するリストメモリとをそれぞれが有する複数の演算装置と、前記第1の記憶装置と、前記第2の記憶装置と、前記複数の演算装置とを相互に接続するバスを有する高速演算装置において実行される双極子相互作用の高速演算方法であって、
双極子−双極子行列データと磁化ベクトルデータとの行列積演算を実行する第1のステップにおいて、
前記複数の演算装置のそれぞれが、独立かつ並列に、
演算装置を特定することなく事前に発生された複数の動作ユニットのうちの一つを読み込んで、当該動作ユニットに記述された磁化ベクトルデータのアドレス範囲と双極子−双極子行列データのアドレス範囲を前記第1のリストに追加すると共に、次に当該2つのアドレス範囲に基づいて演算対象としての磁化ベクトルデータと双極子−双極子行列データを前記第1の記憶装置から読み出して前記キャッシュメモリに書き込み、次に書き込まれた磁化ベクトルデータと双極子−双極子行列データの積演算を前記演算器で実行し、その演算結果である行列積データを動作ユニットで指定された前記第2の記憶装置のアドレス範囲に書き込む処理動作を実行し、
算出された前記行列積データの和演算を実行する第2のステップにおいて、
前記複数の演算装置のそれぞれが、独立かつ並列に、
1つ目の処理として、前記第1のステップによって算出された行列積データの集合に基づいて、全ての行列積データ対間で要素の重複が排除されるように行列積データ対の個数分だけ発生される動作ユニットの一つを読み込み、当該動作ユニットによる数値データの読み書きが終了するまでの間、数値データの読み書きを行うアドレス範囲を前記アクセス不可アドレスとして他の全ての動作ユニットに通知し、次に動作ユニットで指定された行列積データ対を構成する2つの行列積データの各アドレス範囲を前記第1のリストに追加すると共に、次に指定された行列積データ対を構成する行列積データを前記第2の記憶装置の各アドレス範囲から読み出して前記キャッシュメモリに書き込み、次に書き込まれた2つの行列積データの和演算を前記演算器で実行し、その演算結果である行列積和データを動作ユニットで指定された前記第2の記憶装置のアドレス範囲に書き込む動作を実行し、
引き続き2つ目の処理として、算出された行列積和データの集合に基づいて、全ての行列積和データ対間で要素の重複が排除されるように行列積和データ対の個数分だけ発生される動作ユニットのうちの一つを読み込み、当該動作ユニットで指定された行列積和データ対を構成する2つの行列積和データの各アドレス範囲を前記第1のリストに追加すると共に、当該動作ユニットによる演算結果の書き込み動作が終了するまでの間、演算結果の書き込み先を与える1つのアドレス範囲を他の全ての動作ユニットに対して前記第2のリストに書き込むように通知し、次に指定された行列積和データ対を構成する行列積和データを前記第2の記憶装置の各アドレス範囲から読み出して前記キャッシュメモリに書き込み、次に書き込まれた2つの行列積和データの和演算を前記演算器で実行し、その演算結果である行列積和データを動作ユニットで指定された前記第2の記憶装置のアドレス範囲に書き込む動作を実行し、
以後、前記2つ目の処理を、演算結果が1つの行列積和データに統合されるまで繰り返し実行する
ことを特徴とする双極子相互作用の高速演算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2010−218398(P2010−218398A)
【公開日】平成22年9月30日(2010.9.30)
【国際特許分類】
【出願番号】特願2009−66443(P2009−66443)
【出願日】平成21年3月18日(2009.3.18)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】