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

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

Info

Publication number
JP2000298658A
JP2000298658A JP10553699A JP10553699A JP2000298658A JP 2000298658 A JP2000298658 A JP 2000298658A JP 10553699 A JP10553699 A JP 10553699A JP 10553699 A JP10553699 A JP 10553699A JP 2000298658 A JP2000298658 A JP 2000298658A
Authority
JP
Japan
Prior art keywords
matrix
elements
sub
matrix elements
function
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.)
Granted
Application number
JP10553699A
Other languages
English (en)
Other versions
JP4159699B2 (ja
Inventor
Sou Yamada
想 山田
Shinjirou Inahata
深二郎 稲畑
Nobuaki Miyagawa
宣明 宮川
Hajime Takashima
一 高島
Kazuyasu Kitamura
一泰 北村
Shigeru Obara
繁 小原
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.)
Taisho Pharmaceutical Co Ltd
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox 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 Fuji Xerox Co Ltd, Taisho Pharmaceutical Co Ltd filed Critical Fuji Xerox 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

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)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

(57)【要約】 【課題】 安価な通信手段と、小容量のメモリを有する
多数のプロセッサエレメントとを用いた並列計算によっ
ても、ホスト計算機とプロセッサエレメントとの間の通
信性能に律速されることなく、効率的に行列要素計算を
行える。 【解決手段】 例えば、分子軌道計算方法において、フ
ォック行列の全ての要素F(I,J)の計算を、最も外
側のループは、R≦NshellおよびT≦Rなる関係
を満たす縮約シェルRと縮約シェルTとの組み合わせ
(RT)に関するループとする。2番目は、縮約シェル
Sに関するループ、3番目は縮約シェルUに関するルー
プとするか、あるいは、2番目は縮約シェルUに関する
ループ、3番面は縮約シェルSに関するループとする。
Sのとりうる値の範囲を1からRの間とし、また、Uの
とりうる値の範囲を1からRの間とする。3番目のルー
プの内側で、所定の2電子積分の計算およびその結果を
用いた所定のフォック行列要素の一部の計算を行うこと
により行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、大規模で、特定
の対称性を有する行列要素計算、特に、非経験的分子軌
道法を用いた分子シミュレーションにおいてフォック行
列要素計算を高速に処理するために用いて好適な、並列
処理方法および並列処理装置に関する。
【0002】
【従来の技術】化学の分野において、分子の状態や挙動
を数値的に解析する手法として、分子軌道法、分子動力
学法、モンテカルロ法などがある。その中でも、非経験
的分子軌道計算法は、第一原理に基づいた量子力学的計
算で、分子中の電子の挙動を記述することを目的として
いる。そのため、この手法は、分子シミュレーションの
基盤として位置づけられ、物質構造や化学反応の詳細な
解析に用いられている工業的に重要な手法である。
【0003】非経験的分子軌道計算法では、分子を構成
する原子の原子核と軌道電子との距離の2乗に経験的な
定数を乗じたものを指数とする指数関数の逆数あるいは
それらの線形結合を基底関数とし、この基底関数を1つ
の原子に対して複数個用意する。これらの基底関数の線
形結合で、分子内の軌道電子の波動関数、すなわち分子
軌道を記述する。
【0004】分子軌道における基底関数の線形結合係数
を決めることが、非経験的分子軌道計算法での主要な処
理であるが、その計算には、基底関数の数の4乗に比例
した計算量と記憶容量を必要とする。そのため、非経験
的分子軌道計算法は、現状では、100原子程度の規模
の分子系に適用されているに過ぎない。生命現象/化学
現象の分子論的解明を、より現実的なものとするために
は、数1000原子規模の分子系への適用も視野に入れ
た、非経験的分子軌道計算専用の計算システムの開発が
必須である。
【0005】[非経験的分子起動法の概要]非経験的分
子軌道計算法では、分子の状態Ψを、分子中の電子の空
間的な軌道に相当する電子軌道関数φμを用いて記述す
る。ここでμは複数ある分子軌道のμ番目という意味の
添え字である。分子軌道φμは、原子軌道χの線形結
合で、図23の(数式1)のように近似的に表わされ
る。
【0006】ここで、(数式1)において、Iは複数あ
る原子軌道のI番目という意味の添え字である。なお、
原子軌道は基底関数とも呼ばれることがある。この明細
書中では、以降、原子軌道のことを基底関数と呼ぶ。ま
た、数式1に現れるCは、線形結合係数である。数
式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)で表わされる分子エネルギー
の期待値εは、Cという未知数を含んでおり、この
ままでは数値が得られない。Cは、(数式1)にお
ける線形結合定数であり、μは1からn(分子軌道の
数)の整数、Iは1からN(Nが基底関数の数であり、
正の整数)の整数である。以下では、Cを要素とす
るN×n行列Cを係数行列と呼ぶ。
【0015】期待値εが最小となるように係数行列を決
定し、基底状態の波動関数Ψを求める手法の1つとし
て、ハートリー・フォック・ローサーンの変分法(以
下、HFR法と略称する)が用いられる。導出過程は省
略し、HFR法の結果として得られる式を、図26の
(数式14)〜(数式18)に示す。
【0016】FIJはフォック行列要素、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回あたりに、N
4 にほぼ比例する個数の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)および図2
5の(数式11)から、 F(I,J)=F(J,I) であることがわかる。
【0025】[縮約基底関数と原始基底関数]非経験的
分子軌道法では、図27の(数式20)に示すような基
底関数が一般的に用いられる。この(数式20)におい
て、r,n,Rはベクトルであり、添え字x,y,zの
付いたものがその成分である。rは電子の座標、nは電
子の角運動量、Rは原子核の座標である。
【0026】n+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の(数式2
2)で示す部分が共通な、これら複数の縮約基底関数の
集合を、縮約シェルと呼ぶ。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,p
p.45−50,1996)に記載のシステムがある。
【0054】この文献2では、ホスト計算機に、複数個
のプロセッサエレメントをバスを介して接続して並列処
理を行うシステムが示されている。この文献2では、こ
のような構成を有する並列処理システムのアーキテクチ
ャの検討に際して、R,S,T,Uの4つのインデック
スで構成される4重ループのまわし方および並列化を行
う部分の種々の方法に関して、全体の計算量およびプロ
セッサエレメントに必要なメモリ量を見積っている。
【0055】文献2に記載されている並列処理システム
は、個々のプロセッサ・エレメントが高い演算処理能力
を有する上、システム全体を低価格で実現することが可
能であるため、コストパフォーマンスの優れた計算シス
テムを提供することができる。しかしながら、文献2で
は、前述したカットオフを考慮する場合の方法や具体的
なループの制御方法への言及がなく、効率的な処理が行
えるかどうかが不明であった。
【0056】[I.Fosterらの方法]フォック行
列要素の計算を、並列計算機を用いて効率的に行うアル
ゴリズムとして、文献3(I.T.Foster,e
t.al.,”Toward High−Perfor
mance Computational Chemi
stry: I.Scalable Fock Mat
rix Construction Algorith
ms”,Journal of Computatio
nal 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,P
JL,PKLとを渡し、プロセッサエレメントには2電子積
分を計算させて、フォック行列要素FIJ,FIK,FIL
JK,FJL,FKLの一部を、図30の(数式39)に従
って計算させる。
【0059】1つの2電子積分を計算する間に、ホスト
計算機とプロセッサエレメントとの間で通信される行列
要素の数を、perERIという単位で勘定することに
すると、この場合には、通信データ数が12[perE
RI]となる。
【0060】第2のアルゴリズムは、トリプルソート法
と呼ばれるアルゴリズムである。図31の(数式40)
の関係を満たす4個の縮約基底関数I,J,K,Lと、
6個の密度行列要素PIJ,PIK,PIL,PJK,PJL,P
KLとを、1つのプロセッサエレメントに渡し、そのプロ
セッサエレメントに3つの2電子積分G(I,J,K,
L),G(I,K,J,L),G(I,L,J,K)を
計算させて、フォック行列要素FIJ,FIK,FIL
JK,FJL,FKLの一部を、図31の(数式41)に従
って計算させる。
【0061】この場合、3つの2電子積分を計算する間
に、6つの密度行列要素と、6つのフォック行列要素の
転送が必要であるので、通信データ数は、4[perE
RI]である。したがって、通信データ数の観点からカ
ノニカル法より優れていると言える。
【0062】しかしながら、プロセッサエレメントにお
ける原始基底関数で表わした2電子積分の計算時間を、
例えば2マイクロ秒(=10-6秒、以下ではμsと記
す)と仮定し、また、縮約基底関数の平均の縮約数を
1.5と仮定し、密度行列要素やフォック行列要素が、
倍精度の浮動小数点数すなわち64ビットのデータサイ
ズであると仮定すると、1つの縮約基底関数で表わした
2電子積分の計算時間は、約10μsとなり、1つのプ
ロセッサエレメント当たりで、25.6Mbps(2
5.6×106 bit per second)の通信
性能が、ホスト計算機とプロセッサエレメントとの間で
必要とされることになる。
【0063】計算性能を上げるために、プロセッサエレ
メント数Mを、例えば100とした場合には、全体の通
信性能としては、2560Mbpsが要求されることと
なるが、現在の技術で、このような通信性能を達成する
のは容易でない。
【0064】安価な通信手段、例えばIEEE1394
バス規格で定められたシリアル通信では、200Mbp
sの通信性能が実現できるが、それを用いてトリプルソ
ート法を採用したフォック行列要素並列計算を行うと、
全体の処理時間が通信時間で律速されてしまい、行列の
対称性を利用した計算時間低減の効果は得られなくなっ
てしまう。
【0065】第3のアルゴリズムは、単純ブロック法と
呼ばれる手法である。これは、さらに、カノニカル法に
基づいたものと、トリプルソート法に基づいたものとに
細分類できる。この第3のアルゴリズムは、縮約基底関
数をブロック化しておくことにより、密度行列要素やフ
ォック行列要素の利用効率を高め、通信量を低減する手
法である。
【0066】トリプルソート法に基づいて、その手法を
説明する。まず、N個ある縮約基底関数を、IC 個毎
に、n(=N÷IC )個のブロックに分割する。ブロッ
クの番号を、IB ,JB ,KB ,LB のように表わすこ
とにする。次に、図31の(数式42)の関係を満たす
4個の縮約基底関数ブロックIB ,JB ,KB ,L
B と、6個の密度行列要素ブロックP(IB ,JB ),
P(IB ,KB ),P(IB ,LB ),P(JB
B ),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電子積
分であり、プロセッサエレメントは、前述の(数式4
1)と同様に、フォック行列要素ブロックF(IB ,J
B ),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)に代わり(数式4
3)を用いる。
【0069】さらに、通信量を低減する第4の手法とし
て、列ブロック法がある。これは、単純ブロック法にお
いて、IB ,JB ,KB の組み合わせが同じで、LB
けが異なる計算を、全て1つのプロセッサエレメントに
割り当てる手法である。この手法のフローチャートを図
20に示した。なお、図20において破線で示した矢印
の部分は、その後の処理がその前の処理で律速されるの
でなく、他の処理系からの情報の入力待ちとなることを
示している。
【0070】列ブロック法も、さらに、カノニカル法に
基づいたものとトリプルソート法に基づいたものとに細
分類できるが、トリプルソート法に基づいて、図20の
フローチャートを参照しながら説明する。
【0071】まず、最初に単純ブロック法と同様に、N
個ある縮約基底関数を、IC 個毎にn(=N÷IC )個
のブロックに分割する(ステップS1)。次に、ホスト
計算機は、特定のプロセッサエレメントに割り当てる縮
約基底関数ブロックIB ,JB ,KB の組み合わせ(I
B ,JB ,KB )を決定する(ステップS2)。
【0072】次に、ホスト計算機は、プロセッサエレメ
ントへ、前述の(数式42)の関係を満たす3個の縮約
基底関数ブロックIB ,JB ,KB に対応して、要素数
が各々IC ×IC 個の密度行列要素ブロックP(IB
B ),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電
子積分およびフォック行列要素を計算する(ステップS
13)。全てのLに対する計算が終了すると、プロセッ
サエレメントは、要素数が各々KB ×IC ×IC 個のフ
ォック行列要素ブロックの列F(IB ,L),F
(JB ,L),F(KB ,L)および要素数が各々IC
×IC 個のフォック行列要素ブロックF(IB
B),F(IB ,KB ),F(JB ,KB )をホスト
計算機に送り返す(ステップS14およびステップS1
5)。
【0074】ホスト計算機は、ステップS5およびステ
ップS6で、それらを受信する。そして、ステップS2
に戻り、以上の処理を繰り返す。
【0075】このようにすることにより、密度行列要素
やフォック行列要素の利用効率がさらに高まり、2電子
積分1つあたりの通信データ数は、2/NIC +2/I
C 2[perERI]となり、N>>IC を仮定すれ
ば、単純ブロック法の約半分となる。
【0076】さらに、プロセッサエレメント上のIB
B ,KB の組み合わせを更新した際に、変化するのが
B のみである場合には、行列要素ブロックP(IB
B),F(IB ,JB )および行列要素ブロックの列
P(IB ,L),P(JB ,L),F(IB ,L),F
(JB ,L)は、プロセッサエレメント上に残して再利
用できるので、通信データ数はさらに減って、4/3N
C +2/3IC 2 [perERI]となる。
【0077】列ブロック法と同様の思想で、さらに密度
行列要素やフォック行列要素の利用効率を高める第5の
手法として、クラスタリング法が、文献2では紹介され
ている。しかしながら、この手法は、負荷分散あるいは
スケーラビリティの観点から劣る手法であるとされてお
り、ここでは説明を省略する。
【0078】
【発明が解決しようとする課題】[カットオフを考慮し
た場合の問題点]上述した文献3に記載されているうち
で、最も優れた第4のアルゴリズムであっても、カット
オフを考慮した場合には不都合が生じる場合がある。そ
のような例を以下に示す。なお、カットオフにより生き
残る割合をα、プロセッサエレメント数をM、1つの2
電子積分G(I,J,K,L)当たりの計算時間をTe
ri(μ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にあるような、せいぜい数1
0Mビット程度の小さな容量のメモリが接続される安価
な専用プロセッサ・エレメントを用いた計算システムで
は、列単位で保持できる行列要素は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の全要素の計算を、
ホスト計算機と、1つまたは複数個のプロセッサエレメ
ントとを有する並列処理装置を用いて行う並列処理方法
において、前記変数R,S,T,Uについて、3重ルー
プを形成し、前記3重ループの最も外側のループは、R
≦NおよびT≦Rなる関係を満たす変数Rと変数Tとの
組み合わせに関するループとし、前記最も外側のループ
の内側の2番目は前記変数Sに関するループ、前記2番
目よりも内側の3番目は前記変数Uに関するループとす
るか、あるいは前記2番目は変数Uに関するループ、前
記3番目は変数Sに関するループとし、前記変数Sのと
りうる値の範囲を1からRの間とし、前記変数Uのとり
うる値の範囲を1からRの間とし、前記3番目のループ
の内側で、所定の前記関数値G(R,S,T,U)の計
算およびその計算結果を用いた所定の前記行列要素Fの
一部の計算を行うものであって、前記2番目および3番
目のループをひとまとまりとして1つのジョブ単位を形
成し、前記ジョブ単位毎に前記複数のプロセッサエレメ
ントに処理させることを特徴とする。
【0088】また、請求項2の発明の並列処理方法は、
N個(Nは正の整数)の縮約シェルを用いて表現される
分子のエネルギーを計算する分子軌道計算を、ホスト計
算機と、1つまたは複数個のプロセッサエレメントとを
有する並列処理装置を用いて行う並列処理方法におい
て、縮約シェルR,S,T,Uのそれぞれに含まれる原
始シェルr,s,t,uのそれぞれの成分である原始基
底関数i,j,k,lをインデックスとして用いて表わ
される2電子積分関数gの関数値g(i,j,k,l)
と;前記原始基底関数kをひとつの構成要素とする縮約
基底関数Kおよび前記原始基底関数lをひとつの構成要
素とする縮約基底関数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をひとつの構成要素とする前記縮約基底関数
I,Jに含まれる全ての前記原始基底関数に関する和で
表わされるフォック行列Fの全ての行列要素F(I,
J)の計算を、最も外側のループは、R≦NおよびT≦
Rなる関係を満たす前記縮約シェルRとTとの組み合わ
せに関するループとし、前記最も外側のループの内側の
2番目は前記縮約シェルSに関するループ、前記2番目
よりも内側の3番目は前記縮約シェルUに関するループ
とするか、あるいは前記2番目は前記縮約シェルUに関
するループ、前記3番目は前記縮約シェルSに関するル
ープとし、前記縮約シェルSのとりうる値の範囲を1か
らRの間とし、前記縮約シェルUのとりうる値の範囲を
1からRの間とし、前記3番目のループの内側で、所定
の2電子積分の計算およびその結果を用いた所定のフォ
ック行列要素の一部の計算を行うものであって、前記2
番目および3番目のループをひとまとまりとして1つの
ジョブ単位を形成し、前記ジョブ単位毎に前記複数のプ
ロセッサ・エレメントに処理を割り当てることを特徴と
する。
【0089】
【作用】上述の構成の請求項1の発明、請求項2の発明
を用いて、フォック行列計算アルゴリズムを行うと、カ
ットオフを考慮して2電子積分の計算数を減少させる場
合においても、ホスト計算機とプロセッサエレメントと
の間の通信性能およびホスト計算機の処理性能に律速さ
れることのない効率的な並列計算によって、フォック行
列を高速に計算することができる。
【0090】
【発明の実施の形態】以下、この発明の実施の形態を、
図を参照しながら説明する。以下に説明する実施の形態
では、図1に示すような安価な計算機システムを用い
る。
【0091】すなわち、図1は、この実施の形態の並列
計算システムの全体の構成を示すもので、ホスト計算機
1に対して、バス3を通じて、複数個のプロセッサエレ
メント2が接続されている。バス3としては、例えばI
EEE1394シリアルバスが用いられる。
【0092】なお、各プロセッサエレメント2のメモリ
容量は、数10Mビット、例えば20Mビットであり、
行列要素が64ビットの浮動小数点数で表わされる密度
行列およびフォック行列のサイズが、10000×10
000であっても、各行列の10列分は十分格納できる
容量のものが用いられる。この程度の容量のメモリを各
プロセッサエレメントに持たせることは、現在の技術で
十分に可能である。
【0093】まず、この実施の形態における行列要素計
算方法と比較するために、従来例のトリプルソート法に
おける全体の計算アルゴリズムを、プログラムコードの
形式で表わしたものを図2に示す。
【0094】図2で、Nshellは縮約シェルの総数
を表わす整数型の変数、R,S,T,Uは縮約シェル番
号に用いる整数型の変数、I,J,K,Lは縮約基底番
号に用いる整数型の変数、G_IJKL,G_IKJ
L,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×(Nshe
ll+1)/2である。以下の説明ではR≧Tを前提と
する。したがって、Rの取りうる範囲は、1からNsh
ellまで、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の(数式4
6)に示すようなものと見積もられる。
【0126】プロセッサエレメント2の数Mを100、
プロセッサエレメント2における原始基底関数で表わし
た2電子積分G(I,J,K,L)当たりの計算時間T
eriを10(μs)、1つの縮約シェルを構成する平
均の縮約基底数aを3、カットオフによる生き残り割合
αを0.05とした場合に、必要な通信性能のRに対す
る依存性を図4に示す。
【0127】この図4からわかるように、縮約シェルR
が小さいごく一部の範囲では、必要な通信性能が100
Mbpsを超えるが、他の殆どの領域では100Mbp
sの通信性能があれば、十分に通信時間を計算時間でカ
バーできることがわかる。
【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)ペア番号が割り当てられたプロ
セッサエレメントに対して送信する(ステップS10
4)。送信される密度行列情報は、カットオフ条件を考
慮して作成されるが、そのときにホスト計算機1が行う
処理内容に関しては後述する。
【0134】プロセッサエレメント2は、このホスト計
算機からの密度行列情報を受信し、受信バッファメモリ
に格納する(ステップS201)。そして、割り当てら
れた(RTペア)のジョブについて、縮約シェルS,U
に関するループを制御して、フォック行列要素の計算を
行う(ステップS202)。そして、計算が終了する
と、求めたフォック行列情報を送信バッファメモリに格
納し、その送信バッファメモリからホスト計算機1に、
その求めたフォック行列情報を送信する(ステップS2
03)。
【0135】ホスト計算機1は、以上のようにして、あ
るプロセッサエレメント2での処理が終了して、そのプ
ロセッサエレメント2からフォック行列情報を受信する
と(ステップS105)、そのプロセッサエレメント2
に対する全てのプロセッサ・エレメントに対する(R
T)ペア番号の割り当てと密度行列情報の送信が終了し
かたどうか判断し(ステップS107)、終了していな
ければ、ステップS103に戻って、新たな(RT)ペ
ア番号の割り当てを決め、その(RT)ペア番号に対応
する密度行列情報を、そのプロセッサエレメント2に送
信する。
【0136】同様の操作を繰り返して、ホスト計算機1
は、全てのプロセッサエレメントに対する(RT)ペア
番号の割り当てと密度行列情報の送信を行い、プロセッ
サエレメントからのフォック行列の受信を待つ。
【0137】ステップS106で、全ての(RT)ペア
番号の処理が終了したと判断すると、ホスト計算機1
は、収集したフォック行列情報をもとに、図26の(数
式14)を解き、新たな係数行列を計算する(ステップ
S107)。そして、新たな係数行列とその直前の係数
行列とを比較して、自己無撞着な解が得られたかどうか
判断する(ステップS108)。そして、両者が十分良
く一致していれば、自己無撞着な解が得られたと判断
し、計算を終了する。そうでなければ、ステップS10
8からステップ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個の縮約シェルの中でT
Uの組み合わせで生き残る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[N
w]の番号までは、整数型データである。また、縮約シ
ェルV[1]に関わる密度行列データブロックから縮約
シェルW[Nw]に関わる密度行列データブロックは、
1つまたは複数の浮動小数点型データ、または、固定小
数点型データにより構成されるブロックである。
【0160】図7の上から2つの縮約シェルRおよび縮
約シェルTの番号により、その密度行列情報を受け取っ
たプロセッサエレメント2が処理すべきRTペア番号が
決まる。ここで、T≦Rであるので、図32の(数式4
8)に示す式によって、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を構成する縮約基底I
1(R)からIi(R)と、M1(V[1])とをイン
デックスとする密度行列要素の領域である。もう1つ
は、縮約シェルTを構成する縮約基底K1(T)からK
k(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+N
v+Nw−1)番地は、縮約シェルW[1]からW[N
w]の番号を格納する領域である。以上には全て整数型
のデータが保存される。
【0174】空き領域を挟んで、2000番地から99
99番地は、縮約シェルV[1]からV[Nv]に係わ
る密度行列データブロックを格納する領域、10000
番地から17999番地は、縮約シェルW[1]からW
[Nw]に係わる密度行列データブロックを格納する領
域である。これらの領域に、P(I,J),P(K,
J),P(I,L),P(K,L)を、それぞれ400
0個ずつ格納することが可能である。
【0175】18000番地から25999番地は、縮
約シェルV[1]からV[Nv]に係わるフォック行列
データブロックを格納する領域、26000番地から3
3999番地は、縮約シェル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を用
意し、初期値をゼロにセットする(ステップS30
5)。次に、ループに入り、変数wを1だけ増加させる
(ステップS306)。次に、メモリから縮約シェルW
[w]の数値を読み出し、それをUに代入する(ステッ
プS307)。
【0182】以下、適当な処理を終了すると、変数wと
縮約シェルWの個数Nwとを比較する(ステップS32
2)。変数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、ステップS3
11およびステップ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)の計算(ステップS31
6)、および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において、ステップS4
01では、プロセッサエレメント2に割り当てる(R
T)ペア番号を決定する。その後、ホスト計算機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、ステップS40
7に順に進む。また、格納可能でなければ、後述する図
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に割り当てられた(R
T)ペア番号に相当する処理に必要な密度行列およびフ
ォック行列の全ては、プロセッサエレメント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に送信する(ステップS40
9)。その後、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に送信する(ステップS41
7)。その後、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
に関するループが終了したと判断すると(ステップS4
35)、図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個のサブジョブを定義する(ステップS43
9)。
【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へ送信し(ステップS44
3)、処理待ちの状態を経て、プロセッサエレメント2
からm2番目の分割に対応するF(I,J),F(K,
J)の全てを受信する(ステップS444)。
【0234】m2に関するループが終了したと判断する
と(ステップS445)、プロセッサエレメント2から
m1番目の分割に対応するF(K,L),F(I,L)
の全てを受信する(ステップS446)。そして、m1
に関するループが終了したと判断すると(ステップS4
47)、図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 バス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 稲畑 深二郎 神奈川県足柄上郡中井町境430 グリーン テクなかい富士ゼロックス株式会社内 (72)発明者 宮川 宣明 神奈川県足柄上郡中井町境430 グリーン テクなかい富士ゼロックス株式会社内 (72)発明者 高島 一 東京都豊島区高田3−24−1 大正製薬株 式会社内 (72)発明者 北村 一泰 東京都豊島区高田3−24−1 大正製薬株 式会社内 (72)発明者 小原 繁 北海道釧路市武佐3−12−358 Fターム(参考) 5B045 AA07 GG12 KK04 5B049 BB07 EE03 EE04 EE41 GG07

Claims (17)

    【特許請求の範囲】
  1. 【請求項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)=F
    1(R,S)+F2(R,S)を要素とする行列Fの全
    要素の計算を、ホスト計算機と、1つまたは複数個のプ
    ロセッサエレメントとを有する並列処理装置を用いて行
    う並列処理方法において、 前記変数R,S,T,Uについて、3重ループを形成
    し、 前記3重ループの最も外側のループは、R≦NおよびT
    ≦Rなる関係を満たす変数Rと変数Tとの組み合わせに
    関するループとし、 前記最も外側のループの内側の2番目は前記変数Sに関
    するループ、前記2番目よりも内側の3番目は前記変数
    Uに関するループとするか、あるいは前記2番目は変数
    Uに関するループ、前記3番目は変数Sに関するループ
    とし、 前記変数Sのとりうる値の範囲を1からRの間とし、 前記変数Uのとりうる値の範囲を1からRの間とし、 前記3番目のループの内側で、所定の前記関数値G
    (R,S,T,U)の計算およびその計算結果を用いた
    所定の前記行列要素Fの一部の計算を行うものであっ
    て、 前記2番目および3番目のループをひとまとまりとして
    1つのジョブ単位を形成し、 前記ジョブ単位毎に前記複数のプロセッサエレメントに
    処理させることを特徴とする並列処理方法。
  2. 【請求項2】N個(Nは正の整数)の縮約シェルを用い
    て表現される分子のエネルギーを計算する分子軌道計算
    を、ホスト計算機と、1つまたは複数個のプロセッサエ
    レメントとを有する並列処理装置を用いて行う並列処理
    方法において、 縮約シェルR,S,T,Uのそれぞれに含まれる原始シ
    ェルr,s,t,uのそれぞれの成分である原始基底関
    数i,j,k,lをインデックスとして用いて表わされ
    る2電子積分関数gの関数値g(i,j,k,l)と;
    前記原始基底関数kをひとつの構成要素とする縮約基底
    関数Kおよび前記原始基底関数lをひとつの構成要素と
    する縮約基底関数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をひとつの構成要素とする前記縮約基底関
    数I,Jに含まれる全ての前記原始基底関数に関する和
    で表わされるフォック行列Fの全ての行列要素F(I,
    J)の計算を、 最も外側のループは、R≦NおよびT≦Rなる関係を満
    たす前記縮約シェルRとTとの組み合わせに関するルー
    プとし、 前記最も外側のループの内側の2番目は前記縮約シェル
    Sに関するループ、前記2番目よりも内側の3番目は前
    記縮約シェルUに関するループとするか、あるいは前記
    2番目は前記縮約シェルUに関するループ、前記3番目
    は前記縮約シェルSに関するループとし、 前記縮約シェルSのとりうる値の範囲を1からRの間と
    し、 前記縮約シェルUのとりうる値の範囲を1からRの間と
    し、 前記3番目のループの内側で、所定の2電子積分の計算
    およびその結果を用いた所定のフォック行列要素の一部
    の計算を行うものであって、 前記2番目および3番目のループをひとまとまりとして
    1つのジョブ単位を形成し、 前記ジョブ単位毎に前記複数のプロセッサ・エレメント
    に処理を割り当てることを特徴とする並列処理方法。
  3. 【請求項3】ホスト計算機と、1つまたは複数個のプロ
    セッサエレメントとを備え、請求項1または請求項2に
    記載の並列処理方法を実行する並列処理装置であって、 前記ホスト計算機は、少なくとも、 前記複数のプロセッサエレメントに対する前記RとTと
    が固定されたジョブ単位の割り当て決定と、 前記プロセッサエレメントに対して送信すべき前記行列
    Pの一部の行列要素の選択と、 前記選択された行列要素の前記プロセッサエレメントに
    対する送信と、 プロセッサ・エレメントから送信された行列Fの一部の
    行列要素の受信と、 前記行列Fを用いた前記行列Pの更新と、を行い、 前記プロセッサエレメントは、前記ホスト計算機との間
    でデータの送受信が可能で、少なくとも、 前記ホスト計算機から送信された前記行列Pの一部の行
    列要素の受信と、 前記Sに関するループの制御と、 前記Uに関するループの制御と、 前記関数G(R,S,T,U)または前記関数g(i,
    j,k,l)の計算と、 前記行列Fの一部の行列要素の計算と、 前記行列Fの一部の行列要素の前記ホスト計算機に対す
    る送信とを行い、かつ、少なくとも前記ホスト計算機か
    ら送信された前記行列Pの一部の行列要素と、 前記ホスト計算機へ送信する前記行列Fの一部の行列要
    素とを格納するデータ格納手段を備えることを特徴とす
    る並列処理装置。
  4. 【請求項4】請求項1に記載の並列処理方法において、 前記関数G(R,S,T,U)に乗じて行列要素F
    (R,S)の計算を行うために用いる行列要素P(T,
    U)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数G(R,S,
    T,U)に乗じるための行列要素P(T,U)を除いた
    全てと、 前記関数G(R,S,T,U)に乗じて行列要素F
    (T,U)の計算を行うために用いる行列要素P(R,
    S)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数G(R,S,
    T,U)に乗じるための行列要素P(R,S)を除いた
    全てと、 前記関数G(R,S,T,U)に乗じて行列要素F
    (R,U)の計算を行うために用いる行列要素P(T,
    S)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数G(R,S,
    T,U)に乗じるための行列要素P(T,S)を除いた
    全てと、 前記関数G(R,S,T,U)に乗じて行列要素F
    (S,T)の計算を行うために用いる行列要素P(R,
    U)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数G(R,S,
    T,U)に乗じるための行列要素P(R,U)を除いた
    全てとを含むデータを、前記変数Sおよび前記変数Uに
    関するループのうち、外側に位置するものの開始前に、
    前記ホスト計算機から前記プロセッサエレメントに転送
    することを特徴とする並列処理方法。
  5. 【請求項5】請求項2に記載の並列処理方法において、 前記関数g(i,j,k,l)に乗じて行列要素F
    (I,J)の計算を行うために用いる行列要素P(K,
    L)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数g(i,j,
    k,l)に乗じるための行列要素P(K,L)を除いた
    全てと、 前記関数g(i,j,k,l)に乗じて行列要素F
    (K,L)の計算を行うために用いる行列要素P(I,
    J)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数g(i,j,
    k,l)に乗じるための行列要素P(I,J)を除いた
    全てと、 前記関数g(i,j,k,l)に乗じて行列要素F
    (I,L)の計算を行うために用いる行列要素P(K,
    J)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数g(i,j,
    k,l)に乗じるための行列要素P(K,J)を除いた
    全てと、 前記関数g(i,j,k,l)に乗じて行列要素F
    (J,K)の計算を行うために用いる行列要素P(I,
    L)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数g(i,j,
    k,l)に乗じるための行列要素P(R,U)またはP
    (I,L)を除いた全てとを含むデータを、前記インデ
    ックスSおよび前記インデックスUに関するループのう
    ち、外側に位置するものの開始前に、前記ホスト計算機
    から前記プロセッサエレメントに転送することを特徴と
    する並列処理方法。
  6. 【請求項6】請求項4に記載の並列処理方法において、 前記ホスト計算機から前記プロセッサエレメントへ送信
    されるデータが、少なくとも、 前記変数Rを表わすデータと前記変数Tを表わすデー
    タ、または前記変数RとTとの組み合わせを一意的に表
    わすデータと、 前記関数G(R,S,T,U)に乗じて行列要素F
    (R,S)の計算を行うために用いる行列要素P(T,
    U)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数G(R,S,
    T,U)に乗じるための行列要素P(T,U)を除いた
    全ての数値データと、 前記関数G(R,S,T,U)に乗じて行列要素F
    (T,U)の計算を行うために用いる行列要素P(R,
    S)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数G(R,S,
    T,U)に乗じるための行列要素P(R,S)を除いた
    全ての数値データと、 前記関数G(R,S,T,U)に乗じて行列要素F
    (R,U)の計算を行うために用いる行列要素P(T,
    S)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数G(R,S,
    T,U)に乗じるための行列要素P(T,S)を除いた
    全ての数値データと、 前記関数G(R,S,T,U)に乗じて行列要素F
    (R,U)の計算を行うために用いる行列要素P(T,
    S)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数G(R,S,
    T,U)に乗じるための行列要素P(T,S)を除いた
    全ての数値データと、 前記行列要素P(T,U)およびP(R,U)を特定す
    る前記変数Uを表わすデータと、 前記行列要素P(R,S)およびP(T,S)を特定す
    る変数Sを表わすデータと、 上記変数Uの個数を表わすデータと、 上記変数Sの個数を表わすデータとから構成されること
    を特徴とする並列処理方法。
  7. 【請求項7】請求項5に記載の並列処理方法において、 前記ホスト計算機から前記プロセッサエレメントへ送信
    されるデータが、少なくとも、 前記インデックスRを表わすデータと前記インデックス
    Tを表わすデータ、または前記インデックスRとTとの
    組み合わせを一意的に表わすデータと、 前記関数g(i,j,k,l)に乗じて行列要素F
    (I,J)の計算を行うために用いる行列要素P(K,
    L)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数g(i,j,
    k,l)に乗じるための行列要素P(K,L)を除いた
    全ての数値データと、 前記関数g(i,j,k,l)に乗じて行列要素F
    (K,L)の計算を行うために用いる行列要素P(I,
    J)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数g(i,j,
    k,l)に乗じるための行列要素P(I,J)を除いた
    全ての数値データと、 前記関数g(i,j,k,l)に乗じて行列要素F
    (I,L)の計算を行うために用いる行列要素P(K,
    J)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している前記関数g(i,j,
    k,l)に乗じるための行列要素P(K,J)を除いた
    全ての数値データと、 前記関数g(i,j,k,l)に乗じて行列要素F
    (I,L)の計算を行うために用いる行列要素P(K,
    J)のうち、前記プロセッサエレメントで計算されない
    ことがあらかじめ判明している、前記関数g(i,j,
    k,l)に乗じるための行列要素P(K,J)を除いた
    全ての数値データと、 前記行列要素P(K,L)およびP(I,L)を特定す
    る、前記インデックスLで代表される縮約基底関数を構
    成要素とする前記縮約シェルUを表わすデータと、 前記行列要素P(I,J)およびP(K,J)を特定す
    る、前記インデックスJで代表される縮約基底関数を構
    成要素とする前記縮約シェルSを表わすデータと、 前記縮約シェルUの個数を表わすデータと、 前記縮約シェルSの個数を表わすデータとから構成され
    ることを特徴とする並列処理方法。
  8. 【請求項8】請求項4に記載の並列処理方法において、 前記プロセッサエレメントで計算された行列要素F
    (R,S)、F(T,U)、F(R,U)、F(S,
    T)の全てを、前記Sおよび前記Uに関するループのう
    ち、外側に位置するものの終了後に、前記プロセッサエ
    レメントから前記ホスト計算機に転送することを特徴と
    する並列処理方法。
  9. 【請求項9】請求項5に記載の並列処理方法において、 前記プロセッサエレメントで計算された行列要素F
    (I,J)、F(K,L)、F(I,L)、F(J,
    K)の全てを、前記Sおよび前記Uに関するループのう
    ち、外側に位置するものの終了後に、前記プロセッサエ
    レメントから前記ホスト計算機に転送することを特徴と
    する並列処理方法。
  10. 【請求項10】請求項6または請求項8に記載の並列処
    理方法において、 前記プロセッサエレメントから前記ホスト計算機へ送信
    されるデータが、少なくとも、 前記プロセッサエレメントで計算された行列要素F
    (R,S)、F(T,U)、F(R,U)、F(T,
    S)から構成されることを特徴とする並列処理方法。
  11. 【請求項11】請求項7または請求項9に記載の並列処
    理方法において、 前記プロセッサエレメントから前記ホスト計算機へ送信
    されるデータが、少なくとも、 前記プロセッサエレメントで計算された行列要素F
    (I,J)、F(K,L)、F(I,L)、F(K,
    J)から構成されることを特徴とする並列処理方法。
  12. 【請求項12】請求項6に記載の並列処理方法におい
    て、 前記プロセッサエレメントにおける前記変数Sおよび前
    記変数Uに関するループ制御は、 前記行列要素P(R,S)およびP(T,S)を特定す
    る変数Sを表わすデータを、その最初から前記変数Sの
    個数を表わすデータで示される個数まで順次読み取りな
    がら前記変数Sに関するループを制御し、 前記行列要素P(T,U)およびP(R,U)を特定す
    る変数Uを表わすデータを、その最初から前記変数Uの
    個数を表わすデータで示される個数まで順次読み取りな
    がら前記変数Uに関するループを制御することにより行
    われることを特徴とする並列処理方法。
  13. 【請求項13】請求項7に記載の並列処理方法におい
    て、 前記プロセッサエレメントにおける前記Sおよび前記U
    に関するループ制御は、 前記行列要素P(I,J)およびP(K,J)を特定す
    る、インデックスJで代表される縮約基底関数を構成要
    素とする縮約シェルSを表わすデータを、その最初から
    前記縮約シェルSの個数を表わすデータで示される個数
    まで順次読み取りながら前記Sに関するループを制御
    し、 前記行列要素P(K,L)およびP(I,L)を特定す
    る、インデックスLで代表される縮約基底関数を構成要
    素とする縮約シェルUを表わすデータを、その最初から
    前記縮約シェルUの個数を表わすデータで示される個数
    まで順次読み取りながら前記Uに関するループを制御す
    ることにより行われることを特徴とする並列処理方法。
  14. 【請求項14】請求項10に記載の並列処理方法におい
    て、 行列要素P(R,S)、P(T,U)、P(R,U)、
    P(T,S)と、行列要素F(R,S)、F(T,
    U)、F(R,U)、F(T,S)との全てを、前記プ
    ロセッサエレメントに備えられたデータ格納手段に格納
    できない場合に、 前記ホスト計算機は、 前記行列要素P(T,U)、P(R,U)、F(T,
    U)、F(R,U)の全てを前記データ格納手段に格納
    可能であれば、 前記行列要素P(T,U)、P(R,U)、F(T,
    U)、F(R,U)の全てとともに前記データ格納手段
    に前記行列要素P(R,S)、P(T,S)、F(R,
    S)、F(T,S)を格納できるように、前記変数Sの
    範囲を区切って、前記ジョブを複数のサブジョブに分割
    し、 前記分割された複数のサブジョブを、同一の前記プロセ
    ッサエレメントに割り当て、 前記複数のサブジョブのうちの最初のサブジョブの開始
    時にだけ、前記プロセッサエレメントに対して前記行列
    要素P(T,U)、P(R,U)を送信し、 前記複数のサブジョブのうちの最後のサブジョブの終了
    時にだけ、前記行列要素F(T,U)、F(R,U)を
    前記プロセッサエレメントから受信し、 前記複数の各サブジョブの開始時に、前記プロセッサエ
    レメントに対して行列要素P(R,S)、P(T,S)
    を送信し、 前記複数の各サブジョブの終了時に、前記行列要素F
    (R,S)、F(T,S)を前記プロセッサエレメント
    から受信するようにし、 前記行列要素P(R,U)、P(T,U)、F(R,
    U)、F(T,U)の全てを前記データ格納手段に格納
    することができず、かつ、前記行列要素P(R,S)、
    P(T,S)、F(R,S)、F(T,S)の全てを、
    前記データ格納手段に格納可能であれば、 前記行列要素P(R,S)、P(T,S)、F(R,
    S)、F(T,S)の全てとともに前記データ格納手段
    に行列要素P(T,U)、P(R,U)、F(T,
    U)、F(R,U)を格納できるように、前記変数Uの
    範囲を区切って、前記ジョブを複数のサブジョブに分割
    し、 前記分割された複数のサブジョブを、同一の前記プロセ
    ッサエレメントに割り当て、 前記複数のサブジョブのうちの最初のサブジョブの開始
    時にだけ、前記プロセッサエレメントに対して前記行列
    要素P(R,S)、P(T,S)を送信し、 前記複数のサブジョブのうちの最後のサブジョブの終了
    時にだけ、前記行列要素F(R,S)、F(T,S)を
    前記プロセッサエレメントから受信し、 前記複数の各サブジョブの開始時に、前記プロセッサエ
    レメントに対して前記行列要素P(T,U)、P(R,
    U)を送信し、 前記複数の各サブジョブの終了時に、前記行列要素F
    (T,U)、F(R,U)を前記プロセッサエレメント
    から受信することを特徴とする並列処理方法。
  15. 【請求項15】請求項11に記載の並列処理方法におい
    て、 行列要素P(I,J)、P(K,L)、P(I,L)、
    P(K,J)と、行列要素F(I,J)、F(K,
    L)、F(I,L)、F(K,J)の全てをプロセッサ
    エレメントに備えられたデータ格納手段に格納できない
    場合に、 前記ホスト計算機は、 前記行列要素P(K,L)、P(I,L)、F(K,
    L)、F(I,L)の全てを前記データ格納手段に格納
    可能であれば、 前記行列要素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の範囲を区切って、前記ジョブを複数のサブジョブ
    に分割し、 前記分割された複数のサブジョブを同一の前記プロセッ
    サエレメントに割り当て、 前記複数のサブジョブのうちの最初のサブジョブの開始
    時にだけ、前記プロセッサエレメントに対して前記行列
    要素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,L)、P(K,L)、F(I,
    L)、F(K,L)の全てを前記データ格納手段に格納
    することができず、かつ、前記行列要素P(I,J)、
    P(K,J)、F(I,J)、F(K,J)の全てを前
    記データ格納手段に格納可能であれば、 前記行列要素P(I,J)、P(K,J)、F(I,
    J)、F(K,J)の全てとともに前記データ格納手段
    に行列要素P(K,L)、P(I,L)、F(K,
    L)、F(I,L)を格納できるように、前記縮約シェ
    ルUの範囲を区切って、前記ジョブを複数のサブジョブ
    に分割し、 前記分割された複数のサブジョブを、同一の前記プロセ
    ッサエレメントに割り当て、 前記複数のサブジョブのうちの最初のサブジョブの開始
    時にだけ、前記プロセッサエレメントに対して前記行列
    要素P(I,J)、P(K,J)を送信し、 前記複数のサブジョブのうちの最後のサブジョブの終了
    時にだけ、前記行列要素F(I,J)、F(K,J)を
    前記プロセッサエレメントから受信し、 前記複数の各サブジョブの開始時に、前記プロセッサエ
    レメントに対して前記行列要素P(K,L)、P(I,
    L)を送信し、 前記複数の各サブジョブの終了時に、前記行列要素F
    (K,L)、F(I,L)を前記プロセッサエレメント
    から受信することを特徴とする並列処理方法。
  16. 【請求項16】請求項10に記載の並列処理方法におい
    て、 行列要素P(R,S)、P(T,U)、P(R,U)、
    P(T,S)と、行列要素F(R,S)、F(T,
    U)、F(R,U)、F(T,S)の全てを、前記プロ
    セッサエレメントに備えられたデータ格納手段に格納で
    きない場合に、 前記ホスト計算機は、 前記行列要素P(R,S)と前記行列要素P(T,S)
    の個数の和が、前記行列要素P(R,U)と前記行列要
    素P(T,U)の個数の和よりも大きく、かつ、前記行
    列要素P(T,U)、P(R,U)、F(T,U)、F
    (R,U)の全てを、前記データ格納手段に格納可能で
    なければ、 前記行列要素P(T,U)、P(R,U)、F(T,
    U)、F(R,U)が前記データ格納手段に格納可能と
    なるように、前記変数Uの範囲を等分割し、 前記等分割された前記行列要素P(T,U)、P(R,
    U)、F(T,U)、F(R,U)とともに前記データ
    格納手段に前記行列要素P(R,S)、P(T,S)、
    F(R,S)、F(T,S)を格納できるように、前記
    変数Sの範囲を区切って、前記ジョブを複数のサブジョ
    ブに分割し、 前記分割された複数のサブジョブを、同一の前記プロセ
    ッサエレメントに割り当て、 前記複数のサブジョブのうちの最初のサブジョブの開始
    時にだけ、前記プロセッサエレメントに対して前記行列
    要素P(T,U)、P(R,U)を送信し、 前記複数のサブジョブのうちの最後のサブジョブの終了
    時にだけ、前記行列要素F(T,U)、F(R,U)を
    前記プロセッサエレメントから受信し、 前記複数の各サブジョブの開始時に、前記プロセッサエ
    レメントに対して前記行列要素P(R,S)、P(T,
    S)を送信し、 前記複数の各サブジョブの終了時に、前記行列要素F
    (R,S)、F(T,S)を前記プロセッサエレメント
    から受信するようにし、 前記行列要素P(R,S)と前記行列要素P(T,S)
    の個数の和が、前記行列要素P(R,U)と前記行列要
    素P(T,U)の個数の和よりも小さいか、または等し
    く、かつ、前記行列要素P(R,S)、P(T,S)、
    F(R,S)、F(T,S)の全てを前記データ格納手
    段に格納可能でなければ、 前記行列要素P(R,S)、P(T,S)、F(R,
    S)、F(T,S)が前記データ格納手段に格納可能と
    なるように、前記変数Sの範囲を等分割し、 前記等分割された前記行列要素P(R,S)、P(T,
    S)、F(R,S)、F(T,S)とともに前記データ
    格納手段に前記行列要素P(T,U)、P(R,U)、
    F(T,U)、F(R,U)を格納できるように、前記
    変数Uの範囲を区切って、前記ジョブを複数のサブジョ
    ブに分割し、 前記分割された複数のサブジョブを、同一の前記プロセ
    ッサ・エレメントに割り当て、 前記複数のサブジョブのうちの最初のサブジョブの開始
    時にだけ、前記プロセッサエレメントに対して前記行列
    要素P(R,S)、P(T,S)を送信し、 前記複数のサブジョブのうちの最後のサブジョブの終了
    時にだけ、前記行列要素F(R,S)、F(T,S)を
    前記プロセッサ・エレメントから受信し、 前記複数の各サブジョブの開始時に、前記プロセッサ・
    エレメントに対して前記行列要素P(T,U)、P
    (R,U)を送信し、 前記複数の各サブジョブの終了時に、前記行列要素F
    (T,U)、F(R,U)を前記プロセッサエレメント
    から受信する、 ことを特徴とする並列処理方法。
  17. 【請求項17】請求項11に記載の並列処理方法におい
    て、 行列要素P(I,J)、P(K,L)、P(I,L)、
    P(K,J)と、行列要素F(I,J)、F(K,
    L)、F(I,L)、F(K,J)の全てを、前記プロ
    セッサエレメントに備えられたデータ格納手段に格納で
    きない場合に、 前記ホスト計算機は、 前記行列要素P(I,J)と前記行列要素P(K,J)
    の個数の和が、前記行列要素P(I,L)と前記行列要
    素P(K,L)の個数の和よりも大きく、かつ、前記行
    列要素P(K,L)、P(I,L)、F(K,L)、F
    (I,L)の全てを前記データ格納手段に格納可能でな
    ければ、 行列要素P(K,L)、P(I,L)、F(K,L)、
    F(I,L)を前記データ格納手段に格納可能となるよ
    うに縮約シェルUの範囲を等分割し、 前記等分割された行列要素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の範囲を区切ってジョブを複数のサブジョブに分割
    し、 前記のように区切られた複数のサブジョブを同一の前記
    プロセッサエレメントに割り当て、 前記複数のサブジョブのうちの最初のサブジョブの開始
    時にだけ前記プロセッサ・エレメントに対して行列要素
    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(I,L)と前記行列要素P(K,
    L)の個数の和よりも小さいか、または等しく、かつ、
    前記行列要素P(I,J)、P(K,J)、F(I,
    J)、F(K,J)の全てを前記データ格納手段に格納
    可能でなければ、 前記行列要素P(I,J)、P(K,J)、F(I,
    J)、F(K,J)を前記データ格納手段に格納可能と
    なるように、前記縮約シェルSの範囲を等分割し、 前記等分割された前記行列要素P(I,J)、P(K,
    J)、F(I,J)、F(K,J)とともに前記データ
    格納手段に前記行列要素P(K,L)、P(I,L)、
    F(K,L)、F(I,L)を格納できるように、前記
    縮約シェルUの範囲を区切って、前記ジョブを複数のサ
    ブジョブに分割し、 前記分割された複数のサブジョブを、同一の前記プロセ
    ッサエレメントに割り当て、 前記複数のサブジョブのうちの最初のサブジョブの開始
    時にだけ、前記プロセッサエレメントに対して前記行列
    要素P(I,J)、P(K,J)を送信し、 前記複数のサブジョブのうちの最後のサブジョブの終了
    時にだけ、前記行列要素F(I,J)、F(K,J)を
    前記プロセッサエレメントから受信し、 前記複数の各サブジョブの開始時に、前記プロセッサエ
    レメントに対して行列要素P(K,L)、P(I,L)
    を送信し、 前記複数の各サブジョブの終了時に、前記行列要素F
    (K,L)、F(I,L)を前記プロセッサエレメント
    から受信することを特徴とする並列処理方法。
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 true JP2000298658A (ja) 2000-10-24
JP4159699B2 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001084343A1 (fr) * 2000-04-28 2001-11-08 Taisho Pharmaceutical Co., Ltd. Procede d'attribution de travail dans un procede de traitement en parallele et procede de traitement en parallele correspondant
WO2005029352A1 (ja) * 2003-09-22 2005-03-31 Nec Corporation 並列計算方法及び装置
JP2009146083A (ja) * 2007-12-13 2009-07-02 Nec Corp 資源量見積り装置及び資源量見積り方法並びにプログラム
US8386193B2 (en) 2004-09-27 2013-02-26 Japan Science And Technology Agency Molecular orbital computing device for elongation method

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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 並列計算装置および並列計算方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001084343A1 (fr) * 2000-04-28 2001-11-08 Taisho Pharmaceutical Co., Ltd. Procede d'attribution de travail dans un procede de traitement en parallele et procede de traitement en parallele correspondant
AU771360B2 (en) * 2000-04-28 2004-03-18 Honda Motor Co. Ltd. Method for assigning job in parallel processing method and parallel processing method
US7370328B2 (en) 2000-04-28 2008-05-06 Honda Motor Co., Ltd. Method for assigning job in parallel processing method and parallel processing method
WO2005029352A1 (ja) * 2003-09-22 2005-03-31 Nec Corporation 並列計算方法及び装置
JPWO2005029352A1 (ja) * 2003-09-22 2006-11-30 日本電気株式会社 並列計算方法及び装置
JP4612546B2 (ja) * 2003-09-22 2011-01-12 日本電気株式会社 並列計算方法及び装置
US7885796B2 (en) 2003-09-22 2011-02-08 Nec Soft, Ltd. Parallel calculation method and device
US8386193B2 (en) 2004-09-27 2013-02-26 Japan Science And Technology Agency Molecular orbital computing device for elongation method
JP2009146083A (ja) * 2007-12-13 2009-07-02 Nec Corp 資源量見積り装置及び資源量見積り方法並びにプログラム

Also Published As

Publication number Publication date
US6799151B1 (en) 2004-09-28
JP4159699B2 (ja) 2008-10-01

Similar Documents

Publication Publication Date Title
JP4475614B2 (ja) 並列処理方法におけるジョブの割り当て方法および並列処理方法
Choi et al. PUMMA: Parallel universal matrix multiplication algorithms on distributed memory concurrent computers
Solomonik et al. Communication-optimal parallel 2.5 D matrix multiplication and LU factorization algorithms
JP2021144750A (ja) ディープニューラルネットワーク用のアクセラレータ
Wardono et al. A tabu search algorithm for the multi-stage parallel machine problem with limited buffer capacities
Choi A new parallel matrix multiplication algorithm on distributed‐memory concurrent computers
Solomonik et al. Minimizing communication in all-pairs shortest paths
Trifunović et al. Parallel multilevel algorithms for hypergraph partitioning
Bienz et al. Node aware sparse matrix–vector multiplication
Chtchelkanova et al. Parallel implementation of BLAS: General techniques for level 3 BLAS
CN102541858A (zh) 基于映射和规约的数据均衡性处理方法、装置及系统
JP2000298658A (ja) 並列処理方法および並列処理装置
Michel et al. Toward scalable many-body calculations for nuclear open quantum systems using the Gamow Shell Model
CN104636315B (zh) 面向gpdsp的矩阵lu分解向量化计算的方法
Sidje Alternatives for parallel Krylov subspace basis computation
Yamazaki et al. On techniques to improve robustness and scalability of the Schur complement method
Rauber et al. Parallel iterated Runge-Kutta methods and applications
JP2000305923A (ja) 行列要素の並列計算方法および分子軌道計算方法
Rauber et al. Load balancing schemes for extrapolation methods
JP6666548B2 (ja) 並列計算機、fft演算プログラムおよびfft演算方法
Hunold et al. Multilevel hierarchical matrix multiplication on clusters
JPH0590141A (ja) 荷電ビーム描画用データ作成装置
Zhang et al. High-performance homomorphic matrix completion on multiple gpus
WO2005029352A1 (ja) 並列計算方法及び装置
Ballesteros et al. An accurate and efficient fragmentation approach via the generalized many-body expansion for density matrices

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