(57)【要約】      （修正有）【課題】ビリアル計算を行う回路の演算器数を削減し、回路規模を縮小することのできる二体間相互作用計算回路と、これを用いた多体問題計算装置を提供する。【解決手段】二体間相互作用計算回路は、中心粒子iの座標、基本セルの大きさ、格子ベクトル、粒子jの座標を入力し、中心粒子iの座標と粒子jの座標を鏡像粒子に変換した座標との差分を計算する座標差分計算部３０１と、差分から距離の２乗を計算する距離の二乗計算部３０６と、距離の２乗から距離による相互作用の関数を計算する関数計算部３０７と、相互作用の関数と差分から力を計算する力の計算部３０８と、力から粒子ｉについての力の総和を計算する総和計算部３０９と、力の総和からビリアルを計算するビリアル計算部３１０と、を有する。【選択図】図２
2008225974.tif 000002
【特許請求の範囲】
【請求項１】
中心粒子ｉの座標を保持する中心粒子座標保持部と、
基本セルの大きさを保持する基本セル情報保持部と、
格子ベクトルを保持する格子ベクトル保持部と、
前記中心粒子座標保持部が保持する中心粒子iの座標、前記基本セル情報保持部が保持する基本セルの大きさ、前記格子ベクトル保持部が保持する格子ベクトル、および、粒子jの座標を入力し、中心粒子iの座標と粒子jの座標を鏡像粒子に変換した座標との差分を計算する座標差分計算部と、
前記座標差分計算部にて求められた差分から距離の２乗を計算する距離の二乗計算部と、
前記距離の二乗計算部にて求められた距離の２乗から距離による相互作用の関数を計算する関数計算部と、
前記関数計算部にて求められた相互作用の関数と前記座標差分遅延部にて求められた差分から力を計算する力の計算部と、
前記力の計算部にて求められた力から粒子ｉについての力の総和を計算する総和計算部と、
前記総和計算部にて求められた力の総和からビリアルを計算するビリアル計算部と、を有する二体間相互作用計算回路。
【請求項２】
請求項１記載の二体間相互作用計算回路において、
力の計算部が、座標差分遅延部から出力された差分と関数計算部から出力された相互作用の関数を乗算する乗算器である二体間相互作用計算回路。
【請求項３】
請求項１または請求項２記載の二体間相互作用計算回路と、
前記二体間相互作用計算回路から粒子ｉごとの力の総和と、全ての粒子ｉについてのビリアルの総和を取得し、全体のビリアルを計算するコンピュータシステムからなる多体問題計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は多体問題計算装置に関する。
【背景技術】
【０００２】
分子動力学の分野では、液体、固体、高分子などの挙動を、それらを構成する原子あるいは分子の動きの結果と考え、それら粒子の動きをシミュレーションして研究が行なわれる。互いに相互作用する多数の粒子からなる系を扱う問題を多体問題といい、分子動力学では、原子や分子を粒子とした多体問題の計算を行なっている。
【０００３】
分子動力学で扱う系の粒子間には相互作用が働くので、分子動力学では粒子間に働く力が重要な物理量となり、必ず計算される。ある粒子に働く力は、他の全ての粒子から及ぼされる力の総和である。
【０００４】
また、物質は温度変化で圧力および体積が変化し、体積変化は粒子の位置の変化を意味するので、圧力もまた重要な物理量である。さらに、その圧力を求めるために用いられるビリアルも重要な物理量として頻繁に計算される。ビリアルとは、粒子に働く力に粒子座標を乗算し、積和したものである。系内のビリアルから圧力を求めることができる。ビリアル計算回路の発明として、特許文献１（特開平８−２８７０４２号公報）が開示されている
分子動力学の計算において使用される圧力は、系のビリアル、温度、体積などから計算される。図５に示すような、格子ベクトルｎ＝（０，０，０）で示される基本セルの回りをｎ＝（ｎx，ｎy，ｎz）で示されるイメージセルが取り囲んでいる周期的境界条件下において、式（１）で示される計算式によりビリアルの計算が行われる。
【０００５】
【数１】
2008225974.tif 000003
近年、分子動力学シミュレーションに対しては、大規模タンパク質を長時間シミュレーションしたいという要求が高く、その為に高速な多体問題計算装置が望まれる。高速化のためには力とビリアルを計算するためのパイプラインの並列度をあげていく手段が一般的であるが、性能向上とパイプラインの並列度向上によるハードウェア量の増大は比例するため、コスト、消費電力も性能向上につれて増加する。従って、低コスト、低消費電力化を目指すためには如何に少ないハードウェア量で計算パイプラインを構成するかが重要になっている。
【特許文献１】特開平８−２８７０４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来、多体問題計算装置を用いた分子動力学法の計算におけるビリアルの計算方法としては、粒子間力と粒子間距離を乗算する方法や、イメージセル内での粒子間力の総和と鏡像変換した座標とを乗算するといった方法が提案されているが、双方ともビリアルを計算する回路として加算器と乗算器を必要としていた。
【０００７】
一般的に分子動力学計算では浮動小数点による数値計算を行い、特に総和計算は倍精度以上の精度が要求される。また、計算の高速化のためにパイプラインを増やして並列量を増やすといった手法がとられるが、浮動小数点演算器はハードウェア量が多いため、全体として膨大なハードウェア量となり、多くの消費電力を費やすという問題があった。
【０００８】
本発明の目的は、ビリアル計算を行う回路の演算器数を削減し回路規模を縮小することのできる二体間相互作用計算回路とこれを用いた多体問題計算装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の二体間相互作用計算回路は、中心粒子ｉの座標を保持する中心粒子座標保持部と、
基本セルの大きさを保持する基本セル情報保持部と、
格子ベクトルを保持する格子ベクトル保持部と、
前記中心粒子座標保持部が保持する中心粒子iの座標、前記基本セル情報保持部が保持する基本セルの大きさ、前記格子ベクトル保持部が保持する格子ベクトル、および、粒子jの座標を入力し、中心粒子iの座標と粒子jの座標を鏡像粒子に変換した座標との差分を計算する座標差分計算部と、
前記座標差分計算部にて求められた差分から距離の２乗を計算する距離の二乗計算部と、
前記距離の二乗計算部にて求められた距離の２乗から距離による相互作用の関数を計算する関数計算部と、
前記関数計算部にて求められた相互作用の関数と前記座標差分遅延部にて求められた差分から力を計算する力の計算部と、
前記力の計算部にて求められた力から粒子ｉについての力の総和を計算する総和計算部と、
前記総和計算部にて求められた力の総和からビリアルを計算するビリアル計算部と、を有する。
【００１０】
この場合、力の計算部が、座標差分遅延部から出力された差分と関数計算部から出力された相互作用の関数を乗算する乗算器であるとしてもよい。
【００１１】
本発明の多体問題計算装置は、上記の二体間相互作用計算回路と、
前記二体間相互作用計算回路から粒子ｉごとの力の総和と、全ての粒子ｉについてのビリアルの総和を取得し、全体のビリアルを計算するコンピュータシステムからなる。
【００１２】
分子動力学の計算において使用される圧力は、系のビリアル、温度、体積などから計算される。本発明は図１に示すような、格子ベクトルｎ＝（０，０，０）で示される基本セルの回りをｎ＝（ｎx，ｎy，ｎz）で示されるイメージセルが取り囲んでいる周期的境界条件下において、式（１）で示されるビリアルの計算式を、式（２）に示すように計算量のオーダーがＯ（Ｎ2）である右辺第２（０，０，０）項と計算量のオーダーがＯ（Ｎ）となる右辺第１項に分離するよう変換する。式（２）のオーダーＯ（Ｎ）の部分をソフトウェアで計算し、式（２）のオーダーＯ（Ｎ2）の部分を、イメージセルの基本セルに対する位置を示す格子ベクトルｎの値により格子ベクトルｎで示されるイメージセル内の力の総和を加算あるいは減算する回路構成とすることで、ビリアル計算を加減算のみで実現し、ハードウェア量を削減し、消費電力低減を実現する。
【００１３】
【数２】
2008225974.tif 000004
【発明の効果】
【００１４】
本発明による多体問題計算装置は、分子動力学法の計算で用いられるビリアル計算回路を、周期的境界条件下でのイメージセルの位置座標を表す格子ベクトルの値を保持する手段と、格子ベクトルの値によってイメージセル内の力の総和を加算または減算する手段を持つことにより、乗算器を必要としないビリアル計算回路を実現し、ハードウェア量削減を図ったものであり、ビリアル計算のハードウェアを格子ベクトルの値によって制御される加算回路のみで構成することによって、ハードウェア量を削減することが可能となり、消費電力を低減することができる効果がある。
【発明を実施するための最良の形態】
【００１５】
次に、本発明の実施例について図面を参照して説明する。
【００１６】
まず、本発明の基本的な考え方について説明する。図１は、図５に示した格子ベクトルをｚ軸の格子ベクトルを０としてＸＹ平面で見たときの状態を示す図である。
【００１７】
図１において、格子ベクトルｎ＝（０，０，０）で表わされるＸＹＺ座標軸の各軸の長さがＬx、Ｌy，Ｌzの基本セル内のある中心粒ｉの位置を座標（ｘi，ｙi，ｚi）で表し、基本セル内の粒子ｉ以外の粒子ｊの位置を座標（ｘj，ｙj，ｚj）で表し、ｎ＝（ｎx，ｎy，ｎz）の格子ベクトルで表されるイメージセルｎ内の粒子ｊnを座標（ｘjn，ｙjn，ｚjn）で表し、粒子ｉに対して粒子ｊから及ぼされる力ｆijのｘ座標成分をｆxijとし、粒子ｊnから及ぼされる力ｆijnのｘ座標成分をｆxijnすると、圧力テンソルのxx成分のビリアルＶxxは式（１）で表される。なお、式（１）の右辺第２項のΣ’はｎにｎ＝（０，０，０）の基本セルを含めないことを示している。
【００１８】
ここで式（２）に着目すると、右辺第１項は図４の３０８及び３０９で計算される粒子ｉに対してその他の粒子ｊから及ぼされる力の総和Ｆxiと、粒子iのx座標Xiを乗算したものを全ての粒子について積和したものであり、乗算と積和の計算量はＯ（Ｎ）のオーダーであるからハードウェアで計算する必要はなくソフトウェアで計算させればよい。式（２）の右辺第２項の２分の１と基本セルのｘ軸の長さＬxは定数であり、乗算はソフトウェアで計算させれば良い。
【００１９】
図２は、本発明による二体間相互作用計算回路の一実施例の全体構成を示すブロック図である。
【００２０】
本実施例は、中心粒子座標保持部３０２と、基本セル情報保持部３０３と、格子ベクトル保持部３０４と、座標差分計算部３０１と、座標差分遅延部３０５と、距離の二乗計算部３０６と、関数計算部３０７と、力の計算部３０８と、総和計算部３０９と、ビリアル計算部３１０によって構成される。
【００２１】
中心粒子座標保持部３０２は中心粒子iの座標ｒi（ｘi，ｙi，ｚi）を保持し、基本セル情報保持部３０３は基本セルの大きさＬ（Ｌx，Ｌy，Ｌz）を保持し、格子ベクトル保持部３０４は格子ベクトルｎ（ｎx，ｎy，ｎz）を保持する。
【００２２】
座標差分計算部３０１は、中心粒子座標保持部３０２が保持する中心粒子iの座標ｒi（ｘi，ｙi，ｚi）、基本セル情報保持部３０３が保持する基本セルの大きさＬ（Ｌx，Ｌy，Ｌz）、格子ベクトル保持部３０４が保持する格子ベクトルｎ（ｎx，ｎy，ｎz）、および、粒子jの座標ｒjn（ｘjn，ｙjn，ｚjn）を入力し、中心粒子iの座標riと粒子jの座標rjnを鏡像粒子に変換したｒjn'＝（ｘjn＋ｎxＬx，ｙjn＋ｎyＬy，ｚjn＋ｎzＬz）との差分ｒijn＝（ｘi−（ｘjn＋ｎxＬx），ｙi−（ｙjn＋ｎyＬy），ｚi−（ｚjn＋ｎzＬz））を計算する。
【００２３】
座標差分遅延部３０５は、座標差分計算部３０１にて求められたｒijnを保持し、力の計算部３０８へ出力する。距離の二乗計算部３０６は、座標差分計算部３０１にて求められたｒijnから距離の２乗|ｒijn|2を計算する。関数計算部３０７は距離の二乗計算部３０６にて求められた距離の２乗|ｒijn|2から距離ｒによる相互作用の関数ｇ(ｒ)に応じてｇ(ｒ)＝ｆijn／ｒijnを計算する。
【００２４】
力の計算部３０８は、関数計算部３０７にて求められたｆijn／ｒijnと座標差分遅延部３０５からのｒijnから力ｆijn＝(ｆxijn，ｆyijn，ｆzijn)を計算する。総和計算部３０９は、力の計算部３０８にて求められた力ｆijnから粒子ｉについての力の総和Σｆijnを計算する。ビリアル計算部３１０は、総和計算部３０９にて求められた力の総和Σｆijnからビリアルを計算する。
【００２５】
図２に示す回路において、中心粒子座標保存部３０２に保存された粒子iの座標ｒi（ｘi，ｙi，ｚi）と、基本セル情報保存部３０３に保存された基本セルの大きさＬ（Ｌx，Ｌy，Ｌz）と、格子ベクトル保存部３０４に保存された格子ベクトルｎ（ｎx，ｎy，ｎz）は図に示さない手段によってあらかじめ設定されている。
【００２６】
図３は図２の力の計算部３０８と総和計算部３０９とビリアル計算部３１０の具体的な構成を示す回路図である。本来、ｘ座標成分用、ｙ座標成分用、ｚ座標成分用の３回路が存在するが、いずれも回路構成は同一であるためｘ座標成分用についてのみ記載する。
【００２７】
図３に示す回路において、力の計算部３０８は乗算器４１で構成され、座標差分遅延部３０５から出力されたｒxijnと関数計算部３０７から出力されたｇ（ｒ）＝ｆijn／ｒijnを乗算器４１によって乗算することで粒子ｉｊ間に働く力のｘ座標成分ｆxijnを計算し、総和計算部３０９に出力する。
【００２８】
総和計算部３０９は選択回路４２と加算器４３とセル単位の力の総和保存回路４４と全体の力の総和保存回路で４５で構成されている。
【００２９】
力の計算部３０８の出力ｆxijnが選択回路４２によって選択され、加算器４３に出力される。加算器４３はセル単位の力の総和保存回路４４に保存されている粒子ｉに対して粒子ｊ−１までに働く力の総和Σｆxij-1nと力の計算部３０８の出力ｆxijnとを加算したΣｆxijnをセル単位の力の総和保存回路４４へ出力し、Σｆxijnがセル単位の力の総和保存回路４４に保存される。
【００３０】
選択回路４２は、一つのセル内の全ての粒子ｊnについて加算が終了すると、粒子ｉの力の総和保存回路４５に保存されているセルｎ−１までの力の総和ΣΣｆxijn-1を選択し、加算器４３に出力する。加算器４３は、セル単位の力の総和保存回路４４に保存されたΣｆxijnと力の総和ΣΣｆxijn-1とを加算し、結果をΣΣｆxijnとして粒子ｉの力の総和保存回路４５へ出力し、力の総和保存回路４５はΣΣｆxijnを保存する。同時にセル単位の力の総和保存回路４４の出力がビリアル計算部３１０へ出力される。
【００３１】
ビリアル計算部３１０は格子ベクトル保持回路４６と加減算制御回路４７と加算器４８とビリアル保存回路４９とで構成され、格子ベクトル保持回路４６には図に示さない手段によってあらかじめ格子ベクトルｎ（ｎx，ｎy，ｎz）が設定されている。
【００３２】
加減算制御回路４７は、総和計算部３０９の出力である、一つのセル内の全ての粒子ｊｎについて加算した結果Σｆxijnをセル情報保持回路４６に保存された格子ベクトルｎxに応じてその値を変えるもので、ｎx＝０であれば０を出力し、ｎx＝１であれば何もせずそのままΣｆxijnを出力し、−１であれば符号を反転し−Σｆxijnを出力する。
【００３３】
加算器４８は加減算制御回路４７の出力とビリアル保存回路４９に保存されているｎ−１までのセルについてのビリアルの総和Ｖxxn-1を加算し、Ｖxxnを出力し、ビリアル保存回路４９に保存する。
【００３４】
上記のように、ビリアル計算部３１０で計算されるΣΣｎxΣｆxijnは、力の計算部３０８及び総和計算部３０９で計算される粒子ｉに対してイメージセルｎ内粒子ｊｎから及ぼされる力の和を、格子べクトル保持回路４６に保存されたイメージセルの位置を表す格子ベクトルにより、加減算制御回路４７で符号を反転或いはそのまま或いは値を０にしたものが、加算器４８で加算されることにより、ビリアル保存回路４９で全ての粒子ｉについて積和したものであり、力の計算部３０８及び総和計算部３０９のように、力を計算する回路に、ビリアル計算部３１０の格子べクトルを保持する手段と加算回路とイメージセルごとの力の総和の符号を操作する回路を追加するだけでビリアルが計算できることを示している。
【００３５】
上記のように構成される二体間相互作用計算回路は、ソフトウェアにより動作を行うコンピュータシステムと組み合わされてビリアル計算を行う多体問題計算装置を構成するもので、コンピュータシステムは、二体間相互作用計算回路により得られたビリアルの総和を用いてビリアル計算を行う。
【００３６】
次に、本発明による多体問題計算装置の動作について、図５に示すフローチャートを参照して説明する。
【００３７】
選択回路４２は、まず、計算対象となる１つの粒子ｉを選択する（ステップ５０１）。次に、選択回路４２は、ｉ粒子に及ぼす力を計算するための１つのイメージセルｎを選択する（ステップ５０２）。次に、選択回路４２は、そのイメージセルの中の１つの粒子ｊｎを選択する（ステップ５０３）。
【００３８】
そして、力の計算部３０８は、選択された粒子ｊｎから、選択された粒子ｉに及ぼされる力を計算し（ステップ５０４）、総和計算部３０９はその計算結果を積算する。（ステップ５０５）。
【００３９】
ここで、選択回路４２は、選択したイメージセル内の全ての粒子ｊnについて力の計算が完了したか否か判定する（ステップ５０６）。全ての粒子ｊnの計算が完了していなければ、選択回路４２は、ステップ５０３に戻って次の粒子ｊnを選択する。
【００４０】
全ての粒子ｊnの計算が完了していれば、多体問題計算装置は、力の積算結果を保存する。(ステップ５０７)。
【００４１】
次に、加減算制御回路４７は、イメージセルの格子ベクトルｎの値をｘ座標成分の計算の場合はｎの要素ｎxを判定し、y座標成分の計算の場合はｎの要素ｎyを判定し、ｚ座標成分の計算の場合はｎの要素ｎzを判定する（ステップ５０８）。各座標成分の判定でｎの値が０であればステップ５１０に進む。ｎの値が−１なら力の積算の符号を反転し、ビリアルを積算し積算結果を保持する。ｎの値が１なら力の積算はそのままで、ビリアルを積算し、ビリアル保存回路４８は積算結果を保持する。（ステップ５０９）。
【００４２】
ここで、選択回路４２は、系内の全てのイメージセルについてのビリアルの計算が完了したか否か判定する（ステップ５１０）。全てのイメージセルについてのビリアルの計算が完了していなければ、選択回路４２は、ステップ５０２に戻って次のイメージセルを選択する。
【００４３】
全てのイメージセルについてのビリアルの計算が完了していれば、選択回路４２は、次に、全ての粒子ｉについてのビリアルの計算が完了しているか否かを判定する（ステップ５１１）。全ての粒子ｉについてのビリアルの計算が完了していなければ、選択回路４２は、ステップ５０１に戻って次の粒子ｉを選択する。全ての粒子ｉについてのビリアルの計算が完了していれば、二体間相互作用計算回路は、処理を終了する。（ステップ５１２）。
【００４４】
二体間相互作用計算回路による処理が終了したならば、コンピュータシステムは二体間相互作用計算回路から粒子ｉごとの力の総和と、全ての粒子ｉについてのビリアルの総和を取得する。（ステップ５１３）。
【００４５】
次にソフトウェアは二体間相互作用計算回路から取得した力とビリアルから系全体のビリアルを計算し、全ての処理を終了する。（ステップ５１４）。
【００４６】
なお、上述した実施例では基本セルの周りをイメージセルが一重に取り囲んでいる場合、すなわち格子ベクトルが −１、０、１の値をとる場合について説明したが、図２に示したビリアル計算部３１０において、加算器４８の出力をビリアル保存回路４９の出力と選択可能とし、加算器４８の出力と加減算制御回路４７の出力を格子ベクトル保持回路４６に設定された値だけ加算を繰り返すことで、基本セルの周りをイメージセルが二重、三重に取り囲んでいる場合、すなわち格子ベクトルが±２、±３といった値をとる場合でもビリアルを計算可能である。
【図面の簡単な説明】
【００４７】
【図１】図１は、図５に示した格子ベクトルをｚ軸の格子ベクトルを０としてＸＹ平面で見たときの状態を示す図である。
【図２】二体間相互作用計算回路の一実施例の全体構成を示すブロック図である。
【図３】図２に示した力の計算部３０８と総和計算部３０９とビリアル計算部３１０の具体的な構成を示す回路図である。
【図４】本発明による多体問題計算装置の動作を示すフローチャートである。
【図５】ビリアル計算が行われる状況を示す図である。
【符号の説明】
【００４８】
４１    乗算器
４２    選択回路
４３，４８    加算器
４４，４５    力の総和保存回路
４６    格子べクトル保持回路
４７    加減算制御回路
４９    ビリアル保存回路
３０１    座標差分計算部
３０２    中心粒子座標保持部
３０３    基本セル情報保持部
３０４    格子ベクトル保持部
３０５    座標差分遅延部
３０６    距離の二乗計算部
３０７    関数計算部
３０８    力の計算部
３０９    総和計算部
３１０    ビリアル計算部
【図１】
2008225974.tif 000005
【図２】
2008225974.tif 000006
【図３】
2008225974.tif 000007
【図４】
2008225974.tif 000008
【図５】
2008225974.tif 000009