(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-27
(45)【発行日】2024-10-07
(54)【発明の名称】処理装置、処理システム、処理方法、プログラム、及び、記録媒体
(51)【国際特許分類】
G16Z 99/00 20190101AFI20240930BHJP
G06F 17/10 20060101ALI20240930BHJP
【FI】
G16Z99/00
G06F17/10 Z
(21)【出願番号】P 2023171432
(22)【出願日】2023-10-02
(62)【分割の表示】P 2022116316の分割
【原出願日】2018-10-19
【審査請求日】2023-10-02
(73)【特許権者】
【識別番号】503359821
【氏名又は名称】国立研究開発法人理化学研究所
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】小松 輝久
(72)【発明者】
【氏名】大野 洋介
(72)【発明者】
【氏名】森本 元太郎
(72)【発明者】
【氏名】チョウ コウ
(72)【発明者】
【氏名】小山 洋平
(72)【発明者】
【氏名】泰地 真弘人
【審査官】宮地 匡人
(56)【参考文献】
【文献】特開2006-236256(JP,A)
【文献】古明地 勇人,生体分子の分子動力学シミュレーション(1)方法,Journal of Chemical Software,2000年03月15日,Vol.6 No.1,pp.1-36
【文献】高田 直樹,専用計算機MDGRAPE‐2を用いた分子動力学シミュレーションの並列化,情報処理学会シンポジウム論文集,2003年05月28日,Vol.2003 No.8,pp.197-198
(58)【調査した分野】(Int.Cl.,DB名)
G16Z 99/00
G06F 17/10
JSTPlus(JDreamIII)
JST7580(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
空間内に配置される複数の粒子のそれぞれについて、他の各粒子から働く力を計算する処理ユニットと、
計算対象の粒子に働く力の計算において、他の粒子のそれぞれを高排除および低排除の少なくとも一方の対象とすべきか否かを指定する複数のマスクパターンを記憶するマスクパターンメモリと、
前記複数の粒子のそれぞれについて、前記複数のマスクパターンのうち各粒子に働く力の計算において使用するマスクパターンを識別するマスクパターン識別情報を含む粒子データを記憶する粒子データメモリと
を備える処理装置。
【請求項2】
前記複数のマスクパターンのそれぞれは、計算対象の粒子の粒子番号に対して予め定められた相対粒子番号を有する他の粒子のそれぞれを高排除および低排除の少なくとも一方の対象とすべきか否かを指定する請求項1に記載の処理装置。
【請求項3】
前記複数のマスクパターンのそれぞれは、予め定められた長さのマスクビット列と、前記マスクビット列のうち計算対象の粒子に働く計算における高排除すべき他の粒子の指定および低排除すべき他の粒子の指定に割り当てるビット数を設定するための設定値とを含む請求項1または2に記載の処理装置。
【請求項4】
前記マスクパターンでカバーされない粒子番号の離れた2つの粒子群の粒子間で高排除および低排除の少なくとも一方を指定するマスクテーブルを記憶するマスクテーブルメモリを更に備える請求項1から3のいずれか一項に記載の処理装置。
【請求項5】
前記マスクテーブルに記憶する高排除および低排除の少なくとも一方を指定する情報が、粒子番号の離れた2つの粒子群のどの粒子同士の組み合わせ方に対応するのかを予め定めた対応関係によって指定可能である請求項4に記載の処理装置。
【請求項6】
処理ユニットが、空間内に配置される複数の粒子のそれぞれについて、他の各粒子から働く力を計算する段階と、
マスクパターンメモリが、計算対象の粒子に働く力の計算において、他の粒子のそれぞれを高排除および低排除の少なくとも一方の対象とすべきか否かを指定する複数のマスクパターンを記憶する段階と、
粒子データメモリが、前記複数の粒子のそれぞれについて、前記複数のマスクパターンのうち各粒子に働く力の計算において使用するマスクパターンを識別するマスクパターン識別情報を含む粒子データを記憶する段階と、
を備える処理方法。
【請求項7】
処理ユニットと、
計算対象の粒子に働く力の計算において、他の粒子のそれぞれを高排除および低排除の少なくとも一方の対象とすべきか否かを指定する複数のマスクパターンを記憶するマスクパターンメモリと、
複数の粒子のそれぞれについて、前記複数のマスクパターンのうち各粒子に働く力の計算において使用するマスクパターンを識別するマスクパターン識別情報を含む粒子データを記憶する粒子データメモリと
を備える処理装置において、
実行されると、前記処理ユニットに、
空間内に配置される複数の粒子のそれぞれについて、他の各粒子から働く力を計算させる、
プログラム。
【請求項8】
請求項7に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理装置、処理システム、処理方法、プログラム、及び、記録媒体に関する。
【背景技術】
【0002】
分子動力学シミュレーションを行うための専用計算機が知られており、専用計算機による種々のシミュレーション高速化手法が開発されている。例えば、巨大分子等を含むシミュレーション空間を複数のセルに分割して管理する手法が知られている(特許文献1)。しかし、従来の手法によってもシミュレーションの処理速度は必ずしも十分ではなく、更なる高速化が望まれている。一例として、従来の手法によると複数のセル間の粒子移動等の処理をソフトウエアにより行っており、オーバーヘッドが依然大きかった。
特許文献1 特開2006-236256号公報
【発明の概要】
【発明が解決しようとする課題】
【0003】
専用計算機を用いた粒子動力学シミュレーションの処理を高速化する装置等を提供することを課題とする。
【課題を解決するための手段】
【0004】
上記課題を解決するために、本発明の第1の態様においては、空間内に配置される複数の粒子のそれぞれの粒子データを記憶する粒子データメモリと、空間を分割した各セルのセル番号に対応付けて、粒子データメモリにおける、当該セル内の粒子の粒子データを格納するために割り当てられた記憶位置を示すセル情報を記憶するセル情報メモリと、空間を分割したセルに含まれる粒子の粒子データを、セル番号を指定してアクセスする処理ユニットと、セル番号を指定した粒子データへのアクセスを受けたことに応じて、指定されたセル番号に対応付けられたセル情報を用いて粒子データメモリにおけるアクセス対象の粒子データの記憶位置を特定するメモリコントローラとを備える処理装置、処理システム、プログラム、及び、記録媒体を提供する。
【0005】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【0006】
【
図1】本実施形態における空間のノード分担の一例を示す。
【
図2】本実施形態における分割空間のセル分割の一例を示す。
【
図3】本実施形態における処理装置10のブロック図を示す。
【
図4】本実施形態におけるメモリ100の記憶内容の一例を示す。
【
図5】本実施形態におけるメモリ処理の一例を示す。
【
図6】本実施形態におけるメモリ処理の別の一例を示す。
【
図7】本実施形態におけるメモリ処理の更に別の一例を示す。
【
図8】本実施形態における遠距離力の処理方法の一例を示す。
【
図9】本実施形態における遠距離力の処理方法の一例を示す。
【
図10】本実施形態における遠距離力の処理方法の一例を示す。
【
図11】本実施形態における遠距離力の処理方法の一例を示す。
【
図12】本実施形態における遠距離力の処理方法の一例を示す。
【
図13】排除粒子機能のマスクパターンの一例を示す。
【
図14】本実施形態におけるマスクパターン識別情報の一例を示す。
【
図15】本実施形態におけるマスクパターンの一例を示す。
【
図16A】本実施形態における高排除のマスクテーブルの一例を示す。
【
図16B】本実施形態における低排除のマスクテーブルの一例を示す。
【
図17A】本実施形態における高排除のマスクテーブル斜方モードの一例を示す。
【
図17B】本実施形態における低排除のマスクテーブル斜方モードの一例を示す。
【発明を実施するための形態】
【0007】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0008】
本実施形態の処理システムは、空間内に配置された複数の粒子の間に働く力を計算することで、空間内の粒子の運動をシミュレーションする。例えば、処理システムは、多数の原子を含む巨大分子等に生じる古典力学的な力やポテンシャルエネルギー等を、複数の処理ノードにより計算する。
【0009】
本実施形態において、複数の処理ノードの各々は、空間を複数の次元方向のそれぞれにおいて分割した分割空間を担当し、担当する分割空間内の力やポテンシャルエネルギーを計算する。処理システムが扱う空間は、シミュレーションさせる粒子が配置される空間(例えば、3次元空間)であり、予め定められた大きさの立体領域として定義される。
【0010】
粒子は、分子動力学シミュレーションの対象となる原子、原子群、分子、それらのイオン、又は電子であってよい。粒子には、質量、座標、速度、加速度、及び、電荷の1以上の数値が、粒子データとして付与されていてよい。分子動力学シミュレーションにおいて、粒子には複数の力が作用する。
【0011】
例えば、粒子には、共有結合力、クーロン力、及び、ファンデルワールス力等が作用する。処理システムは、複数の処理ノードを用いて、複数の粒子に作用する力の計算と、複数の粒子の位置の更新と交互に繰り返し行ってよい。処理システムは、分子動力学シミュレーションに代えて、重力多体シミュレーションを行ってもよく、この場合は、粒子は天体等の大きな質量を有する質点となり、粒子に作用する力は重力等となる。
【0012】
図1は、本実施形態における空間の処理ノードによる分担の一例を示す。処理システムにおける複数の処理ノードの各々は、専用に設計された専用チップ(以下、単にチップともいう)により実装されてよい。例えば、
図1に示すように、処理システムは8処理ノード(8チップ)×8処理ノード(8チップ)×8処理ノード(8チップ)の512処理ノード(512チップ)を備えてよい。そして、空間を512分割した分割空間のそれぞれの処理を、各処理ノード(各チップ)が担当してよい。
【0013】
各処理ノードは、担当する分割空間に存在する粒子の力と位置の計算を担当してよい。複数の処理ノードはネットワークで相互接続されて、系全体の計算処理に必要な通信を行ってよい。複数の処理ノードは、ボードに搭載されてよい。例えば、8チップを搭載したボードを64台設けることで、512チップの処理システムを構築してよい。
【0014】
図2は、本実施形態における分割空間のセル分割の一例を示す。処理システムは、セルインデックス法を用いて、複数のセルに分割された空間を管理してよい。セルは、各処理ノードが管理する分割空間を更に分割した空間であってよい。例えば、図示するように、処理ノードは、担当する分割空間を2×2×2=8セルに分割して管理してよい。これにより、処理システムは、空間内の電荷や電位を、粒子単位ではなくセル単位で少なくとも部分的に管理し、計算効率を高めることができる。
【0015】
一例として、処理システムは、100~100万原子を有する分子又は分子群の動力学シミュレーションを実行してよい。セルの一辺は1~100nmの範囲であってよい。
【0016】
図3は、本実施形態における処理装置10のブロック図を示す。処理システムにおける処理ノード(及びチップ)は、
図3に示す処理装置10により実現されてよい。処理装置10は、メモリ100、処理ユニット200、メモリコントローラ300、ネットワークインタフェース400、及び、コンボリューションユニット600を有する。
【0017】
メモリ100は、粒子データ、及び、粒子データのメモリ100内の記憶位置に関する情報等を記憶する。メモリ100は、粒子データメモリ110、セル情報メモリ120、メモリブロック情報メモリ130、マスクパターンメモリ140、及び、マスクテーブルメモリ150を含む。
【0018】
粒子データメモリ110、セル情報メモリ120、メモリブロック情報メモリ130、マスクパターンメモリ140、及び、マスクテーブルメモリ150は、単一の物理メモリにより実装されてよく、又は、複数の物理メモリにより実装されてもよい。
【0019】
粒子データメモリ110は、空間内に配置される複数の粒子のそれぞれの粒子データを記憶する。粒子データは、粒子の物理状態を示すデータであってよい。例えば、粒子データメモリ110は、複数の粒子について、粒子番号、座標、質量、及び、電荷の情報を粒子データとして記憶してよい。粒子番号は、粒子が属するセル内における相対的な番号を含んでよい。これに加えて/代えて、粒子番号は、空間内における絶対的な番号を含んでよい。
【0020】
粒子データメモリ110は、複数の粒子について、更に速度、及び/又は、加速度等の情報を粒子データとして記憶してもよい。また、粒子データは、後述するマスクパターン識別情報を含んでよい。また、粒子データは、後述するアトリビュートを含んでよい。更に、粒子データメモリ110は、粒子以外のデータを記憶してもよい。
【0021】
セル情報メモリ120は、処理装置10が担当する各セルのセル番号に対応付けて、粒子データメモリ110における、当該セル内の粒子の粒子データを格納するために割り当てられた記憶位置を示すセル情報を記憶する。例えば、セル情報は、各セルのセル番号に対応付けて、粒子データメモリ110内の複数のメモリブロックを示すものであってよい。一例として、セル情報は、セル番号を粒子データメモリ110内のアドレスに変換するアドレス変換テーブルであってよい。
【0022】
これにより、対象粒子のセル番号とセル内の粒子番号とを指定することで、粒子データメモリ110の対象粒子の粒子データを格納する記憶位置が取得可能になる。セル情報メモリ120は、セル中の粒子数をセル情報として記憶してよい。また、セル情報は、後述するアトリビュートを含んでよい。
【0023】
メモリブロック情報メモリ130は、粒子データメモリ110内における、使用済みのメモリブロックまたは未使用のメモリブロックを管理するためのメモリブロック情報を記憶する。例えば、メモリブロック情報メモリ130は、粒子データメモリ110のメモリブロックに対応するアドレスと、使用/未使用を示すインジケータとの組をメモリブロック情報として記憶してよい。
【0024】
マスクパターンメモリ140は、計算対象の粒子に働く力及び/又はポテンシャルの計算において、他の粒子のそれぞれを高排除および低排除の少なくとも一方の対象とすべきか否かを指定する複数のマスクパターンを記憶する。例えば、分子中における隣り合う原子同士は共有結合で結合するが、このような原子間のクーロン力、ファンデルワールス力等の効果は、共有結合に取り込まれている場合がある。
【0025】
このような場合に、処理装置10は、隣接原子同士に作用するクーロン力等の効果をマスクパターンにより排除し、同一の力が実質的に二重に考慮されないようにする。ここで、クーロン力、ファンデルワールス力等の効果の排除は、高い水準(例えば、完全に排除)で行ってよく(「高排除」の指定)、又は、これよりも低い水準(例えば、一部のみ排除)で行ってもよく(「低排除」の指定)、いずれを行うかはマスクパターンにより指定されてよい。
【0026】
各粒子がどのマスクパターンを使用するかは、粒子データメモリ110に格納される粒子データ中のマスクパターン識別情報で識別されてよい。マスクパターンの詳細は後述する。
【0027】
マスクテーブルメモリ150は、計算対象の2以上の粒子と、他の2以上の粒子との間で高排除および低排除の少なくとも一方を指定するマスクテーブルを記憶する。マスクパターンメモリ140が記憶するマスクパターンによれば、粒子番号が比較的近い粒子間の力の排除を考慮することができるが、環状分子中の隣接原子や巨大タンパク質中でジスルフィド結合する原子間等、空間的には近接するが粒子番号が離れた粒子間の力の排除を考慮できない場合がある。
【0028】
そこで、処理装置10は、マスクテーブルメモリ150により、粒子番号が離れた複数の粒子又は粒子群間の高排除及び低排除などの指定を個別に記憶し、空間的には近接するが粒子番号が離れた粒子間の力の排除を考慮することができる。マスクテーブルの詳細は後述する。
【0029】
処理ユニット200は、空間内に配置される複数の粒子のそれぞれについて、他の各粒子から働く力及び電位を計算し、粒子の位置を計算、更新する。処理ユニット200は、当該計算を複数種類の演算回路に分担して実行してよい。例えば、処理ユニット200は、複数のパイプライン210、複数のコア220、及び、長距離ユニット230を含んでよい。処理ユニット200は、必要に応じて、汎用プロセッサ、ローカルメモリ、その他の回路等を含んでよい。
【0030】
複数のパイプライン210は、協働して複数の粒子間に働く力及び/又はポテンシャルの一部を計算する。例えば、複数のパイプライン210は、協働して粒子間に作用する短距離のクーロン力、及び、粒子間に作用するファンデルワールス力を計算する。ここで、短距離のクーロン力とは、1つのセル及び近傍セルの空間内で作用するクーロン力であってよい。なお、以降の説明では「短距離のクーロン力及び/又はファンデルワールス力、及び/又はこれらのポテンシャル」を「短距離クーロン力等」ともいう。
【0031】
複数のパイプライン210は、マスクパターンメモリ140に格納されるマスクパターンを利用して、一部の粒子間の短距離クーロン力等の計算を省略してよい。例えば、「高排除」が全部排除を意味する場合、複数のパイプライン210は、「高排除」と指定される粒子間の短距離クーロン力等の計算を行わないか、これらの計算結果を0としてよい。例えば、「高排除」が一部の排除を意味する場合、複数のパイプライン210は、「高排除」と指定される粒子間の短距離クーロン力等の計算に所定の係数を乗じてよい。
【0032】
また、複数のパイプライン210は、マスクパターンメモリ140に格納されるマスクパターンを利用して、一部の粒子間の短距離クーロン力等を減殺してよい。例えば、複数のパイプライン210は、「低排除」と指定される粒子間の短距離クーロン力等の計算に「高排除」に用いた係数よりも大きい所定の係数(例えば、1/2又は1/4)を乗じてよい。例えば、処理ユニット200は8個のパイプライン210を含んでよい。
【0033】
コア220は、複数の粒子間に働く力の他の一部を計算する。例えば、コア220は、共有結合力を計算する。コア220は、SRAM等の専用メモリを命令メモリ等の用途で有してもよい。
【0034】
コア220は、各粒子に作用する力を統合し、統合された力及び質量から各粒子の加速度及び速度を計算し、更に次のシミュレーション時刻における各粒子の位置(例えば、3次元座標)を計算してよい。ここで、コア220は、自身が計算する共有結合力、複数のパイプライン210が計算する短距離クーロン力等に加えて、後述するコンボリューションユニット600が計算する長距離クーロン力を統合してよい。また、コア220は、各粒子の電位を計算してよい。
【0035】
複数のコア220は、処理装置10が担当するセルを分担してよい。例えば、処理ユニット200は、8個のコア220を含んでよく、各コアが
図2に示す空間における1又は複数のセルの処理を担当してよい。複数のコアが1セルの処理を担当してもよい。例えば、あるコア220が
図2のセルAに含まれる粒子に作用する力及び粒子の位置の計算を行い、別のあるコア220が
図2のセルBに含まれる粒子に作用する力及び粒子の位置の計算を行いよい。また、処理ユニット200は、各セルを担当するコア220に加えて、パイプライン210制御用のコア220を別途含んでよい。
【0036】
処理ユニット200のパイプライン210及びコア220は、メモリコントローラ300を介して、粒子データメモリ110に記憶された粒子データにアクセスする。処理ユニット200は、空間を分割したセルに含まれる粒子の粒子データを、セル番号を指定してアクセスしてよい。
【0037】
例えば、コア220は、メモリコントローラ300を介して、粒子データメモリ110に記憶された粒子データに書き込みを行ってよい。一例として、コア220は、セル番号およびセル内の粒子番号を指定して粒子データに対する書き込みを要求する書込要求をメモリコントローラ300へと送信してよい。
【0038】
また、コア220は、粒子の位置の更新(例えば、粒子のセル間の移動)に伴い、メモリコントローラ300を介して、指定したセル番号のセルに粒子を追加してよい。例えば、コア220は、指定したセル番号のセルに粒子を追加することを指示する追加要求をメモリコントローラ300へと送信してよい。なお、コア220は、ハードウェアにより実現されてよく、又は、ソフトウエア(すなわちプログラム)により実現されてもよい。後者の場合、ソフトウエア(プログラム)は、記録媒体(例えば、揮発性又は不揮発性メモリ)に記録されてよい。
【0039】
長距離ユニット230は、粒子間に働く力のうち処理ユニット200で計算されないものを計算する。例えば、長距離ユニット230は、コンボリューションユニット600と協働して粒子間に作用する長距離クーロン力を計算する。一例として、長距離ユニット230は、空間内に設けた格子点のうち処理装置10が担当する分割空間に含まれる格子点にアサインされた複数の粒子の電荷から、担当する分割空間内に含まれる格子点の電荷を補間演算により算出してよい。また、格子点の電位から粒子位置の力とポテンシャルエネルギーを補間演算により算出してよい。長距離ユニット230の動作の詳細については、後述する。
【0040】
メモリコントローラ300は、処理ユニット200からの、メモリ100に記憶された粒子データ等へのアクセスを仲介する。メモリコントローラ300は、セル番号を指定した粒子データへのアクセスを受けたことに応じて、指定されたセル番号に対応付けられたセル情報を用いて粒子データメモリ110におけるアクセス対象の粒子データの記憶位置を特定する。例えば、メモリコントローラ300は、セル情報メモリ120のセル情報を参照することで、アクセス対象の粒子データの記憶位置を特定してよい。
【0041】
また、メモリコントローラ300は、処理ユニット200からの要求に応じ、粒子データメモリ110の粒子データに書き込みしてよい。例えば、メモリコントローラ300は、処理ユニット200から書込要求を受け取ったことに応じて、粒子データメモリ110における、指定されたセル番号に対応付けられたセル情報および指定されたセル内の粒子番号によって示される記憶位置の粒子データに対して書込データを書き込んでよい。
【0042】
また、メモリコントローラ300は、処理ユニット200からの要求に応じ、粒子データメモリ110に粒子データを追加してよい。例えば、メモリコントローラ300は、処理ユニット200から追加要求を受け取ったことに応じて、粒子データメモリ110における、指定されたセル番号に対応付けられたセル情報によって示される記憶位置に、当該粒子の粒子データを追加してよい。
【0043】
また、メモリコントローラ300は、セルに粒子データメモリ110の未使用のメモリブロックを割り当ててよい。例えば、メモリコントローラ300は、セルにメモリブロックを割り当てる場合に、メモリブロック情報メモリ130に格納されたメモリブロック情報を用いて、粒子データメモリ110が使用できるメモリブロックのうち未使用のメモリブロックを選択してよい。なお、粒子データメモリ110が粒子以外のデータを記憶する場合、メモリコントローラ300は、粒子以外のデータを記憶するメモリブロックをセルへの割り当てから除外してよい。
【0044】
さらに、メモリコントローラ300は、複数の処理ユニットから同一セルに対して競合する処理を実行してよい。例えば、メモリコントローラ300は、複数の処理ユニットから同一セルに対して競合する複数の追加要求を受信した場合に、複数の追加要求のそれぞれをアトミックに処理してよい。
【0045】
ネットワークインタフェース400は、処理装置10と外部(例えば、他の処理装置10)との通信を仲介する。これにより、処理装置10は、自身が担当しない担当外セルを担当する他の処理装置10と通信し、担当外セル中の粒子の粒子データ等を他の処理装置10から取得することができる。
【0046】
コンボリューションユニット600は、粒子間に働く力のうち処理ユニット200で計算されないものを計算する。例えば、コンボリューションユニット600は、長距離ユニット230と協働して、粒子間に作用する長距離クーロン力を計算する。例えば、コンボリューションユニット600は、格子点の電荷から格子点の電位を畳み込み演算により算出し、長距離ユニット230に提供する。コンボリューションユニット600は、長距離クーロン力の計算量及び計算時間を削減するために、粒子の電荷を格子点上にアサインする手法を用いてよい。コンボリューションユニット600の動作の詳細については後述する。
【0047】
例えば、コンボリューションユニット600は、空間内に設けた格子点のうち処理装置10が担当する分割空間に含まれる格子点にアサインされた複数の粒子の電荷から、担当する分割空間内に含まれる格子点の電位を畳み込み演算により算出してよい。複数の処理装置10におけるコンボリューションユニット600は、相互に通信して、各格子点の電荷に応じた値を複数の軸の各軸方向に順に畳み込んでいってよい。コンボリューションユニット600は、ハードウェアにより実現されてよく、又は、ソフトウエア(すなわちプログラム)により実現されてもよい。後者の場合、ソフトウエア(プログラム)は、記録媒体(例えば、揮発性又は不揮発性メモリ)に記録されてよい。コンボリューションユニット600の処理の詳細は後述する。
【0048】
このように、複数の処理装置10は、互いに通信しながら、パイプライン210及びコア220等の専用ハードウェアにより粒子に作用する力や粒子位置等を演算し、メモリ100の所定の記憶位置に演算結果を格納する。各粒子の記憶位置は、セル情報メモリ120等により管理されるので、粒子がセル間を移動した場合や粒子が追加された場合であっても、粒子データメモリ110を書き換えずに処理を完了することも可能である。
【0049】
本実施形態によれば、メモリコントローラ300が処理ユニット200のメモリ100へのアクセスを管理するので、複数のパイプライン210やコア220間の同期をソフトウエアでとることなく、複数の粒子をセル上で管理することができる。また、本実施形態によれば、セル番号により、粒子データの読み出しが可能になるので、粒子がセル間を移動した場合であっても同じパイプラインコマンド及びネットワークコマンドを再利用することができる。
【0050】
図4は、本実施形態におけるメモリ100の記憶内容の一例を示す。
図4には、最大64粒子を格納するセルAとセルDが示される。粒子データメモリ110は、多数のメモリブロック(以下、MBともいう)を有し、そのうちのメモリブロック1~メモリブロック4でセルAの64粒子の粒子データを記憶し得る。ここで、各メモリブロックは最大16粒子分の粒子データを記憶してよい。また、粒子データメモリ110は、メモリブロック16でセルDの最大16粒子分の粒子データを記憶してよい。
【0051】
セル情報メモリ120は、粒子データメモリ110における粒子の記憶位置をセル番号に対応づけて記憶する。例えば、セル情報メモリ120は、セルAに対応付けてメモリブロック1~4に対応するアドレス(例えば、メモリブロック1の先頭アドレス)をセル情報として記憶する。
【0052】
これにより、セルAに属する粒子のうち1~16番目までのものは粒子データメモリ110のメモリブロック1に対応し、17~32番目までのものは粒子データメモリ110のメモリブロック2に対応し、33~48番目までのものは粒子データメモリ110のメモリブロック3に対応し、49~64番目までのものは粒子データメモリ110のメモリブロック4に対応することが示される。
【0053】
ここで、粒子データメモリ110及びセル情報メモリ120は、二重化された粒子データを記憶してよい。例えば、粒子データメモリ110は、複数の粒子について現在のシミュレーション時刻の粒子データを記憶する第1領域と、当該複数の粒子について次の時刻の粒子データを記憶する第2領域とを備えてよい。そして、粒子の移動に伴って各セルに粒子の再配置を行う場合、第1領域において記憶位置が指定される粒子データを第2領域の記憶位置に再割り当てしてよい。
【0054】
ここで、セル情報メモリ120も、粒子データメモリ110の第1領域と第2領域に対応して、第1セット及び第2セットを有してよい。例えば、セル情報メモリ120は、複数のセルに対応付けた第1セットの複数のセル情報と、複数のセルに対応付けた第2セットの複数のセル情報とを記憶してよい。そして、空間内に複数の粒子の移動に伴って複数の粒子を各セルに再配置する処理において、処理ユニット200は、第1セットの複数のセル情報によって記憶位置が指定される各粒子の粒子データを、第2セットの複数のセル情報によって指定される記憶位置に再割当してよい。
【0055】
図4では、セル情報メモリ120の第1セットにおいて、セルAに属する現在の粒子データが粒子データメモリ110のMB1~4に記憶され、セルBに属する現在の粒子データが粒子データメモリ110のMB5~8に記憶されることが示される。また、セル情報メモリ120の第2セットにおいて、セルAに属する次時刻の粒子データが粒子データメモリ110のMB1'~4'に記憶され、セルBに属する次時刻の粒子データが粒子データメモリ110のMB5'~8'に記憶されることが示される。ここで、MB1'~4'はMB1~4と異なるブロックであり、MB5'~8'はMB5~8とは異なるブロックである。
【0056】
セル情報メモリ120は、セル中の粒子数を記憶してよい。例えば、図示するようにセル情報メモリ120は、セルAの粒子数が11であり、セルBの粒子数が16であることを記憶する。メモリブロック情報メモリ130は、メモリブロック1、メモリブロック2等が使用済であるか、未使用であるかを示す。
【0057】
図5から
図7において、本実施形態におけるメモリ処理の例を示す。
【0058】
図5は、メモリコントローラ300によるアトミックなセルへの粒子追加の例を示す。あるセルに粒子Aのみが含まれる場合を想定する。ここで、コア1(
図3に示すコア220の1つに対応)が、メモリコントローラ300に粒子追加命令(Append命令)を送信する。これに応じて、メモリコントローラ300が粒子データメモリ110にアクセスして当該セルに新しい粒子Bを追加する。
【0059】
また、コア2(
図3に示すコア220の別の1つに対応)が、メモリコントローラ300に粒子追加命令(Append命令)を送信する。これに応じて、メモリコントローラ300が、粒子データメモリ110にアクセスして当該セルに新しい粒子Cを追加する。メモリコントローラ300は、このようなメモリアクセス処理を一度(アトミック)に行ってよい。
【0060】
このようにメモリコントローラ300が、メモリへの粒子の追加を制御する。各コアがメモリコントローラ300を介さず、それぞれでメモリにアクセスして粒子を追加した場合は、処理の競合が生じ得るが、本実施形態によればメモリコントローラ300により、そのような競合は避けられる。
【0061】
図6は、メモリコントローラ300によるアトミックな演算処理の例を示す。あるセル(例えば、特定の粒子)に対して演算処理(例えば、複数種類の力の合算)を行う場合を想定する。ここで、処理ユニットのコア1(
図3に示すコア220の1つに対応)が、予め定められたデータを演算により更新することを指示する更新要求(例えば、積算を指示するACCUM命令)を、メモリコントローラ300に送信する。更新要求を受け取ったことに応じて、メモリコントローラ300が粒子データメモリ110にアクセスして演算処理(例えば、A+B)を実行し、演算結果でデータを更新する。
【0062】
また、コア2(
図3に示すコア220の別の1つに対応)が、メモリコントローラ300に更新要求(例えば、ACCUM命令)を送信する。これに応じて、メモリコントローラ300が粒子データメモリ110にアクセスして演算処理(A+B+C)を実行する。このような演算処理を一度(アトミック)に行ってよい。
【0063】
このようにメモリコントローラ300が、メモリ上での演算処理を制御する。各コアがメモリコントローラ300を介さず、それぞれでメモリに読出及び書込を行って演算した場合は、処理の競合が生じ得るが、本実施形態によればメモリコントローラ300により、そのような競合は避けられる。
【0064】
図7は、メモリコントローラ300によるアトミックな積算処理の別の例を示す。メモリ100は、各粒子の粒子データが現シミュレーション時刻で更新されたか否かを示すアトリビュートを記憶してよい。例えば、アトリビュートは、複数の粒子のそれぞれに対応付けられて、各粒子の粒子データ中の予め定められたデータが現シミュレーション時刻に更新されたか否かを示すものであってよい。アトリビュートは、粒子データメモリ110が記憶する各粒子の粒子データ、及び、セル情報メモリ120が記憶する各粒子に対応するセル情報の少なくとも1つに保持されてよい。
【0065】
メモリコントローラ300は、一の粒子の粒子データ中における予め定められたデータがアクセスされたことに応じて、アトリビュートに基づいて、予め定められたデータに記録されている値を使用するか、初期値を使用するかを選択してよい。
【0066】
例えば、
図7の例では、最初に、粒子データメモリ110において、対象粒子についてデータAとアトリビュートT-1が記憶されている。次の時刻Tで、コア1(
図3に示すコア220の1つに対応)が、メモリコントローラ300に更新要求(例えば、ACCUM命令)を送信する。
【0067】
メモリコントローラ300は、更新要求を受け取ったことに応じて、予め定められたデータが現シミュレーション時刻に更新されている場合は予め定められたデータに記録されている値に対して演算を施して更新する。メモリコントローラ300は、予め定められたデータが現シミュレーション時刻に更新されていない場合は初期値に対して演算を施して予め定められたデータを更新する。
【0068】
例えば、メモリコントローラ300が、対象粒子のアトリビュートT-1と現在の時刻Tとを比較し、一致しないと判断する。これに応じて、メモリコントローラ300は、粒子データメモリ110にアクセスして、対象粒子についてデータAを破棄し、ACCUM命令に含まれる初期値Bで更新する。メモリコントローラ300は、同時に対象粒子のアトリビュートをT-1からTに更新する。
【0069】
更にコア2(
図3に示すコア220の別の1つに対応)が、メモリコントローラ300に更新要求(例えば、ACCUM命令)を送信する。メモリコントローラ300が、対象粒子のアトリビュートTと現在の時刻Tとを比較し、一致すると判断する。これに応じて、メモリコントローラ300は、対象粒子の記憶されているデータBを使用し、粒子データメモリ110にアクセスして積算処理(B+C)を実行する。
【0070】
図7に示した実施形態によれば、メモリコントローラ300がアトリビュートの値に応じて、演算結果を初期値(例えば、0)にする。各コア220がメモリ100にアクセスして積算処理(例えば、複数種類の力の合算)を行う場合、最初に、メモリ100にアクセスしたコア220が初期値0を書き込む必要があるが(0クリアともいう)、このような処理には時間がかかる。一方で、本実施形態によれば、メモリコントローラ300が0クリアをメモリに対して行う必要がなく、アトリビュートの値に応じて初期値を0にした積算処理を行うことができる。なお、アトリビュートは、粒子データメモリ110が粒子以外のデータを記憶する場合、粒子データだけでなく、当該粒子以外のデータにも適用してよい。
【0071】
図8から
図12において、本実施形態における遠距離力(例えば、遠距離のクーロン力)の処理方法の例を示す。例えば、処理装置10は、(1)空間中の各粒子が有する電荷を、空間に設けられた比較的少数の格子点に近似的にアサインするチャージアサインを実行し、(2)格子点上の電位を計算する電位計算を実行し、(3)その後、格子点上の電位を元に各粒子への力を計算するパックインターポレーションを実行する。このような手法は、Particle Mesh Ewald(PME)としても知られている。本実施形態において、長距離ユニット230は(1)と(3)を実行し、コンボリューションユニット600は(2)を実行する。
【0072】
ここで、(2)電位計算は、格子電荷を含むポアソン方程式を解くことにより行われる。ポアソン方程式は、格子点の電荷値に格子点間の距離に応じた係数(カーネル)を乗じ、予め定められた範囲内の全ての格子点からの寄与を畳み込みにより加算することにより、解かれる。ここで、畳み込みは、密で近距離の畳み込みと、疎で長距離の畳み込みの結果を足し合わせることにより行ってよい。このような手法はMultilevel Summation Method(MSM:Skeel等、2002、Hardy等、2016)として知られている。
【0073】
図8は、MSMによる解法の一例を示す。以降の図では説明のため、2次元(2軸方向)に配列された格子点を図示するが、実際には3次元(3軸方向)に配列された格子点が用いられてよい。
【0074】
図示するように、コンボリューションユニット600は、例えば、レベル1~3の3段階の粗密レベルで畳み込みを実行してもよい。対象となる格子点(図中、Tで示す)の電位を算出するのに、コンボリューションユニット600は、まず最も密なレベル1における近接格子点66からの対象格子点Tへの寄与を計算する。
【0075】
次にコンボリューションユニット600は、中間の粗密レベルのレベル2における近接格子点64からの対象格子点Tへの寄与を計算する。更にコンボリューションユニット600は、最も疎なレベル3における近接格子点62からの対象格子点Tへの寄与を計算する。コンボリューションユニット600は、これらのレベル1~3における寄与を合算することにより、対象格子点Tの電位を算出してよい。
【0076】
レベル1~3のいずれかのレベルにおける格子点のそれぞれは、セルに対応するものであってよい。例えば、レベル3の各格子点は、各セルの中心点又は頂点に対応するものであってよい。また、例えば、レベル3の所定の個数の格子点(例えば、8個の格子点)は、セルごとに設けられてよい。
【0077】
図9は、1つのレベルにおける畳み込み処理の概要を示す。この図の例では、各処理ノード(チップ)は、4個の格子点を担当する。格子点はセルに対応するものであってよい。一例として、1個の格子点は1個のセルに対応する。
【0078】
コンボリューションユニット600は、対象格子点Tから一方向にカットオフ範囲内(例えば隣接2個)の格子点までの電荷を考慮して畳み込みを行う。
図9の例では、チップ5が担当する対象格子点Tの電位は、チップ1が担当する1個の隣接格子点、チップ2~4及びチップ7が担当する2個の隣接格子点、及び、チップ5~6及びチップ8~9が担当する4個の隣接格子点(対象格子点自身も含んでよい)の電荷の畳み込みに少なくとも部分的に基づいて決定する。
【0079】
ここで、チップ5は、チップ1~4及びチップ6~9と個別に通信して各隣接格子点の電荷を取得してもよいが、その場合、演算時間よりも通信よるオーバーヘッドが処理時間のボトルネックとなる場合がある。そこで、本実施形態においては、格子点を軸方向に分離し、各軸における畳み込みを別個に行うことで、チップ間の通信時間を削減し、全体的な処理時間を減少させる。
【0080】
例えば、複数の処理ノードのコンボリューションユニット600は、複数の軸内における格子点間の距離に応じた係数を算出する関数を、複数の軸のそれぞれに分離したカーネル関数の組み合わせによって近似することにより、複数の軸における畳み込み演算を各軸方向の畳み込みに分離してよい。
【0081】
例えば、コンボリューションユニット600は、各軸について、
x'n=a-2xn-2+a-1xn-1+a0xn+a1xn+1+a2xn+2 …式1
を計算することで畳み込み演算を実行してよい。ここで、x'nは対象格子点Tにおける電位であり、a-2~a2は格子点間の距離に応じた係数であり、xn-2~xn+2は各格子点の電荷である。
【0082】
コンボリューションユニット600は、第1軸方向における予め定められた範囲の格子点を担当する他の処理ノード(チップ)から受信した電荷等の値に応じた値を担当する格子点に畳み込んでよい。例えば、コンボリューションユニット600は、
図8に示すx方向と
図9に示すy方向のそれぞれについて、他の処理ノード(チップ)から電荷等の値(例えば、x
n-2~x
n+2)を受信し、上記式1を計算することで対象格子点のx方向の寄与分及びy方向の寄与分を演算してよい。
【0083】
また、コンボリューションユニット600は、自身の担当する格子点の電荷及び/又は自身の演算結果の情報を別のチップのコンボリューションユニット600に対して送信する。例えば、複数の処理ノード(チップ)のそれぞれのコンボリューションユニット600は、担当する格子点に割り当てられた電荷等の値を、複数の軸のうち第1軸方向における予め定められた範囲の格子点を担当する他の処理ノードに送信する。
【0084】
例えば、コンボリューションユニット600は、電荷及び/又は演算結果を、各軸方向に必要な範囲までに存在するコンボリューションユニット600に対して、マルチキャストする。一例として、コンボリューションユニット600は、電荷等をy方向及び/又はz方向に1又は複数チップ分隣接するコンボリューションユニット600にマルチキャストしてよい。
【0085】
コンボリューションユニット600は、予め定められた範囲の格子点を担当する他の処理ユニットからの受信回数が、予め定められた数に達したことに応じて第1軸方向における畳み込みの終了を判定してよい。例えば、
図10におけるチップ5のコンボリューションユニット600は、チップ4から1回電荷を受信し、チップ6から2回電荷を受信したこと(すなわち、計3回の電荷の受信)に応じて、X方向における畳み込みの終了を判定してよい。同様に
図11におけるチップ5のコンボリューションユニット600は、チップ2から1回電荷を受信し、チップ8から2回電荷を受信したこと(すなわち、計3回の電荷の受信)に応じて、Y方向における畳み込みの終了を判定してよい。
【0086】
そして、コンボリューションユニット600は、複数の粗密レベルで演算した畳み込み結果に基づいて、各格子点の電位を計算してよい。例えば、コンボリューションユニット600は、
図9~
図11に基づいて説明した手法により、複数の処理ノードのコンボリューションユニット600は、空間を第1単位で分割した各第1格子点(例えば、
図8のレベル1に示す格子点)にアサインされた電荷を各第1格子点から第1範囲内で畳み込んでよい。
【0087】
第1格子点の電荷を集計することで、コンボリューションユニット600は、空間を第1単位よりも大きな第2単位で分割した各第2格子点(例えば、
図8のレベル2に示す格子点)にアサインされた電荷を、算出してよい。
【0088】
そして、コンボリューションユニット600は、算出した電荷から第2格子点の電位を算出し、第2格子点で求めた電位から第1範囲内で畳み込むことで、各第1格子点の電位を算出してよい。コンボリューションユニット600は、更に空間を第2単位よりも大きな第3単位で分割した各第3格子点(例えば、
図8のレベル3に示す格子点)にアサインされた電荷を算出し、各第3格子点の電位を算出し、これらを更に用いて、各第1格子点の電位を算出してよい。
【0089】
複数の粗密レベルで演算した畳み込み結果の統合は、コンボリューションユニット600とは別個のハードウェアにより実現してもよい。例えば、処理システム又は処理装置10は、FPGA等の専用回路を別途有し、当該専用回路で畳み込み結果の統合を行ってもよい。
【0090】
図12は、3レベルにおいて実行されるコンボリューションユニット600による電位演算の一例を示す。図示する通り、64格子点×64格子点×64格子点における電荷(64
3電荷)に基づいて、より大きな単位の32格子点×32格子点×32格子点における電荷(32
3電荷)が演算される。また、32
3電荷に基づいて更に大きい単位の16格子点×16格子点×16格子点における電荷(16
3電荷)が演算される。
【0091】
そして、163電荷から同格子点における電位(163電位)が演算される。163電位及び323電荷に基づいて32格子点×32格子点×32格子点における電位(323電位)が演算される。更に323電位及び643電荷に基づいて64格子点×64格子点×64格子点における電位(643電位)が演算される。
【0092】
本実施形態によれば、各レベルの各軸方向において、畳み込み演算は順不同に実行でき、各格子点の演算の終了は受信したデータ個数で判断できる。また、コンボリューションユニット600は、演算に必要な前の軸方向のデータが揃うまで次の演算を実行しなくてよいので、同期処理を必要とせず、状態を自動的に遷移させることができる。
【0093】
また、本実施形態によれば、MSMに必要な格子レベルの上下を繋げる補完演算も一つのハードウェア(すなわちコンボリューションユニット600)により実現される。本実施形態によれば、FFTによりポアソン方程式を解く場合と比較して、処理ノード間の通信量を低減することで、全体的な処理時間を削減することができる。
【0094】
図13から
図16Bを用いて、本実施形態における排除粒子機能の例を示す。
【0095】
図13は、排除粒子機能に用いられるマスクパターンの一例を示す。マスクパターンメモリ140に記憶された複数のマスクパターンのそれぞれは、計算対象の粒子の粒子番号に対して予め定められた相対粒子番号を有する他の粒子のそれぞれを高排除および低排除の少なくとも一方の対象とすべきか否かを指定する。例えば、
図13では、短距離クーロン力等の計算において、粒子番号i=1の粒子が、別の粒子(粒子番号j=2、3、4…)を高排除又は低排除の対象とするかを表すマスクパターンを示している。
【0096】
図13のマスクパターンは「000110…」の値を有している。ここで「0」は排除の対象としないことを表し、「1」は排除の対象とすることを表す。また、マスクパターンは別の粒子に対し、高排除と低排除の両方についての指定を含んでいる。例えば、当該マスクパターンは、粒子番号1の粒子が、粒子番号2の粒子に対して、マスク値「00」を有する。これは、粒子番号1の粒子は、粒子番号2の粒子を、低排除及び高排除の対象にしないことを示す。
【0097】
また、例えば、当該マスクパターンは、粒子番号1の粒子が、粒子番号3の粒子に対して、マスク値「01」を有する。これは、粒子番号1の粒子は、粒子番号3の粒子を、低排除の対象にすることを示す。同様に、当該マスクパターンは、粒子番号1の粒子が、粒子番号4の粒子に対して、マスク値「10」を有する。これは、粒子番号1の粒子は、粒子番号4の粒子を、高排除の対象にすることを示す。
【0098】
このマスクパターンの値に基づいて、処理ユニット200のパイプライン210は、短距離クーロン力等の計算の一部を省略してよい。例えば、パイプライン210は、
図13のマスクパターンの値に基づいて、粒子番号1の粒子と粒子番号2の粒子間の短距離クーロン力等を計算し、粒子番号1の粒子と粒子番号3の粒子間の短距離クーロン力等を計算した結果を低排除所定の割合で減殺し、粒子番号1の粒子と粒子番号4の粒子間の短距離クーロン力等を高排除所定の割合で減殺してよい、例えば、高排除が全部排除を意味する場合、短距離クーロン力等を計算しないでよい(又はこれらの力等を0としてよい)。
【0099】
ここで、粒子間の相互作用を高い精度でシミュレーションしようとすると、全ての粒子ペア間のマスクパターンを保持することになる。しかし、全ての粒子ペアのマスクパターンを保持することは、メモリ容量やマスク幅の制約から難しい場合がある。一方でマスクパターンに頼らず個別に粒子間の高排除/低排除/非排除を考慮した力の演算を個別に行うと計算時間が増大する問題が生じていた。
【0100】
ここで、本発明者らは、分子動力学シミュレーションの対象となる巨大タンパク質等は、所定構造のアミノ酸の繰り返し等、同一/類似する部分構造が多く出現することに着目した。従って、粒子に適用すべきマスクパターンも同様のものが多く出現することになる。そこで、本実施形態によれば、マスクパターンを限られた数のパターンに限定する代わりに、マスク幅を大きくし、これにより、短距離クーロン力等のより効率的な排除を実現した。本実施形態では、限られた数のマスクパターンを指定するためにマスクパターン識別情報を用いる。
【0101】
図14は、本実施形態におけるマスクパターン識別情報の一例を示す。マスクパターン識別情報は、複数の粒子のそれぞれについて、複数のマスクパターンのうち各粒子に働く力の計算において使用するマスクパターンを識別する。粒子データメモリ110は、粒子データの一部として、
図14に示すようなマスクパターン識別情報を記憶してよい。
【0102】
例えば図示するように、粒子番号1の粒子の粒子データは、パターン番号1023をマスクパターン識別情報として含む。この場合、粒子番号1の粒子は、パターン番号1023で指定されるマスクパターンを使用することが示される。同様に粒子番号2の粒子の粒子データは、パターン番号442をマスクパターン識別情報として含む。この場合、粒子番号2の粒子は、パターン番号442で指定されるマスクパターンを使用することが示される。
【0103】
図15は、本実施形態において用いられるマスクパターンの一例を示す。複数のマスクパターンのそれぞれは、予め定められた長さのマスクビット列と、マスクビット列のうち計算対象の粒子に働く計算における高排除すべき他の粒子の指定および低排除すべき他の粒子の指定に割り当てるビット数を設定するための設定値とを含む。
【0104】
例えば、
図15に示すマスクパターンは、77ビットのビット長さを有し、72ビットのマスクビット列と、5ビットの設定値とを含む。5ビットの設定値は、0~31までの指定値を指定できる。当該指定値により、72ビットのマスクビット列を、8~40ビットの第1マスクと、32~64ビットの第2マスクとに分割する。例えば、設定値が10であれば、72ビットのマスクビット列を、18ビットの第1マスクと54ビットの第2マスクに分割する。
【0105】
第1マスクは、計算対象の粒子に働く力等の計算における高排除すべき他の粒子の指定に用いられる。例えば、粒子番号1の粒子に対して、「0101…」の第1マスクを使用する場合、粒子番号1の粒子と粒子番号3の粒子間の短距離クーロン力等、及び、粒子番号1の粒子と粒子番号5の粒子間の短距離クーロン力等は高排除所定の割合で減殺されてよい。高排除が全部排除を意味する場合、短距離クーロン力等を計算しないでよい(又はこれらの力等を0としてよい)。
【0106】
第2マスクは、計算対象の粒子に働く力等の計算における低排除すべき他の粒子の指定に用いられる。例えば、粒子番号1の粒子に対して、「0010…」の第2マスクを使用する場合、粒子番号1の粒子と粒子番号4の粒子間の短距離クーロン力等は一部(例えば1/2又は1/4)が排除されてよい。
【0107】
低排除に使用される第2マスクは、高排除に使用される第1マスクよりもマスク幅が大きくてよい。これにより、高排除より遠距離まで影響する可能性のある低排除の効果を、高排除よりも遠くの原子まで考慮することができる。
【0108】
ここで、
図15に示すマスクパターンは、パターン番号442である。従って、当該マスクパターンは、粒子データのマスクパターン識別情報において442が指定された場合に使用される。マスクパターンメモリ140は、所定の数(例えば、1024個)のマスクパターンを記憶してよい。
【0109】
更に、処理装置10は、マスクパターンメモリ140に記憶された所定数のマスクパターンでカバーできない粒子間の高排除/低排除の関係を更に考慮するために、マスクテーブルを用いてよい。例えば、環状分子中の隣接原子等、空間的には近接するが粒子番号が離れた粒子群間の高排除/低排除のパターンをマスクテーブルで指定することができる。
【0110】
図16A及び
図16Bに、本実施形態におけるマスクテーブルの一例を示す。マスクテーブルは、マスクテーブルメモリ150に記憶され、マスクパターンでカバーされない粒子番号の離れた2つの粒子群の間に働く短距離クーロン力等の高排除および低排除の少なくとも一方を指定するものであってよい。
図16Aは高排除のマスクテーブルを示し、
図16Bは低排除のマスクテーブルを示す。マスクテーブルメモリ150に記憶されるマスクテーブルが表現する粒子群の組み合わせは、記憶するマスクテーブルの数だけ組み合わせ方(例えば16の組み合わせ方)があってよい。
【0111】
例えば、
図16Aの例では、粒子番号101の粒子は、粒子番号221、222、223の粒子に対し、「100」の高排除のパターンを有する。また、
図16Bの例では、「010」の低排除のパターンを有する。これは、粒子番号221の粒子は粒子番号101の粒子に対して高排除(例えば、全部が排除)され、粒子番号222の粒子は粒子番号101の粒子に対して低排除(例えば、一部が排除)されることを示す。同様に粒子番号222の粒子は粒子番号102の粒子に対して高排除(例えば、全部が排除)され、粒子番号223の粒子は粒子番号103の粒子に対して低排除(例えば、一部が排除)されることが示される。
【0112】
ここで、マスクテーブルに記憶する高排除および低排除の少なくとも一方を指定する情報が、粒子番号の離れた2つの粒子群のどの粒子同士の組み合わせ方に対応するのかを予め定めた対応関係によって指定可能であってよい。一例として、
図17で説明する斜方モードが挙げられる。
【0113】
図17A及び
図17Bは、本実施形態における高排除のマスクテーブル斜方モードの一例を示す。本実施形態の処理装置10は、マスクテーブルの利用に関して、例えば、
図17Aおよび
図17Bに示す斜方モードを備えてよい。斜方モードが指定された場合、マスクテーブルのマスク値が示す高排除/低排除の指定範囲が、粒子番号に応じて、所定数(例えば1つ)ずつずれていく。
図17Aの例では、粒子番号221の粒子は粒子番号101の粒子に対して高排除(例えば、全部が排除)され、粒子番号223の粒子は粒子番号102の粒子に対して高排除(例えば、全部が排除)されることが示され、
図17Bの例では、粒子番号222の粒子は粒子番号101の粒子に対して低排除(例えば、一部が排除)され、粒子番号225の粒子は粒子番号103の粒子に対して低排除(例えば、一部が排除)されることが示される。
【0114】
このように本実施形態の処理システム及び処理装置10等によれば、従来の専用計算機を用いた場合と比較して、より高速かつ効率的に分子動力学シミュレーションを実行することができる。
【0115】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【0116】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【0117】
本実施形態の様々な形態の例を項目として以下に示す。
[項目1]
空間内に配置される複数の粒子のそれぞれの粒子データを記憶する粒子データメモリと、
空間を分割した各セルのセル番号に対応付けて、粒子データメモリにおける、当該セル内の粒子の粒子データを格納するために割り当てられた記憶位置を示すセル情報を記憶するセル情報メモリと、
空間を分割したセルに含まれる粒子の粒子データを、セル番号を指定してアクセスする処理ユニットと、
セル番号を指定した粒子データへのアクセスを受けたことに応じて、指定されたセル番号に対応付けられたセル情報を用いて粒子データメモリにおけるアクセス対象の粒子データの記憶位置を特定するメモリコントローラと
を備える処理装置。
[項目2]
処理ユニットは、指定したセル番号のセルに粒子を追加することを指示する追加要求をメモリコントローラへと送信し、
メモリコントローラは、追加要求を受け取ったことに応じて、粒子データメモリにおける、指定されたセル番号に対応付けられたセル情報によって示される記憶位置に、当該粒子の粒子データを追加する項目1に記載の処理装置。
[項目3]
メモリコントローラは、複数の処理ユニットから同一セルに対して競合する複数の追加要求を受信した場合に、複数の追加要求のそれぞれをアトミックに処理する項目2に記載の処理装置。
[項目4]
処理ユニットは、セル番号およびセル内の粒子番号を指定して粒子データに対する書き込みを要求する書込要求をメモリコントローラへと送信し、
メモリコントローラは、書込要求を受け取ったことに応じて、粒子データメモリにおける、指定されたセル番号に対応付けられたセル情報および指定されたセル内の粒子番号によって示される記憶位置の粒子データに対して書込データを書き込む項目1から3のいずれか一項に記載の処理装置。
[項目5]
セル情報メモリは、各セルのセル番号に対応付けて、粒子データメモリ内の複数のメモリブロックを示すセル情報を記憶する項目1から4のいずれか一項に記載の処理装置。
[項目6]
粒子データメモリ内における、使用済みのメモリブロックまたは未使用のメモリブロックを管理するためのメモリブロック情報を記憶するメモリブロック情報メモリを更に備え、
メモリコントローラは、セルにメモリブロックを割り当てる場合に、メモリブロック情報を用いて未使用のメモリブロックを選択する
項目1から5のいずれか一項に記載の処理装置。
[項目7]
セル情報メモリは、複数のセルに対応付けた第1セットの複数のセル情報と、複数のセルに対応付けた第2セットの複数のセル情報とを記憶し、
処理ユニットは、空間内に複数の粒子の移動に伴って複数の粒子を各セルに再配置する処理において、第1セットの複数のセル情報によって記憶位置が指定される各粒子の粒子データを、第2セットの複数のセル情報によって指定される記憶位置に再割当する
項目1から6のいずれか一項に記載の処理装置。
[項目8]
各粒子の粒子データおよび各粒子に対応するセル情報の少なくとも1つは、複数の粒子のそれぞれに対応付けて、各粒子の粒子データ中の予め定められたデータが現シミュレーション時刻に更新されたか否かを示すアトリビュートを保持し、
メモリコントローラは、一の粒子の粒子データ中における予め定められたデータがアクセスされたことに応じて、アトリビュートに基づいて、予め定められたデータに記録されている値を使用するか、初期値を使用するかを選択する
項目1から7のいずれか一項に記載の処理装置。
[項目9]
処理ユニットは、予め定められたデータを演算により更新することを指示する更新要求をメモリコントローラへと送信し、
メモリコントローラは、更新要求を受け取ったことに応じて、予め定められたデータが現シミュレーション時刻に更新されている場合は予め定められたデータに記録されている値に対して演算を施して更新し、予め定められたデータが現シミュレーション時刻に更新されていない場合は初期値に対して演算を施して予め定められたデータを更新する
項目8に記載の処理装置。
[項目10]
各々が空間を複数の次元方向のそれぞれにおいて分割した分割空間を担当し、空間内に配置された複数の粒子の間に働く力を計算する複数の処理ノードと、
複数の処理ノードを相互接続するネットワークと
を備え、
複数の処理ノードのそれぞれは、空間内に設けた格子点のうち担当する分割空間に含まれる格子点にアサインされた複数の粒子の電荷から、担当する分割空間内に含まれる格子点の電荷を補間演算により算出する長距離ユニットと、
格子点の電荷から格子点の電位を畳み込み演算により算出するコンボリューションユニットを有し、
複数の処理ノードのコンボリューションユニットは、相互に通信して、各格子点の電荷に応じた値を複数の次元の各次元方向に順に畳み込んでいく
処理システム。
[項目11]
複数の処理ノードのコンボリューションユニットは、複数の次元内における格子点間の距離に応じた係数を算出する関数を、複数の次元のそれぞれに分離したカーネル関数の組み合わせによって近似することにより、複数の次元における畳み込み演算を各次元方向の畳み込みに分離する項目10に記載の処理システム。
[項目12]
複数の処理ノードのそれぞれのコンボリューションユニットは、
担当する格子点に割り当てられた値を、複数の次元のうち第1次元方向における予め定められた範囲の格子点を担当する他の処理ノードに送信し、
第1次元方向における予め定められた範囲の格子点を担当する他の処理ノードから受信した値に応じた値を担当する格子点に畳み込み、
予め定められた範囲の格子点を担当する他の処理ユニットからの受信回数が、予め定められた数に達したことに応じて第1次元方向における畳み込みの終了を判定する
項目10または11に記載の処理システム。
[項目13]
複数の処理ノードのコンボリューションユニットは、
空間を第1単位で分割した各第1格子点にアサインされた電荷を、各第1格子点から第1範囲内で畳み込むことで、空間を第1単位よりも大きな第2単位で分割した第2格子点の電荷を算出し、
各第2格子点で求めた電位から第1範囲内で畳みこむことで、第1格子点の電位を算出する、
項目10から12のいずれか一項に記載の処理システム。
[項目14]
空間内に配置される複数の粒子のそれぞれについて、他の各粒子から働く力を計算する処理ユニットと、
計算対象の粒子に働く力の計算において、他の粒子のそれぞれを高排除および低排除の少なくとも一方の対象とすべきか否かを指定する複数のマスクパターンを記憶するマスクパターンメモリと、
複数の粒子のそれぞれについて、複数のマスクパターンのうち各粒子に働く力の計算において使用するマスクパターンを識別するマスクパターン識別情報を含む粒子データを記憶する粒子データメモリと
を備える処理装置。
[項目15]
複数のマスクパターンのそれぞれは、計算対象の粒子の粒子番号に対して予め定められた相対粒子番号を有する他の粒子のそれぞれを高排除および低排除の少なくとも一方の対象とすべきか否かを指定する項目14に記載の処理装置。
[項目16]
複数のマスクパターンのそれぞれは、予め定められた長さのマスクビット列と、マスクビット列のうち計算対象の粒子に働く計算における高排除すべき他の粒子の指定および低排除すべき他の粒子の指定に割り当てるビット数を設定するための設定値とを含む項目14または15に記載の処理装置。
[項目17]
マスクパターンでカバーされない粒子番号の離れた2つの粒子群の粒子間で高排除および低排除の少なくとも一方を指定するマスクテーブルを記憶するマスクテーブルメモリを更に備える項目14から16のいずれか一項に記載の処理装置。
[項目18]
マスクテーブルに記憶する高排除および低排除の少なくとも一方を指定する情報が、粒子番号の離れた2つの粒子群のどの粒子同士の組み合わせ方に対応するのかを予め定めた対応関係によって指定可能である項目17に記載の処理装置。
[項目19]
粒子データメモリが、空間内に配置される複数の粒子のそれぞれの粒子データを記憶する段階と、
セル情報メモリが、空間を分割した各セルのセル番号に対応付けて、粒子データメモリにおける、当該セル内の粒子の粒子データを格納するために割り当てられた記憶位置を示すセル情報を記憶する段階と、
処理ユニットが、空間を分割したセルに含まれる粒子の粒子データを、セル番号を指定してアクセスする段階と、
メモリコントローラが、セル番号を指定した粒子データへのアクセスを受けたことに応じて、指定されたセル番号に対応付けられたセル情報を用いて粒子データメモリにおけるアクセス対象の粒子データの記憶位置を特定する段階と
を備える処理方法。
[項目20]
各々が空間を複数の次元方向のそれぞれにおいて分割した分割空間を担当し、空間内に配置された複数の粒子の間に働く力及び電位を計算する複数の処理ノードと、
複数の処理ノードを相互接続するネットワークと
を備える処理システムにおいて、
複数の処理ノードのそれぞれが有するコンボリューションユニットが、空間内に設けた格子点のうち担当する分割空間に含まれる格子点にアサインされた複数の粒子の電荷から、担当する分割空間内に含まれる格子点の電位を畳み込み演算により算出する段階と、 複数の処理ノードのコンボリューションユニットが、相互に通信して、各格子点の電荷に応じた値を複数の次元の各次元方向に順に畳み込んでいく段階と、
を有する処理方法。
[項目21]
処理ユニットが、空間内に配置される複数の粒子のそれぞれについて、他の各粒子から働く力を計算する段階と、
マスクパターンメモリが、計算対象の粒子に働く力の計算において、他の粒子のそれぞれを高排除および低排除の少なくとも一方の対象とすべきか否かを指定する複数のマスクパターンを記憶する段階と、
粒子データメモリが、複数の粒子のそれぞれについて、複数のマスクパターンのうち各粒子に働く力の計算において使用するマスクパターンを識別するマスクパターン識別情報を含む粒子データを記憶する段階と、
を備える処理方法。
[項目22]
各々が空間を複数の次元方向のそれぞれにおいて分割した分割空間を担当し、空間内に配置された複数の粒子の間に働く力を計算する複数の処理ノードと、
複数の処理ノードを相互接続するネットワークと
を備え、
複数の処理ノードのそれぞれは、コンボリューションユニットを有する処理システムにおいて、
実行されると、コンボリューションユニットのそれぞれに、
空間内に設けた格子点のうち担当する分割空間に含まれる格子点にアサインされた複数の粒子の電荷から、担当する分割空間内に含まれる格子点の電位を畳み込み演算により算出させ、
相互に通信して、各格子点の電荷に応じた値を複数の次元の各次元方向に順に畳み込ませる、
プログラム。
[項目23]
処理ユニットと、
計算対象の粒子に働く力の計算において、他の粒子のそれぞれを高排除および低排除の少なくとも一方の対象とすべきか否かを指定する複数のマスクパターンを記憶するマスクパターンメモリと、
複数の粒子のそれぞれについて、複数のマスクパターンのうち各粒子に働く力の計算において使用するマスクパターンを識別するマスクパターン識別情報を含む粒子データを記憶する粒子データメモリと
を備える処理装置において、
実行されると、処理ユニットに、
空間内に配置される複数の粒子のそれぞれについて、他の各粒子から働く力を計算させる、
プログラム。
[項目24]
項目22に記載のプログラムを記録した記録媒体。
[項目25]
項目23に記載のプログラムを記録した記録媒体。
【符号の説明】
【0118】
10 処理装置
62 近接格子点
64 近接格子点
66 近接格子点
100 メモリ
110 粒子データメモリ
120 セル情報メモリ
130 メモリブロック情報メモリ
140 マスクパターンメモリ
150 マスクテーブルメモリ
200 処理ユニット
210 パイプライン
220 コア
230 長距離ユニット
300 メモリコントローラ
400 ネットワークインタフェース
600 コンボリューションユニット