説明

二体間相互作用計算回路とこれを用いた多体問題計算装置

【課題】ビリアル計算を行う回路の演算器数を削減し、回路規模を縮小することのできる二体間相互作用計算回路と、これを用いた多体問題計算装置を提供する。
【解決手段】二体間相互作用計算回路は、中心粒子iの座標、基本セルの大きさ、格子ベクトル、粒子jの座標を入力し、中心粒子iの座標と粒子jの座標を鏡像粒子に変換した座標との差分を計算する座標差分計算部301と、差分から距離の2乗を計算する距離の二乗計算部306と、距離の2乗から距離による相互作用の関数を計算する関数計算部307と、相互作用の関数と差分から力を計算する力の計算部308と、力から粒子iについての力の総和を計算する総和計算部309と、力の総和からビリアルを計算するビリアル計算部310と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は多体問題計算装置に関する。
【背景技術】
【0002】
分子動力学の分野では、液体、固体、高分子などの挙動を、それらを構成する原子あるいは分子の動きの結果と考え、それら粒子の動きをシミュレーションして研究が行なわれる。互いに相互作用する多数の粒子からなる系を扱う問題を多体問題といい、分子動力学では、原子や分子を粒子とした多体問題の計算を行なっている。
【0003】
分子動力学で扱う系の粒子間には相互作用が働くので、分子動力学では粒子間に働く力が重要な物理量となり、必ず計算される。ある粒子に働く力は、他の全ての粒子から及ぼされる力の総和である。
【0004】
また、物質は温度変化で圧力および体積が変化し、体積変化は粒子の位置の変化を意味するので、圧力もまた重要な物理量である。さらに、その圧力を求めるために用いられるビリアルも重要な物理量として頻繁に計算される。ビリアルとは、粒子に働く力に粒子座標を乗算し、積和したものである。系内のビリアルから圧力を求めることができる。ビリアル計算回路の発明として、特許文献1(特開平8−287042号公報)が開示されている
分子動力学の計算において使用される圧力は、系のビリアル、温度、体積などから計算される。図5に示すような、格子ベクトルn=(0,0,0)で示される基本セルの回りをn=(nx,ny,nz)で示されるイメージセルが取り囲んでいる周期的境界条件下において、式(1)で示される計算式によりビリアルの計算が行われる。
【0005】
【数1】

近年、分子動力学シミュレーションに対しては、大規模タンパク質を長時間シミュレーションしたいという要求が高く、その為に高速な多体問題計算装置が望まれる。高速化のためには力とビリアルを計算するためのパイプラインの並列度をあげていく手段が一般的であるが、性能向上とパイプラインの並列度向上によるハードウェア量の増大は比例するため、コスト、消費電力も性能向上につれて増加する。従って、低コスト、低消費電力化を目指すためには如何に少ないハードウェア量で計算パイプラインを構成するかが重要になっている。
【特許文献1】特開平8−287042号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
従来、多体問題計算装置を用いた分子動力学法の計算におけるビリアルの計算方法としては、粒子間力と粒子間距離を乗算する方法や、イメージセル内での粒子間力の総和と鏡像変換した座標とを乗算するといった方法が提案されているが、双方ともビリアルを計算する回路として加算器と乗算器を必要としていた。
【0007】
一般的に分子動力学計算では浮動小数点による数値計算を行い、特に総和計算は倍精度以上の精度が要求される。また、計算の高速化のためにパイプラインを増やして並列量を増やすといった手法がとられるが、浮動小数点演算器はハードウェア量が多いため、全体として膨大なハードウェア量となり、多くの消費電力を費やすという問題があった。
【0008】
本発明の目的は、ビリアル計算を行う回路の演算器数を削減し回路規模を縮小することのできる二体間相互作用計算回路とこれを用いた多体問題計算装置を提供することである。
【課題を解決するための手段】
【0009】
本発明の二体間相互作用計算回路は、中心粒子iの座標を保持する中心粒子座標保持部と、
基本セルの大きさを保持する基本セル情報保持部と、
格子ベクトルを保持する格子ベクトル保持部と、
前記中心粒子座標保持部が保持する中心粒子iの座標、前記基本セル情報保持部が保持する基本セルの大きさ、前記格子ベクトル保持部が保持する格子ベクトル、および、粒子jの座標を入力し、中心粒子iの座標と粒子jの座標を鏡像粒子に変換した座標との差分を計算する座標差分計算部と、
前記座標差分計算部にて求められた差分から距離の2乗を計算する距離の二乗計算部と、
前記距離の二乗計算部にて求められた距離の2乗から距離による相互作用の関数を計算する関数計算部と、
前記関数計算部にて求められた相互作用の関数と前記座標差分遅延部にて求められた差分から力を計算する力の計算部と、
前記力の計算部にて求められた力から粒子iについての力の総和を計算する総和計算部と、
前記総和計算部にて求められた力の総和からビリアルを計算するビリアル計算部と、を有する。
【0010】
この場合、力の計算部が、座標差分遅延部から出力された差分と関数計算部から出力された相互作用の関数を乗算する乗算器であるとしてもよい。
【0011】
本発明の多体問題計算装置は、上記の二体間相互作用計算回路と、
前記二体間相互作用計算回路から粒子iごとの力の総和と、全ての粒子iについてのビリアルの総和を取得し、全体のビリアルを計算するコンピュータシステムからなる。
【0012】
分子動力学の計算において使用される圧力は、系のビリアル、温度、体積などから計算される。本発明は図1に示すような、格子ベクトルn=(0,0,0)で示される基本セルの回りをn=(nx,ny,nz)で示されるイメージセルが取り囲んでいる周期的境界条件下において、式(1)で示されるビリアルの計算式を、式(2)に示すように計算量のオーダーがO(N2)である右辺第2(0,0,0)項と計算量のオーダーがO(N)となる右辺第1項に分離するよう変換する。式(2)のオーダーO(N)の部分をソフトウェアで計算し、式(2)のオーダーO(N2)の部分を、イメージセルの基本セルに対する位置を示す格子ベクトルnの値により格子ベクトルnで示されるイメージセル内の力の総和を加算あるいは減算する回路構成とすることで、ビリアル計算を加減算のみで実現し、ハードウェア量を削減し、消費電力低減を実現する。
【0013】
【数2】

【発明の効果】
【0014】
本発明による多体問題計算装置は、分子動力学法の計算で用いられるビリアル計算回路を、周期的境界条件下でのイメージセルの位置座標を表す格子ベクトルの値を保持する手段と、格子ベクトルの値によってイメージセル内の力の総和を加算または減算する手段を持つことにより、乗算器を必要としないビリアル計算回路を実現し、ハードウェア量削減を図ったものであり、ビリアル計算のハードウェアを格子ベクトルの値によって制御される加算回路のみで構成することによって、ハードウェア量を削減することが可能となり、消費電力を低減することができる効果がある。
【発明を実施するための最良の形態】
【0015】
次に、本発明の実施例について図面を参照して説明する。
【0016】
まず、本発明の基本的な考え方について説明する。図1は、図5に示した格子ベクトルをz軸の格子ベクトルを0としてXY平面で見たときの状態を示す図である。
【0017】
図1において、格子ベクトルn=(0,0,0)で表わされるXYZ座標軸の各軸の長さがLx、Ly,Lzの基本セル内のある中心粒iの位置を座標(xi,yi,zi)で表し、基本セル内の粒子i以外の粒子jの位置を座標(xj,yj,zj)で表し、n=(nx,ny,nz)の格子ベクトルで表されるイメージセルn内の粒子jnを座標(xjn,yjn,zjn)で表し、粒子iに対して粒子jから及ぼされる力fijのx座標成分をfxijとし、粒子jnから及ぼされる力fijnのx座標成分をfxijnすると、圧力テンソルのxx成分のビリアルVxxは式(1)で表される。なお、式(1)の右辺第2項のΣ’はnにn=(0,0,0)の基本セルを含めないことを示している。
【0018】
ここで式(2)に着目すると、右辺第1項は図4の308及び309で計算される粒子iに対してその他の粒子jから及ぼされる力の総和Fxiと、粒子iのx座標Xiを乗算したものを全ての粒子について積和したものであり、乗算と積和の計算量はO(N)のオーダーであるからハードウェアで計算する必要はなくソフトウェアで計算させればよい。式(2)の右辺第2項の2分の1と基本セルのx軸の長さLxは定数であり、乗算はソフトウェアで計算させれば良い。
【0019】
図2は、本発明による二体間相互作用計算回路の一実施例の全体構成を示すブロック図である。
【0020】
本実施例は、中心粒子座標保持部302と、基本セル情報保持部303と、格子ベクトル保持部304と、座標差分計算部301と、座標差分遅延部305と、距離の二乗計算部306と、関数計算部307と、力の計算部308と、総和計算部309と、ビリアル計算部310によって構成される。
【0021】
中心粒子座標保持部302は中心粒子iの座標ri(xi,yi,zi)を保持し、基本セル情報保持部303は基本セルの大きさL(Lx,Ly,Lz)を保持し、格子ベクトル保持部304は格子ベクトルn(nx,ny,nz)を保持する。
【0022】
座標差分計算部301は、中心粒子座標保持部302が保持する中心粒子iの座標ri(xi,yi,zi)、基本セル情報保持部303が保持する基本セルの大きさL(Lx,Ly,Lz)、格子ベクトル保持部304が保持する格子ベクトルn(nx,ny,nz)、および、粒子jの座標rjn(xjn,yjn,zjn)を入力し、中心粒子iの座標riと粒子jの座標rjnを鏡像粒子に変換したrjn'=(xjn+nxx,yjn+nyy,zjn+nzz)との差分rijn=(xi−(xjn+nxx),yi−(yjn+nyy),zi−(zjn+nzz))を計算する。
【0023】
座標差分遅延部305は、座標差分計算部301にて求められたrijnを保持し、力の計算部308へ出力する。距離の二乗計算部306は、座標差分計算部301にて求められたrijnから距離の2乗|rijn|2を計算する。関数計算部307は距離の二乗計算部306にて求められた距離の2乗|rijn|2から距離rによる相互作用の関数g(r)に応じてg(r)=fijn/rijnを計算する。
【0024】
力の計算部308は、関数計算部307にて求められたfijn/rijnと座標差分遅延部305からのrijnから力fijn=(fxijn,fyijn,fzijn)を計算する。総和計算部309は、力の計算部308にて求められた力fijnから粒子iについての力の総和Σfijnを計算する。ビリアル計算部310は、総和計算部309にて求められた力の総和Σfijnからビリアルを計算する。
【0025】
図2に示す回路において、中心粒子座標保存部302に保存された粒子iの座標ri(xi,yi,zi)と、基本セル情報保存部303に保存された基本セルの大きさL(Lx,Ly,Lz)と、格子ベクトル保存部304に保存された格子ベクトルn(nx,ny,nz)は図に示さない手段によってあらかじめ設定されている。
【0026】
図3は図2の力の計算部308と総和計算部309とビリアル計算部310の具体的な構成を示す回路図である。本来、x座標成分用、y座標成分用、z座標成分用の3回路が存在するが、いずれも回路構成は同一であるためx座標成分用についてのみ記載する。
【0027】
図3に示す回路において、力の計算部308は乗算器41で構成され、座標差分遅延部305から出力されたrxijnと関数計算部307から出力されたg(r)=fijn/rijnを乗算器41によって乗算することで粒子ij間に働く力のx座標成分fxijnを計算し、総和計算部309に出力する。
【0028】
総和計算部309は選択回路42と加算器43とセル単位の力の総和保存回路44と全体の力の総和保存回路で45で構成されている。
【0029】
力の計算部308の出力fxijnが選択回路42によって選択され、加算器43に出力される。加算器43はセル単位の力の総和保存回路44に保存されている粒子iに対して粒子j−1までに働く力の総和Σfxij-1nと力の計算部308の出力fxijnとを加算したΣfxijnをセル単位の力の総和保存回路44へ出力し、Σfxijnがセル単位の力の総和保存回路44に保存される。
【0030】
選択回路42は、一つのセル内の全ての粒子jnについて加算が終了すると、粒子iの力の総和保存回路45に保存されているセルn−1までの力の総和ΣΣfxijn-1を選択し、加算器43に出力する。加算器43は、セル単位の力の総和保存回路44に保存されたΣfxijnと力の総和ΣΣfxijn-1とを加算し、結果をΣΣfxijnとして粒子iの力の総和保存回路45へ出力し、力の総和保存回路45はΣΣfxijnを保存する。同時にセル単位の力の総和保存回路44の出力がビリアル計算部310へ出力される。
【0031】
ビリアル計算部310は格子ベクトル保持回路46と加減算制御回路47と加算器48とビリアル保存回路49とで構成され、格子ベクトル保持回路46には図に示さない手段によってあらかじめ格子ベクトルn(nx,ny,nz)が設定されている。
【0032】
加減算制御回路47は、総和計算部309の出力である、一つのセル内の全ての粒子jnについて加算した結果Σfxijnをセル情報保持回路46に保存された格子ベクトルnxに応じてその値を変えるもので、nx=0であれば0を出力し、nx=1であれば何もせずそのままΣfxijnを出力し、−1であれば符号を反転し−Σfxijnを出力する。
【0033】
加算器48は加減算制御回路47の出力とビリアル保存回路49に保存されているn−1までのセルについてのビリアルの総和Vxxn-1を加算し、Vxxnを出力し、ビリアル保存回路49に保存する。
【0034】
上記のように、ビリアル計算部310で計算されるΣΣnxΣfxijnは、力の計算部308及び総和計算部309で計算される粒子iに対してイメージセルn内粒子jnから及ぼされる力の和を、格子べクトル保持回路46に保存されたイメージセルの位置を表す格子ベクトルにより、加減算制御回路47で符号を反転或いはそのまま或いは値を0にしたものが、加算器48で加算されることにより、ビリアル保存回路49で全ての粒子iについて積和したものであり、力の計算部308及び総和計算部309のように、力を計算する回路に、ビリアル計算部310の格子べクトルを保持する手段と加算回路とイメージセルごとの力の総和の符号を操作する回路を追加するだけでビリアルが計算できることを示している。
【0035】
上記のように構成される二体間相互作用計算回路は、ソフトウェアにより動作を行うコンピュータシステムと組み合わされてビリアル計算を行う多体問題計算装置を構成するもので、コンピュータシステムは、二体間相互作用計算回路により得られたビリアルの総和を用いてビリアル計算を行う。
【0036】
次に、本発明による多体問題計算装置の動作について、図5に示すフローチャートを参照して説明する。
【0037】
選択回路42は、まず、計算対象となる1つの粒子iを選択する(ステップ501)。次に、選択回路42は、i粒子に及ぼす力を計算するための1つのイメージセルnを選択する(ステップ502)。次に、選択回路42は、そのイメージセルの中の1つの粒子jnを選択する(ステップ503)。
【0038】
そして、力の計算部308は、選択された粒子jnから、選択された粒子iに及ぼされる力を計算し(ステップ504)、総和計算部309はその計算結果を積算する。(ステップ505)。
【0039】
ここで、選択回路42は、選択したイメージセル内の全ての粒子jnについて力の計算が完了したか否か判定する(ステップ506)。全ての粒子jnの計算が完了していなければ、選択回路42は、ステップ503に戻って次の粒子jnを選択する。
【0040】
全ての粒子jnの計算が完了していれば、多体問題計算装置は、力の積算結果を保存する。(ステップ507)。
【0041】
次に、加減算制御回路47は、イメージセルの格子ベクトルnの値をx座標成分の計算の場合はnの要素nxを判定し、y座標成分の計算の場合はnの要素nyを判定し、z座標成分の計算の場合はnの要素nzを判定する(ステップ508)。各座標成分の判定でnの値が0であればステップ510に進む。nの値が−1なら力の積算の符号を反転し、ビリアルを積算し積算結果を保持する。nの値が1なら力の積算はそのままで、ビリアルを積算し、ビリアル保存回路48は積算結果を保持する。(ステップ509)。
【0042】
ここで、選択回路42は、系内の全てのイメージセルについてのビリアルの計算が完了したか否か判定する(ステップ510)。全てのイメージセルについてのビリアルの計算が完了していなければ、選択回路42は、ステップ502に戻って次のイメージセルを選択する。
【0043】
全てのイメージセルについてのビリアルの計算が完了していれば、選択回路42は、次に、全ての粒子iについてのビリアルの計算が完了しているか否かを判定する(ステップ511)。全ての粒子iについてのビリアルの計算が完了していなければ、選択回路42は、ステップ501に戻って次の粒子iを選択する。全ての粒子iについてのビリアルの計算が完了していれば、二体間相互作用計算回路は、処理を終了する。(ステップ512)。
【0044】
二体間相互作用計算回路による処理が終了したならば、コンピュータシステムは二体間相互作用計算回路から粒子iごとの力の総和と、全ての粒子iについてのビリアルの総和を取得する。(ステップ513)。
【0045】
次にソフトウェアは二体間相互作用計算回路から取得した力とビリアルから系全体のビリアルを計算し、全ての処理を終了する。(ステップ514)。
【0046】
なお、上述した実施例では基本セルの周りをイメージセルが一重に取り囲んでいる場合、すなわち格子ベクトルが −1、0、1の値をとる場合について説明したが、図2に示したビリアル計算部310において、加算器48の出力をビリアル保存回路49の出力と選択可能とし、加算器48の出力と加減算制御回路47の出力を格子ベクトル保持回路46に設定された値だけ加算を繰り返すことで、基本セルの周りをイメージセルが二重、三重に取り囲んでいる場合、すなわち格子ベクトルが±2、±3といった値をとる場合でもビリアルを計算可能である。
【図面の簡単な説明】
【0047】
【図1】図1は、図5に示した格子ベクトルをz軸の格子ベクトルを0としてXY平面で見たときの状態を示す図である。
【図2】二体間相互作用計算回路の一実施例の全体構成を示すブロック図である。
【図3】図2に示した力の計算部308と総和計算部309とビリアル計算部310の具体的な構成を示す回路図である。
【図4】本発明による多体問題計算装置の動作を示すフローチャートである。
【図5】ビリアル計算が行われる状況を示す図である。
【符号の説明】
【0048】
41 乗算器
42 選択回路
43,48 加算器
44,45 力の総和保存回路
46 格子べクトル保持回路
47 加減算制御回路
49 ビリアル保存回路
301 座標差分計算部
302 中心粒子座標保持部
303 基本セル情報保持部
304 格子ベクトル保持部
305 座標差分遅延部
306 距離の二乗計算部
307 関数計算部
308 力の計算部
309 総和計算部
310 ビリアル計算部

【特許請求の範囲】
【請求項1】
中心粒子iの座標を保持する中心粒子座標保持部と、
基本セルの大きさを保持する基本セル情報保持部と、
格子ベクトルを保持する格子ベクトル保持部と、
前記中心粒子座標保持部が保持する中心粒子iの座標、前記基本セル情報保持部が保持する基本セルの大きさ、前記格子ベクトル保持部が保持する格子ベクトル、および、粒子jの座標を入力し、中心粒子iの座標と粒子jの座標を鏡像粒子に変換した座標との差分を計算する座標差分計算部と、
前記座標差分計算部にて求められた差分から距離の2乗を計算する距離の二乗計算部と、
前記距離の二乗計算部にて求められた距離の2乗から距離による相互作用の関数を計算する関数計算部と、
前記関数計算部にて求められた相互作用の関数と前記座標差分遅延部にて求められた差分から力を計算する力の計算部と、
前記力の計算部にて求められた力から粒子iについての力の総和を計算する総和計算部と、
前記総和計算部にて求められた力の総和からビリアルを計算するビリアル計算部と、を有する二体間相互作用計算回路。
【請求項2】
請求項1記載の二体間相互作用計算回路において、
力の計算部が、座標差分遅延部から出力された差分と関数計算部から出力された相互作用の関数を乗算する乗算器である二体間相互作用計算回路。
【請求項3】
請求項1または請求項2記載の二体間相互作用計算回路と、
前記二体間相互作用計算回路から粒子iごとの力の総和と、全ての粒子iについてのビリアルの総和を取得し、全体のビリアルを計算するコンピュータシステムからなる多体問題計算装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2008−225974(P2008−225974A)
【公開日】平成20年9月25日(2008.9.25)
【国際特許分類】
【出願番号】特願2007−64783(P2007−64783)
【出願日】平成19年3月14日(2007.3.14)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】