(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025005622
(43)【公開日】2025-01-17
(54)【発明の名称】並列計算分配プログラム、並列計算分配システム、及び並列計算分配方法
(51)【国際特許分類】
G06F 1/035 20060101AFI20250109BHJP
G06F 9/50 20060101ALI20250109BHJP
【FI】
G06F1/035 660
G06F9/50 150D
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023105858
(22)【出願日】2023-06-28
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】グエン アイン ホアン ゴック
(57)【要約】
【課題】複数の計算部により行われる並列計算において、メモリベースコンピューティングのために各計算部が記憶する参照情報の情報量を削減する。
【解決手段】複数の計算部は、入力データに対応付けられた出力データを含む参照情報を用いて、入力データから出力データを求める並列計算を行う。並列計算分配プログラムは、複数の計算部それぞれに対して、入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる処理を、コンピュータに実行させる。複数の計算部各々は、参照情報のうち、一部の範囲に属する入力データに対応付けられた出力データを含む一部の参照情報を記憶し、一部の参照情報を用いて、一部の範囲に属する入力データから一部の範囲に属する入力データに対応付けられた出力データを求める。
【選択図】
図9
【特許請求の範囲】
【請求項1】
入力データに対応付けられた出力データを含む参照情報を用いて、前記入力データから前記出力データを求める並列計算を行う複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる、
処理をコンピュータに実行させ、
前記複数の計算部各々は、前記参照情報のうち、前記一部の範囲に属する入力データに対応付けられた出力データを含む一部の参照情報を記憶し、前記一部の参照情報を用いて、前記一部の範囲に属する入力データから前記一部の範囲に属する入力データに対応付けられた出力データを求めることを特徴とする並列計算分配プログラム。
【請求項2】
前記入力データの範囲は、複数の範囲に分割されており、
前記一部の範囲は、前記複数の範囲各々に対応し、
前記入力データに対応付けられた出力データを含む参照情報は、複数の部分に分割されており、
前記一部の参照情報は、前記複数の部分各々に対応し、
前記複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる処理は、
前記複数の計算部各々を、前記入力データに対応する基準データの複数の範囲それぞれに対応するグループのうち、何れかのグループに分類する処理と、
前記並列計算における複数の入力データのうち特定の入力データに対応する特定の基準データに基づいて、前記特定の基準データが属する特定の範囲に対応する特定のグループを求める処理と、
前記複数の計算部のうち前記特定のグループに属する計算部に対して、前記特定の入力データから出力データを求める計算を割り当てる処理と、
を含むことを特徴とする請求項1記載の並列計算分配プログラム。
【請求項3】
前記複数の入力データそれぞれに対応する基準データのうち、前記特定の範囲に属する基準データの個数に基づいて、前記特定のグループに属する計算部の個数を決定する処理を、前記コンピュータにさらに実行させることを特徴とする請求項2記載の並列計算分配プログラム。
【請求項4】
前記入力データの範囲は、複数の範囲を含み、
前記複数の範囲のうち2つの範囲は、互いに重複する範囲を含み、
前記一部の範囲は、前記複数の範囲各々に対応し、
前記入力データに対応付けられた出力データを含む参照情報は、複数の部分を含み、
前記一部の参照情報は、前記複数の部分各々に対応し、
前記複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる処理は、
前記複数の計算部各々を、前記入力データに対応する基準データの複数の範囲それぞれに対応するグループのうち、何れかのグループに分類する処理と、
前記複数の入力データのうち前記重複する範囲に属する特定の入力データに対応する特定の基準データに基づいて、前記2つの範囲に対応する2つのグループを求める処理と、
前記複数の計算部のうち前記2つのグループに属する何れかの計算部に対して、前記特定の入力データから出力データを求める計算を割り当てる処理と、
を含むことを特徴とする請求項1記載の並列計算分配プログラム。
【請求項5】
前記2つのグループのうち一方のグループに属する1つ又は複数の計算部の負荷と、前記2つのグループのうち他方のグループに属する1つ又は複数の計算部の負荷とに基づいて、前記何れかの計算部が選択されることを特徴とする請求項4記載の並列計算分配プログラム。
【請求項6】
入力データに対応付けられた出力データを含む参照情報を用いて、前記入力データから前記出力データを求める並列計算を行う複数の計算部と、
前記複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる割当部と、
を備え、
前記複数の計算部各々は、前記参照情報のうち、前記一部の範囲に属する入力データに対応付けられた出力データを含む一部の参照情報を記憶し、前記一部の参照情報を用いて、前記一部の範囲に属する入力データから前記一部の範囲に属する入力データに対応付けられた出力データを求めることを特徴とする並列計算分配システム。
【請求項7】
入力データに対応付けられた出力データを含む参照情報を用いて、前記入力データから前記出力データを求める並列計算を行う複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる、
処理をコンピュータが実行し、
前記複数の計算部各々は、前記参照情報のうち、前記一部の範囲に属する入力データに対応付けられた出力データを含む一部の参照情報を記憶し、前記一部の参照情報を用いて、前記一部の範囲に属する入力データから前記一部の範囲に属する入力データに対応付けられた出力データを求めることを特徴とする並列計算分配方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、並列計算分配技術に関する。
【背景技術】
【0002】
複数のプロセッシングエレメント(Processing Element,PE)を含む並列計算システムにおいて、すべてのPEに対して均等に計算タスクを分配するために、負荷分散(Load Balancing,LB)が行われることがある。
【0003】
並列計算システムに関して、PIM(Processor-In-Memory)クラスタを含むPEが知られている(例えば、特許文献1を参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2022/0326958号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
メモリベースコンピューティングは、科学技術計算等における複雑な計算の全体をメモリ内で実行する技術である。メモリベースコンピューティングによれば、CPU(Central Processing Unit)による複雑な関数処理が削減され、低速なデータアクセスがなくなるため、処理性能が向上する。
【0006】
メモリベースコンピューティングの一例として、ルックアップテーブル(Look-Up Table,LUT)を用いた計算が挙げられる。LUTは、メモリ内に設けられ、入力データをアドレスとして用いて、各入力データに対して事前に計算された出力データを格納する。
【0007】
並列計算システムにおいて、インメモリ計算部としてLUTを各PEに搭載することで、処理性能が向上する。メモリベースコンピューティングに用いられるLUTは、FPGA(Field Programmable Gate Array)、CGRA(Coarse Grained Reconfigurable Array)、シストリックアレイ等のハードウェアアクセラレータにも適している。
【0008】
しかしながら、並列計算システムにおいて関数処理を効率的に実行するために、各PEに大規模なLUTを搭載すると、ハードウェアコストが増大する。
【0009】
なお、かかる問題は、LUTを用いた並列計算に限らず、メモリベースコンピューティングに用いられる様々な参照情報を用いた並列計算において生ずるものである。
【0010】
1つの側面において、本発明は、複数の計算部により行われる並列計算において、メモリベースコンピューティングのために各計算部が記憶する参照情報の情報量を削減することを目的とする。
【課題を解決するための手段】
【0011】
1つの案では、複数の計算部は、入力データに対応付けられた出力データを含む参照情報を用いて、入力データから出力データを求める並列計算を行う。
【0012】
並列計算分配プログラムは、複数の計算部それぞれに対して、入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる処理を、コンピュータに実行させる。
【0013】
複数の計算部各々は、参照情報のうち、一部の範囲に属する入力データに対応付けられた出力データを含む一部の参照情報を記憶する。そして、複数の計算部各々は、一部の参照情報を用いて、一部の範囲に属する入力データから、一部の範囲に属する入力データに対応付けられた出力データを求める。
【発明の効果】
【0014】
1つの側面によれば、複数の計算部により行われる並列計算において、メモリベースコンピューティングのために各計算部が記憶する参照情報の情報量を削減することができる。
【図面の簡単な説明】
【0015】
【
図1】実施形態の並列計算分配システムの機能的構成図である。
【
図2】並列計算システムの第1のハードウェア構成図である。
【
図8】グループG1~グループG4に対するLUTを示す図である。
【
図10】並列計算システムの第2のハードウェア構成図である。
【
図11】重複する区間を含むLUTを有する計算回路の構成図である。
【
図14】重複する区間を含むLUTを示す図である。
【
図16】第1の情報処理装置のハードウェア構成図である。
【
図17】第2の情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【0016】
以下、図面を参照しながら、実施形態を詳細に説明する。
【0017】
並列計算システムでは、負荷推定及び負荷分散を含むLB処理をホスト計算機が行う。LB処理のアルゴリズムは、静的LBと動的LBに大別される。静的LBでは、各PEに対する負荷が事前に決定され、計算処理全体にわたって変更されない。
【0018】
一方、動的LBでは、各PEに対する負荷が計算処理の期間毎に推定され、計算処理の途中で負荷が再分配される。動的LBは、分子動力学シミュレーション、適応有限要素法シミュレーション、気象シミュレーションのような、反復計算を用いる科学技術計算に適した柔軟なアルゴリズムである。
【0019】
反復計算を用いる科学技術計算では、平方根、指数関数等の複雑な関数処理が頻繁に発生する。CGRA、シストリックアレイ等の再構成可能アーキテクチャでは、これらの関数処理を効率的に実行するために、各PEにLUTが搭載されることがある。
【0020】
しかしながら、PEのローカルメモリの記憶容量には限界があるため、各PEが記憶できるLUTのデータ量も限られてくる。また、PE間で負荷を分散させる場合、負荷を動的に変化させるとともに、発生する入力データの範囲を考慮することが重要である。全範囲の入力データに対するLUTをすべてのPEに搭載すると、ハードウェアコストが増大する。
【0021】
図1は、実施形態の並列計算分配システムの機能的構成例を示している。
図1の並列計算分配システム101は、割当部111及び計算部112-1~計算部112-N(Nは2以上の整数)を含む。
【0022】
計算部112-1~計算部112-Nは、入力データに対応付けられた出力データを含む参照情報を用いて、入力データから出力データを求める並列計算を行う。
【0023】
割当部111は、各計算部112-i(i=1~N)に対して、入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる。
【0024】
各計算部112-iは、参照情報のうち、一部の範囲に属する入力データに対応付けられた出力データを含む一部の参照情報を記憶する。そして、各計算部112-iは、一部の参照情報を用いて、一部の範囲に属する入力データから、一部の範囲に属する入力データに対応付けられた出力データを求める。
【0025】
図1の並列計算分配システム101によれば、計算部112-1~計算部112-Nにより行われる並列計算において、メモリベースコンピューティングのために各計算部112-iが記憶する参照情報の情報量を削減することができる。
【0026】
図2は、並列計算システムの第1のハードウェア構成例を示している。
図2の並列計算システム201は、
図1の並列計算分配システム101に対応し、ホスト計算機211及びPE212-1~PE212-Nを含む。ホスト計算機211及びPE212-i(i=1~N)は、ハードウェアである。各PE212-iは、
図1の計算部112-iに対応する。
【0027】
並列計算システム201は、反復計算を用いる科学技術計算等の並列計算を行う。科学技術計算は、例えば、分子動力学シミュレーション、適応有限要素法シミュレーション、又は気象シミュレーションである。
【0028】
ホスト計算機211は、情報処理装置(コンピュータ)であり、並列計算におけるLB処理を行う。LB処理は、並列計算におけるPE212-1~PE212-Nそれぞれの計算負荷を推定し、計算負荷が均等になるように、PE212-1~PE212-Nに対して計算タスクを分配する処理である。
【0029】
PE212-1~PE212-Nは、LUTを用いて並列計算を行う。LUTは、入力データに対応付けられた出力データを含む参照情報に対応する。各PE212-iは、LUTの一部に対応する部分的なLUTを記憶する。部分的なLUTは、入力データの範囲のうち一部の範囲に属する入力データをアドレスとして用いて、各入力データに対して事前に計算された出力データを格納する。
【0030】
図3は、
図2のホスト計算機211の機能的構成例を示している。
図3のホスト計算機211は、制御部311、通信部312、及び記憶部313を含む。制御部311は、
図1の割当部111に対応する。
【0031】
通信部312は、各PE212-iと通信する。制御部311は、LB処理を行う。LB処理において、制御部311は、各PE212-iが記憶するLUTの範囲に属する入力データから出力データを求める計算を、そのPE212-iに対して割り当てる。
【0032】
分子動力学シミュレーションは、創薬、材料探索等の研究開発において用いられ、原子及び分子の動き又は相互作用をシミュレートする。分子動力学シミュレーションの並列計算では、例えば、2点間の物理量が時間ステップ毎に計算される。2点間の物理量は、例えば、2つの原子の間に働く力である。特に、クーロン力、ファンデルワールス力等の非結合力の計算は、分子動力学シミュレーションにおける計算の大部分を占める。
【0033】
このような分子動力学シミュレーションでは、FPGA、ASIC(Application Specific Integrated Circuit)等のハードウェア回路をPE212-iとして用いることで、非結合力の計算を高速化することができる。
【0034】
また、PE212-1~PE212-Nの構成として、CGRA、シストリックアレイ等の再構成可能アーキテクチャを採用することで、分子動力学シミュレーションをさらに高速化することができる。再構成可能アーキテクチャでは、ワード幅のデータパスによりPE212-iを相互に接続することで、再構成可能マトリクスが形成される。
【0035】
図4は、分子動力学シミュレーションにおける非結合力計算のパイプラインを含むFPGAの構成例を示している。
図4のFPGA401は、
図2のPE212-iとして用いられ、原子対に含まれる原子A1及び原子A2の間に働く非結合力fを計算する。
【0036】
FPGA401は、2乗回路(Sqr)411-1~2乗回路411-3、加算回路412、加算回路413、乗算回路414~乗算回路419、乗算回路420-1~乗算回路420-3、及び計算回路421~計算回路428を含む。これらの構成要素は、ハードウェアである。
【0037】
x、y、及びzは、原子A1の位置を始点とし、かつ、原子A2の位置を終点とするベクトルuのx成分、y成分、及びz成分をそれぞれ表す。q(1)は、原子A1の電荷を表し、q(2)は、原子A2の粒子種を表す。t(1)は、原子A1の種類を表し、t(2)は、原子A2の種類を表す。fx、fy、及びfzは、非結合力fのx成分、y成分、及びz成分をそれぞれ表す。非結合力fは、次式により表される。
【0038】
f=u(φc+φv)=uφc+uφv (1)
φc=((q(1)q(2))/r3)gc(r) (2)
r=(x2+y2+z2)1/2 (3)
gc(r)=erfc(αr)
+(2αr/(π)1/2)exp(-α2r2) (4)
φv=(ε(1,2)/r2)×
(12(σ(1,2)/r)12-6(σ(1,2)/r)6) (5)
ε(1,2)=(ε(1,1)ε(2,2))1/2 (6)
σ(1,2)=(1/2)(σ(1,1)+σ(2,2)) (7)
【0039】
uφcは、原子A1及び原子A2の間に働くクーロン力を表し、uφvは、原子A1及び原子A2の間に働くファンデルワールス力を表す。rは、原子A1と原子A2の間の距離を表す。αは、エバルト法のパラメータである。erfc()は、相補誤差関数を表し、exp()は、自然指数関数を表す。
【0040】
ε(1,2)は、レナード-ジョーンズポテンシャルの粒子間ポテンシャルエネルギーの深さを表す異種粒子間パラメータである。ε(1,1)は、種類t(1)の同種粒子間ポテンシャルエネルギーの深さを表し、ε(2,2)は、種類t(2)の同種粒子間ポテンシャルエネルギーの深さを表す。
【0041】
σ(1,2)は、粒子間ポテンシャルエネルギーが0になる距離を表す異種粒子間パラメータである。σ(1,1)は、種類t(1)の同種粒子間ポテンシャルエネルギーが0になる距離を表し、σ(2,2)は、種類t(2)の同種粒子間ポテンシャルエネルギーが0になる距離を表す。
【0042】
FPGA401は、各原子対のx、y、z、q(1)、q(2)、t(1)、及びt(2)を含む原子対データをホスト計算機211から受信し、fx、fy、及びfzを計算して、ホスト計算機211へ送信する。
【0043】
2乗回路411-1は、xを2乗することでx2を求めて、加算回路412へ出力する。2乗回路411-2は、yを2乗することでy2を求めて、加算回路412へ出力する。2乗回路411-3は、zを2乗することでz2を求めて、加算回路412へ出力する。
【0044】
加算回路412は、x2、y2、及びz2を加算することでr2を求めて、計算回路424及び計算回路427へ出力する。
【0045】
計算回路424は、r2から1/r2を計算して、計算回路425及び乗算回路418へ出力する。計算回路425は、1/r2から1/rを計算して、計算回路426及び乗算回路417へ出力する。計算回路426は、1/rから1/r3を計算して、乗算回路415へ出力する。
【0046】
乗算回路414は、q(1)とq(2)を乗算することでq(1)q(2)を求めて、乗算回路415へ出力する。乗算回路415は、q(1)q(2)と1/r3を乗算することで(q(1)q(2))/r3を求めて、乗算回路416へ出力する。
【0047】
計算回路427は、r2からgc(r)を計算して、乗算回路416へ出力する。乗算回路416は、(q(1)q(2))/r3とgc(r)を乗算することでφcを求めて、加算回路413へ出力する。
【0048】
計算回路421は、t(1)からε(1,1)及びσ(1,1)を計算して、計算回路423へ出力する。計算回路422は、t(2)からε(2,2)及びσ(2,2)を計算して、計算回路423へ出力する。
【0049】
計算回路423は、σ(1,1)及びσ(2,2)からσ(1,2)を計算して、乗算回路417へ出力する。さらに、計算回路423は、ε(1,1)及びε(2,2)からε(1,2)を計算して、乗算回路418へ出力する。
【0050】
乗算回路417は、1/rとσ(1,2)を乗算することでσ(1,2)/rを求めて、計算回路428へ出力する。乗算回路418は、1/r2とε(1,2)を乗算することでε(1,2)/r2を求めて、乗算回路419へ出力する。
【0051】
計算回路428は、σ(1,2)/rから12(σ(1,2)/r)12-6(σ(1,2)/r)6を計算して、乗算回路419へ出力する。乗算回路419は、ε(1,2)/r2と12(σ(1,2)/r)12-6(σ(1,2)/r)6を乗算することでφvを求めて、加算回路413へ出力する。加算回路413は、φcとφvを加算することでφc+φvを求めて、乗算回路420-1~乗算回路420-3へ出力する。
【0052】
乗算回路420-1は、xとφc+φvを乗算することでx(φc+φv)を求め、x(φc+φv)をfxとしてホスト計算機211へ出力する。乗算回路420-2は、yとφc+φvを乗算することでy(φc+φv)を求め、y(φc+φv)をfyとしてホスト計算機211へ出力する。乗算回路420-3は、zとφc+φvを乗算することでz(φc+φv)を求め、z(φc+φv)をfzとしてホスト計算機211へ出力する。
【0053】
計算回路424~計算回路428は、例えば、近似関数F(p)を用いて補間を行うことで、入力pから出力F(p)を計算する。一例としてニュートン補間を用いた場合、F(p)は、次式により表される。
【0054】
F(p)=Σa(i,k)F(k,p) (8)
F(k,p)=Π(p-p(h)) (9)
【0055】
F(p)は、pの多項式である。総和記号Σは、k=0~m(mは1以上の整数)に関する総和を表す。総積記号Πは、h=0~k-1に関する総積を表す。ただし、F(0,p)=1である。
【0056】
計算回路424の場合、p=r2であり、F(p)は、1/r2=1/pを表す。計算回路425の場合、p=1/r2であり、F(p)は、1/r=p1/2を表す。計算回路426の場合、p=1/rであり、F(p)は、1/r3=p3を表す。
【0057】
計算回路427の場合、p=r2であり、F(p)は、gc(r)=erfc(α(p)1/2)+(2α(p)1/2/(π)1/2)exp(-α2p)を表す。計算回路428の場合、p=σ(1,2)/rであり、F(p)は、12(σ(1,2)/r)12-6(σ(1,2)/r)6=12p12-6p6を表す。
【0058】
p(h)は、変数pの離散値を昇順に並べた場合のh番目(hは0以上の整数)の離散値を表す。a(i,k)は、p(i)≦p<p(i+1)の区間に属するpに対する、F(k,p)の係数を表す。a(i,k)は、LUTを用いて計算される。
【0059】
図5は、式(8)の係数a(i,k)を格納するLUTの例を示している。この例では、m=3である。
図5のLUTは、p(i)を入力データとして用いて、各p(i)に対して事前に計算されたa(i,0)~a(i,3)を、出力データとして格納する。
【0060】
計算回路424及び計算回路427の場合、p(i)として(r(i))2が用いられる。r(i)は、距離rのi番目の離散値である。計算回路425の場合、p(i)として1/(r(i))2が用いられる。計算回路426の場合、p(i)として1/r(i)が用いられる。計算回路428の場合、p(i)としてσ(1,2)/r(i)が用いられる。
【0061】
ホスト計算機211の制御部311は、シミュレーション対象の空間を複数の単位空間に分割し、各単位空間内の各原子対を対象として、次式によりr2を計算する。
【0062】
r2=x2+y2+z2 (10)
【0063】
次に、制御部311は、カットオフ距離Rを用いて、0<r2<R2の区間に属するr2を有する原子対を抽出する。次に、制御部311は、抽出された各原子対を、異なる範囲の距離rに対応する複数のグループのうち、その原子対の距離rに対応するグループに分類する。そして、制御部311は、複数のグループそれぞれに属する原子対を示す原子対リストを生成して、記憶部313に格納する。距離rは、入力データに対応する基準データの一例である。
【0064】
図6は、原子対リストの例を示している。
図6の原子対リストは、グループG1~グループG4それぞれに分類された原子対を示す識別情報を含む。
【0065】
グループG1に含まれる原子対の距離rは、0<r≦R/4の区間に属し、グループG2に含まれる原子対の距離rは、R/4<r≦R/2の区間に属する。グループG3に含まれる原子対の距離rは、R/2<r≦3R/4の区間に属し、グループG4に含まれる原子対の距離rは、3R/4<r≦Rの区間に属する。各グループのrの区間は、基準データが属する範囲の一例である。
【0066】
グループG1にはn1個の原子対が含まれ、グループG2にはn2個の原子対が含まれる。グループG3にはn3個の原子対が含まれ、グループG4にはn4個の原子対が含まれる。
【0067】
各原子対の距離rは、特定の入力データに対応する特定の基準データの一例である。各原子対を複数のグループの何れかに分類する処理は、特定の基準データが属する特定の範囲に対応する特定のグループを求める処理の一例である。
【0068】
図7は、
図4の計算回路424~計算回路428として用いられる計算回路の構成例を示している。
図7の計算回路701は、記憶部711及び補間部712を含む。記憶部711及び補間部712は、ハードウェアである。
【0069】
記憶部711は、例えば、RAM(Random Access Memory)であり、原子対リストに含まれる何れかのグループに対するLUT721を記憶する。LUT721は、所定区間に属するp(i)を入力データとして用いて、各p(i)に対して事前に計算されたa(i,0)~a(i,m)を、出力データとして格納する。
【0070】
p(i)としては、何れかのグループの区間に属するr(i)から計算された離散値が用いられる。したがって、p(i)が属する所定区間は、そのグループの区間に属するr(i)の最小値及び最大値により決定される。
【0071】
LUT721は、部分的なLUTに対応し、p(i)が属する所定区間は、入力データの範囲のうち一部の範囲に対応する。複数のグループそれぞれに対する所定区間は、入力データの範囲を分割した複数の範囲の一例であり、各所定区間は、複数の範囲各々に対応する。複数のグループそれぞれに対するLUT721は、参照情報を分割した複数の部分の一例であり、各LUT721は、参照情報の各部分に対応する。
【0072】
図8は、
図6のグループG1~グループG4それぞれに対するLUT721の例を示している。グループG1に対するLUT801-1は、0<r≦R/4の区間に属するr(i)から求められるp(i)に対するa(i,0)~a(i,3)を含む。グループG2に対するLUT801-2は、R/4<r≦R/2の区間に属するr(i)から求められるp(i)に対するa(i,0)~a(i,3)を含む。
【0073】
グループG3に対するLUT801-3は、R/2<r≦3R/4の区間に属するr(i)から求められるp(i)に対するa(i,0)~a(i,3)を含む。グループG4に対するLUT801-4は、3R/4<r≦Rの区間に属するr(i)から求められるp(i)に対するa(i,0)~a(i,3)を含む。
【0074】
記憶部711は、入力データとして入力されるpの値がp(i)≦p<p(i+1)の区間に属する場合、LUT721内でp(i)に対応付けられたa(i,0)~a(i,m)を、出力データとして出力する。
【0075】
補間部712は、入力されるpの値と、記憶部711から出力されるa(i,0)~a(i,m)とを用いて、式(8)により補間を行うことで、F(p)の値を計算する。そして、補間部712は、計算されたF(p)の値を、後続する回路へ出力する。
【0076】
ホスト計算機211の制御部311は、各PE212-iを、複数のグループのうち何れかのグループに分類する。制御部311は、例えば、各グループに属する原子対の個数に基づいて、そのグループに属するPE212-iの個数を決定し、決定された個数のPE212-iを、そのグループに分類する。各グループに属する原子対の個数は、そのグループの区間に属するrの個数と一致する。
【0077】
各グループに属する原子対の個数に基づいて、そのグループに属するPE212-iの個数を決定することで、PE212-1~PE212-Nそれぞれの計算負荷が均等化される。
【0078】
各グループに属する原子対の個数は、特定の範囲に属する基準データの個数の一例であり、各グループに属するPE212-iの個数は、特定のグループに属する計算部の個数の一例である。
【0079】
例えば、
図6の原子対リストが生成された場合、制御部311は、n1~n4を用いて、次式により、各グループに属するPE212-iの個数を計算する。
【0080】
N1=N×(n1/(n1+n2+n3+n4)) (11)
N2=N×(n2/(n1+n2+n3+n4)) (12)
N3=N×(n3/(n1+n2+n3+n4)) (13)
N4=N×(n4/(n1+n2+n3+n4)) (14)
【0081】
N1は、グループG1に属するPE212-iの個数を表す。N2は、グループG2に属するPE212-iの個数を表す。N3は、グループG3に属するPE212-iの個数を表す。N4は、グループG4に属するPE212-iの個数を表す。
【0082】
制御部311は、各PE212-iの計算回路424~計算回路428それぞれのLUT721に、そのPE212-iが属するグループのp(i)に対するa(i,0)~a(i,m)を書き込む。
【0083】
例えば、
図8の各LUT801-j(j=1~4)は、0<r≦Rの区間の1/4の区間に属するr(i)から求められるp(i)に対するa(i,0)~a(i,3)のみを含んでいる。したがって、各LUT801-jの情報量は、
図5のLUTの情報量の約1/4である。
【0084】
このように、
図2の並列計算システム201によれば、メモリベースコンピューティングのために各PE212-iが記憶するLUTの情報量を削減することができる。
【0085】
制御部311は、各グループに属する原子対に対する計算を、同じグループに属するPE212-iに対して割り当てる。そして、制御部311は、その原子対のx、y、z、q(1)、q(2)、t(1)、及びt(2)を含む原子対データを、割り当てられたPE212-iへ出力する。
【0086】
各原子対を、その原子対の距離rが属する区間に対応するグループに分類しておくことで、rが属する区間に対応するLUT721を含むPE212-iを容易に特定することができる。
【0087】
分子動力学シミュレーションの場合、1回のイタレーションで各原子の位置が更新されるため、後続するイタレーションにおいて、各原子対の距離rが変化し、元のグループのrの区間に入らなくなることがある。この場合、各グループに属する原子対の個数が変化する。
【0088】
しかし、各グループに属するPE212-iの個数は変化しないため、複数回のイタレーションが行われる間に、特定のグループのPE212-iに割り当てられる計算が増加して、PE212-1~PE212-Nの計算負荷に不均衡が生じることがある。そこで、制御部311は、一定期間毎にPE212-1~PE212-Nの計算負荷を推定し、推定結果に基づいて、各グループに属するPE212-iの個数を変更する。
【0089】
図9は、
図3のホスト計算機211が行う第1のLB処理の例を示すフローチャートである。
【0090】
まず、制御部311は、分子動力学シミュレーションの時間ステップを示す制御変数Cに0を設定する(ステップ901)。そして、制御部311は、複数の単位空間のうち1つの単位空間を選択し、選択された単位空間内の1つの原子対を選択して、選択された原子対のr2を、式(10)により計算する(ステップ902)。
【0091】
次に、制御部311は、r2をR2と比較する(ステップ903)。r2<R2である場合(ステップ903,YES)、制御部311は、その原子対を、rが属する区間に対応するグループに分類し、その原子対の識別情報を、原子対リストの対応するグループに登録する(ステップ904)。
【0092】
次に、制御部311は、単位空間内のすべての原子対が選択されたか否かをチェックする(ステップ905)。r2≧R2である場合(ステップ903,NO)、又は未選択の原子対が残っている場合(ステップ905,NO)、制御部311は、次の原子対を選択して、ステップ902以降の処理を繰り返す。
【0093】
すべての原子対が選択された場合(ステップ905,YES)、制御部311は、すべての単位空間が選択されたか否かをチェックする(ステップ906)。未選択の単位空間が残っている場合(ステップ906,NO)、制御部311は、次の単位空間を選択して、ステップ902以降の処理を繰り返す。
【0094】
すべての単位空間が選択された場合(ステップ906,YES)、制御部311は、Cの値をチェックする(ステップ907)。C=0である場合(ステップ907,YES)、制御部311は、原子対リスト内の各グループに属する原子対の個数を求める(ステップ908)。これにより、各グループに対する計算負荷が推定される。そして、制御部311は、各グループに属する原子対の個数に基づいて、そのグループに属するPE212-iの個数を決定する(ステップ909)。
【0095】
次に、制御部311は、各グループについて決定された個数のPE212-iを、そのグループに分類する(ステップ910)。そして、制御部311は、通信部312を介して、各PE212-iの計算回路424~計算回路428それぞれのLUT721に、そのPE212-iが属するグループのp(i)に対するa(i,0)~a(i,m)を書き込む。
【0096】
次に、制御部311は、原子対リスト内の各原子対に対する計算を、原子対と同じグループに属する何れかのPE212-iに対して割り当てる(ステップ911)。そして、制御部311は、通信部312を介して、各原子対の原子対データを、割り当てられたPE212-iへ送信し、そのPE212-iからfx、fy、及びfzを受信する。
【0097】
次に、制御部311は、Cを1だけインクリメントして(ステップ912)、Cを所定値Tと比較する(ステップ913)。C<Tである場合(ステップ913,NO)、制御部311は、ステップ902以降の処理を繰り返す。C>0である場合(ステップ907,NO)、制御部311は、ステップ911以降の処理を行う。
【0098】
C=Tである場合(ステップ913,YES)、制御部311は、ステップ901以降の処理を繰り返す。したがって、T回の時間ステップ毎に、ステップ908~ステップ910の処理が行われて、各グループに属するPE212-iの個数が変更される。これにより、PE212-1~PE212-Nの計算負荷の不均衡を修正することができる。
【0099】
計算負荷の不均衡を修正するために、複数のグループそれぞれのrの区間のうち、隣接する2つの区間が互いに重複するように、各グループのrの区間を設定することも有効である。この場合、隣接する2つの区間それぞれに対応する2つのグループのLUTも、互いに重複する区間を含む。
【0100】
図10は、重複する区間を含むLUTを用いた並列計算システムの第2のハードウェア構成例を示している。
図10の並列計算システム1001は、
図1の並列計算分配システム101に対応し、ホスト計算機1011、選択装置1012、及びPE1013-1~PE1013-Nを含む。ホスト計算機1011、選択装置1012、及びPE1013-i(i=1~N)は、ハードウェアである。各PE1013-iは、
図1の計算部112-iに対応する。
【0101】
ホスト計算機1011は、
図3のホスト計算機211と同様の構成を有し、PE1013-iは、例えば、
図4のFPGA401と同様の構成を有する。
【0102】
ホスト計算機1011の制御部311は、シミュレーション対象の空間を複数の単位空間に分割し、各単位空間内の原子を対象として、式(10)によりr2を計算する。次に、制御部311は、カットオフ距離Rを用いて、0<r2<R2の区間に属するr2を有する原子対を抽出し、抽出された原子対を、異なる範囲の距離rに対応する複数のグループに分類する。複数のグループそれぞれのrの区間のうち、隣接する2つの区間は、互いに重複している。
【0103】
図11は、重複する区間を含むLUTを有する計算回路の構成例を示している。
図11の計算回路1101は、各PE1013-iの計算回路424~計算回路428として用いられ、受付部1111、記憶部1112、及び補間部1113を含む。受付部1111、記憶部1112、及び補間部1113は、ハードウェアである。
【0104】
記憶部1112は、例えば、RAMであり、何れかのグループに対するLUT1121を記憶する。LUT1121は、所定区間に属するp(i)を入力データとして用いて、各p(i)に対して事前に計算されたa(i,0)~a(i,m)を、出力データとして格納する。
【0105】
記憶部1112は、受付部1111から入力されるpの値がp(i)≦p<p(i+1)の区間に属する場合、LUT1121内でp(i)に対応付けられたa(i,0)~a(i,m)を、出力データとして出力する。
【0106】
補間部1113は、入力されるpの値と、記憶部1112から出力されるa(i,0)~a(i,m)とを用いて、式(8)により補間を行うことで、F(p)の値を計算する。そして、補間部1113は、計算されたF(p)の値を、後続する回路へ出力する。
【0107】
補間部1113は、“1”又は“0”の何れかの論理値を有するビジー信号を、受付部1111及び選択装置1012へ出力する。“1”は、使用中を示し、“0”は、空いている状態を示す。補間部1113は、F(p)の計算を行っている間、“1”を示すビジー信号を出力する。
【0108】
ビジー信号が“0”を示しているとき、受付部1111は、入力データとして入力されるpの値を受け付けて、記憶部1112へ出力する。ビジー信号が“1”を示しているとき、受付部1111は、入力されるpの値を受け付けない。
【0109】
ホスト計算機1011の制御部311は、各原子対に対する計算を、その原子対の距離rが属する区間に対応するグループのPE1013-iに対して割り当てる。距離rが1つのグループの区間のみに属する場合、制御部311は、そのグループのPE1013-iに対して、その原子対に対する計算を割り当てる。距離rが2つのグループの重複区間に属する場合、制御部311は、それらの2つのグループのPE1013-iに対して、その原子対に対する計算を割り当てる。
【0110】
2つのグループのPE1013-iに対して計算を割り当てる処理は、重複する範囲に属する特定の入力データに対応する特定の基準データに基づいて、2つの範囲に対応する2つのグループを求める処理の一例である。
【0111】
そして、制御部311は、その原子対のグループ情報及び原子対データを選択装置1012へ出力する。原子対のグループ情報は、その原子対に対する計算が割り当てられたグループの識別情報を含み、原子対データは、x、y、z、q(1)、q(2)、t(1)、及びt(2)を含む。
【0112】
図12は、
図10の選択装置1012の構成例を示している。
図12の選択装置1012は、制御部1211及び選択部1212-1~選択部1212-(J-1)(Jは2以上の整数)を含む。Jは、グループの個数を表す。制御部1211及び選択部1212-j(j=1~J-1)は、ハードウェアである。
【0113】
グループG1~グループGJのうち、グループGjのrの区間と、グループG(j+1)のrの区間は、互いに重複している。グループGjのPE1013-iが記憶するLUT1121は、rの重複区間に対応するp(i)の重複区間を含む。また、グループG(j+1)のPE1013-iが記憶するLUT1121は、グループGjのLUT1121と同じp(i)の重複区間を含む。
【0114】
選択部1212-jは、グループGj及びグループG(j+1)に対応して設けられている。例えば、選択部1212-1は、グループG1及びグループG2に対応して設けられており、選択部1212-2は、グループG2及びグループG3に対応して設けられている。
【0115】
原子対に対する計算がグループGj(j=1~J-1)のみに割り当てられた場合、制御部1211は、その原子対の原子対データを、グループGjに対応する選択部1212-jへ出力する。そして、選択部1212-jは、グループGjに属する何れかのPE1013-iを選択し、選択されたPE1013-iへ原子対データを出力する。
【0116】
原子対に対する計算がグループGJのみに割り当てられた場合、制御部1211は、その原子対の原子対データを、グループG(J-1)に対応する選択部1212-(J-1)へ出力する。そして、選択部1212-(J-1)は、グループGJに属する何れかのPE1013-iを選択し、選択されたPE1013-iへ原子対データを出力する。
【0117】
原子対に対する計算がグループGj及びグループG(j+1)に割り当てられた場合、制御部1211は、その原子対の原子対データを、グループGj及びグループG(j+1)に対応する選択部1212-jへ出力する。そして、選択部1212-jは、グループGj又はグループG(j+1)に属する何れかのPE1013-iを選択し、選択されたPE1013-iへ原子対データを出力する。グループGj及びグループG(j+1)は、2つの範囲に対応する2つのグループの一例である。
【0118】
選択装置1012は、選択されたPE1013-iからfx、fy、及びfzを受信し、受信したfx、fy、及びfzをホスト計算機1011へ送信する。
【0119】
図13は、
図12の選択部1212-jの構成例を示している。
図13の選択部1212-jは、生成回路1311、選択回路1312、AND回路1313-1、及びAND回路1313-2を含む。選択部1212-jは、OR回路1314-1~OR回路1314-Na(Naは1以上の整数)及びOR回路1315-1~OR回路1315-Nb(Nbは1以上の整数)をさらに含む。これらの構成要素は、ハードウェアである。
【0120】
Naは、グループGjに属するPE1013-iの個数を表し、Nbは、グループG(j+1)に属するPE1013-iの個数を表す。
【0121】
OR回路1314-s(s=1~Na)に入力される信号B(j,s,1)は、グループGjに属するs番目のPE1013-iの計算回路424から出力されるビジー信号を表す。信号B(j,s,2)は、グループGjに属するs番目のPE1013-iの計算回路425から出力されるビジー信号を表す。
【0122】
信号B(j,s,3)は、グループGjに属するs番目のPE1013-iの計算回路426から出力されるビジー信号を表す。信号B(j,s,4)は、グループGjに属するs番目のPE1013-iの計算回路427から出力されるビジー信号を表す。信号B(j,s,5)は、グループGjに属するs番目のPE1013-iの計算回路428から出力されるビジー信号を表す。
【0123】
OR回路1314-sは、信号B(j,s,1)~信号B(j,s,5)の論理和を示す信号を、AND回路1313-1へ出力する。OR回路1314-sの出力信号が“1”を示すとき、グループGjに属するs番目のPE1013-iの計算回路424~計算回路428のうち、1つ以上の計算回路が使用中である。したがって、そのPE1013-iはビジー状態である。
【0124】
AND回路1313-1は、OR回路1314-1~OR回路1314-Naの出力信号の論理積を示す信号を、生成回路1311へ出力する。
【0125】
AND回路1313-1の出力信号が“1”を示すとき、グループGjに属するすべてのPE1013-iがビジー状態である。AND回路1313-1の出力信号が“0”を示すとき、グループGjに属する1つ以上のPE1013-iが空き状態である。したがって、AND回路1313-1の出力信号は、グループGjに属する1つ又は複数のPE1013-iの負荷を表している。
【0126】
OR回路1315-s(s=1~Nb)に入力される信号B(j+1,s,1)は、グループG(j+1)に属するs番目のPE1013-iの計算回路424から出力されるビジー信号を表す。信号B(j+1,s,2)は、グループG(j+1)に属するs番目のPE1013-iの計算回路425から出力されるビジー信号を表す。
【0127】
信号B(j+1,s,3)は、グループG(j+1)に属するs番目のPE1013-iの計算回路426から出力されるビジー信号を表す。信号B(j+1,s,4)は、グループG(j+1)に属するs番目のPE1013-iの計算回路427から出力されるビジー信号を表す。信号B(j+1,s,5)は、グループG(j+1)に属するs番目のPE1013-iの計算回路428から出力されるビジー信号を表す。
【0128】
OR回路1315-sは、信号B(j+1,s,1)~信号B(j+1,s,5)の論理和を示す信号を、AND回路1313-2へ出力する。OR回路1315-sの出力信号が“1”を示すとき、グループG(j+1)に属するs番目のPE1013-iの計算回路424~計算回路428のうち、1つ以上の計算回路が使用中である。したがって、そのPE1013-iはビジー状態である。
【0129】
AND回路1313-2は、OR回路1315-1~OR回路1315-Nbの出力信号の論理積を示す信号を、生成回路1311へ出力する。
【0130】
AND回路1313-2の出力信号が“1”を示すとき、グループG(j+1)に属するすべてのPE1013-iがビジー状態である。AND回路1313-2の出力信号が“0”を示すとき、グループG(j+1)に属する1つ以上のPE1013-iが空き状態である。したがって、AND回路1313-2の出力信号は、グループG(j+1)に属する1つ又は複数のPE1013-iの負荷を表している。
【0131】
生成回路1311は、AND回路1313-1及びAND回路1313-2の出力信号に基づいて選択信号を生成し、選択回路1312へ出力する。選択信号は、“0”、“1”、又は“2”の何れかの値を有する。“0”は、グループGjを示し、“1”は、グループG(j+1)を示す。“2”は、待機を示す。
【0132】
AND回路1313-1の出力信号が“0”を示し、かつ、AND回路1313-2の出力信号が“1”を示すとき、生成回路1311は、“0”を示す選択信号を生成する。
【0133】
AND回路1313-1の出力信号が“1”を示し、かつ、AND回路1313-2の出力信号が“0”を示すとき、生成回路1311は、“1”を示す選択信号を生成する。
【0134】
AND回路1313-1の出力信号が“0”を示し、かつ、AND回路1313-2の出力信号が“0”を示すとき、生成回路1311は、“0”又は“1”のうち所定値を示す選択信号を生成する。所定値は、例えば、“0”であってもよい。
【0135】
AND回路1313-1の出力信号が“1”を示し、かつ、AND回路1313-2の出力信号が“1”を示すとき、生成回路1311は、“2”を示す選択信号を生成する。
【0136】
j=1~J-1であり、かつ、原子対に対する計算がグループGjのみに割り当てられた場合、選択回路1312は、グループGjに属するPE1013-iのうち、ビジー状態ではない何れかのPE1013-iを選択する。そして、選択回路1312は、選択されたPE1013-iへ原子対データを出力する。グループGjに属するすべてのPE1013-iがビジー状態である場合、選択回路1312は、何れかのPE1013-iが空き状態になるまで、原子対データの出力を遅延させる。
【0137】
j=J-1であり、かつ、原子対に対する計算がグループGJのみに割り当てられた場合、選択回路1312は、グループG(j+1)に属するPE1013-iのうち、ビジー状態ではない何れかのPE1013-iを選択する。そして、選択回路1312は、選択されたPE1013-iへ原子対データを出力する。グループG(j+1)に属するすべてのPE1013-iがビジー状態である場合、選択回路1312は、何れかのPE1013-iが空き状態になるまで、原子対データの出力を遅延させる。
【0138】
j=1~J-1であり、かつ、原子対に対する計算がグループGj及びグループG(j+1)に割り当てられた場合、選択回路1312は、選択信号に従ってPE1013-iを選択する。
【0139】
選択信号が“0”を示すとき、選択回路1312は、グループGjに属するPE1013-iのうち、ビジー状態ではない何れかのPE1013-iを選択し、選択されたPE1013-iへ原子対データを出力する。
【0140】
選択信号が“1”を示すとき、選択回路1312は、グループG(j+1)に属するPE1013-iのうち、ビジー状態ではない何れかのPE1013-iを選択し、選択されたPE1013-iへ原子対データを出力する。
【0141】
選択信号が“2”を示すとき、選択回路1312は、グループGj又はグループG(j+1)に属する何れかのPE1013-iが空き状態になるまで、原子対データの出力を遅延させる。
【0142】
このように、AND回路1313-1及びAND回路1313-2の出力信号に基づいて選択信号を生成することで、空き状態のPE1013-iを、計算の割り当て先として自動的に選択することができる。
【0143】
図14は、重複する区間を含むLUT1121の例を示している。グループG1に対するLUT1401-1は、0<r≦0.4Rの区間に属するr(i)から求められるp(i)に対するa(i,0)~a(i,3)を含む。グループG2に対するLUT1401-2は、0.2R<r≦0.6Rの区間に属するr(i)から求められるp(i)に対するa(i,0)~a(i,3)を含む。
【0144】
グループG3に対するLUT1401-3は、0.4R<r≦0.8Rの区間に属するr(i)から求められるp(i)に対するa(i,0)~a(i,3)を含む。グループG4に対するLUT1401-4は、0.6R<r≦Rの区間に属するr(i)から求められるp(i)に対するa(i,0)~a(i,3)を含む。
【0145】
この場合、LUT1401-1とLUT1401-2の間では、0.2R<r≦0.4Rに対応するp(i)の区間が重複している。LUT1401-2とLUT1401-3の間では、0.4R<r≦0.6Rに対応するp(i)の区間が重複している。LUT1401-3とLUT1401-4の間では、0.6R<r≦0.8Rに対応するp(i)の区間が重複している。
【0146】
各LUT1401-j(j=1~4)は、0<r≦Rの区間の2/5の区間に属するr(i)から求められるp(i)に対するa(i,0)~a(i,3)のみを含んでいる。したがって、各LUT1401-jの情報量は、
図5のLUTの情報量の約2/5である。
【0147】
このように、
図10の並列計算システム1001によれば、メモリベースコンピューティングのために各PE1013-iが記憶するLUTの情報量を削減することができる。
【0148】
また、複数のグループそれぞれのrの区間のうち、隣接する2つの区間を重複させることで、重複区間に属するrを有する原子対に対する計算の割り当て先を柔軟に変更することができ、イタレーション毎に計算負荷が再分配される。したがって、PE1013-1~PE1013-Nの計算負荷の不均衡を修正することができる。
【0149】
一例として、グループG1が3個のPE1013-iを含み、グループG2が2個のPE1013-iを含む場合を想定する。複数回のイタレーションの後、0.2R<r≦0.6Rの区間に属するrを有する原子対が増加すると、グループG2の2個のPE1013-iがビジー状態になり、グループG1の何れかのPE1013-iが空き状態になることがある。
【0150】
この場合、0.2R<r≦0.4Rの重複区間に属するrを有する原子対に対する計算が、グループG2ではなく、グループG1の空き状態のPE1013-iに対して割り当てられる。したがって、グループ間における計算負荷の不均衡が修正され、PE1013-iの再利用性が向上する。
【0151】
図15は、
図10のホスト計算機1011が行う第2のLB処理の例を示すフローチャートである。
【0152】
まず、制御部311は、PE1013-1~PE1013-N各々を、複数のグループのうち何れかのグループに分類する(ステップ1501)。そして、制御部311は、通信部312を介して、各PE1013-iの計算回路424~計算回路428それぞれのLUT1121に、そのPE1013-iが属するグループのp(i)に対するa(i,0)~a(i,m)を書き込む。
【0153】
次に、制御部311は、複数の単位空間のうち1つの単位空間を選択し、選択された単位空間内の1つの原子対を選択して、選択された原子対のr2を、式(10)により計算する(ステップ1502)。
【0154】
次に、制御部311は、r2をR2と比較する(ステップ1503)。r2<R2である場合(ステップ1503,YES)、制御部311は、その原子対に対する計算を、rが属する区間に対応するグループに対して割り当てる(ステップ1504)。
【0155】
距離rが1つのグループの区間のみに属する場合、制御部311は、そのグループに対して、原子対に対する計算を割り当てる。距離rが2つのグループの重複区間に属する場合、制御部311は、それらの2つのグループに対して、原子対に対する計算を割り当てる。
【0156】
次に、制御部311は、単位空間内のすべての原子対が選択されたか否かをチェックする(ステップ1505)。r2≧R2である場合(ステップ1503,NO)、又は未選択の原子対が残っている場合(ステップ1505,NO)、制御部311は、次の原子対を選択して、ステップ1502以降の処理を繰り返す。
【0157】
すべての原子対が選択された場合(ステップ1505,YES)、制御部311は、すべての単位空間が選択されたか否かをチェックする(ステップ1506)。未選択の単位空間が残っている場合(ステップ1506,NO)、制御部311は、次の単位空間を選択して、ステップ1502以降の処理を繰り返す。
【0158】
すべての単位空間が選択された場合(ステップ1506,YES)、制御部311は、通信部312を介して、各原子対のグループ情報及び原子対データを選択装置1012へ送信する(ステップ1507)。そして、制御部311は、通信部312を介して、選択装置1012から各原子対のfx、fy、及びfzを受信する。
【0159】
その後、制御部311は、次の時間ステップについて、ステップ1502以降の処理を繰り返す。
【0160】
図2の並列計算システム201のPE212-i及び
図10の並列計算システム1001のPE1013-iとして、
図4のFPGA401の代わりに、情報処理装置を用いることも可能である。
【0161】
図16は、PE212-i及びPE1013-iとして用いられる第1の情報処理装置のハードウェア構成例を示している。
図16の情報処理装置1601は、CPU1611、メモリ1612、及び通信装置1613を含む。これらの構成要素はハードウェアであり、バス1614により互いに接続されている。
【0162】
メモリ1612は、例えば、ROM(Read Only Memory)、RAM、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを記憶する。メモリ1612が記憶しているデータは、
図7のLUT721又は
図11のLUT1121を含む。
【0163】
CPU1611(プロセッサ)は、例えば、メモリ1612を利用してプログラムを実行することにより、
図4のFPGA401と同様の計算を行う。CPU1611は、メモリ1612内のLUT721又はLUT1121を参照しながら、各原子対に対する計算を行う。
【0164】
通信装置1613は、
図2のホスト計算機211又は
図10の選択装置1012と通信する。通信装置1613は、他のPE212-i又は他のPE1013-iと通信することもできる。
【0165】
図1の並列計算分配システム101の構成は一例に過ぎず、並列計算分配システム101の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0166】
図2の並列計算システム201及び
図10の並列計算システム1001の構成は一例に過ぎず、並列計算システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
図3のホスト計算機211の構成は一例に過ぎず、並列計算システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0167】
図4のFPGA401の構成は一例に過ぎず、FPGA401の構成は、並列計算システムの用途に応じて変化する。
【0168】
図7の計算回路701及び
図11の計算回路1101の構成は一例に過ぎず、並列計算システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
図12の選択装置1012及び
図13の選択部1212-jの構成は一例に過ぎず、並列計算システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0169】
図16の情報処理装置1601の構成は一例に過ぎず、並列計算システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0170】
図9及び
図15のフローチャートは一例に過ぎず、LB処理は、並列計算システムの用途に応じて変化する。
【0171】
図5に示したLUTは一例に過ぎず、LUTの入力データ及び出力データは、LUTを用いて行われる計算に応じて変化する。
図6に示した原子対リストは一例に過ぎず、原子対リストは、各原子対の距離rが属する区間に応じて変化する。
図8及び
図14に示したLUTは一例に過ぎず、各グループのLUTとして、距離rの別の区間に対応するLUTを用いてもよい。
【0172】
式(1)~式(14)は一例に過ぎず、並列計算システム201及び並列計算システム1001は、別の計算式を用いて並列計算を行ってもよい。
【0173】
図17は、
図1の割当部111、
図2のホスト計算機211、及び
図10のホスト計算機1011として用いられる第2の情報処理装置のハードウェア構成例を示している。
図17の情報処理装置は、CPU1701、メモリ1702、入力装置1703、出力装置1704、補助記憶装置1705、媒体駆動装置1706、及びネットワーク接続装置1707を含む。これらの構成要素はハードウェアであり、バス1708により互いに接続されている。
【0174】
メモリ1702は、例えば、ROM、RAM、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを記憶する。メモリ1702は、
図3の記憶部313として動作してもよい。
【0175】
CPU1701(プロセッサ)は、例えば、メモリ1702を利用してプログラムを実行することにより、
図1の割当部111及び
図3の制御部311として動作する。
【0176】
入力装置1703は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示又は情報の入力に用いられる。出力装置1704は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザ又はオペレータへの問い合わせ又は処理結果の出力に用いられる。処理結果は、科学技術計算等の計算結果であってもよい。
【0177】
補助記憶装置1705は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置1705は、ハードディスクドライブ又はSSD(Solid State Drive)であってもよい。情報処理装置は、補助記憶装置1705にプログラム及びデータを格納しておき、それらをメモリ1702にロードして使用することができる。補助記憶装置1705は、
図3の記憶部313として動作してもよい。
【0178】
媒体駆動装置1706は、可搬型記録媒体1709を駆動し、その記録内容にアクセスする。可搬型記録媒体1709は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体1709は、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等であってもよい。ユーザ又はオペレータは、可搬型記録媒体1709にプログラム及びデータを格納しておき、それらをメモリ1702にロードして使用することができる。
【0179】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ1702、補助記憶装置1705、又は可搬型記録媒体1709のような、物理的な(非一時的な)記録媒体である。
【0180】
ネットワーク接続装置1707は、通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェース回路である。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置1707を介して受信し、それらをメモリ1702にロードして使用することができる。ネットワーク接続装置1707は、
図3の通信部312として動作してもよい。
【0181】
なお、情報処理装置が
図17のすべての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略又は変更することも可能である。例えば、ユーザ又はオペレータとのインタフェースが不要である場合は、入力装置1703及び出力装置1704を省略してもよい。情報処理装置が可搬型記録媒体1709を利用しない場合は、媒体駆動装置1706を省略してもよい。
【0182】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0183】
図1乃至
図17を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
入力データに対応付けられた出力データを含む参照情報を用いて、前記入力データから前記出力データを求める並列計算を行う複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる、
処理をコンピュータに実行させ、
前記複数の計算部各々は、前記参照情報のうち、前記一部の範囲に属する入力データに対応付けられた出力データを含む一部の参照情報を記憶し、前記一部の参照情報を用いて、前記一部の範囲に属する入力データから前記一部の範囲に属する入力データに対応付けられた出力データを求めることを特徴とする並列計算分配プログラム。
(付記2)
前記入力データの範囲は、複数の範囲に分割されており、
前記一部の範囲は、前記複数の範囲各々に対応し、
前記入力データに対応付けられた出力データを含む参照情報は、複数の部分に分割されており、
前記一部の参照情報は、前記複数の部分各々に対応し、
前記複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる処理は、
前記複数の計算部各々を、前記入力データに対応する基準データの複数の範囲それぞれに対応するグループのうち、何れかのグループに分類する処理と、
前記並列計算における複数の入力データのうち特定の入力データに対応する特定の基準データに基づいて、前記特定の基準データが属する特定の範囲に対応する特定のグループを求める処理と、
前記複数の計算部のうち前記特定のグループに属する計算部に対して、前記特定の入力データから出力データを求める計算を割り当てる処理と、
を含むことを特徴とする付記1記載の並列計算分配プログラム。
(付記3)
前記複数の入力データそれぞれに対応する基準データのうち、前記特定の範囲に属する基準データの個数に基づいて、前記特定のグループに属する計算部の個数を決定する処理を、前記コンピュータにさらに実行させることを特徴とする付記2記載の並列計算分配プログラム。
(付記4)
前記入力データの範囲は、複数の範囲を含み、
前記複数の範囲のうち2つの範囲は、互いに重複する範囲を含み、
前記一部の範囲は、前記複数の範囲各々に対応し、
前記入力データに対応付けられた出力データを含む参照情報は、複数の部分を含み、
前記一部の参照情報は、前記複数の部分各々に対応し、
前記複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる処理は、
前記複数の計算部各々を、前記入力データに対応する基準データの複数の範囲それぞれに対応するグループのうち、何れかのグループに分類する処理と、
前記複数の入力データのうち前記重複する範囲に属する特定の入力データに対応する特定の基準データに基づいて、前記2つの範囲に対応する2つのグループを求める処理と、
前記複数の計算部のうち前記2つのグループに属する何れかの計算部に対して、前記特定の入力データから出力データを求める計算を割り当てる処理と、
を含むことを特徴とする付記1記載の並列計算分配プログラム。
(付記5)
前記2つのグループのうち一方のグループに属する1つ又は複数の計算部の負荷と、前記2つのグループのうち他方のグループに属する1つ又は複数の計算部の負荷とに基づいて、前記何れかの計算部が選択されることを特徴とする付記4記載の並列計算分配プログラム。
(付記6)
入力データに対応付けられた出力データを含む参照情報を用いて、前記入力データから前記出力データを求める並列計算を行う複数の計算部と、
前記複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる割当部と、
を備え、
前記複数の計算部各々は、前記参照情報のうち、前記一部の範囲に属する入力データに対応付けられた出力データを含む一部の参照情報を記憶し、前記一部の参照情報を用いて、前記一部の範囲に属する入力データから前記一部の範囲に属する入力データに対応付けられた出力データを求めることを特徴とする並列計算分配システム。
(付記7)
前記入力データの範囲は、複数の範囲に分割されており、
前記一部の範囲は、前記複数の範囲各々に対応し、
前記入力データに対応付けられた出力データを含む参照情報は、複数の部分に分割されており、
前記一部の参照情報は、前記複数の部分各々に対応し、
前記割当部は、前記複数の計算部各々を、前記入力データに対応する基準データの複数の範囲それぞれに対応するグループのうち、何れかのグループに分類し、前記並列計算における複数の入力データのうち特定の入力データに対応する特定の基準データに基づいて、前記特定の基準データが属する特定の範囲に対応する特定のグループを求め、前記複数の計算部のうち前記特定のグループに属する計算部に対して、前記特定の入力データから出力データを求める計算を割り当てることを特徴とする付記6記載の並列計算分配システム。
(付記8)
前記割当部は、前記複数の入力データそれぞれに対応する基準データのうち、前記特定の範囲に属する基準データの個数に基づいて、前記特定のグループに属する計算部の個数を決定することを特徴とする付記7記載の並列計算分配システム。
(付記9)
前記入力データの範囲は、複数の範囲を含み、
前記複数の範囲のうち2つの範囲は、互いに重複する範囲を含み、
前記一部の範囲は、前記複数の範囲各々に対応し、
前記入力データに対応付けられた出力データを含む参照情報は、複数の部分を含み、
前記一部の参照情報は、前記複数の部分各々に対応し、
前記割当部は、前記複数の計算部各々を、前記入力データに対応する基準データの複数の範囲それぞれに対応するグループのうち、何れかのグループに分類し、前記複数の入力データのうち前記重複する範囲に属する特定の入力データに対応する特定の基準データに基づいて、前記2つの範囲に対応する2つのグループを求め、前記複数の計算部のうち前記2つのグループに属する何れかの計算部に対して、前記特定の入力データから出力データを求める計算を割り当てることを特徴とする付記6記載の並列計算分配システム。
(付記10)
前記2つのグループのうち一方のグループに属する1つ又は複数の計算部の負荷と、前記2つのグループのうち他方のグループに属する1つ又は複数の計算部の負荷とに基づいて、前記何れかの計算部を選択する選択部をさらに備えることを特徴とする付記9記載の並列計算分配システム。
(付記11)
入力データに対応付けられた出力データを含む参照情報を用いて、前記入力データから前記出力データを求める並列計算を行う複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる、
処理をコンピュータが実行し、
前記複数の計算部各々は、前記参照情報のうち、前記一部の範囲に属する入力データに対応付けられた出力データを含む一部の参照情報を記憶し、前記一部の参照情報を用いて、前記一部の範囲に属する入力データから前記一部の範囲に属する入力データに対応付けられた出力データを求める ことを特徴とする並列計算分配方法。
(付記12)
前記入力データの範囲は、複数の範囲に分割されており、
前記一部の範囲は、前記複数の範囲各々に対応し、
前記入力データに対応付けられた出力データを含む参照情報は、複数の部分に分割されており、
前記一部の参照情報は、前記複数の部分各々に対応し、
前記複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる処理は、
前記複数の計算部各々を、前記入力データに対応する基準データの複数の範囲それぞれに対応するグループのうち、何れかのグループに分類する処理と、
前記並列計算における複数の入力データのうち特定の入力データに対応する特定の基準データに基づいて、前記特定の基準データが属する特定の範囲に対応する特定のグループを求める処理と、
前記複数の計算部のうち前記特定のグループに属する計算部に対して、前記特定の入力データから出力データを求める計算を割り当てる処理と、
を含むことを特徴とする付記11記載の並列計算分配方法。
(付記13)
前記複数の入力データそれぞれに対応する基準データのうち、前記特定の範囲に属する基準データの個数に基づいて、前記特定のグループに属する計算部の個数を決定する処理を、前記コンピュータがさらに実行することを特徴とする付記12記載の並列計算分配方法。
(付記14)
前記入力データの範囲は、複数の範囲を含み、
前記複数の範囲のうち2つの範囲は、互いに重複する範囲を含み、
前記一部の範囲は、前記複数の範囲各々に対応し、
前記入力データに対応付けられた出力データを含む参照情報は、複数の部分を含み、
前記一部の参照情報は、前記複数の部分各々に対応し、
前記複数の計算部それぞれに対して、前記入力データの範囲のうち一部の範囲に属する入力データから出力データを求める計算を割り当てる処理は、
前記複数の計算部各々を、前記入力データに対応する基準データの複数の範囲それぞれに対応するグループのうち、何れかのグループに分類する処理と、
前記複数の入力データのうち前記重複する範囲に属する特定の入力データに対応する特定の基準データに基づいて、前記2つの範囲に対応する2つのグループを求める処理と、
前記複数の計算部のうち前記2つのグループに属する何れかの計算部に対して、前記特定の入力データから出力データを求める計算を割り当てる処理と、
を含むことを特徴とする付記11記載の並列計算分配方法。
(付記15)
前記2つのグループのうち一方のグループに属する1つ又は複数の計算部の負荷と、前記2つのグループのうち他方のグループに属する1つ又は複数の計算部の負荷とに基づいて、前記何れかの計算部が選択されることを特徴とする付記14記載の並列計算分配方法。
【符号の説明】
【0184】
101 並列計算分配システム
111 割当部
112-1~112-N 計算部
201、1001 並列計算システム
211、1011 ホスト計算機
311、1211 制御部
312 通信部
313、711、1112 記憶部
401 FPGA
412、413 加算回路
414~419、420-1~420-3 乗算回路
421~428、701、1101 計算回路
712、1113 補間部
1012 選択装置
1111 受付部
1212-1~1212-(J-1) 選択部
1311 生成回路
1312 選択回路
1313-1、1313-2 AND回路
1314-1~1314-Na、1315-1~1315-Nb OR回路
1601 情報処理装置
1611、1701 CPU
1612、1702 メモリ
1613 通信装置
1614、1708 バス
1703 入力装置
1704 出力装置
1705 補助記憶装置
1706 媒体駆動装置
1707 ネットワーク接続装置
1709 可搬型記録媒体