JP4159699B2 - 並列処理方法および並列処理装置 - Google Patents

並列処理方法および並列処理装置 Download PDF

Info

Publication number
JP4159699B2
JP4159699B2 JP10553699A JP10553699A JP4159699B2 JP 4159699 B2 JP4159699 B2 JP 4159699B2 JP 10553699 A JP10553699 A JP 10553699A JP 10553699 A JP10553699 A JP 10553699A JP 4159699 B2 JP4159699 B2 JP 4159699B2
Authority
JP
Japan
Prior art keywords
matrix
loop
elements
variable
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP10553699A
Other languages
English (en)
Other versions
JP2000298658A (ja
Inventor
想 山田
深二郎 稲畑
宣明 宮川
一 高島
一泰 北村
繁 小原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honda Motor Co Ltd
Taisho Pharmaceutical Co Ltd
Original Assignee
Honda Motor Co Ltd
Taisho Pharmaceutical Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honda Motor Co Ltd, Taisho Pharmaceutical Co Ltd filed Critical Honda Motor Co Ltd
Priority to JP10553699A priority Critical patent/JP4159699B2/ja
Priority to US09/544,201 priority patent/US6799151B1/en
Publication of JP2000298658A publication Critical patent/JP2000298658A/ja
Application granted granted Critical
Publication of JP4159699B2 publication Critical patent/JP4159699B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、大規模で、特定の対称性を有する行列要素計算、特に、非経験的分子軌道法を用いた分子シミュレーションにおいてフォック行列要素計算を高速に処理するために用いて好適な、並列処理方法および並列処理装置に関する。
【0002】
【従来の技術】
化学の分野において、分子の状態や挙動を数値的に解析する手法として、分子軌道法、分子動力学法、モンテカルロ法などがある。その中でも、非経験的分子軌道計算法は、第一原理に基づいた量子力学的計算で、分子中の電子の挙動を記述することを目的としている。そのため、この手法は、分子シミュレーションの基盤として位置づけられ、物質構造や化学反応の詳細な解析に用いられている工業的に重要な手法である。
【0003】
非経験的分子軌道計算法では、分子を構成する原子の原子核と軌道電子との距離の2乗に経験的な定数を乗じたものを指数とする指数関数の逆数あるいはそれらの線形結合を基底関数とし、この基底関数を1つの原子に対して複数個用意する。これらの基底関数の線形結合で、分子内の軌道電子の波動関数、すなわち分子軌道を記述する。
【0004】
分子軌道における基底関数の線形結合係数を決めることが、非経験的分子軌道計算法での主要な処理であるが、その計算には、基底関数の数の4乗に比例した計算量と記憶容量を必要とする。そのため、非経験的分子軌道計算法は、現状では、100原子程度の規模の分子系に適用されているに過ぎない。生命現象/化学現象の分子論的解明を、より現実的なものとするためには、数1000原子規模の分子系への適用も視野に入れた、非経験的分子軌道計算専用の計算システムの開発が必須である。
【0005】
[非経験的分子起動法の概要]
非経験的分子軌道計算法では、分子の状態Ψを、分子中の電子の空間的な軌道に相当する電子軌道関数φμを用いて記述する。ここでμは複数ある分子軌道のμ番目という意味の添え字である。分子軌道φμは、原子軌道χの線形結合で、図23の(数式1)のように近似的に表わされる。
【0006】
ここで、(数式1)において、Iは複数ある原子軌道のI番目という意味の添え字である。なお、原子軌道は基底関数とも呼ばれることがある。この明細書中では、以降、原子軌道のことを基底関数と呼ぶ。また、数式1に現れるCI μは、線形結合係数である。数式1におけるIに関する総和は、計算の対象とする分子を構成する全ての基底関数に関するものである。
【0007】
さて、量子力学的に分子軌道を記述するためには、良く知られるパウリの排他律を、分子内の電子の状態が満たさなければならない。電子のスピンを考慮に入れて、パウリの排他律を満たすように、2n電子系の分子の状態Ψを記述する表式として、図23の(数式2)のようなスレーター行列式が用いられる。ここで、(数式2)において、α(x)およびβ(x)、x番目の電子のスピンが、それぞれ、上向きおよび下向きの状態を表わしている。
【0008】
2n電子系に対するハミルトニアンHは、1電子部分H1 と2電子部分H2 との和という形式で、図23の(数式3)から(数式5)のように書き表される。
【0009】
図23の(数式4)において、右辺の(・・・)内の第1項は、電子pの運動エネルギー、第2項はp番目の電子とA番目の原子核との相互作用である。(数式4)において、Σp (この明細書でΣは、iについての総和を取ることを表すものとする。以下、同じ)は全電子に関する総和、ΣA は全原子核に関する総和、ZA は原子核Aの電荷、rpAは電子pと原子核Aとの距離である。
【0010】
また、(数式5)は、電子pと電子qとの間の相互作用を表わしており、Σp Σq( p)は2個の電子の組み合わせに関する総和、rpqは電子p,q間の距離である。
【0011】
上記のハミルトニアンHと、(数式2)のスレーター行列式とを用いると、分子エネルギーの期待値εが、図24の(数式6)〜(数式9)のように表わされる。
【0012】
(数式6)において、ΣμおよびΣνは、n個(nは正の整数)ある分子軌道に関する総和である。(数式7)は「コア積分」と呼ばれ、代表として番号1の電子について書かれている。また、(数式8)および(数式9)は、それぞれ「クーロン積分」および「交換積分」と呼ばれ、代表として電子1および電子2について書かれている。
【0013】
(数式6)を基底関数を用いて書き直すと、図25に示す(数式10)〜(数式13)に示すようなものになる。(数式13)で表わされる積分を、「2電子間反発積分」あるいは省略して「2電子積分」と呼ぶ。
【0014】
(数式10)で表わされる分子エネルギーの期待値εは、CI μという未知数を含んでおり、このままでは数値が得られない。CI μは、(数式1)における線形結合定数であり、μは1からn(分子軌道の数)の整数、Iは1からN(Nが基底関数の数であり、正の整数)の整数である。以下では、CI μを要素とするN×n行列Cを係数行列と呼ぶ。
【0015】
期待値εが最小となるように係数行列を決定し、基底状態の波動関数Ψを求める手法の1つとして、ハートリー・フォック・ローサーンの変分法(以下、HFR法と略称する)が用いられる。導出過程は省略し、HFR法の結果として得られる式を、図26の(数式14)〜(数式18)に示す。
【0016】
IJはフォック行列要素、PKLは密度行列要素と、それぞれ呼ばれる。以下の説明では、これらをF(I,J)、P(K,L)のように表記する場合がある。これらは、1からNの値をとる各I,J,K,Lに対して数値を持っており、それぞれN×N行列の形で表わされる。
【0017】
(数式14)を解くことにより、係数行列が求まる。(数式14)は、1からnの間の全てのμ、および1からNの間の全てのIに対して存在するので、n×N本の連立方程式になっている。
【0018】
(数式14)を解いて得られた係数行列Cの計算には、密度行列Pが用いられている。密度行列Pは、(数式18)に示すように係数行列Cから計算される。そのため、具体的な計算手順としては、まず、適当に係数行列Cを与えておき、それを用いて計算した密度行列Pを使って、(数式15)でフォック行列Fを計算し、(数式14)の連立方程式を解いて新たな係数行列Cを得る。密度行列Pの元となるCと、結果として得られるCとの間の差が十分小さく、すなわち自己無撞着になるまで、上記の計算を繰り返し行う。この反復計算を自己無撞着計算(以下、SCF計算と称する)と呼ぶ。
【0019】
実際の計算で最も時間を要するのは、(数式15)のフォック行列要素FIJの計算である。これは、全てのI,Jに対して、この(数式15)を計算しなければならないこと、および各I,Jの組み合わせに対して、密度行列要素PKLのK,Lに関する和を計算しなければならないことに起因する。
【0020】
SCF計算の手法には2通りある。1つはディスクストレージSCF法と呼ばれる手法で、1回目のSCF計算の際に得た2電子積分の値を全てディスクに保存しておき、2回目以降は必要な2電子積分をディスクから取り出して用いる手法である。もう1つはダイレクトSCF法と呼ばれる手法で、SCF計算の度に2電子積分の計算をやり直す手法である。
【0021】
現在では、ディスク容量の制限やアクセス時間の大きさなどから、後者のダイレクトSCF法を用いるのが主流である。このダイレクトSCF法による分子軌道計算においては、SCF計算の1回あたりに、N4 にほぼ比例する個数の2電子積分の計算を行わなければならないため、2電子積分計算を高速に行うことが分子軌道計算を高速化することに直結する。
【0022】
2電子積分G(I,J,K,L)、密度行列P(K,L)、およびフォック行列F(I,J)の対称性に関して、ここで言及しておく。
【0023】
2電子積分は、(数式13)から明らかなように、図26の(数式19)に示すような対称性を有している。したがって、(数式19)の内の1つに関して数値を得ることができれば、他の7つについても数値が得られたことになる。
【0024】
また、図26の(数式18)から、
P(K,L)=P(L,K)
であることがわかり、図26の(数式15)および図25の(数式11)から、
F(I,J)=F(J,I)
であることがわかる。
【0025】
[縮約基底関数と原始基底関数]
非経験的分子軌道法では、図27の(数式20)に示すような基底関数が一般的に用いられる。この(数式20)において、r,n,Rはベクトルであり、添え字x,y,zの付いたものがその成分である。rは電子の座標、nは電子の角運動量、Rは原子核の座標である。
【0026】
+n+n=λは、角運動量の大きさであり、軌道量子数とも呼ばれる。この軌道量子数λが、0の場合にその軌道をs軌道、1の場合にその軌道をp軌道、2の場合にその軌道をd軌道などと呼ぶ。
【0027】
ζは軌道指数であり、軌道の空間的な広がり具合を示す。軌道指数の異なる複数の軌道の線形結合で1つの基底関数を表わす場合があり、そのようにして表わした基底関数を縮約基底関数と呼び、線形結合係数dを縮約係数と呼ぶ。これに対して、線形結合される前の、図27の(数式21)の形の関数ψを原始基底関数と呼ぶ。
【0028】
縮約基底関数χは、I,J,K,Lのように大文字で番号付けをし、また、原始基底関数ψは、i,j,k,lのように小文字で番号付けするのが慣例であり、本明細書中でもこれに従う。
【0029】
[縮約シェルと原始シェル]
軌道量子数が1の場合の縮約基底関数には、n=(1,0,0)の場合、n=(0,1,0)の場合、n=(0,0,1)の場合の3通りが存在する。同様に、軌道量子数が2の場合には6通り(あるいは、基底関数の構成の仕方によっては5通り)の縮約基底関数が存在する。
【0030】
(数式20)のうちの図27の(数式22)で示す部分が共通な、これら複数の縮約基底関数の集合を、縮約シェルと呼ぶ。p軌道の縮約シェルは3つの縮約基底関数で構成され、また、d軌道の縮約シェルは6つ(または5つ)の縮約基底関数で構成される。s軌道の場合にも、便宜上1つの縮約基底関数の集合を縮約シェルと呼ぶ。
【0031】
(数式21)のうちのexp[−ζ(r−R)2 ]の部分が共通な、原始基底関数の集合を、同様に原始シェルと呼ぶ。縮約シェルは、R,S,T,Uのように大文字で番号付けをし、原始シェルは、r,s,t,uのように小文字で番号付けするのが慣例であり、本明細書中でもこれに従う。
【0032】
分子軌道計算の実施に際しては、計算の対象とする分子を構成する原子毎に軌道量子数の異なる複数の縮約シェルを用意し、それら全ての集合を基底関数のセットとして用いる。原子核座標Rと軌道量子数λとの組み合わせ(R,λ)で、1つの縮約シェルを表わすことができる。
【0033】
[2電子積分の表式]
縮約基底関数で表わされる2電子積分G(I,J,K,L)は、原始基底関数を用いると、図27の(数式23)のように表わされる。ここで、g(i,j,k,l)は、図27の(数式24)のように表すことができる。
【0034】
G(I,J,K,L)を、縮約基底関数で表現した2電子積分と呼び、g(i,j,k,l)を、原始基底関数で表現した2電子積分と呼ぶが、以降の説明では、どちらも単に2電子積分と呼ぶ場合がある。g(i,j,k,l)も、図27の(数式25)で示すような対称性を有している。
【0035】
さて、原始基底関数ψは、その角運動量n、軌道指数ζ、原子核座標Rの組み合わせで、一意的に示すことができる。i,j,k,l番目の原始基底関数が、図19に示す表1のような角運動量、軌道指数、原子核座標を有するものと仮定する。
【0036】
説明の煩雑さを避けるために、以下の説明では、原始基底関数の番号i,j,k,lの代わりに、それぞれの角運動量a,b,c,dを用いて2電子積分を[ab,cd]のように表わすことにする。
【0037】
上記のように用意された基底関数セットを用いて2電子積分を計算する効率的な手法を、文献1(S.Obara and A.Saika,JCP,vol.84,no.7,p.3964,1986)に従って説明する。
【0038】
まず、a,b,c,dが全てs軌道、すなわちa=0a =(0,0,0),b=0b =(0,0,0),c=0c =(0,0,0),d=0d =(0,0,0)である場合には、(数式24)の2電子積分は、図28の(数式26)〜(数式34)に示すように求まる。
【0039】
ここで、(数式26)に現れる[・・,・・](m) は補助積分、mは補助インデックスであるが、これらについては後で述べる。(数式27)の積分範囲は、0から1である。
【0040】
また、a,b,c,dのうち1つでもs軌道以外のものがある場合には、図29の(数式35)および(数式36)に示す漸化式を用いて計算する。
【0041】
(数式35)で、添え字のiは、xまたはyまたはz成分であることを示す。また、1は、i成分のみ1で、他は0であるようなベクトルである。さらに、N(n)は、角運動量nのi成分の値を示すものである。(数式35)は、左辺の補助積分に現れる角運動量の1つは右辺では確実に1以上減少し、また、左辺の補助積分の補助インデックスは右辺では同じあるいは1だけ増加する、という性質を有している。
【0042】
補助積分[・・,・・](m) は、補助インデックスmが0であるときに、2電子積分[・・,・・]に正確に一致するものであり、2電子積分の計算を補助するものである。どんなに角運動量の大きな基底関数を含んだ2電子積分であっても、(数式35)を繰り返し用いて角運動量を減少させ、最後には、全て角運動量が(0,0,0)であるような補助積分に行き着くことができる。角運動量が(0,0,0)であるような補助積分は、(数式26)を用いて計算できるので、その数値と適当な係数を乗じ、加算すれば2電子積分の数値が得られる。
【0043】
実際の計算は、以下のように行う。
まず、(数式35)に従って、2電子積分を8つ以下の補助積分を用いた形式に表わす。ここで現れた補助積分に対して、さらに、(数式35)を適用する。このような手続きを繰り返して、全て角運動量が(0,0,0)であるような補助積分に行き着くまでの道筋を、計算手順として記録しておく。
【0044】
次に、(数式26)を用いて角運動量が(0,0,0)であるような補助積分を計算し、そこから出発して、先ほどの計算手順をたどりながら補助積分の数値を計算していき、最後に目的とする2電子積分の数値を得る。
【0045】
(数式35)が有するもう一つの重要な性質は、2電子積分に現れる4つの角運動量の組み合わせが同じであれば、軌道指数や原子核座標の組み合わせが異なっていても、上記の計算手順としては全く同じものを用いることができることである。計算の実行に際しては、軌道指数や原子核座標に応じて補助積分に乗じる係数を変えてやるだけで良い。
【0046】
[カットオフ]
上述したように、計算しなければならない縮約基底関数で表わした2電子積分の数は、縮約基底関数の数Nに対してN4 となる。実際に数値を得なければならないのは、原始基底関数で表わした2電子積分の方であるが、その総数は、縮約基底関数で表わした2電子積分の数の数倍から数10倍(縮約基底関数を構成する原始基底関数の数、すなわち縮約数に依存する)に及ぶ。
【0047】
この個数を減らす手法として、第1に考えられるのは、(数式19)あるいは(数式25)に記した対称性を利用することである。しかしながら、この方法では最も効率化を行っても2電子積分の計算量は1/8にしかならない。
【0048】
もう1つの手法は、計算精度の観点から、不必要と判断できる2電子積分の計算を、積極的に排除する方法である。不必要な2電子積分の判断は、以下のように行うことができる。
【0049】
上述したように、全ての2電子積分の数値は、(数式26)に示した全て角運動量が(0,0,0)であるような補助積分[00,00](m) の数値に基づいて計算される。したがって、2電子積分の数値の、フォック行列要素の数値への寄与が計算誤差の程度であるかどうかを、[00,00](m) の数値で判断することが可能である。さらに、[00,00](m) の数値の大きさは、(数式29)に示した関数K(ζ,ζ’,R,R’)の値から、さらに、それは、図29の(数式37)の大きさから判断することができる。
【0050】
したがって、(ζ,A,ζ,B)の数値の組み合わせで、(数式25)の1つ目の関数Kの大きさを見積ることで、2電子積分[ab,**]を計算する必要があるかどうかを判断し、また、(ζ,C,ζ,D)の数値の組み合わせで、(数式26)の2つ目の関数Kの大きさを見積ることで、2電子積分[**,cd]を計算する必要があるかどうかを判断することができる。
【0051】
このようにして、不必要な2電子積分の計算を排除することを、「カットオフする」と呼ぶことにする。上記の例で、aおよびbの情報だけから判断してカットオフする場合には、abでのカットオフ、cおよびdの情報だけから判断してカットオフする場合には、cdでのカットオフ、と呼ぶ場合がある。このように、abだけで、あるいはcdだけでカットオフするかどうかの判断ができるのは、図29の(数式37)の最大値が1で下限値が0だからである。このようにカットオフを行うことにより、計算しなければならない2電子積分は、概略でN2 に比例する個数となり、計算量を大幅に低減できる。
【0052】
上述のことから、Nが大きい場合には、2電子積分の対称性を利用することによる効果よりも、カットオフによる計算量低減の効果の方が桁違いに大きく、これを取り入れることによって、非経験的分子軌道計算におけるフォック行列の計算に要する処理時間が大きく短縮できることがわかる。
【0053】
[分子軌道計算機システムの例]
フォック行列要素の計算を、並列計算機を用いて高速に行うシステムの例として、文献2(白川他,”超高速分子軌道計算専用機MOEのアーキテクチャ”,電子情報通信学会技術報告,vol.CPSY96−46,no.5,pp.45−50,1996)に記載のシステムがある。
【0054】
この文献2では、ホスト計算機に、複数個のプロセッサエレメントをバスを介して接続して並列処理を行うシステムが示されている。この文献2では、このような構成を有する並列処理システムのアーキテクチャの検討に際して、R,S,T,Uの4つのインデックスで構成される4重ループのまわし方および並列化を行う部分の種々の方法に関して、全体の計算量およびプロセッサエレメントに必要なメモリ量を見積っている。
【0055】
文献2に記載されている並列処理システムは、個々のプロセッサ・エレメントが高い演算処理能力を有する上、システム全体を低価格で実現することが可能であるため、コストパフォーマンスの優れた計算システムを提供することができる。しかしながら、文献2では、前述したカットオフを考慮する場合の方法や具体的なループの制御方法への言及がなく、効率的な処理が行えるかどうかが不明であった。
【0056】
[I.Fosterらの方法]
フォック行列要素の計算を、並列計算機を用いて効率的に行うアルゴリズムとして、文献3(I.T.Foster,et.al.,”Toward High−Performance Computational Chemistry: I.Scalable Fock Matrix Construction Algorithms”,Journal of Computational Chemistry,vol.17,no.1,p.109,1996)に記載のアルゴリズムがある。
【0057】
この文献3では、幾つかのフォック行列要素計算アルゴリズムに関して、その計算量およびホスト計算機と、複数のプロセッサ・エレメントとの間の通信量を解析している。その内容を、以下に説明する。
【0058】
第1のアルゴリズムは、カノニカル法と呼ばれる最も簡単なアルゴリズムである。この手法では、1つのプロセッサ・エレメントに、図30に示す(数式38)の関係を満たす4個の縮約基底関数I,J,K,Lと、6個の密度行列要素PIJ,PIK,PIL,PJK,PJL,PKLとを渡し、プロセッサエレメントには2電子積分を計算させて、フォック行列要素FIJ,FIK,FIL,FJK,FJL,FKLの一部を、図30の(数式39)に従って計算させる。
【0059】
1つの2電子積分を計算する間に、ホスト計算機とプロセッサエレメントとの間で通信される行列要素の数を、perERIという単位で勘定することにすると、この場合には、通信データ数が12[perERI]となる。
【0060】
第2のアルゴリズムは、トリプルソート法と呼ばれるアルゴリズムである。図31の(数式40)の関係を満たす4個の縮約基底関数I,J,K,Lと、6個の密度行列要素PIJ,PIK,PIL,PJK,PJL,PKLとを、1つのプロセッサエレメントに渡し、そのプロセッサエレメントに3つの2電子積分G(I,J,K,L),G(I,K,J,L),G(I,L,J,K)を計算させて、フォック行列要素FIJ,FIK,FIL,FJK,FJL,FKLの一部を、図31の(数式41)に従って計算させる。
【0061】
この場合、3つの2電子積分を計算する間に、6つの密度行列要素と、6つのフォック行列要素の転送が必要であるので、通信データ数は、4[perERI]である。したがって、通信データ数の観点からカノニカル法より優れていると言える。
【0062】
しかしながら、プロセッサエレメントにおける原始基底関数で表わした2電子積分の計算時間を、例えば2マイクロ秒(=10-6秒、以下ではμsと記す)と仮定し、また、縮約基底関数の平均の縮約数を1.5と仮定し、密度行列要素やフォック行列要素が、倍精度の浮動小数点数すなわち64ビットのデータサイズであると仮定すると、1つの縮約基底関数で表わした2電子積分の計算時間は、約10μsとなり、1つのプロセッサエレメント当たりで、25.6Mbps(25.6×106 bit per second)の通信性能が、ホスト計算機とプロセッサエレメントとの間で必要とされることになる。
【0063】
計算性能を上げるために、プロセッサエレメント数Mを、例えば100とした場合には、全体の通信性能としては、2560Mbpsが要求されることとなるが、現在の技術で、このような通信性能を達成するのは容易でない。
【0064】
安価な通信手段、例えばIEEE1394バス規格で定められたシリアル通信では、200Mbpsの通信性能が実現できるが、それを用いてトリプルソート法を採用したフォック行列要素並列計算を行うと、全体の処理時間が通信時間で律速されてしまい、行列の対称性を利用した計算時間低減の効果は得られなくなってしまう。
【0065】
第3のアルゴリズムは、単純ブロック法と呼ばれる手法である。これは、さらに、カノニカル法に基づいたものと、トリプルソート法に基づいたものとに細分類できる。この第3のアルゴリズムは、縮約基底関数をブロック化しておくことにより、密度行列要素やフォック行列要素の利用効率を高め、通信量を低減する手法である。
【0066】
トリプルソート法に基づいて、その手法を説明する。
まず、N個ある縮約基底関数を、IC 個毎に、n(=N÷IC )個のブロックに分割する。ブロックの番号を、IB ,JB ,KB ,LB のように表わすことにする。次に、図31の(数式42)の関係を満たす4個の縮約基底関数ブロックIB ,JB ,KB ,LB と、6個の密度行列要素ブロックP(IB ,JB ),P(IB ,KB ),P(IB ,LB ),P(JB ,KB ),P(JB ,LB ),P(KB ,LB )を、1つのプロセッサエレメントに渡す。渡される密度行列要素の数は6IC 2 個となる。
【0067】
プロセッサエレメントが計算する2電子積分は、G(I,J,K,L),G(I,K,J,L),G(I,L,J,K)に対応する3IC 4 個の2電子積分であり、プロセッサエレメントは、前述の(数式41)と同様に、フォック行列要素ブロックF(IB ,JB ),F(IB ,KB ),F(IB ,LB ),F(JB ,KB ),F(JB ,LB ),F(KB ,LB )を計算して、ホスト計算機に送り返す。
【0068】
このときに送り返されるフォック行列要素数も、6IC 2 個である。その結果、通信データ数は、12IC 2 ÷3IC 4 =4/IC 2 [perERI]となる。つまり、ブロック内の縮約基底関数の数を多くすればするほど、密度行列要素やフォック行列要素の利用効率が高まり、通信量が低減する。なお、カノニカル法の場合には、図31の(数式42)に代わり(数式43)を用いる。
【0069】
さらに、通信量を低減する第4の手法として、列ブロック法がある。これは、単純ブロック法において、IB ,JB ,KB の組み合わせが同じで、LB だけが異なる計算を、全て1つのプロセッサエレメントに割り当てる手法である。この手法のフローチャートを図20に示した。なお、図20において破線で示した矢印の部分は、その後の処理がその前の処理で律速されるのでなく、他の処理系からの情報の入力待ちとなることを示している。
【0070】
列ブロック法も、さらに、カノニカル法に基づいたものとトリプルソート法に基づいたものとに細分類できるが、トリプルソート法に基づいて、図20のフローチャートを参照しながら説明する。
【0071】
まず、最初に単純ブロック法と同様に、N個ある縮約基底関数を、IC 個毎にn(=N÷IC )個のブロックに分割する(ステップS1)。次に、ホスト計算機は、特定のプロセッサエレメントに割り当てる縮約基底関数ブロックIB ,JB ,KB の組み合わせ(IB ,JB ,KB )を決定する(ステップS2)。
【0072】
次に、ホスト計算機は、プロセッサエレメントへ、前述の(数式42)の関係を満たす3個の縮約基底関数ブロックIB ,JB ,KB に対応して、要素数が各々IC ×IC 個の密度行列要素ブロックP(IB ,JB ),P(IB ,KB ),P(JB ,KB )および要素数が各々KB ×IC ×IC 個の密度行列要素ブロックの列P(IB ,L),P(JB ,L),P(KB ,L)を送信する(ステップS3およびステップS4)。但し、Lは、1からKB ×IC の範囲の全てである。
【0073】
次に、これらをステップS11およびステップS12で受信したプロセッサエレメントは、内部でLに関するループをまわし、単純ブロック法と同じ2電子積分およびフォック行列要素を計算する(ステップS13)。全てのLに対する計算が終了すると、プロセッサエレメントは、要素数が各々KB ×IC ×IC 個のフォック行列要素ブロックの列F(IB ,L),F(JB ,L),F(KB ,L)および要素数が各々IC ×IC 個のフォック行列要素ブロックF(IB ,JB ),F(IB ,KB ),F(JB ,KB )をホスト計算機に送り返す(ステップS14およびステップS15)。
【0074】
ホスト計算機は、ステップS5およびステップS6で、それらを受信する。そして、ステップS2に戻り、以上の処理を繰り返す。
【0075】
このようにすることにより、密度行列要素やフォック行列要素の利用効率がさらに高まり、2電子積分1つあたりの通信データ数は、2/NIC +2/IC 2 [perERI]となり、N>>IC を仮定すれば、単純ブロック法の約半分となる。
【0076】
さらに、プロセッサエレメント上のIB ,JB ,KB の組み合わせを更新した際に、変化するのがKB のみである場合には、行列要素ブロックP(IB ,JB ),F(IB ,JB )および行列要素ブロックの列P(IB ,L),P(JB ,L),F(IB ,L),F(JB ,L)は、プロセッサエレメント上に残して再利用できるので、通信データ数はさらに減って、4/3NIC +2/3IC 2 [perERI]となる。
【0077】
列ブロック法と同様の思想で、さらに密度行列要素やフォック行列要素の利用効率を高める第5の手法として、クラスタリング法が、文献2では紹介されている。しかしながら、この手法は、負荷分散あるいはスケーラビリティの観点から劣る手法であるとされており、ここでは説明を省略する。
【0078】
【発明が解決しようとする課題】
[カットオフを考慮した場合の問題点]
上述した文献3に記載されているうちで、最も優れた第4のアルゴリズムであっても、カットオフを考慮した場合には不都合が生じる場合がある。そのような例を以下に示す。なお、カットオフにより生き残る割合をα、プロセッサエレメント数をM、1つの2電子積分G(I,J,K,L)当たりの計算時間をTeri(μs)、行列要素のデータ長を64ビットとする。
【0079】
カノニカル法の場合には、1つのプロセッサエレメントに割り当てられたジョブ当たりに発生する通信量は、最低(すなわち、組み合わせの更新時に変化するのがKB だけの場合)でも、
2(2IC 2 +KB C 2 )×64 (bit)
となる一方、その間にプロセッサエレメントで計算される2電子積分の個数は、
α2 B C 4 (個)
なので、全体で必要な通信性能は、図32に示す(数式44)のようなものとなる。
【0080】
トリプルソート法の場合には、1つのプロセッサエレメントに割り当てられたジョブ当たりに発生する通信量は、最低(すなわち、組み合わせの更新時に変化するのがKB だけの場合)でも、
2(2IC 2 +KB C 2 )×64 (bit)
となる一方、その間にプロセッサエレメントで計算される2電子積分の個数は、
3α2 B C 4 (個)
なので、全体で必要な通信性能は、図32に示す(数式45)のようなものとなる。
【0081】
並列処理のプロセッサ・エレメント数Mを100、プロセッサエレメントにおける原始基底関数で表わした2電子積分g(i,j,k,l)の計算時間が2μs、縮約基底関数の平均縮約数を1.5(従って、2電子積分G(I,J,K,L)1つ当たりの計算時間Teriを10μs)、カットオフにより生き残る割合αを0.05、とした場合に、必要とされるホスト計算機とプロセッサエレメントとの間の通信性能のブロックサイズIC に対する依存性を計算すると、カノニカルの場合には、図21に示すように、トリプルソートの場合には、図22に示すようになる。
【0082】
カノニカルの場合にも、また、トリプルソートの場合にも、必要な通信性能はKB の値に依存して変化するが、KB >100ではその変化量が小さく、実際の通信性能に応じて、ブロックサイズIC を、カノニカルの場合なら、例えば50に、トリプルソートの場合であれば、例えば30に、それぞれ設定することが可能である。
【0083】
文献3で前提としているような、十分に大きなデータ保持容量を有するワークステーションを、多数台用いるシステムでは、このような方法で計算を行うことが可能であるが、そのようなシステムを構成するには、多大な費用が必要である。
【0084】
一方、文献2にあるような、せいぜい数10Mビット程度の小さな容量のメモリが接続される安価な専用プロセッサ・エレメントを用いた計算システムでは、列単位で保持できる行列要素は10列以下、すなわち、許されるブロックサイズは2から3程度までである。
【0085】
この場合には、図21あるいは図22の結果から、通信の手段としてIEEE1394バス規格で定められているような安価なシリアル通信を用いた場合には、その性能が200Mbpsであることを考慮すると、通信性能が律速しない効率的な処理を行うことが不可能である。
【0086】
この発明は、以上のような点にかんがみ、安価な通信手段と小容量のメモリを有する多数のプロセッサ・エレメントを用いた並列計算によっても、ホスト計算機とプロセッサ・エレメントとの間の通信性能に律速されることなく、効率的に行列要素計算を行える並列処理方法を提供することを目的とする。
【0087】
【課題を解決するための手段】
上記目的を達成するために、請求項1の発明の並列処理装置は、
同じ1からN(Nは正の整数)の範囲にある4つの整数型の変数R,S,T,Uを用いて表わされ、G(R,S,T,U)=G(R,S,U,T)=G(S,R,T,U)=G(S,R,U,T)=G(T,U,R,S)=G(T,U,S,R)=G(U,T,R,S)=G(U,T,S,R)なる関係を満たす関数Gの関数値G(R,S,T,U)と;2つの前記変数T,Uを用いて表わされ、P(T,U)=P(U,T)なる関係を満たす行列Pの要素P(T,U)と;係数A1との積A1・P(T,U)・G(R,S,T,U)についての前記範囲の全ての前記変数TおよびUに関する総和F1(R,S)と、
前記関数値G(R,U,T,S)と;前記行列要素P(T,U)と;係数A2との積A2・P(T,U)・G(R,U,T,S)に関する前記範囲の全ての前記変数TおよびUにおける総和F2(R,S)との和F(R,S)=F1(R,S)+F2(R,S)を要素とする行列Fの全要素の計算とを、前記変数R,S,T,Uのそれぞれの値を、順次に変化させて繰り返して行なうループにより行なう共に、前記変数R,S,T,Uについてのループを3重ループとして行なう、ホスト計算機と、1つまたは複数個のプロセッサエレメントとにより行う並列処理装置であって、
前記ホスト計算機は、
前記変数R,S,T,Uについての前記3重ループのうちの最も外側のループについて、R≦NおよびT≦Rなる関係を満たす前記変数Rと前記変数Tとの組み合わせ(R,T)を、(1,1)から(N,N)まで変化させるように制御することにより、前記変数Rおよび前記変数Tの番号の組合せにより区別されるジョブ単位毎に前記1つまたは複数のプロセッサエレメントに処理させるように制御するものであり、
前記1つまたは複数個のプロセッサエレメントは、
前記最も外側のループの内側の2番目のループについては前記変数Sの値を順次に変化させるSループ、前記2番目よりも内側の3番目のループについては前記変数Uの値を順次に変化させるUループとするか、あるいは前記2番目のループについて前記変数Uの値を順次に変化させるUループ、前記3番目のループについて前記変数Sの値を順次に変化させるSループとして制御すると共に、
前記変数Sのとりうる値の範囲を1から前記変数Rの間とし、
前記変数Uのとりうる値の範囲を1から前記変数Rの間とし、
前記3番目のループの内側で、所定の前記関数値G(R,S,T,U)の計算およびその計算結果を用いた所定の前記行列要素Fの一部の計算を行うようにするものであり
かつ、
前記ホスト計算機は、
記複数のプロセッサエレメントに対する、前記変数RとTとが固定されたジョブ単位の、所定の順序に従った割り当て、あるいはランダムな選択による割り当てを決定する割り当て決定手段と、
前記割り当て決定手段での前記割り当てに基づいて、前記複数のプロセッサエレメントのそれぞれに対する前記2番目または前記3番目のループでとりうる前記Sの番号の集合およびその要素数と、前記3番目または前記2番目のループでとりうる前記Uの番号の集合およびその要素数とからなる第1のデータの集合体を決定する集合体決定手段と、
前記割り当て決定手段での前記割り当てに基づいて、前記複数のプロセッサエレメントのそれぞれに対して送信すべき前記行列Pの一部の行列要素、すなわち、前記固定された前記Rと前記Sとの集合に対応する行列要素P(R,S)の集合と、前記固定された前記Tと前記Sとの集合に対応する行列要素P(T,S)の集合と、前記固定された前記Rと前記Uとの集合に対応する行列要素P(R,U)の集合と、前記固定された前記Tと前記Uとの集合に対応する行列要素P(T,U)の集合とからなる第2のデータの集合体を選択する集合体選択手段と、
前記集合体決定手段で決定された前記第1のデータの集合体および前記集合体選択手段で選択された前記第2のデータの集合体のそれぞれを、対応する前記プロセッサエレメントのそれぞれに対して送信する第の送信手段と、
前記プロセッサエレメントから送信されてくる前記行列Fの一部の行列要素、すなわち、前記固定された前記変数Rと前記変数Sとの集合に対応する行列要素F(R,S)の集合と、前記固定された前記変数Tと前記変数Sとの集合に対応する行列要素F(T,S)の集合と、前記固定された前記変数Rと前記変数Uとの集合に対応する行列要素F(R,U)の集合と、前記固定された前記変数Tと前記変数Uとの集合に対応する行列要素F(T,U)の集合より構成される第3のデータの集合体を受信する第1の受信手段と、
前記第1の受信手段で受信した前記行列Fを用いて、前記行列Pの更新を行う更新手段と、
を備え、
前記プロセッサエレメントは、
データ格納手段と、
前記ホスト計算機から送信された前記行列Pの一部の行列要素により構成される前記第1および前記第2のデータの集合体を受信して、前記データ格納手段に格納する第2の受信手段と、
前記Sループについて前記変数Sの値を順次に変化させるSループ制御を行う第1のループ制御手段と、
前記Uループについて前記変数Uの値を順次に変化させるUループ制御を行う第2のループ制御手段と、
前記第1のループ制御手段および前記第2のループ制御手段による前記Sループ制御および前記Uループ制御に基づいて、前記関数G(R,S,T,U)の計算を行う第1の計算手段と、
前記データ格納手段に格納されている前記行列Pの一部の行列要素と、前記第1の計算手段で計算された前記関数値G(R,S,T,U)とを用いると共に、前記第1のループ制御手段および前記第2のループ制御手段による前記Sループ制御および前記Uループ制御に基づいて、前記行列Fの一部の行列要素の計算を行う第2の計算手段と、
前記第2の計算手段で計算された前記行列Fの一部の行列要素により構成される前記第3のデータの集合体を前記データ格納手段に格納する手段と、
前記データ格納手段に格納されている前記行列Fの一部の行列要素により構成される前記第3のデータの集合体の前記ホスト計算機に対する送信を行う第2の送信手段と、
を備えることを特徴とする。
【0088】
また、請求項2の発明の並列処理装置は、
N個(Nは正の整数)の縮約シェルを用いて表現される分子のエネルギーを計算する分子軌道計算を、ホスト計算機と、1つまたは複数個のプロセッサエレメントとを有し、
縮約シェルR,S,T,U(変数R,S,T,Uのそれぞれは、1からNまでの整数の値を取る)のそれぞれに含まれる原始シェルr,s,t,uのそれぞれの成分である原始基底関数i,j,k,lをインデックスとして用いて表わされる2電子積分関数gの関数値g(i,j,k,l)と;前記原始基底関数kを1つの構成要素とする縮約基底関数Kおよび前記原始基底関数lを1つの構成要素とする縮約基底関数Lとをインデックスとして用いて表わされる密度行列Pの要素P(K,L)と;係数A1との積A1・P(K,L)・g(i,j,k,l)の全ての縮約基底関数に関する総和f1(I,J)と、
前記2電子積分関数の関数値g(i,k,j,l)と;前記密度行列Pの要素P(K,L)と;係数A2との積A2・P(K,L)・g(i,k,j,l)の全ての縮約基底関数に関する総和f2(I,J)と
の和f(I,J)=f1(I,J)+f2(I,J)の、前記原始基底関数i,jを1つの構成要素とする前記縮約基底関数I,Jに含まれる全ての前記原始基底関数に関する和で表わされるフォック行列Fの全ての行列要素F(I,J)の計算を、
前記ホスト計算機と、前記1つまたは複数個のプロセッサエレメントとにより、前記縮約シェルR,S,T,Uの変数R,S,T,Uのそれぞれ値を、順次に変化させて繰り返して行なうループにより行なうようにすると共に、前記変数R,S,T,Uについてのループを3重ループとして行なう並列処理装置であって、
前記ホスト計算機は、
前記変数R,S,T,Uについての前記1からNまで変化させて繰り返すループを3重ループのうちの最も外側のループについて、R≦NおよびT≦Rなる関係を満たす前記縮約シェルRと前記縮約シェルTとの組み合わせ(R,T)を、(1,1)から(N,N)まで変化させるように制御することにより、前記変数Rおよび前記変数Tの番号の組合せにより区別されるジョブ単位毎に前記1つまたは複数のプロセッサエレメントに処理させるように制御するものであり、
前記1つまたは複数個のプロセッサエレメントは、
前記最も外側のループの内側の2番目のループについては前記縮約シェルSの変数Sの値を順次に変化させるSループ、前記2番目よりも内側の3番目のループについては前記縮約シェルUの変数Uの値を順次に変化させるUループとするか、あるいは前記2番目のループについては前記縮約シェルUの変数Uの値を順次に変化させるUループ、前記3番目のループについては前記縮約シェルSの変数Sの値を順次に変化させるSループとして制御すると共に、
前記縮約シェルSの前記変数Sのとりうる値の範囲を1から前記縮約シェルRの前記変数Rの間とし、
前記縮約シェルUの前記変数Uのとりうる値の範囲を1から前記縮約シェルRの前記変数Sの間とし、
前記3番目のループの内側で、所定の2電子積分の計算およびその結果を用いた所定のフォック行列要素の一部の計算を行うようにするものであり
かつ、
前記ホスト計算機は、
記複数のプロセッサエレメントに対する、前記変数RとTとが固定されたジョブ単位の、所定の順序に従った割り当て、あるいはランダムな選択による割り当てを決定する割り当て決定手段と、
前記割り当て決定手段での前記割り当てに基づいて、前記複数のプロセッサエレメントのそれぞれに対する前記2番目または前記3番目のループでとりうる前記Sの番号の集合およびその要素数と、前記3番目または前記2番目のループでとりうる前記Uの番号の集合およびその要素数とからなる第1のデータの集合体を決定する集合体決定手段と、
前記割り当て決定手段での前記割り当てに基づいて、前記複数のプロセッサエレメントのそれぞれに対して送信すべき前記行列Pの一部の行列要素、すなわち、前記固定された前記Rと前記Sとの集合に対応する行列要素P(R,S)の集合と、前記固定された前記Tと前記Sとの集合に対応する行列要素P(T,S)の集合と、前記固定された前記Rと前記Uとの集合に対応する行列要素P(R,U)の集合と、前記固定された前記Tと前記Uとの集合に対応する行列要素P(T,U)の集合とからなる第2のデータの集合体を選択する集合体選択手段と、
前記集合体決定手段で決定された前記第1のデータの集合体および前記集合体選択手段で選択された前記第2のデータの集合体のそれぞれを、対応する前記プロセッサエレメントのそれぞれに対して送信する第の送信手段と、
前記プロセッサエレメントから送信されてくる行列Fの一部の行列要素、すなわち、前記固定された前記変数Rと前記変数Sとの集合に対応する行列要素F(R,S)の集合と、前記固定された前記変数Tと前記変数Sとの集合に対応する行列要素F(T,S)の集合と、前記固定された前記変数Rと前記変数Uとの集合に対応する行列要素F(R,U)の集合と、前記固定された前記変数Tと前記変数Uとの集合に対応する行列要素F(T,U)の集合より構成される第3のデータの集合体を受信する第1の受信手段と、
前記第1の受信手段で受信した前記行列Fを用いて、前記行列Pの更新を行う更新手段と、
を備え、
前記プロセッサエレメントは、
データ格納手段と、
前記ホスト計算機から送信された前記行列Pの一部の行列要素により構成される前記第1および前記第2のデータの集合体を受信して、前記データ格納手段に格納する第2の受信手段と、
前記Sループについて前記変数Sの値を順次に変化させるSループ制御を行う第1のループ制御手段と、
前記Uループについて前記変数Uの値を順次に変化させるUループ制御を行う第2のループ制御手段と、
前記第1のループ制御手段および前記第2のループ制御手段による前記Sループ制御および前記Uループ制御に基づいて、前記関数G(R,S,T,U)または前記関数g(i,j,k,l)の計算を行う第1の計算手段と、
前記データ格納手段に格納されている前記行列Pの一部の行列要素と、前記第1の計算手段で計算された前記関数値G(R,S,T,U)または前記関数g(i,j,k,l)とを用いると共に、前記第1のループ制御手段および前記第2のループ制御手段による前記Sループ制御および前記Uループ制御に基づいて、前記行列Fの一部の行列要素の計算を行う第2の計算手段と、
前記第2の計算手段で計算された前記行列Fの一部の行列要素により構成される前記第3のデータの集合体を前記データ格納手段に格納する手段と、
前記データ格納手段に格納されている前記行列Fの一部の行列要素により構成される前記第3のデータの集合体の前記ホスト計算機に対する送信を行う第2の送信手段と、
を備えることをことを特徴とする。
【0089】
【作用】
上述の構成の請求項1の発明、請求項2の発明を用いて、フォック行列計算アルゴリズムを行うと、カットオフを考慮して2電子積分の計算数を減少させる場合においても、ホスト計算機とプロセッサエレメントとの間の通信性能およびホスト計算機の処理性能に律速されることのない効率的な並列計算によって、フォック行列を高速に計算することができる。
【0090】
【発明の実施の形態】
以下、この発明の実施の形態を、図を参照しながら説明する。以下に説明する実施の形態では、図1に示すような安価な計算機システムを用いる。
【0091】
すなわち、図1は、この実施の形態の並列計算システムの全体の構成を示すもので、ホスト計算機1に対して、バス3を通じて、複数個のプロセッサエレメント2が接続されている。バス3としては、例えばIEEE1394シリアルバスが用いられる。
【0092】
なお、各プロセッサエレメント2のメモリ容量は、数10Mビット、例えば20Mビットであり、行列要素が64ビットの浮動小数点数で表わされる密度行列およびフォック行列のサイズが、10000×10000であっても、各行列の10列分は十分格納できる容量のものが用いられる。この程度の容量のメモリを各プロセッサエレメントに持たせることは、現在の技術で十分に可能である。
【0093】
まず、この実施の形態における行列要素計算方法と比較するために、従来例のトリプルソート法における全体の計算アルゴリズムを、プログラムコードの形式で表わしたものを図2に示す。
【0094】
図2で、Nshellは縮約シェルの総数を表わす整数型の変数、R,S,T,Uは縮約シェル番号に用いる整数型の変数、I,J,K,Lは縮約基底番号に用いる整数型の変数、G_IJKL,G_IKJL,G_ILJKは2電子積分の数値に用いる実数型の変数、F,Pはフォック行列および密度行列に用いる実数型の2次元配列である。
【0095】
また、ここでは、縮約基底が通し番号で番号付けされていること、および同一の縮約シェルを構成する縮約基底の番号が連続していることを前提として、b_basisおよびe_basisは、その引数となっている番号に相当する縮約シェルを構成する縮約基底の番号の始まりと終わりをリターン値とする整数型の関数である。さらに、Gは、その引数となっている4つの番号I,J,K,Lに対応する縮約基底で一意的に決まる2電子積分を、前述の(数式23)に従って計算する実数型の関数である。
【0096】
さて、この図2に示す従来例のトリプルソート法では、縮約シェルの計算に関する4重ループのうちの最も内側で行われるフォック行列要素への足し込みの計算において、密度行列要素P[I][J],P[I][K],P[I][L],P[J][K],P[J][L],P[K][L]が用いられている。
【0097】
したがって、縮約シェルに関する4重ループをどのような順序で形成しても、ホスト計算機1から密度行列要素がプロセッサ・エレメント2に送信される頻度を、1つの2電子積分計算あたりの行列要素数で表わすと、それは1のオーダー(トリプルソート法では正確には1/3)となる。
【0098】
前述した従来例におけるブロック法は、行列要素の再利用性を高めて密度行列要素が送信される頻度を1より小さい定数倍にするものであった。ここで、その定数は、ブロックサイズの2乗に反比例するものである。図1に示すような安価なシステムを前提とした場合には、プロセッサエレメント2のメモリの容量の大きさで上限が規定されて、ブロックサイズを大きくできないため、密度行列要素が送信される頻度が、1よりも大して小さくならなかった。
【0099】
また、計算の結果として得られるフォック行列要素は、F[I][J],F[I][K],F[I][L],F[J][K],F[J][L],F[K][L]であり、プロセッサ・エレメント2からホスト計算機1へフォック行列要素が送信される頻度は、密度行列の場合と全く同様であった。さらに、カットオフを考慮した場合には、カットオフにより生き残る割合αの2乗に反比例して通信の頻度が高くなるという問題があった。
【0100】
この発明の実施の形態のアルゴリズムでは、カットオフにより生き残る割合αに対する通信の頻度の依存性を弱くし、通信量を低く保つことが可能である。この実施の形態の計算アルゴリズムをプログラムコードの形式で表わしたものを図3に示す。
【0101】
すなわち、図3のアルゴリズムでは、最も外側のループはR≦NshellおよびR≧Tなる関係を満たす縮約シェルRとTとの組み合わせ(RT)に関するループとしている。そして、2番目は縮約シェルSに関するループ、3番目は縮約シェルUに関するループとしている。この場合、Sのとりうる値の範囲は1からRの間とし、また、Uのとりうる値の範囲も1からRの間とする。さらに、3番目のループの内側で、関数値G(R,S,T,U)の計算およびその結果を用いた所定の行列要素Fの一部の計算を行うようにしている。
【0102】
なお、2番目はUに関するループ、3番目はSに関するループとするようにしてもよい。すなわち、図3では、Uに関するループが、Sに関するループの内側に形成されているが、このループの順序は逆でも良い。
【0103】
そして、RとTとが固定された2番目および3番目の2つのループをひとまとまりとして一つのジョブ単位を形成し、このジョブ単位毎に複数のプロセッサエレメント2に処理させるようにする。
【0104】
このとき、ホスト計算機1は、全ての行列要素Pの初期値の計算と、プロセッサエレメントと共に行うSCF計算と、このSCF計算を継続するかどうかの決定などを行う。SCF計算に当たって、ホスト計算機1は、複数個のプロセッサエレメント2に対するRとTとが固定されたジョブ単位の割り当て決定と、プロセッサエレメントに対して送信すべき行列Pの一部の行列要素の選択と、選択された行列要素のプロセッサエレメントに対する送信と、プロセッサエレメントから送信されてきた行列Fの一部の行列要素の受信と、行列Fを用いた行列Pの更新とを行う。
【0105】
一方、プロセッサエレメント2は、ホスト計算機から送信された行列Pの一部の行列要素の受信と、縮約シェルSに関するループの制御および縮約シェルUに関するループの制御と、関数G(R,S,T,U)または関数g(i,j,k,l)の計算と、行列Fの一部の行列要素の計算と、行列Fの一部の行列要素のホスト計算機に対する送信とを行う。
【0106】
この実施の形態では、ホスト計算機1とプロセッサ・エレメント2との間で通信される密度行列要素およびフォック行列要素を、P[I][J],P[I][L],P[J][K],P[K][L]およびF[I][J],F[I][L],F[J][K],F[K][L]だけにし、また、プロセッサ・エレメント2で計算する2電子積分を、G_IJKLだけにした。この実施の形態の場合、行列要素の通信頻度は、1/Nのオーダーである。
【0107】
ここで、図3の計算アルゴリズムで行列要素の通信頻度を1/Nのオーダーとすることが可能な理由を説明する。
【0108】
前述したように、図3において、最も外側のループは、縮約シェルRとTの組み合わせ(以下ではRTペアと記す)の番号RTに関するループである。RとTの組み合わせの総数は、Nshell×(Nshell+1)/2である。以下の説明ではR≧Tを前提とする。したがって、Rの取りうる範囲は、1からNshellまで、Tの取りうる範囲は、1からRまでである。
【0109】
図3では、表記を簡略にするために、RTに関しては、1からNshell×(Nshell+1)/2まで、SおよびUに関しては、1からRまで、それぞれ番号の小さい順番にループを回すようにしているが、必ずしもこのような順序でループを回す必要はない。また、SおよびUに関しては、1からRまでの全ての値を取る必要はない。
【0110】
縮約シェルUに関するループの内部では、縮約基底I,J,K,Lに関する4重ループとなっており、その内部で2電子積分の計算を行い、また、I,J,K,L相互の関係に依存した条件に従ったフォック行列の足し込み計算を行なうアルゴリズムとなっている。上記の条件分岐により、(数式15)に示したフォック行列要素の計算を、過不足なく計算することが可能となる。
【0111】
前述したように、図3のアルゴリズムで、縮約シェルRおよびTに関するループの制御はホスト計算機1で行い、縮約シェルSに関するループより内側はプロセッサエレメント2で行う。すなわち、各プロセッサエレメント2には、縮約シェルRとTの組み合わせ(RTペア)が固定されたジョブが割り当てられる。あるRTペアが固定されたジョブが割り当てられたプロセッサ・エレメント2において、使用する密度行列要素は、P[I][J],P[I][L],P[J][K],P[K][L]である。
【0112】
ここで、IおよびKは、それぞれ縮約シェルRおよびTを形成する縮約基底であるので、ジョブが割り当てられた時点で、これらは数個(縮約シェルがs軌道の場合には1個、p軌道の場合には3個、d軌道の場合には6個)に固定される。JおよびLは任意である。
【0113】
したがって、RTペアに関するジョブのために、ホスト計算機1からプロセッサエレメント2に送信する密度行列要素数は、Nの定数倍のオーダーである。フォック行列に関しても同様である。プロセッサエレメント2には、これら全てを保持することができるだけの容量のメモリを有している。
【0114】
一方、RTペアが固定されたジョブが割り当てられたプロセッサエレメントでは、縮約シェルSおよびUに関するループが回るので、そこで計算される2電子積分の個数は、N2 のオーダーとなる。したがって、1つの2電子積分当たりに換算した通信の頻度は1/Nとなる。
【0115】
このように、複数のプロセッサエレメント2へのジョブ割り当てが、RTペア単位で行われることから、この発明のアルゴリズムを、RT並列アルゴリズムと呼ぶことにする。
【0116】
RT並列アルゴリズムでカットオフを考慮する場合には、プロセッサエレメント2で計算する2電子積分の個数は、カットオフにより生き残る割合αの2乗に比例して減少する。一方、計算に用いる密度行列要素および計算されるフォック行列要素も、カットオフにより生き残る割合αに比例して減少させることができる。この理由を以下に説明する。
【0117】
プロセッサエレメント2に割り当てるRTペアを決めた時点で、ホスト計算機1は、IJペアでカットオフされないJ、およびKLペアでカットオフされないLをリストアップできる。
【0118】
したがって、ホスト計算機1は、
Iが固定された1列の密度行列要素P[I][J]の中からIJペアでカットオフされないJに対応するものだけを、
Kが固定された1列の密度行列要素P[K][J]の中からIJペアでカットオフされないJに対応するものだけを、
Iが固定された1列の密度行列要素P[I][L]の中からKLペアでカットオフされないLに対応するものだけを、
Kが固定された1列の密度行列要素P[K][L]の中からKLペアでカットオフされないLに対応するものだけを、
それぞれ選び出して送信することが可能である。そのため、ホスト計算機1から送信される密度行列要素数は、αに比例して減少する。
【0119】
また、プロセッサエレメント2は、
Iが固定された1列のフォック行列要素F[I][J]のうち、IJペアでカットオフされないJに対応するものだけを、
Kが固定された1列のフォック行列要素F[K][J]のうち、IJペアでカットオフされないJに対応するものだけを、
Iが固定された1列のフォック行列要素F[I][L]のうち、KLペアでカットオフされないLに対応するものだけを、
Kが固定された1列のフォック行列要素F[K][L]のうちKLペアでカットオフされないLに対応するものだけを、
それぞれ計算する。
【0120】
プロセッサエレメント2からホスト計算機1へは、計算されたフォック行列要素のみを送信すればよいので、プロセッサエレメント2からホスト計算機1へ送信されるフォック行列要素数も、カットオフにより生き残る割合αに比例して減少する。
【0121】
したがって、カットオフを考慮した計算を行う場合においては、1つの2電子積分当たりに換算した通信の頻度は、カットオフにより生き残る割合αに反比例して増加するが、それは、αの2乗に反比例して増加する従来例と比較して、実用上の大きな利点となる。
【0122】
次に、プロセッサエレメントの数をM、1つの2電子積分G(I,J,K,L)当たりの計算時間をTeri(μs)、1つの縮約シェルを構成する平均の縮約基底数をa、行列要素のデータ長を64bitとして、必要な通信性能を定式化する。
【0123】
密度行列要素ブロックP(R,S)が、縮約シェルRを構成する任意の縮約基底Iと縮約シェルSを構成する任意の縮約基底Jとの組み合わせで表わされる密度行列要素P(I,J)の集合であるとすると、その密度行列要素ブロックの要素数は、約a2 となる。密度行列要素ブロックP(R,S)は、S=1から、S=Rまでの範囲のうち、RSの組み合わせでのカットオフで生き残るもの全てが、ホスト計算機1からプロセッサエレメント2へ転送される。したがって、その要素数は、a2 ×aR×α個となる。
【0124】
他の密度行列要素ブロックP(R,U),P(T,S),P(T,U)に関しても、概略で同じ要素数となる。また、プロセッサエレメント2からホスト計算機1へ送信するフォック行列要素数は、密度行列要素数と全く同じである。したがって、1つのジョブ当たりのホスト計算機1とプロセッサエレメント2との間の通信データ量は、
8αa3 R×64 (ビット)
となる。
【0125】
一方、1つのジョブ当たりで計算される2電子積分の個数は、概略で、
α2 4 2 (個)
なので、全体で必要な通信性能は、図32の(数式46)に示すようなものと見積もられる。
【0126】
プロセッサエレメント2の数Mを100、プロセッサエレメント2における原始基底関数で表わした2電子積分G(I,J,K,L)当たりの計算時間Teriを10(μs)、1つの縮約シェルを構成する平均の縮約基底数aを3、カットオフによる生き残り割合αを0.05とした場合に、必要な通信性能のRに対する依存性を図4に示す。
【0127】
この図4からわかるように、縮約シェルRが小さいごく一部の範囲では、必要な通信性能が100Mbpsを超えるが、他の殆どの領域では100Mbpsの通信性能があれば、十分に通信時間を計算時間でカバーできることがわかる。
【0128】
一定のRに対するジョブ数が、R2 に比例することを考慮すると、通信時間が計算時間を上回る可能性は、ごくわずかとなる。したがって、この実施の形態のRT並列アルゴリズムは、100Mbps程度の通信性能の、安価な通信手段を用いても、システム全体の処理効率を低下させることのない、効率的なアルゴリズムとなっている。
【0129】
[より具体的な説明]
以下では、この発明の実施の形態の並列処理方法の詳細を、より具体的に説明する。
【0130】
[ホスト計算機1の処理手順]
図5は、この発明の実施の形態の並列処理方法を説明するフローチャートである。ホスト計算機1とプロセッサエレメント2とでは異なる処理を行うため、それぞれについてフローチャートを併記した。
【0131】
また、プロセッサエレメント2は、並列に複数(典型的には100個)がホスト計算機1に接続されていることを前提としているが、それらは同様のフローチャートに従って動作し、また、それらの間のデータの相関はないので、代表として1つのプロセッサエレメント2における処理フローを表記した。なお、図5において、破線で示した矢印の部分は、その後の処理が、その前の処理で律速されるのでなく、他の処理系からの情報の入力待ちとなることを示している。
【0132】
まず、ホスト計算機1の処理手順を説明する。
ホスト計算機1は、係数行列の初期設定(ステップS101)を行った後、(数式18)に従って係数行列から密度行列を計算する(ステップS102)。次に、特定のプロセッサエレメント2に割り当てる縮約シェル番号RとTの組み合わせ、すなわち(RT)ペア番号を決める(ステップS103)。(RT)ペア番号の割り当て順序は任意であり、ランダムに決めても良いし、ある一定の規則に従って決めても良い。
【0133】
次に、(RT)ペア番号に対応する密度行列情報を、その(RT)ペア番号が割り当てられたプロセッサエレメントに対して送信する(ステップS104)。送信される密度行列情報は、カットオフ条件を考慮して作成されるが、そのときにホスト計算機1が行う処理内容に関しては後述する。
【0134】
プロセッサエレメント2は、このホスト計算機からの密度行列情報を受信し、受信バッファメモリに格納する(ステップS201)。そして、割り当てられた(RTペア)のジョブについて、縮約シェルS,Uに関するループを制御して、フォック行列要素の計算を行う(ステップS202)。そして、計算が終了すると、求めたフォック行列情報を送信バッファメモリに格納し、その送信バッファメモリからホスト計算機1に、その求めたフォック行列情報を送信する(ステップS203)。
【0135】
ホスト計算機1は、以上のようにして、あるプロセッサエレメント2での処理が終了して、そのプロセッサエレメント2からフォック行列情報を受信すると(ステップS105)、全てのプロセッサエレメントに対する(RT)ペア番号の割り当てと密度行列情報の送信が終了したかどうか判断し(ステップS107)、終了していなければ、ステップS103に戻って、新たな(RT)ペア番号の割り当てを決め、その(RT)ペア番号に対応する密度行列情報を、そのプロセッサエレメント2に送信する。
【0136】
同様の操作を繰り返して、ホスト計算機1は、全てのプロセッサエレメントに対する(RT)ペア番号の割り当てと密度行列情報の送信を行い、プロセッサエレメントからのフォック行列の受信を待つ。
【0137】
ステップS106で、全ての(RT)ペア番号の処理が終了したと判断すると、ホスト計算機1は、収集したフォック行列情報をもとに、図26の(数式14)を解き、新たな係数行列を計算する(ステップS107)。そして、新たな係数行列とその直前の係数行列とを比較して、自己無撞着な解が得られたかどうか判断する(ステップS108)。そして、両者が十分良く一致していれば、自己無撞着な解が得られたと判断し、計算を終了する。そうでなければ、ステップS108からステップS102に戻り、(数式18)に従って新たな密度行列を生成し、同様の操作を繰り返す。
【0138】
ここで、ホスト計算機1におけるカットオフ処理について説明を加える。
【0139】
縮約シェルRが与えられ、その原子核座標を、その縮約シェルRを構成する原始基底の軌道指数の最小値をζA 、その原始基底をiとする。また、任意の縮約シェルSの原子核座標を、その縮約シェルSを構成する原始基底の軌道指数の最小値をζB 、その原始基底をjとする。
【0140】
従来の技術の欄で記したように、任意の原始基底k,lに対して、2電子積分g(i,j,k,l)をカットオフできるかどうかが、(ζA ,A,ζB ,B)の数値の組み合わせによって判断できる。例えば、図32の(数式47)を満足するかどうかを判定し、この(数式47)の不等式が成り立っていれば、カットオフできると判断する。
【0141】
それぞれ同じ縮約シェルに属する任意の2つの原始基底の組み合わせで考えると、これらの軌道指数は、上記のものよりも大きいため、その組み合わせで計算した指数関数の数値は、上記のものよりも必ず小さくなる。
【0142】
したがって、この最小の軌道指数の組み合わせでカットオフできると判断された場合、縮約シェルRを構成する任意の原始基底と、縮約シェルSを構成する任意の原始基底との組み合わせで、必ずカットオフできることになる。
【0143】
このように、縮約シェルSとして全ての縮約シェルを当てはめて判定を行い、縮約シェルRとのペアでのカットオフに生き残る縮約シェルの番号を1つの集合とすることができる。
【0144】
ホスト計算機1は、SCF計算の開始前に、全ての縮約シェルに対して、それとのペアでのカットオフに生き残る番号の集合を、データベースとして作成しておく。これを、この実施の形態では、カットオフテーブルと呼ぶことにする。
【0145】
図6に、このカットオフテーブルの一例を示す。この例において、例えば、番号が1の縮約シェルが、Rとして選ばれた(R=1)場合、カットオフで生き残る縮約シェルSの番号は1,2,3,5となる。但し、RT並列アルゴリズムで、プロセッサエレメント2において計算が行われるのは、S≦Rの場合のみであるので、R=1が割り当てられたプロセッサエレメント2で計算が行われるSの番号は、1のみとなる。
【0146】
別の例として、R=4の場合を考えると、カットオフで生き残り、しかも、S≦Rを満たすSの番号は、2,3,4となる。
【0147】
図6のカットオフテーブルは、TUの組み合わせにおけるカットオフ判断にも全く同様に用いることができる。例えば、T=1の縮約シェルに対して、カットオフで生き残る縮約シェルUの番号は、1,2,3,5である。ただし、RT並列アルゴリズムで、プロセッサエレメント2において計算が行われるのは、U≦Rの場合であるので、T=1とともに、プロセッサエレメント2に割り当てられたRの番号に依存して、プロセッサエレメント2で計算が行われるUの番号は変わる。
【0148】
例えば、R=10であれば、Uとして、1,2,3,5が用いられるし、R=2ならば、Uとして、1,2が用いられる。
【0149】
さて、SCF計算が開始され、あるプロセッサエレメント2に割り当てるRTペア番号が決まると、ホスト計算機1は、このカットオフテーブルを参照しながら密度行列情報を作成する。
【0150】
縮約シェルR,S,T,Uを構成する縮約基底を、I,J,K,Lで、それぞれ表わすことにすると、ホスト計算機1からプロセッサエレメント2へ送信する密度行列は、P(I,J),P(I,L),P(K,L),P(K,J)であり、また、プロセッサエレメント2で計算される2電子積分は、G(I,J,K,L)である。
【0151】
P(I,J)が必要かどうかは、G(I,J,K,L)が、カットオフで生き残るかどうかに依存し、従って、カットオフテーブルに記述されている番号から、Sとして用いられる番号をリストアップし、それらの縮約シェルを構成する縮約基底をJとしてP(I,J)を選び出せば良い。
【0152】
このように、Jに対して、G(I,J,K,L)がカットオフで生き残るかどうかは、RSの組み合わせでカットオフされないかどうかで決まるので、P(K,J)が必要かどうかも全く同様に決めることができる。すなわち、P(I,J)とP(K,J)とでは、送信すべきJの番号の集合は全く同じである。
【0153】
したがって、S≦Rを満たすR個の縮約シェルの中で、RSの組み合わせで生き残るNv個の縮約シェルの集合を、V={V[1],V[2],・・・,V[Nv]}とすると、P(I,J),P(K,J)に係わるものとして、Vの要素の個数Nvと、Vの要素すなわちV[1],V[2],・・・,V[Nv]と、V[x](x=1〜Nv)に係わる密度行列データブロックとを、ホスト計算機1からプロセッサエレメント2へ送信する密度行列情報に含めれば良い。
【0154】
ここで、V[x]に係わる密度行列データブロックの内容は、縮約シェルRを構成する全ての縮約基底Iと縮約シェルV[x]とを構成する全ての縮約基底Mの任意の組み合わせに対するP(I,M)の数値、および縮約シェルTを構成する全ての縮約基底Kと縮約シェルV[x]とを構成する全ての縮約基底Mの任意の組み合わせに対するP(K,M)の数値であれば良い。
【0155】
全く同様に、用いられる縮約シェルUの番号を、カットオフテーブルからリストアップし、プロセッサエレメント2で用いられるP(I,L),P(K,L)を選び出すことが可能である。
【0156】
U≦Rを満たすR個の縮約シェルの中でTUの組み合わせで生き残るNw個の縮約シェルの集合を、W={W[1],V[2],・・・,W[Nw]}とすると、P(I,L),P(K,L)に係わるものとして、Wの要素の個数Nwと、Wの要素すなわちW[1],W[2],・・・,W[Nw]と、W[x](x=1〜Nw)に係わる密度行列データブロックとを、ホスト計算機1からプロセッサエレメント2へ送信する密度行列情報に含めれば良い。
【0157】
ここで、W[x]に係わる密度行列データブロックの内容は、縮約シェルRを構成する全ての縮約基底Iと縮約シェルW[x]とを構成する全ての縮約基底Nの任意の組み合わせに対するP(I,N)の数値、および縮約シェルTを構成する全ての縮約基底Kと縮約シェルW[x]とを構成する全ての縮約基底Nの任意の組み合わせに対するP(K,N)の数値であれば良い。
【0158】
[転送データの形式]
次に、密度行列情報およびフォック行列情報の内容に関して説明する。
【0159】
図7に、ホスト計算機1からプロセッサエレメント2へ送信する密度行列情報のフォーマットの一例を示す。縮約シェルRの番号から縮約シェルW[Nw]の番号までは、整数型データである。また、縮約シェルV[1]に関わる密度行列データブロックから縮約シェルW[Nw]に関わる密度行列データブロックは、1つまたは複数の浮動小数点型データ、または、固定小数点型データにより構成されるブロックである。
【0160】
図7の上から2つの縮約シェルRおよび縮約シェルTの番号により、その密度行列情報を受け取ったプロセッサエレメント2が処理すべきRTペア番号が決まる。ここで、T≦Rであるので、図32の(数式48)に示す式によって、RTペア番号(RT)を一意的に決め、2つの縮約シェル番号を用いる代わりに、1つの整数型データ(RT)によって、RTペア番号を決めることも可能である。
【0161】
このようにすることで、転送すべき情報量を、整数データ1つ分だけ減らすことも可能である。しかしながら、密度行列情報全体のデータ量と比較して、整数データ1つの差は、無視できる程度に小さい上、上記のようにして決めた整数データ(RT)から縮約シェルRおよびTの番号を復元するために、プロセッサエレメント2上で行うべき処理が増加するため、図7に示すように、縮約シェルRおよびTの番号を、別々に記述する形式を用いるのが、より望ましい。
【0162】
図7において、縮約シェルRおよびTの番号の次は、縮約シェルの集合Vおよび縮約シェルの集合Wの要素数を表わす2つの整数型データである。
【0163】
密度行列データブロックの構成例を、縮約シェルV[1]に関わる密度行列データブロックを代表例として図8に示す。
【0164】
縮約シェルの軌道量子数が1より大きい場合には、その縮約シェルに関わる密度行列データブロックは、さらに縮約基底に関わるサブブロックにより構成されることになる。図8に示した例は、縮約シェルV[1]を構成する縮約基底が、M1(V[1]),M2(V[1]),・・・,Mm(V[1])と、m個ある場合であり、それぞれの縮約基底に対応したサブブロックがm個ある。
【0165】
1つのサブブロックは、さらに2つの領域に別れる。1つは、縮約シェルRを構成する縮約基底I1(R)からIi(R)と、M1(V[1])とをインデックスとする密度行列要素の領域である。もう1つは、縮約シェルTを構成する縮約基底K1(T)からKk(T)と、M1(V[1])とをインデックスとする密度行列要素の領域である。ここで、i,kは、それぞれ縮約シェルR,Tを構成する縮約基底の個数である。これらの領域に含まれる密度行列要素の個数は、縮約シェルRおよびTの軌道量子数によって決まり、したがって、1組の密度行列情報の中では、どのサブブロックも同じ大きさとなる。
【0166】
図9に、プロセッサエレメント2からホスト計算機1に送信するフォック行列情報のフォーマットの一例を示す。上から2つの縮約シェルRの番号および縮約シェルTの番号のみが整数型データであり、それ以降の、縮約シェルV[1]に関わるフォック行列データブロックから縮約シェルW[Nw]に関わるフォック行列データブロックは、1つまたは複数の浮動小数点型データまたは固定小数点型データにより構成されるブロックである。
【0167】
密度行列情報の場合と同様に、上から2つの縮約シェルRおよび縮約シェルTの番号により、そのフォック行列情報を送信したプロセッサエレメント2が処理したRTペア番号を、ホスト計算機1が認識することができる。また、これらは、RとTから一意に決まる1つの整数型データであるRTペア番号で代用することも可能である。
【0168】
さらに、また、ホスト計算機1上に、プロセッサエレメント2に割り当てたRTペア番号を記録しておき、RTペアを表わす番号の代わりに、プロセッサエレメント認識番号により、プロセッサエレメント2が送信したフォック行列情報が、どのRTペアに対応するものかを、ホスト計算機1に判断させることも可能である。
【0169】
フォック行列データブロックの構成は、図8に示した密度行列データブロックと同様である。なお、フォック行列情報には、密度行列情報を構成している、縮約シェルの集合VおよびWの要素数や縮約シェルの番号情報を含む必要がない。なぜならば、ホスト計算機1上にはカットオフテーブルがあるため、ホスト計算機1は、RおよびTから、これらの情報を簡単に再生することが可能だからである。
【0170】
ホスト計算機1上に十分なデータ保持容量がある場合には、プロセッサエレメント2へ密度行列情報を送信してから、プロセッサエレメント2からフォック行列情報を受信するまでの間、これらの情報を保持しておくことができる。いずれにしても、プロセッサエレメント2からホスト計算機1へ送信するフォック行列情報に、縮約シェルの集合VおよびWの要素数や縮約シェルの番号情報を含む必要はなく、これらをフォック行列情報に含まないことによって、プロセッサエレメント2とホスト計算機1との間の通信データ量を小さくすることができる。
【0171】
図10に、密度行列情報およびフォック行列情報のプロセッサエレメント2内のメモリ空間への割付の一例を示す。
【0172】
図10では、プロセッサエレメント2のメモリ空間へのアドレッシングが、全てワード・アドレッシングで行われることを前提としている。また、縮約シェルの集合Vの要素数を1000、Wの要素数を500とした場合を示している。
【0173】
0番地および1番地に、そのプロセッサエレメント2に割り当てられたRおよびTの番号を格納する。2番地および3番地には、縮約シェルの集合VおよびWの要素数Nv,Nwを格納する。4番地から(4+Nv−1)番地は、縮約シェルV[1]からV[Nv]の番号を格納する領域、(4+Nv)番地から(4+Nv+Nw−1)番地は、縮約シェルW[1]からW[Nw]の番号を格納する領域である。以上には全て整数型のデータが保存される。
【0174】
空き領域を挟んで、2000番地から9999番地は、縮約シェルV[1]からV[Nv]に係わる密度行列データブロックを格納する領域、10000番地から17999番地は、縮約シェルW[1]からW[Nw]に係わる密度行列データブロックを格納する領域である。これらの領域に、P(I,J),P(K,J),P(I,L),P(K,L)を、それぞれ4000個ずつ格納することが可能である。
【0175】
18000番地から25999番地は、縮約シェルV[1]からV[Nv]に係わるフォック行列データブロックを格納する領域、26000番地から33999番地は、縮約シェルW[1]からW[Nw]に係わるフォック行列データブロックを格納する領域である。これらの領域に、F(I,J),F(K,J),F(I,L),F(K,L)を、それぞれ4000個ずつ格納することが可能である。
【0176】
メモリ上で、1ワードが64ビットであると仮定しても、これらのデータ領域の容量は、せいぜい2Mビット程度である。カットオフで生き残るデータのみが格納されることを考慮すると、数1000基底以上の規模の分子軌道計算に対しても、十分に必要なデータを格納する領域がある。なお、この例よりも大きなデータ保持能力を有するメモリを実装することも、現在の技術では非常に安価に実現できる。
【0177】
[ループの回しかた(プロセッサエレメント2の処理手順)]
次に、プロセッサエレメント2における処理の手順を、図11および図12のフローチャートに従って説明する。
【0178】
まず、プロセッサエレメント2は、ホスト計算機1から密度行列情報を受信し、それをメモリに格納する(ステップS301)。格納が済んだ時点から、図5に示したSおよびUに関するループによる計算を開始する。
【0179】
Sに関するループは、以下のように制御される。まず、整数型変数vを用意し、初期値をゼロにセットする(ステップS302)。次に、ループに入り、変数vを1だけ増加させる(ステップS303)。次に、メモリから縮約シェルV[v]の数値を読み出し、それをSに代入する(ステップS304)。
【0180】
以下、適当な処理を終了すると、変数vと、縮約シェルVの個数Nvとを比較する(図12のステップS323)。変数vとNvとが等しければ、Sに関するループを終了し、フォック行列情報をホスト計算機1へ送信して(ステップS324)、割り当てられたRTペアの処理を終了する。その後、プロセッサエレメント2は密度行列情報の受信待ちの状態となる。変数vとNvとが等しくなければ、ステップS303で変数vを1だけ増加させて、同様の処理を繰り返す。
【0181】
同様に、Uに関するループは以下のように制御される。Sに関するループ内で、整数型変数wを用意し、初期値をゼロにセットする(ステップS305)。次に、ループに入り、変数wを1だけ増加させる(ステップS306)。次に、メモリから縮約シェルW[w]の数値を読み出し、それをUに代入する(ステップS307)。
【0182】
以下、適当な処理を終了すると、変数wと縮約シェルWの個数Nwとを比較する(ステップS322)。変数wとNwとが等しければ、Uに関するループを終了し、前記ステップS323の変数vとNvとが等しいかどうかの判断を行う。ステップS322で、変数wとNwとが等しくなければ、ステップS306に戻って、変数wを1だけ増加させて、同様の処理を繰り返す。
【0183】
このように、SおよびUに関するループは、メモリに格納された縮約シェルV[1],V[2],・・・,V[Nv]や、縮約シェルW[1],W[2],・・・,W[Nw]の数値を、順次、読み出して、それらをSおよびUの数値として用いることにより制御され、その結果、プロセッサエレメント2は、カットオフで生き残るSおよびUのみに関する数値にしかセットされないため、非常に効率よくループ制御を行うことができる。
【0184】
分子軌道計算における2電子積分およびフォック行列要素の計算は、縮約シェル単位でなく、縮約基底を単位として行う。そのため、Uに関するループの内側では、縮約シェルRを構成する縮約基底Iに関するb_basis(R)からe_basis(R)までのループ(ステップS308、ステップS309およびステップS321参照)、縮約シェルSを構成する縮約基底Jに関するb_basis(S)からe_basis(S)までのループ(ステップS310、ステップS311およびステップS320参照)、縮約シェルTを構成する縮約基底Kに関するb_basis(T)からe_basis(T)までのループ(ステップS312、ステップS313およびステップS319参照)、縮約シェルUを構成する縮約基底Lに関するb_basis(U)からe_basis(U)までのループ(ステップS314、ステップS315およびステップS318参照)よりなる4重ループを形成し、その中で、2電子積分G(I,J,K,L)の計算(ステップS316)、および2電子積分と密度行列要素との積をフォック行列要素に足し込む計算(ステップS317)を行う。
【0185】
ここで、同一の縮約シェルを構成している縮約基底の番号が、連続となるように縮約基底の番号付けがなされていることを前提として、縮約シェルXを構成する縮約基底の番号が、b_basis(X)からe_basis(X)の範囲にあるものとした。
【0186】
この4重ループの中では、カットオフとして上記のRSおよびTUの組み合わせによるもの以外を考えない限りは、必ず、2電子積分G(I,J,K,L)の計算が行われる。
【0187】
したがって、SおよびUのループがまわる間に、メモリに格納された密度行列要素の全てが、必ず、フォック行列要素への足し込み計算に用いられる。計算で用いられないような密度行列要素の通信を行うことは、通信量を無意味に増加させることになるが、そのような無駄な通信が生じないようになっていることにより、低価格な通信手段を用いた場合においてさえ、システムの処理性能が通信性能により制限されることがなく、システムの処理効率を向上させることが可能である。
【0188】
[データ転送のタイミングおよび行列がメモリに入りきらない場合の方法]
縮約シェルSおよびUに関するループのうち、外側にあるSに係わる密度行列要素P(I,J),P(K,J)やフォック行列要素F(I,J),F(K,J)は、2電子積分G(I,J,K,L)の計算終了後に、その都度必要な密度行列要素を、ホスト計算機から受信し、計算し終わったフォック行列要素を、その都度ホスト計算機へ送信する、という手順で送受信することも可能である。
【0189】
しかしながら、データの通信時には、純粋に通信するデータだけでなく通信プロトコルに関係する付加的な情報が必ず付随するため、通信する情報の単位を細かくすることにより、通信量を増大させることに繋がる。
【0190】
この実施の形態のように、RTペアにつき、密度行列情報およびフォック行列情報を、それぞれ1回の通信で、ホスト計算機とプロセッサ・エレメントとの間で通信することにより、プロトコルに付随する付加的な情報による通信量の増大を最小限にとどめることができる。
【0191】
なお、計算の対象とする系のサイズが大きかったり、カットオフ判断を行うための閾値が大きく、カットオフによる生き残り割合が高い場合には、密度行列要素P(I,J),P(K,J)、フォック行列要素F(I,J),F(K,J)、および密度行列要素P(I,L),P(K,L)、フォック行列要素F(I,L),F(K,L)の全てをプロセッサエレメント2内のメモリに保存できなくなることがある。その場合の処理方法を説明する。
【0192】
まず、密度行列要素P(I,J),P(K,J)と、フォック行列要素F(I,J),F(K,J)とが、全てプロセッサエレメント2内のメモリに保存可能である場合には、これら全てと、密度行列要素P(I,L),P(K,L)およびフォック行列要素F(I,L),F(K,L)がメモリに保存できるように、縮約シェルUの番号を区切る。
【0193】
このことにより、(RT)ペアで指定されるジョブは、複数のサブジョブに分割される。これらのサブジョブは、同一のプロセッサエレメント2に割り当てられるようにした上で、密度行列要素P(I,J),P(K,J)は、最初のサブジョブの開始前に、1度だけホスト計算機1からプロセッサエレメント2に送信する。
【0194】
これらの密度行列要素は、縮約シェルUの値が、いくらであろうとも、全て共通に用いることができるからである。一方、密度行列要素P(I,L),P(K,L)は、各サブジョブの開始前に、ホスト計算機1からプロセッサエレメント2に送信し、その前のサブジョブで用いられたメモリ上の密度行列要素P(I,L),P(K,L)の領域に上書きしてしまって構わない。これらの密度行列要素は、特定のUに係わる計算にしか用いられないからである。
【0195】
同様に、フォック行列要素F(I,L),F(K,L)を、各サブジョブの終了後に、プロセッサエレメント2からホスト計算機1に送信し、そのメモリ領域を、次のサブジョブで計算されるフォック行列要素F(I,L),F(K,L)の格納領域として開放する。
【0196】
一方、フォック行列要素F(I,J),F(K,J)は、全てのサブジョブで共通に用いることができるので、全てのサブジョブの終了後に、1度だけプロセッサエレメント2からホスト計算機1へ送信する。
【0197】
密度行列要素P(I,J),P(K,J)とフォック行列要素F(I,J),F(K,J)との全ては、プロセッサエレメント2内のメモリに保存することができないが、密度行列要素P(I,L),P(K,L)と、フォック行列要素F(I,L),F(K,L)との全てを、プロセッサエレメント2内のメモリに保存可能な場合には、縮約シェルSの番号を区切って、ジョブを複数のサブジョブに分割する。
【0198】
このような処理方法とすることにより、全ての行列要素を、プロセッサエレメント2内のメモリに保存可能な場合と比較した通信量の増加分は、密度行列要素とフォック行列要素とを分割して送受信することに起因する通信プロトコルに関係する付加的な情報の個数の増分のみとなる。
【0199】
密度行列要素P(I,J),P(K,J)とフォック行列要素F(I,J),F(K,J)との全て、および密度行列要素P(I,L),P(K,L)とフォック行列要素F(I,L),F(K,L)との全てのどちらも、プロセッサエレメント2内のメモリに格納できないような、計算規模が非常に大きい場合に対しても、この実施の形態のRT並列アルゴリズムは対応可能である。以下に、その処理アルゴリズムを説明する。
【0200】
密度行列要素P(I,J),P(K,J)とフォック行列要素F(I,J),F(K,J)(以下では行列情報Aとする)との全てで、データサイズがXであり、密度行列要素P(I,L),P(K,L)とフォック行列要素F(I,L),F(K,L)(以下では行列情報Bとする)との全てで、データサイズがYであると仮定する。
【0201】
また、縮約シェル番号Sを区切って、行列情報Aをx等分し、縮約シェル番号Uを区切って、行列情報Bをy等分したときに、X/x+Y/yのサイズのデータ量であれば、プロセッサエレメント2内のメモリに保存可能であると仮定する。(RT)ペアで指定される1つのジョブが、x×y個のサブジョブに分割されたことになる。
【0202】
図13に示すように、サブジョブの番号を(Sに関する分割番号、Uに関する分割番号)の形式で表わし、(1,1)から(1,y)をプロセッサエレメントPE1に、(2,1)から(2,y)をプロセッサエレメントPE2に、(x,1)から(x,y)をプロセッサエレメントPExに、というようにプロセッサエレメントへの割り付けを行う(第1の分割方法)ことにすると、1つのプロセッサエレメントに係わって、ホスト計算機1との間で送受信されるデータ量は、
X/x+y×Y/y
となる。
【0203】
このような通信を、x個のプロセッサエレメントがそれぞれ行うので、(RT)ペアにより指定される1つのジョブ当たりで、
x×[X/x+y×Y/y]=X+xY
の通信量となる。
【0204】
上記の例とは逆に、(1,1)から(x,1)をプロセッサエレメントPE1に、(1,2)から(x,2)をプロセッサエレメントPE2に、(1,y)から(x,y)をプロセッサエレメントPEyに、というように、プロセッサエレメントへの割り付けを行う(第2の分割方法)場合、(RT)ペアにより指定される1つのジョブ当たりの通信量は、
yX+Y
となる。
【0205】
プロセッサエレメント2内のメモリ容量は限られているので、縮約シェル番号の区切り数を少なくするためには元々のデータ量がなるべく小さい方の区切りで別々のプロセッサエレメント2にサブジョブを割り当てるのが良い。
【0206】
第1の分割方法と第2の分割方法とで大きさを比較してみる。xはXに比例し、yはYに比例して、その比例定数は近似的に共通とすることができるので、第1の分割方法と第2の分割方法とでの通信量の差は、X−Yとなる。したがって通信量は、X>Yの場合には、第2の分割方法の方が小さく、X<Yの場合には、第1の分割方法の方が小さくなる。
【0207】
すなわち、密度行列要素P(I,J),P(K,J)とフォック行列要素F(I,J),F(K,J)の要素数の和が、密度行列要素P(I,L),P(K,L)とフォック行列要素F(I,L),F(K,L)の要素数の和よりも大きい(X>Y)場合には、第2の分割方法を用いる。逆に、密度行列要素P(I,J),P(K,J)とフォック行列要素F(I,J),F(K,J)の要素数の和が、密度行列要素P(I,L),P(K,L)とフォック行列要素F(I,L),F(K,L)の要素数の和よりも小さい(X<Y)場合には、第1の分割方法を用いることにより、通信量の増大分を小さくすることが可能である。
【0208】
図14に、ジョブの分割を考慮した場合のホスト計算機における処理のアルゴリズムを示す。この図14は、図5中のホスト計算機の処理アルゴリズムにおけるステップS103からステップS106までの部分に対応するもので、図14のステップS401が図5のステップS103に、図14のステップS411が図5のステップS106に、それぞれ対応している。なお、この図14では、プロセッサエレメントは、簡単のためPEと記述した。
【0209】
すなわち、図14において、ステップS401では、プロセッサエレメント2に割り当てる(RT)ペア番号を決定する。その後、ホスト計算機1は、まず、(RT)ペア番号が割り当てられたプロセッサエレメント2のメモリに、P(K,L),P(I,L),F(K,L),F(I,L)の全てを格納可能かどうかを判断する(ステップS402)。
【0210】
ステップS402で、格納可能であると判断されたときには、次に、(RT)ペア番号が割り当てられたプロセッサエレメント2のメモリに、P(I,J),P(K,J),F(I,J),F(K,J)の全てを格納可能かどうかを判断し(ステップS405)、格納可能であれば、ステップS406、ステップS407に順に進む。また、格納可能でなければ、後述する図15に示す処理に進む。
【0211】
ステップS406、407の処理は、プロセッサエレメント2に割り当てられた(RT)ペア番号に相当する処理に必要な密度行列およびフォック行列を、全て、プロセッサエレメント2のメモリに格納可能な場合の処理であるので、図5における処理と同様である。すなわち、P(K,L),P(I,L),P(I,J),P(K,J)の全てをプロセッサエレメント2へ送信する(ステップS406)。その後は、処理が終了して、プロセッサエレメント2から、F(K,L),F(I,L),F(I,J),F(K,J)の全てを受信するまで、ホスト計算機は処理待ちの状態となる(ステップS407)。
【0212】
また、ステップS402で、格納可能でないと判断されたときには、(RT)ペア番号が割り当てられたプロセッサエレメント2のメモリに、P(I,J),P(K,J),F(I,J),F(K,J)の全てが格納可能かどうかを判断し(ステップS403)、格納可能であると判断されたときには、後述する図16に示す処理を行い、そうでなければステップS404に進む。
【0213】
ステップS404では、P(I,J)とP(K,J)の個数の和と、P(K,L)とP(I,L)の個数の和とを比較し、等しいかあるいは後者が大きければ、後述する図17に示す処理を行ない、前者が大きければ、後述する図18に示す処理を行なう。
【0214】
図15、図16、図17および図18の処理のいずれかの処理が終了すると、ホスト計算機1は、全ての(RT)ペアの処理が終了したかどうかを判断する(ステップS411)。以下、図5の処理と同様である。
【0215】
次に、図15に示す処理を説明する。この処理は、プロセッサエレメント2に割り当てられた(RT)ペア番号に相当する処理に必要な密度行列およびフォック行列の全ては、プロセッサエレメント2のメモリに格納できないが、P(K,L),P(I,L),F(K,L),F(I,L)の全てを格納することができる場合の処理である。
【0216】
まず、P(K,L),P(I,L),F(K,L),F(I,L)の全てを格納した場合に、プロセッサエレメント2のメモリに残る空き容量を見積り、対応するP(I,J),P(K,J),F(I,J),F(K,J)の全てがその空き容量以下となるように、Sの範囲をM分割する。それとともに、分割された各Sの範囲を単位としてM個のサブジョブを定義する(ステップS408)。
【0217】
次に、P(K,L),P(I,L)の全てをプロセッサエレメント2に送信する(ステップS409)。その後、m=1からm=Mまでに対して、m番目のサブジョブに対応するP(I,J),P(K,J)の全てをプロセッサエレメント2へ送信し、処理待ちの状態を経て、プロセッサエレメント2からm番目のサブジョブに対応するF(I,J),F(K,J)の全てを受信する、という処理を繰り返す(ステップS410〜ステップS414)。
【0218】
そして、m=1からm=Mまでの繰り返しの処理の全てを終了すると、プロセッサエレメントからF(K,L),F(I,L)の全てを受信する(ステップS415)。その後、図14のステップS411に進む。
【0219】
次に、図16に示す処理を説明する。これは、プロセッサエレメント2に割り当てられた(RT)ペア番号に相当する処理に必要な密度行列およびフォック行列の全てをプロセッサエレメント2のメモリに格納できず、また、P(K,L),P(I,L),F(K,L),F(I,L)の全てを格納することもできないが、P(I,J),P(K,J),F(I,J),F(K,J)の全てを格納することができる場合の処理である。
【0220】
まず、P(I,J),P(K,J),F(I,J),F(K,J)の全てを格納した場合に、プロセッサエレメント2のメモリに残る空き容量を見積り、対応するP(K,L),P(I,L),F(K,L),F(I,L)の全てががその空き容量以下となるようにUの範囲をM分割する。それとともに、分割された各Uの範囲を単位としてM個のサブジョブを定義する(ステップS416)。
【0221】
次に、P(I,J),P(K,J)の全てをプロセッサエレメント2に送信する(ステップS417)。その後、m=1からm=Mまでに対して、m番目のサブジョブに対応するP(K,L),P(I,L)の全てをプロセッサエレメントへ送信し、処理待ちの状態を経て、プロセッサエレメントからm番目のサブジョブに対応するF(K,L),F(I,L)の全てを受信する、という処理を繰り返す(ステップS418〜ステップS422)。
【0222】
そして、m=1からm=Mまでの繰り返しの処理の全てを終了すると、プロセッサエレメント2からF(I,J),F(K,J)の全てを受信する(ステップS423)。その後、図14のステップS411に進む。
【0223】
次に、図17に示す処理を説明する。これは、プロセッサエレメント2のメモリに、P(K,L),P(I,L),F(K,L),F(I,L)の全てを格納することができず、また、P(I,J),P(K,J),F(I,J),F(K,J)の全てを格納することもできない場合で、P(I,J)とP(K,J)の個数の和がP(K,L)のP(I,L)個数の和よりも大きくない場合の処理である。
【0224】
まず、P(I,J),P(K,J),F(I,J),F(K,J)の全てがメモリの空き容量以下となるように、Sの範囲をM1分割する。M1はできるだけ小さく設定する(ステップS424)。
【0225】
次に、ステップS425で、m1=0として初期化した後、ステップS426以降に進み、m1に関するループを、m1=1からm1=M1の範囲で回す。m1に関するループの中では、まず、分割されたP(I,J),P(K,J),F(I,J),F(K,J)の全てを格納した場合に、プロセッサエレメント2のメモリに残る空き容量を見積り、対応するP(K,L),P(I,L),F(K,L),F(I,L)の全てがその空き容量以下となるようにUの範囲をM2分割する。さらに、分割された各Uの範囲を単位としてM2個のサブジョブを定義する(ステップS427)。そして、次に、m1番目の分割に対応するP(I,J),P(K,J)の全てを、プロセッサエレメント2へ送信する(ステップS428)。
【0226】
その後、ステップS429で、m2=0として初期化した後、ステップS430以降に進み、m2に関するループを、m2=1からm2=M2の範囲で回す。m2に関するループでは、まず、m2番目の分割に対応するP(K,L),P(I,L)の全てをプロセッサエレメントへ送信し(ステップS431)、処理待ちの状態を経て、プロセッサエレメントからm2番目の分割に対応するF(K,L),F(I,L)の全てを受信する(ステップS432)。
【0227】
m2に関するループが終了したと判断すると(ステップS433)、プロセッサエレメント2からm1番目の分割に対応するF(I,J),F(K,J)の全てを受信する(ステップS434)。そして、m1に関するループが終了したと判断すると(ステップS435)、図14のステップS411に進む。
【0228】
なお、m1番目の分割に対応するループ内の全てのサブジョブの処理は、同一のプロセッサエレメント2で行なう必要があるが、M1個に分割された異なるSの範囲に対応する処理は、それぞれを独立のジョブと見なして、別々のプロセッサエレメントで処理を行なってもよい。それらのジョブを、同一のプロセッサエレメントで行なっても、別々のプロセッサエレメントで行なっても、発生する通信量は同じである。
【0229】
次に、図18に示す処理を説明する。この処理は、プロセッサエレメント2のメモリに、P(K,L),P(I,L),F(K,L),F(I,L)の全てを格納することができず、また、P(I,J),P(K,J),F(I,J),F(K,J)の全てを格納することもできない場合で、P(I,J)とP(K,J)の個数の和が、P(K,L)のP(I,L)個数の和よりも大きい場合の処理である。
【0230】
まず、P(K,L),P(I,L),F(K,L),F(I,L)の全てがメモリの空き容量以下となるように、Uの範囲をM1分割する。M1はできるだけ小さく設定する(ステップS436)。次に、ステップS437で、m1=0として初期化した後、ステップS438以降に進み、m1に関するループを、m1=1からm1=M1の範囲で回す。
【0231】
m1に関するループの中では、まず、分割されたP(K,L),P(I,L),F(K,L),F(I,L)の全てを格納した場合に、プロセッサエレメントのメモリに残る空き容量を見積り、対応するP(I,J),P(K,J),F(I,J),F(K,J)の全てがその空き容量以下となるように、Sの範囲をM2分割する。さらに、分割された各Sの範囲を単位としてM2個のサブジョブを定義する(ステップS439)。
【0232】
m1番目の分割に対応するP(K,L),P(I,L)の全てをプロセッサエレメント2へ送信した後、ステップS441で、m2=0として初期化した後、ステップS442以降に進み、m2に関するループを、m2=1からm2=M2の範囲で回す。
【0233】
m2に関するループでは、まず、m2番目の分割に対応するP(I,J),P(K,J)の全てをプロセッサエレメント2へ送信し(ステップS443)、処理待ちの状態を経て、プロセッサエレメント2からm2番目の分割に対応するF(I,J),F(K,J)の全てを受信する(ステップS444)。
【0234】
m2に関するループが終了したと判断すると(ステップS445)、プロセッサエレメント2からm1番目の分割に対応するF(K,L),F(I,L)の全てを受信する(ステップS446)。そして、m1に関するループが終了したと判断すると(ステップS447)、図14のステップS411に進む。
【0235】
なお、この場合も、m1番目の分割に対応するループ内の全てのサブジョブの処理は、同一のプロセッサエレメント2で行なう必要があるが、M1個に分割された異なるUの範囲に対応する処理は、それぞれを独立のジョブと見なして、別々のプロセッサエレメント2で処理を行なってもよい。
【0236】
以上説明した実施の形態は、非経験的分子軌道法を用いた分子シミュレーションにおいて、フォック行列要素計算を高速に行う場合に、この発明を適用した場合であるが、この発明は、このような非経験的分子軌道法に限らず、種々の並列処理アルゴリズムに適用可能であることは、言うまでもない。
【0237】
【発明の効果】
以上説明したように、この発明によれば、安価な通信手段と比較的小さなメモリを持った並列処理システムを用いて、大規模な行列要素の計算を高速に行うことが可能となる。
【図面の簡単な説明】
【図1】この発明による並列処理装置の実施の形態のシステム構成を示すブロック図である。
【図2】この発明の実施の形態の比較例として示す従来例のFosterの列ブロックアルゴリズムでトリプルソート法のアルゴリズムを示すプログラム・コードを示す図である。
【図3】この発明の実施の形態のRT並列アルゴリズムを示すプログラム・コードを示す図である。
【図4】この発明の実施の形態のRT並列アルゴリズムにおいて、必要な通信性能と縮約シェル番号Rとの関係を示す図である。
【図5】この発明の実施の形態におけるホスト計算機およびプロセッサエレメントの処理のフローチャートである。
【図6】この発明の実施の形態におけるホスト計算機上に用意されるカットオフテーブルの一例を示す図である。
【図7】この発明の実施の形態において、ホスト計算機からプロセッサエレメントへ送信される密度行列情報のフォーマットの一例を示す図である。
【図8】この発明の実施の形態における密度行列データブロックの構成例を示す図である。
【図9】この発明の実施の形態において、プロセッサエレメントからホスト計算機へ送信されるフォック行列情報のフォーマットの一例を示す図である。
【図10】この発明の実施の形態におけるメモリへの行列情報の割り付け例を示す図である。
【図11】この発明の実施の形態におけるプロセッサエレメントの処理のフローチャートの一部を示す図である。
【図12】この発明の実施の形態におけるプロセッサエレメントの処理のフローチャートの一部を示す図である。
【図13】この発明の実施の形態における、計算規模が大きい場合のサブジョブへの分割と、それらのプロセッサエレメントへの割り当て方法の一例を示す図である。
【図14】この発明の実施の形態における、ジョブ分割を考慮した場合のホスト計算機の処理アルゴリズムの一例を示すフローチャートの一部を示す図である。
【図15】この発明の実施の形態における、ジョブ分割を考慮した場合のホスト計算機の処理アルゴリズムの一例を示すフローチャートの一部を示す図である。
【図16】この発明の実施の形態における、ジョブ分割を考慮した場合のホスト計算機の処理アルゴリズムの一例を示すフローチャートの一部を示す図である。
【図17】この発明の実施の形態における、ジョブ分割を考慮した場合のホスト計算機の処理アルゴリズムの一例を示すフローチャートの一部を示す図である。
【図18】この発明の実施の形態における、ジョブ分割を考慮した場合のホスト計算機の処理アルゴリズムの一例を示すフローチャートの一部を示す図である。
【図19】原始基底関数と、その角運動量、軌道指数、原子核座標との対応例を示す図である。
【図20】従来例のFosterの列ブロックアルゴリズムのフローチャートである。
【図21】従来例のFosterの列ブロックアルゴリズムでカノニカル法の場合における、必要な通信性能のブロックサイズ依存性を説明するための図である。
【図22】従来例のFosterの列ブロックアルゴリズムでトリプルソート法の場合における、必要な通信性能のブロックサイズ依存性を説明するための図である。
【図23】非経験的分子軌道計算法の説明に用いる数式を示す図である。
【図24】非経験的分子軌道計算法の説明に用いる数式を示す図である。
【図25】非経験的分子軌道計算法の説明に用いる数式を示す図である。
【図26】非経験的分子軌道計算法の説明に用いる数式を示す図である。
【図27】非経験的分子軌道計算法の説明に用いる数式を示す図である。
【図28】文献1の2電子積分計算手法の説明に用いる数式を示す図である。
【図29】文献1の2電子積分計算手法の説明に用いる数式を示す図である。
【図30】従来例のFosterのアルゴリズムの説明に用いる数式を示す図である。
【図31】従来例のFosterのアルゴリズムの説明に用いる数式を示す図である。
【図32】従来例における通信量(数式44)、従来例における必要な通信性能(数式45)、この発明の実施の形態における必要な通信性能(数式46)、この発明の実施の形態におけるカットオフの判定基準の一例(数式47)、この発明の実施の形態におけるRTペア番号の一意的な決め方の一例(数式48)に、それぞれ用いる数式を示す図である。
【符号の説明】
1 ホスト計算機
2 プロセッサエレメント
3 バス

Claims (2)

  1. 同じ1からN(Nは正の整数)の範囲にある4つの整数型の変数R,S,T,Uを用いて表わされ、G(R,S,T,U)=G(R,S,U,T)=G(S,R,T,U)=G(S,R,U,T)=G(T,U,R,S)=G(T,U,S,R)=G(U,T,R,S)=G(U,T,S,R)なる関係を満たす関数Gの関数値G(R,S,T,U)と;2つの前記変数T,Uを用いて表わされ、P(T,U)=P(U,T)なる関係を満たす行列Pの要素P(T,U)と;係数A1との積A1・P(T,U)・G(R,S,T,U)についての前記範囲の全ての前記変数TおよびUに関する総和F1(R,S)と、
    前記関数値G(R,U,T,S)と;前記行列要素P(T,U)と;係数A2との積A2・P(T,U)・G(R,U,T,S)に関する前記範囲の全ての前記変数TおよびUにおける総和F2(R,S)との和F(R,S)=F1(R,S)+F2(R,S)を要素とする行列Fの全要素の計算とを、前記変数R,S,T,Uのそれぞれの値を、順次に変化させて繰り返して行なうループにより行なう共に、前記変数R,S,T,Uについてのループを3重ループとして行なう、ホスト計算機と、1つまたは複数個のプロセッサエレメントとにより行う並列処理装置であって、
    前記ホスト計算機は、
    前記変数R,S,T,Uについての前記3重ループのうちの最も外側のループについて、R≦NおよびT≦Rなる関係を満たす前記変数Rと前記変数Tとの組み合わせ(R,T)を、(1,1)から(N,N)まで変化させるように制御することにより、前記変数Rおよび前記変数Tの番号の組合せにより区別されるジョブ単位毎に前記1つまたは複数のプロセッサエレメントに処理させるように制御するものであり、
    前記1つまたは複数個のプロセッサエレメントは、
    前記最も外側のループの内側の2番目のループについては前記変数Sの値を順次に変化させるSループ、前記2番目よりも内側の3番目のループについては前記変数Uの値を順次に変化させるUループとするか、あるいは前記2番目のループについて前記変数Uの値を順次に変化させるUループ、前記3番目のループについて前記変数Sの値を順次に変化させるSループとして制御すると共に、
    前記変数Sのとりうる値の範囲を1から前記変数Rの間とし、
    前記変数Uのとりうる値の範囲を1から前記変数Rの間とし、
    前記3番目のループの内側で、所定の前記関数値G(R,S,T,U)の計算およびその計算結果を用いた所定の前記行列要素Fの一部の計算を行うようにするものであり
    かつ、
    前記ホスト計算機は、
    記複数のプロセッサエレメントに対する、前記変数RとTとが固定されたジョブ単位の、所定の順序に従った割り当て、あるいはランダムな選択による割り当てを決定する割り当て決定手段と、
    前記割り当て決定手段での前記割り当てに基づいて、前記複数のプロセッサエレメントのそれぞれに対する前記2番目または前記3番目のループでとりうる前記Sの番号の集合およびその要素数と、前記3番目または前記2番目のループでとりうる前記Uの番号の集合およびその要素数とからなる第1のデータの集合体を決定する集合体決定手段と、
    前記割り当て決定手段での前記割り当てに基づいて、前記複数のプロセッサエレメントのそれぞれに対して送信すべき前記行列Pの一部の行列要素、すなわち、前記固定された前記Rと前記Sとの集合に対応する行列要素P(R,S)の集合と、前記固定された前記Tと前記Sとの集合に対応する行列要素P(T,S)の集合と、前記固定された前記Rと前記Uとの集合に対応する行列要素P(R,U)の集合と、前記固定された前記Tと前記Uとの集合に対応する行列要素P(T,U)の集合とからなる第2のデータの集合体を選択する集合体選択手段と、
    前記集合体決定手段で決定された前記第1のデータの集合体および前記集合体選択手段で選択された前記第2のデータの集合体のそれぞれを、対応する前記プロセッサエレメントのそれぞれに対して送信する第の送信手段と、
    前記プロセッサエレメントから送信されてくる前記行列Fの一部の行列要素、すなわち、前記固定された前記変数Rと前記変数Sとの集合に対応する行列要素F(R,S)の集合と、前記固定された前記変数Tと前記変数Sとの集合に対応する行列要素F(T,S)の集合と、前記固定された前記変数Rと前記変数Uとの集合に対応する行列要素F(R,U)の集合と、前記固定された前記変数Tと前記変数Uとの集合に対応する行列要素F(T,U)の集合より構成される第3のデータの集合体を受信する第1の受信手段と、
    前記第1の受信手段で受信した前記行列Fを用いて、前記行列Pの更新を行う更新手段と、
    を備え、
    前記プロセッサエレメントは、
    データ格納手段と、
    前記ホスト計算機から送信された前記行列Pの一部の行列要素により構成される前記第1および前記第2のデータの集合体を受信して、前記データ格納手段に格納する第2の受信手段と、
    前記Sループについて前記変数Sの値を順次に変化させるSループ制御を行う第1のループ制御手段と、
    前記Uループについて前記変数Uの値を順次に変化させるUループ制御を行う第2のループ制御手段と、
    前記第1のループ制御手段および前記第2のループ制御手段による前記Sループ制御および前記Uループ制御に基づいて、前記関数G(R,S,T,U)の計算を行う第1の計算手段と、
    前記データ格納手段に格納されている前記行列Pの一部の行列要素と、前記第1の計算手段で計算された前記関数値G(R,S,T,U)とを用いると共に、前記第1のループ制御手段および前記第2のループ制御手段による前記Sループ制御および前記Uループ制御に基づいて、前記行列Fの一部の行列要素の計算を行う第2の計算手段と、
    前記第2の計算手段で計算された前記行列Fの一部の行列要素により構成される前記第3のデータの集合体を前記データ格納手段に格納する手段と、
    前記データ格納手段に格納されている前記行列Fの一部の行列要素により構成される前記第3のデータの集合体の前記ホスト計算機に対する送信を行う第2の送信手段と、
    を備えることを特徴とする並列処理装置。
  2. N個(Nは正の整数)の縮約シェルを用いて表現される分子のエネルギーを計算する分子軌道計算を、ホスト計算機と、1つまたは複数個のプロセッサエレメントとを有し、
    縮約シェルR,S,T,U(変数R,S,T,Uのそれぞれは、1からNまでの整数の値を取る)のそれぞれに含まれる原始シェルr,s,t,uのそれぞれの成分である原始基底関数i,j,k,lをインデックスとして用いて表わされる2電子積分関数gの関数値g(i,j,k,l)と;前記原始基底関数kを1つの構成要素とする縮約基底関数Kおよび前記原始基底関数lを1つの構成要素とする縮約基底関数Lとをインデックスとして用いて表わされる密度行列Pの要素P(K,L)と;係数A1との積A1・P(K,L)・g(i,j,k,l)の全ての縮約基底関数に関する総和f1(I,J)と、
    前記2電子積分関数の関数値g(i,k,j,l)と;前記密度行列Pの要素P(K,L)と;係数A2との積A2・P(K,L)・g(i,k,j,l)の全ての縮約基底関数に関する総和f2(I,J)と
    の和f(I,J)=f1(I,J)+f2(I,J)の、前記原始基底関数i,jを1つの構成要素とする前記縮約基底関数I,Jに含まれる全ての前記原始基底関数に関する和で表わされるフォック行列Fの全ての行列要素F(I,J)の計算を、
    前記ホスト計算機と、前記1つまたは複数個のプロセッサエレメントとにより、前記縮約シェルR,S,T,Uの変数R,S,T,Uのそれぞれ値を、順次に変化させて繰り返して行なうループにより行なうようにすると共に、前記変数R,S,T,Uについてのル ープを3重ループとして行なう並列処理装置であって、
    前記ホスト計算機は、
    前記変数R,S,T,Uについての前記1からNまで変化させて繰り返すループを3重ループのうちの最も外側のループについて、R≦NおよびT≦Rなる関係を満たす前記縮約シェルRと前記縮約シェルTとの組み合わせ(R,T)を、(1,1)から(N,N)まで変化させるように制御することにより、前記変数Rおよび前記変数Tの番号の組合せにより区別されるジョブ単位毎に前記1つまたは複数のプロセッサエレメントに処理させるように制御するものであり、
    前記1つまたは複数個のプロセッサエレメントは、
    前記最も外側のループの内側の2番目のループについては前記縮約シェルSの変数Sの値を順次に変化させるSループ、前記2番目よりも内側の3番目のループについては前記縮約シェルUの変数Uの値を順次に変化させるUループとするか、あるいは前記2番目のループについては前記縮約シェルUの変数Uの値を順次に変化させるUループ、前記3番目のループについては前記縮約シェルSの変数Sの値を順次に変化させるSループとして制御すると共に、
    前記縮約シェルSの前記変数Sのとりうる値の範囲を1から前記縮約シェルRの前記変数Rの間とし、
    前記縮約シェルUの前記変数Uのとりうる値の範囲を1から前記縮約シェルRの前記変数Sの間とし、
    前記3番目のループの内側で、所定の2電子積分の計算およびその結果を用いた所定のフォック行列要素の一部の計算を行うようにするものであり
    かつ、
    前記ホスト計算機は、
    記複数のプロセッサエレメントに対する、前記変数RとTとが固定されたジョブ単位の、所定の順序に従った割り当て、あるいはランダムな選択による割り当てを決定する割り当て決定手段と、
    前記割り当て決定手段での前記割り当てに基づいて、前記複数のプロセッサエレメントのそれぞれに対する前記2番目または前記3番目のループでとりうる前記Sの番号の集合およびその要素数と、前記3番目または前記2番目のループでとりうる前記Uの番号の集合およびその要素数とからなる第1のデータの集合体を決定する集合体決定手段と、
    前記割り当て決定手段での前記割り当てに基づいて、前記複数のプロセッサエレメントのそれぞれに対して送信すべき前記行列Pの一部の行列要素、すなわち、前記固定された前記Rと前記Sとの集合に対応する行列要素P(R,S)の集合と、前記固定された前記Tと前記Sとの集合に対応する行列要素P(T,S)の集合と、前記固定された前記Rと前記Uとの集合に対応する行列要素P(R,U)の集合と、前記固定された前記Tと前記Uとの集合に対応する行列要素P(T,U)の集合とからなる第2のデータの集合体を選択する集合体選択手段と、
    前記集合体決定手段で決定された前記第1のデータの集合体および前記集合体選択手段で選択された前記第2のデータの集合体のそれぞれを、対応する前記プロセッサエレメントのそれぞれに対して送信する第の送信手段と、
    前記プロセッサエレメントから送信されてくる行列Fの一部の行列要素、すなわち、前記固定された前記変数Rと前記変数Sとの集合に対応する行列要素F(R,S)の集合と、前記固定された前記変数Tと前記変数Sとの集合に対応する行列要素F(T,S)の集合と、前記固定された前記変数Rと前記変数Uとの集合に対応する行列要素F(R,U)の集合と、前記固定された前記変数Tと前記変数Uとの集合に対応する行列要素F(T,U)の集合より構成される第3のデータの集合体を受信する第1の受信手段と、
    前記第1の受信手段で受信した前記行列Fを用いて、前記行列Pの更新を行う更新手段と、
    を備え、
    前記プロセッサエレメントは、
    データ格納手段と、
    前記ホスト計算機から送信された前記行列Pの一部の行列要素により構成される前記第1および前記第2のデータの集合体を受信して、前記データ格納手段に格納する第2の受信手段と、
    前記Sループについて前記変数Sの値を順次に変化させるSループ制御を行う第1のループ制御手段と、
    前記Uループについて前記変数Uの値を順次に変化させるUループ制御を行う第2のループ制御手段と、
    前記第1のループ制御手段および前記第2のループ制御手段による前記Sループ制御および前記Uループ制御に基づいて、前記関数G(R,S,T,U)または前記関数g(i,j,k,l)の計算を行う第1の計算手段と、
    前記データ格納手段に格納されている前記行列Pの一部の行列要素と、前記第1の計算手段で計算された前記関数値G(R,S,T,U)または前記関数g(i,j,k,l)とを用いると共に、前記第1のループ制御手段および前記第2のループ制御手段による前記Sループ制御および前記Uループ制御に基づいて、前記行列Fの一部の行列要素の計算を行う第2の計算手段と、
    前記第2の計算手段で計算された前記行列Fの一部の行列要素により構成される前記第3のデータの集合体を前記データ格納手段に格納する手段と、
    前記データ格納手段に格納されている前記行列Fの一部の行列要素により構成される前記第3のデータの集合体の前記ホスト計算機に対する送信を行う第2の送信手段と、
    を備えることを特徴とする並列処理装置。
JP10553699A 1999-04-13 1999-04-13 並列処理方法および並列処理装置 Expired - Fee Related JP4159699B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP10553699A JP4159699B2 (ja) 1999-04-13 1999-04-13 並列処理方法および並列処理装置
US09/544,201 US6799151B1 (en) 1999-04-13 2000-04-07 Method and apparatus for parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10553699A JP4159699B2 (ja) 1999-04-13 1999-04-13 並列処理方法および並列処理装置

Publications (2)

Publication Number Publication Date
JP2000298658A JP2000298658A (ja) 2000-10-24
JP4159699B2 true JP4159699B2 (ja) 2008-10-01

Family

ID=14410319

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10553699A Expired - Fee Related JP4159699B2 (ja) 1999-04-13 1999-04-13 並列処理方法および並列処理装置

Country Status (2)

Country Link
US (1) US6799151B1 (ja)
JP (1) JP4159699B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4475614B2 (ja) * 2000-04-28 2010-06-09 大正製薬株式会社 並列処理方法におけるジョブの割り当て方法および並列処理方法
WO2005029352A1 (ja) * 2003-09-22 2005-03-31 Nec Corporation 並列計算方法及び装置
US7730335B2 (en) * 2004-06-10 2010-06-01 Marvell World Trade Ltd. Low power computer with main and auxiliary processors
US20080140921A1 (en) * 2004-06-10 2008-06-12 Sehat Sutardja Externally removable non-volatile semiconductor memory module for hard disk drives
EP1811413A4 (en) 2004-09-27 2008-02-20 Japan Science & Tech Agency MOLECULAR ORBITAL CALCULATION DEVICE FOR AN ELONGATION METHOD
JP5266742B2 (ja) * 2007-12-13 2013-08-21 日本電気株式会社 資源量見積り装置及び資源量見積り方法並びにプログラム
CN103544378A (zh) * 2013-09-28 2014-01-29 南方电网科学研究院有限责任公司 一种直流输电用交流系统谐波阻抗计算方法
CN105675994B (zh) * 2016-01-27 2018-07-17 东南大学 一种用于配电网馈线的等效系统谐波阻抗的测量方法
CN110867218B (zh) * 2018-08-27 2022-11-08 中国石油化工股份有限公司 一种分子电子能量计算方法及系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604686A (en) * 1993-07-16 1997-02-18 Fujitsu, Ltd. Method and apparatus for analyzing chemical systems
US5574844A (en) * 1994-09-22 1996-11-12 International Business Machines Corporation Computer system and method for processing atomic data to calculate and exhibit the properties and structure of matter
JPH0950428A (ja) 1995-08-10 1997-02-18 Hitachi Ltd 分子軌道解析用計算システム
US6185472B1 (en) * 1995-12-28 2001-02-06 Kabushiki Kaisha Toshiba Semiconductor device manufacturing method, manufacturing apparatus, simulation method and simulator
US5631469A (en) * 1996-04-15 1997-05-20 The United States Of America As Represented By The Secretary Of The Army Neural network computing system for pattern recognition of thermoluminescence signature spectra and chemical defense
JPH1055352A (ja) * 1996-08-08 1998-02-24 Fuji Xerox Co Ltd 浮動小数点数累積加算装置
JP3033511B2 (ja) * 1997-03-03 2000-04-17 富士ゼロックス株式会社 大規模積和演算処理方法及び装置
US6678450B1 (en) * 1998-04-24 2004-01-13 The Johns Hopkins University Optical method for quantum computing
US6366873B1 (en) * 1999-01-20 2002-04-02 The Regents Of The University Of California Dopant profile modeling by rare event enhanced domain-following molecular dynamics
JP2000293494A (ja) * 1999-04-09 2000-10-20 Fuji Xerox Co Ltd 並列計算装置および並列計算方法

Also Published As

Publication number Publication date
US6799151B1 (en) 2004-09-28
JP2000298658A (ja) 2000-10-24

Similar Documents

Publication Publication Date Title
JP4475614B2 (ja) 並列処理方法におけるジョブの割り当て方法および並列処理方法
Kaya et al. Scalable sparse tensor decompositions in distributed memory systems
JP6898359B2 (ja) ディープニューラルネットワーク用のアクセラレータ
Solomonik et al. Cyclops tensor framework: Reducing communication and eliminating load imbalance in massively parallel contractions
Amestoy et al. A fully asynchronous multifrontal solver using distributed dynamic scheduling
CN107111517B (zh) 针对归约器任务的虚拟机优化分配和/或生成
Yamazaki et al. On techniques to improve robustness and scalability of a parallel hybrid linear solver
Grigori et al. Parallel symbolic factorization for sparse LU with static pivoting
Schütt et al. GPU‐Accelerated Sparse Matrix–Matrix Multiplication for Linear Scaling Density Functional Theory
Leung et al. Processor allocation on Cplant: achieving general processor locality using one-dimensional allocation strategies
JP4159699B2 (ja) 並列処理方法および並列処理装置
Liu et al. A new scalable parallel algorithm for Fock matrix construction
Joubert et al. Parallel accelerated vector similarity calculations for genomics applications
Gan et al. The parallel implementation of a full configuration interaction program
Williams-Young et al. A parallel, distributed memory implementation of the adaptive sampling configuration interaction method
Zhou et al. An out-of-core eigensolver on SSD-equipped clusters
Banicescu et al. Addressing the stochastic nature of scientific computations via dynamic loop scheduling
Yamazaki et al. On techniques to improve robustness and scalability of the Schur complement method
JP2002049603A (ja) 動的負荷分散方法及び動的負荷分散装置
US10210136B2 (en) Parallel computer and FFT operation method
Wells et al. A numerical implementation of the Dirac equation on a hypercube multicomputer
Sudarsan et al. Efficient multidimensional data redistribution for resizable parallel computations
Granat et al. Parallel ScaLAPACK-style algorithms for solving continuous-time Sylvester matrix equations
Shu Parallel implementation of a sparse simplex algorithm on MIMD distributed memory computers
JP2000305923A (ja) 行列要素の並列計算方法および分子軌道計算方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20040820

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20040820

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041027

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070807

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071226

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080416

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080710

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080716

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110725

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120725

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130725

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140725

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees