(57)【特許請求の範囲】
【請求項１】
通信機器を介し相互に接続された複数の計算機からなる計算機クラスタを使用し、分子軌道法におけるハートリー・フォック法の計算を下記の式(a1)に基づくフォック行列Ｆを用いて計算する方法であり、前記計算機クラスタのノード数をｍとして、前記式(a1)を分解して得られる下記の式(a2)に基づくフォック行列を計算するための並列計算方法であって、
【数１】
0004612546.tif 000025
【数２】
0004612546.tif 000026
ここで、Ｆrsはフォック行列Ｆの行列要素であり、ＨrsはＨコア積分を表す行列Ｈの行列要素であり、Ｊrsはクーロン積分を表す行列Ｊの行列要素であり、Ｋrsは交換積分を表す行列Ｋの行列要素であり、ＤtuとＤtsは密度行列Ｄの行列要素であり、(ｒｓ｜ｔｕ)と(ｒｔ｜ｓｕ)は二電子積分の配列要素であり、Ｎを原子軌道数を表すパラメータとしてｒ，ｓ，ｔ，ｕはそれぞれ独立に１以上Ｎ以下の整数であり、
ｒ，ｔの分割数が等しく、かつ、ｓ，ｕの分割数が等しくなるように、行列Ｆ，Ｈ，Ｄ，Ｊ，Ｋは分割数Ｍの部分行列に分割され、二電子積分はＭ2個の部分に分割され、
分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕの各範囲を前記各計算機に割り当て、
割り当てられた範囲にしたがって前記部分行列は前記各計算機に重複なく格納され、
割り当てられた範囲にしたがって前記各計算機は二電子積分を計算することとし、
前記各計算機は、前記行列を分割した前記部分行列を格納する行列格納部と、前記計算機クラスタ中の他の計算機に対して前記部分行列を送受信する転送制御部と、前記行列格納部に格納された前記部分行列に関する演算を実行する演算処理部と、演算と転送との繰り返しの制御を行う制御部と、を備え、
前記複数の計算機のおのおのを識別する指標をｉ，ｊとして前記各計算機をＰ(ｉ，ｊ)で表し、ｉ及びｊの最大値をそれぞれｉmax及びｊmaxとし、
部分行列の個数が分割数Ｍとなるように分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕが前記各計算機に割り当てられた範囲をＲ，Ｓ，Ｔ，Ｕで表し、
前記密度行列の要素がＤtu及びＤtsで表される前記密度行列Ｄの分割された部分密度行列をそれぞれＤ(ＴＵ)及びＤ(ＴＳ)とし、
行列要素がＪrsで表されるクーロン積分を表す前記行列Ｊの分割された部分行列をＪ(ＲＳ)とし、
行列要素がＫruで表される交換積分を表す前記行列Ｋの分割された部分行列をＫ(ＲＵ)とし、
前記密度行列Ｄを複数の部分密度行列Ｄ(ＴＵ)及びＤ(ＴＳ)に分割して該複数の部分密度行列Ｄ(ＴＵ)及びＤ(ＴＳ)を前記複数の計算機の各々の行列格納部に分散して格納する段階と、
前記各計算機において当該計算機の演算処理部が前記行列格納部に格納された前記部分密度行列Ｄ(ＴＵ)及びＤ(ＴＳ)を用いて前記行列Ｊ及び前記行列Ｋの一部分を計算する第１の段階と、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、転送条件が成立するときに、前記行列格納部に格納されている部分行列Ｋ(ＲＵ)を計算機Ｐ(ｉ，ｊ＋１)に送信し、かつ、計算機Ｐ(ｉ，ｊ−１)から転送されてきた前記部分行列Ｋ(ＲＵ)を前記行列格納部に格納する第２の段階と、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分密度行列Ｄ(ＴＳ)を計算機Ｐ(ｉ＋１，ｊ)に送信し、かつ、計算機Ｐ(ｉ−１，ｊ)から転送されてきた前記部分密度行列Ｄ(ＴＳ)を前記行列格納部に格納する第３の段階と、
ｋ＝(ｊ−１)ｉmax＋ｉとして計算機Ｐ(ｉ，ｊ)を計算機Ｐ(ｋ)と表すことにして、前記各計算機Ｐ(ｋ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分密度行列Ｄ(ＴＵ)を計算機Ｐ(ｋ＋１)に送信し、かつ、計算機Ｐ(ｋ−１)から転送されてきた前記部分密度行列Ｄ(ＴＵ)を前記行列格納部に格納する第４の段階と、
を有し、
ｎを部分密度行列Ｄ(ＴＳ)が転送されるたびに１増加する０から始まる番号とし、ｔ＝ｍ／ｊmaxとして、前記転送条件はｉ＝(ｎ ｍｏｄ ｔ)＋１が成り立つときであり、
前記制御部が、前記転送制御部と前記演算処理部とに前記第１乃至第４の段階を前記ノード数ｍだけ繰り返させ、これにより前記フォック行列を計算する、並列計算方法。
【請求項２】
通信機器を介し相互に接続された複数の計算機からなる計算機クラスタを使用し、分子軌道法におけるハートリー・フォック法の計算を下記の式(a1)に基づくフォック行列Ｆを用いて計算する方法であり、前記計算機クラスタのノード数をｍとして、前記式(a1)を分解して得られる下記の式(a3)に基づくフォック行列を計算するための並列計算方法であって、
【数１１】
0004612546.tif 000027
【数３】
0004612546.tif 000028
ここで、Ｆrsはフォック行列Ｆの行列要素であり、ＨrsはＨコア積分を表す行列Ｈの行列要素であり、Ｊrsはクーロン積分を表す行列Ｊの行列要素であり、Ｋrsは交換積分を表す行列Ｋの行列要素であり、Ｄtu，Ｄrs，Ｄts及びＤruは密度行列Ｄの行列要素であり、(ｒｓ｜ｔｕ)と(ｒｔ｜ｓｕ)は二電子積分の配列要素であり、Ｎを原子軌道数を表すパラメータとしてｒ，ｓ，ｔ，ｕはそれぞれ独立に１以上Ｎ以下の整数であり、ｍ＝（ｓ−１）Ｎ＋ｒ及びｎ＝（ｕ−１）Ｎ＋ｔとして二電子積分の配列要素を(ｍ｜ｎ)として表すと、Ｊ１rsは二電子積分の条件ｍ≦ｎを満たす配列要素(ｍ｜ｎ)を使用したクーロン積分の一部を表す行列Ｊ１の行列要素であり、Ｊ２rsは二電子積分の条件ｍ≧ｎを満たす配列要素(ｍ｜ｎ)を使用したクーロン積分の一部を表す行列Ｊ２の行列要素であり、Ｋ１rsは二電子積分の条件ｍ≦ｎを満たす配列要素(ｍ｜ｎ)を使用した交換積分の一部を表す行列Ｋ１の行列要素であり、Ｋ２rsは二電子積分の条件ｍ≧ｎを満たす配列要素(ｍ｜ｎ)を使用した交換積分の一部を表す行列Ｋ２の行列要素であり、ｄ(ｍ，ｎ)は対角要素が１／２かつ非対角要素が１のＮ2×Ｎ2個の要素を持つ行列ｄの行列要素であり、
ｒ，ｔの分割数が等しく、かつ、ｓ，ｕの分割数が等しくなるように、行列Ｆ，Ｈ，Ｄ，Ｊ，Ｊ１，Ｊ２，Ｋ，Ｋ１，Ｋ２は分割数Ｍの部分行列に分割され、二電子積分はＭ2個の部分に分割され、
分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕの各範囲を前記各計算機に割り当て、
割り当てられた範囲にしたがって前記部分行列は前記各計算機に重複なく格納され、
割り当てられた範囲にしたがって前記各計算機は二電子積分を計算することとし、
前記各計算機は、前記行列を分割した前記部分行列を格納する行列格納部と、前記計算機クラスタ中の他の計算機に対して前記部分行列を送受信する転送制御部と、前記行列格納部に格納された前記部分行列に関する演算を実行する演算処理部と、演算と転送との繰り返しの制御を行う制御部と、を備え、
前記複数の計算機のおのおのを識別する指標をｉ，ｊとして前記各計算機をＰ(ｉ，ｊ)で表し、ｉ及びｊの最大値をそれぞれｉmax及びｊmaxとし、
部分行列の個数が分割数Ｍとなるように分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕが前記各計算機に割り当てられた範囲をＲ，Ｓ，Ｔ，Ｕで表し、
前記密度行列の要素がＤtu，Ｄrs，Ｄts及びＤruで表される前記密度行列Ｄの分割された部分密度行列をそれぞれＤ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)とし、
行列要素がＪ１rsで表されるクーロン積分の一部を表す前記行列Ｊ１の分割された部分行列をＪ１(ＲＳ)とし、
行列要素がＪ２tuで表されるクーロン積分の一部を表す前記行列Ｊ２の分割された部分行列をＪ２(ＴＵ)とし、
行列要素がＫ１ruで表される交換積分の一部を表す前記行列Ｋ１の分割された部分行列をＫ１(ＲＵ)とし、
行列要素がＫ２tsで表される交換積分の一部を表す前記行列Ｋ２の分割された部分行列をＫ２(ＴＳ)とし、
前記密度行列Ｄを複数の前記部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)に分割して該複数の部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)を前記複数の計算機の各々の行列格納部に分散して格納する段階と、
前記各計算機において当該計算機の演算処理部が、第１乃至第４の条件のいずれかが満たされるときに、前記行列格納部に格納された前記部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)を用いて前記行列Ｊ１，Ｊ２，Ｋ１及びＫ２の一部分を計算する第１の段階と、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、転送条件が成立するときに、前記行列格納部に格納されている前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を計算機Ｐ(ｉ，ｊ＋１)に送信し、かつ、計算機Ｐ(ｉ，ｊ−１)から転送されてきた前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を前記行列格納部に格納する第２の段階と、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を計算機Ｐ(ｉ＋１，ｊ)に送信し、かつ、計算機Ｐ(ｉ−１，ｊ)から転送されてきた前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を前記行列格納部に格納する第３の段階と、
ｋ＝(ｊ−１)ｉmax＋ｉとして計算機Ｐ(ｉ，ｊ)を計算機Ｐ(ｋ)と表すことにして、前記各計算機Ｐ(ｋ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を計算機Ｐ(ｋ＋１)に送信し、かつ、計算機Ｐ(ｋ−１)から転送されてきた前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を前記行列格納部に格納する第４の段階と、
を有し、
ｎを部分密度行列Ｄ(ＴＳ)が転送されるたびに１増加する０から始まる番号とし、ｔ＝ｍ／ｊmaxとして、前記転送条件はｉ＝(ｎ ｍｏｄ ｔ)＋１が成り立つときであり、
μ＝(ｊ−１)ｉmax＋ｉ    （ｉ，ｊ＝｛１，２｝），
ν＝(ｌ−１)ｋmax＋ｋ    （ｋ，ｌ＝｛ａ，ｂ｝）として、
前記第１の条件はμ≧νであり、
前記第２の条件はμ≦νであり、
前記第３の条件は
μ＝ν，  μ＋ν＝奇数  ｆｏｒ  μ＜ν，  μ＋ν＝偶数  ｆｏｒ  μ＞ν
であり、
前記第４の条件は、
μ＝ν，  μ＋ν＝奇数  ｆｏｒ  μ＞ν，  μ＋ν＝偶数  ｆｏｒ  μ＜ν
であり、
前記制御部が、前記転送制御部と前記演算処理部とに前記第１乃至第４の段階を前記ノード数だけ繰り返させ、これにより前記行列Ｊ，Ｋ及び前記フォック行列を計算する、並列計算方法。
【請求項３】
通信機器を介し相互に接続された複数の計算機からなる計算機クラスタを使用し、分子軌道法におけるハートリー・フォック法の計算を下記の式(a1)に基づくフォック行列Ｆを用いて計算する方法であり、前記計算機クラスタのノード数をｍとして、前記式(a1)を分解して得られる下記の式(a3)に基づくフォック行列を計算するための並列計算方法であって、
【数１２】
0004612546.tif 000029
【数４】
0004612546.tif 000030
ここで、Ｆrsはフォック行列Ｆの行列要素であり、ＨrsはＨコア積分を表す行列Ｈの行列要素であり、Ｊrsはクーロン積分を表す行列Ｊの行列要素であり、Ｋrsは交換積分を表す行列Ｋの行列要素であり、Ｄtu，Ｄrs，Ｄts及びＤruは密度行列Ｄの行列要素であり、(ｒｓ｜ｔｕ)と(ｒｔ｜ｓｕ)は二電子積分の配列要素であり、Ｎを原子軌道数を表すパラメータとしてｒ，ｓ，ｔ，ｕはそれぞれ独立に１以上Ｎ以下の整数であり、ｍ＝（ｓ−１）Ｎ＋ｒ及びｎ＝（ｕ−１）Ｎ＋ｔとして二電子積分の配列要素を(ｍ｜ｎ)として表すと、Ｊ１rsは二電子積分の条件ｍ≦ｎを満たす配列要素(ｍ｜ｎ)を使用したクーロン積分の一部を表す行列Ｊ１の行列要素であり、Ｊ２rsは二電子積分の条件ｍ≧ｎを満たす配列要素(ｍ｜ｎ)を使用したクーロン積分の一部を表す行列Ｊ２の行列要素であり、Ｋ１rsは二電子積分の条件ｍ≦ｎを満たす配列要素(ｍ｜ｎ)を使用した交換積分の一部を表す行列Ｋ１の行列要素であり、Ｋ２rsは二電子積分の条件ｍ≧ｎを満たす配列要素(ｍ｜ｎ)を使用した交換積分の一部を表す行列Ｋ２の行列要素であり、ｄ(ｍ，ｎ)は対角要素が１／２かつ非対角要素が１のＮ2×Ｎ2個の要素を持つ行列ｄの行列要素であり、
ｒ，ｔの分割数が等しく、かつ、ｓ，ｕの分割数が等しくなるように、行列Ｆ，Ｈ，Ｄ，Ｊ，Ｊ１，Ｊ２，Ｋ，Ｋ１，Ｋ２は分割数Ｍの部分行列に分割され、二電子積分はＭ2個の部分に分割され、
分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕの各範囲を前記各計算機に割り当て、
割り当てられた範囲にしたがって前記部分行列は前記各計算機に重複なく格納され、
割り当てられた範囲にしたがって前記各計算機は二電子積分を計算することとし、
前記各計算機は、前記行列を分割した前記部分行列を格納する行列格納部と、前記計算機クラスタ中の他の計算機に対して前記部分行列を送受信する転送制御部と、前記行列格納部に格納された前記部分行列に関する演算を実行する演算処理部と、演算と転送との繰り返しの制御を行う制御部と、を備え、
前記複数の計算機のおのおのを識別する指標をｉ，ｊとして前記各計算機をＰ(ｉ，ｊ)で表し、ｉ及びｊの最大値をそれぞれｉmax及びｊmaxとし、
部分行列の個数が分割数Ｍとなるように分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕが前記各計算機に割り当てられた範囲をＲ，Ｓ，Ｔ，Ｕで表し、
前記密度行列の要素がＤtu，Ｄrs，Ｄts及びＤruで表される前記密度行列Ｄの分割された部分密度行列をそれぞれＤ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)とし、
行列要素がＪ１rsで表されるクーロン積分の一部を表す前記行列Ｊ１の分割された部分行列をＪ１(ＲＳ)とし、
行列要素がＪ２tuで表されるクーロン積分の一部を表す前記行列Ｊ２の分割された部分行列をＪ２(ＴＵ)とし、
行列要素がＫ１ruで表される交換積分の一部を表す前記行列Ｋ１の分割された部分行列をＫ１(ＲＵ)とし、
行列要素がＫ２tsで表される交換積分の一部を表す前記行列Ｋ２の分割された部分行列をＫ２(ＴＳ)とし、
前記密度行列Ｄを複数の部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)に分割して該複数の部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)を前記複数の計算機の各々の行列格納部に分散して格納する段階と、
前記各計算機において当該計算機の演算処理部が、計算条件が満たされるときに、前記行列格納部に格納された前記部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)を用いて前記行列Ｊ１，Ｊ２，Ｋ１及びＫ２の一部分を計算する第１の段階と、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、転送条件が成立するときに、前記行列格納部に格納されている前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を計算機Ｐ(ｉ，ｊ＋１)に送信し、かつ、計算機Ｐ(ｉ，ｊ−１)から転送されてきた前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を前記行列格納部に格納する第２の段階と、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を計算機Ｐ(ｉ＋２，ｊ)に送信し、かつ、計算機Ｐ(ｉ−２，ｊ)から転送されてきた前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を前記行列格納部に格納する第３の段階と、
ｋ＝(ｊ−１)ｉmax＋ｉとして計算機Ｐ(ｉ，ｊ)を計算機Ｐ(ｋ)と表すことにして、前記各計算機Ｐ(ｋ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を計算機Ｐ(ｋ＋２)に送信し、かつ、計算機Ｐ(ｋ−２)から転送されてきた前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を前記行列格納部に格納する第４の段階と、
前記制御部が、前記転送制御部と前記演算処理部とに前記第１乃至第４の段階を（ノード数／２）に相当する回数だけ繰り返させることによって、前記行列Ｊ１，Ｊ２，Ｋ１，Ｋ２の一部分を計算する第５の段階と、
前記第５の段階による繰り返しののち、各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、転送条件が成立するときに、前記行列格納部に格納されている前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を計算機Ｐ(ｉ，ｊ＋１)に送信し、かつ、計算機Ｐ(ｉ，ｊ−１)から転送されてきた前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を前記行列格納部に格納する第６の段階と、
前記第５の段階による繰り返しののち、前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を計算機Ｐ(ｉ＋１，ｊ)に送信し、かつ、計算機Ｐ(ｉ−１，ｊ)から転送されてきた前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を前記行列格納部に格納する第７の段階と、
前記第５の段階による繰り返しののち、前記各計算機Ｐ(ｋ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を計算機Ｐ(ｋ＋１)に送信し、かつ、計算機Ｐ(ｋ−１)から転送されてきた前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を前記行列格納部に格納する第８の段階と、
を有し、
ｎを部分密度行列Ｄ(ＴＳ)が転送されるたびに１増加する０から始まる番号とし、ｔ＝ｍ／ｊmaxとして、前記転送条件はｉ＝(ｎ ｍｏｄ ｔ)＋１が成り立つときであり、
μ＝(ｊ−１)ｉmax＋ｉ    （ｉ，ｊ＝｛１，２｝），
ν＝(ｌ−１)ｋmax＋ｋ    （ｋ，ｌ＝｛ａ，ｂ｝）として、
前記計算条件は
μ＝ν，  μ＋ν＝奇数  ｆｏｒ  μ＜ν，  μ＋ν＝偶数  ｆｏｒ  μ＞ν
である、前記行列Ｊ，Ｋ及び前記フォック行列を計算する、並列計算方法。
【請求項４】
分子軌道法におけるハートリー・フォック法の計算を下記の式(a1)に基づくフォック行列Ｆを用いて計算する並列計算装置であり、前記式(a1)を分解して得られる下記の式(a2)に基づくフォック行列を計算するための並列計算装置であって、
【数５】
0004612546.tif 000031
【数６】
0004612546.tif 000032
ここで、Ｆrsはフォック行列Ｆの行列要素であり、ＨrsはＨコア積分を表す行列Ｈの行列要素であり、Ｊrsはクーロン積分を表す行列Ｊの行列要素であり、Ｋrsは交換積分を表す行列Ｋの行列要素であり、ＤtuとＤtsは密度行列Ｄの行列要素であり、(ｒｓ｜ｔｕ)と(ｒｔ｜ｓｕ)は二電子積分の配列要素であり、Ｎを原子軌道数を表すパラメータとしてｒ，ｓ，ｔ，ｕはそれぞれ独立に１以上Ｎ以下の整数であり、
通信機器を介し相互に接続された複数の計算機を備える計算機クラスタを有し、
前記計算機クラスタのノード数をｍとし、
ｒ，ｔの分割数が等しく、かつ、ｓ，ｕの分割数が等しくなるように、行列Ｆ，Ｈ，Ｄ，Ｊ，Ｋは分割数Ｍの部分行列に分割され、二電子積分はＭ2個の部分に分割され、
分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕの各範囲が前記各計算機に割り当てられ、
割り当てられた範囲にしたがって前記部分行列は前記各計算機に重複なく格納され、
割り当てられた範囲にしたがって前記各計算機は二電子積分を計算することとし、
前記各計算機は、前記行列を分割した部分行列を格納する行列格納部と、前記計算機クラスタ中の他の計算機に対して前記部分行列を送受信する転送制御部と、前記行列格納部に格納された前記部分行列に関する演算を実行する演算処理部と、を有し、
前記複数の計算機のおのおのを識別する指標をｉ，ｊとして前記各計算機をＰ(ｉ，ｊ)で表し、ｉ及びｊの最大値をそれぞれｉmax及びｊmaxとし、
部分行列の個数が分割数Ｍとなるように分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕが前記各計算機に割り当てられた範囲をＲ，Ｓ，Ｔ，Ｕで表し、
前記密度行列の要素がＤtu及びＤtsで表される前記密度行列Ｄの分割された部分密度行列をそれぞれＤ(ＴＵ)及びＤ(ＴＳ)とし、
行列要素がＪrsで表されるクーロン積分を表す前記行列Ｊの分割された部分行列をＪ(ＲＳ)とし、
行列要素がＫruで表される交換積分を表す前記行列Ｋの分割された部分行列をＫ(ＲＵ)とし、
前記密度行列Ｄが前記部分密度行列Ｄ(ＴＵ)及びＤ(ＴＳ)に分割されて該複数の部分密度行列Ｄ(ＴＵ)及びＤ(ＴＳ)が前記複数の計算機の各々の行列格納部に分散して格納され、
前記各計算機において当該計算機の演算処理部が前記行列格納部に格納された前記部分密度行列Ｄ(ＴＵ)及びＤ(ＴＳ)を用いて前記行列Ｊ及び前記行列Ｋの一部分を計算する処理を第１の処理とし、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、転送条件が成立するときに、前記行列格納部に格納されている前記部分行列Ｋ(ＲＵ)を計算機Ｐ(ｉ，ｊ＋１)に送信し、かつ、計算機Ｐ(ｉ，ｊ−１)から転送されてきた前記部分行列Ｋ(ＲＵ)を前記行列格納部に格納する処理を第２の処理とし、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分密度行列Ｄ(ＴＳ)を計算機Ｐ(ｉ＋１，ｊ)に送信し、かつ、計算機Ｐ(ｉ−１，ｊ)から転送されてきた前記部分密度行列Ｄ(ＴＳ)を前記行列格納部に格納する処理を第３の処理とし、
ｋ＝(ｊ−１)ｉmax＋ｉとして計算機Ｐ(ｉ，ｊ)を計算機Ｐ(ｋ)と表すことにして、前記各計算機Ｐ(ｋ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分密度行列Ｄ(ＴＵ)を計算機Ｐ(ｋ＋１)に送信し、かつ、計算機Ｐ(ｋ−１)から転送されてきた前記部分密度行列Ｄ(ＴＵ)を前記行列格納部に格納する処理を第４の処理とし、
ｎを部分密度行列Ｄ(ＴＳ)が転送されるたびに１増加する０から始まる番号とし、ｔ＝ｍ／ｊmaxとして、前記転送条件はｉ＝(ｎ ｍｏｄ ｔ)＋１が成り立つときであり、
前記第１乃至第４の処理が前記ノード数ｍだけ繰り返され、これにより前記フォック行列が算出される、並列計算装置。
【請求項５】
分子軌道法におけるハートリー・フォック法の計算を下記の式(a1)に基づくフォック行列Ｆを用いて計算する並列計算装置であり、前記式(a1)を分解して得られる下記の式(a3)に基づくフォック行列を計算するための並列計算装置であって、
【数１３】
0004612546.tif 000033
【数７】
0004612546.tif 000034
ここで、Ｆrsはフォック行列Ｆの行列要素であり、ＨrsはＨコア積分を表す行列Ｈの行列要素であり、Ｊrsはクーロン積分を表す行列Ｊの行列要素であり、Ｋrsは交換積分を表す行列Ｋの行列要素であり、Ｄtu，Ｄrs，Ｄts及びＤruは密度行列Ｄの行列要素であり、(ｒｓ｜ｔｕ)と(ｒｔ｜ｓｕ)は二電子積分の配列要素であり、Ｎを原子軌道数を表すパラメータとしてｒ，ｓ，ｔ，ｕはそれぞれ独立に１以上Ｎ以下の整数であり、ｍ＝（ｓ−１）Ｎ＋ｒ及びｎ＝（ｕ−１）Ｎ＋ｔとして二電子積分の配列要素を(ｍ｜ｎ)として表すと、Ｊ１rsは二電子積分の条件ｍ≦ｎを満たす配列要素(ｍ｜ｎ)を使用したクーロン積分の一部を表す行列Ｊ１の行列要素であり、Ｊ２rsは二電子積分の条件ｍ≧ｎを満たす配列要素(ｍ｜ｎ)を使用したクーロン積分の一部を表す行列Ｊ２の行列要素であり、Ｋ１rsは二電子積分の条件ｍ≦ｎを満たす配列要素(ｍ｜ｎ)を使用した交換積分の一部を表す行列Ｋ１の行列要素であり、Ｋ２rsは二電子積分の条件ｍ≧ｎを満たす配列要素(ｍ｜ｎ)を使用した交換積分の一部を表す行列Ｋ２の行列要素であり、ｄ(ｍ，ｎ)は対角要素が１／２かつ非対角要素が１のＮ2×Ｎ2個の要素を持つ行列ｄの行列要素であり、
通信機器を介し相互に接続された複数の計算機を備える計算機クラスタを有し、
前記計算機クラスタのノード数をｍとし、
ｒ，ｔの分割数が等しく、かつ、ｓ，ｕの分割数が等しくなるように、行列Ｆ，Ｈ，Ｄ，Ｊ，Ｊ１，Ｊ２，Ｋ，Ｋ１，Ｋ２は分割数Ｍの部分行列に分割され、二電子積分はＭ2個の部分に分割され、
分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕの各範囲が前記各計算機に割り当てられ、
割り当てられた範囲にしたがって前記部分行列は前記各計算機に重複なく格納され、
割り当てられた範囲にしたがって前記各計算機は二電子積分を計算することとし、
前記各計算機は、前記行列を分割した部分行列を格納する行列格納部と、前記計算機クラスタ中の他の計算機に対して前記部分行列を送受信する転送制御部と、前記行列格納部に格納された前記部分行列に関する演算を実行する演算処理部と、を有し、
前記複数の計算機のおのおのを識別する指標をｉ，ｊとして前記各計算機をＰ(ｉ，ｊ)で表し、ｉ及びｊの最大値をそれぞれｉmax及びｊmaxとし、
部分行列の個数が分割数Ｍとなるように分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕが前記各計算機に割り当てられた範囲をＲ，Ｓ，Ｔ，Ｕで表し、
前記密度行列の要素がＤtu，Ｄrs，Ｄts及びＤruで表される前記密度行列Ｄの分割された部分密度行列をそれぞれＤ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)とし、
行列要素がＪ１rsで表されるクーロン積分の一部を表す前記行列Ｊ１の分割された部分行列をＪ１(ＲＳ)とし、
行列要素がＪ２tuで表されるクーロン積分の一部を表す前記行列Ｊ２の分割された部分行列をＪ２(ＴＵ)とし、
行列要素がＫ１ruで表される交換積分の一部を表す前記行列Ｋ１の分割された部分行列をＫ１(ＲＵ)とし、
行列要素がＫ２tsで表される交換積分の一部を表す前記行列Ｋ２の分割された部分行列をＫ２(ＴＳ)とし、
前記密度行列Ｄが複数の前記部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)に分割されて該複数の部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)が前記複数の計算機のそれぞれの行列格納部に分散して格納され、
前記各計算機において当該計算機の演算処理部が、第１乃至第４の条件のいずれかが満たされるときに、前記行列格納部に格納された前記部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)を用いて前記行列Ｊ１，Ｊ２，Ｋ１及びＫ２の一部分を計算する処理を第１の処理とし、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、転送条件が成立するときに、前記行列格納部に格納されている前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を計算機Ｐ(ｉ，ｊ＋１)に送信し、かつ、計算機Ｐ(ｉ，ｊ−１)から転送されてきた前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を前記行列格納部に格納する処理を第２の処理とし、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を計算機Ｐ(ｉ＋１，ｊ)に送信し、かつ、計算機Ｐ(ｉ−１，ｊ)から転送されてきた前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を前記行列格納部に格納する処理を第３の処理とし、
ｋ＝(ｊ−１)ｉmax＋ｉとして計算機Ｐ(ｉ，ｊ)を計算機Ｐ(ｋ)と表すことにして、前記各計算機Ｐ(ｋ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を計算機Ｐ(ｋ＋１)に送信し、かつ、計算機Ｐ(ｋ−１)から転送されてきた前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を前記行列格納部に格納する処理を第４の処理とし、
ｎを部分密度行列Ｄ(ＴＳ)が転送されるたびに１増加する０から始まる番号とし、ｔ＝ｍ／ｊmaxとして、前記転送条件はｉ＝(ｎ ｍｏｄ ｔ)＋１が成り立つときであり、
μ＝(ｊ−１)ｉmax＋ｉ    （ｉ，ｊ＝｛１，２｝），
ν＝(ｌ−１)ｋmax＋ｋ    （ｋ，ｌ＝｛ａ，ｂ｝）として、
前記第１の条件はμ≧νであり、
前記第２の条件はμ≦νであり、
前記第３の条件は
μ＝ν，  μ＋ν＝奇数  ｆｏｒ  μ＜ν，  μ＋ν＝偶数  ｆｏｒ  μ＞ν
であり、
前記第４の条件は、
μ＝ν，  μ＋ν＝奇数  ｆｏｒ  μ＞ν，  μ＋ν＝偶数  ｆｏｒ  μ＜ν
であり、
前記第１乃至第４の処理が前記ノード数だけ繰り返され、これにより前記行列Ｊ，Ｋ及び前記フォック行列が計算される、並列計算装置。
【請求項６】
分子軌道法におけるハートリー・フォック法の計算を下記の式(a1)に基づくフォック行列Ｆを用いて計算する並列計算装置であり、前記式(a1)を分解して得られる下記の式(a3)に基づくフォック行列を計算するための並列計算装置であって、
【数１４】
0004612546.tif 000035
【数８】
0004612546.tif 000036
ここで、Ｆrsはフォック行列Ｆの行列要素であり、ＨrsはＨコア積分を表す行列Ｈの行列要素であり、Ｊrsはクーロン積分を表す行列Ｊの行列要素であり、Ｋrsは交換積分を表す行列Ｋの行列要素であり、Ｄtu，Ｄrs，Ｄts及びＤruは密度行列Ｄの行列要素であり、(ｒｓ｜ｔｕ)と(ｒｔ｜ｓｕ)は二電子積分の配列要素であり、Ｎを原子軌道数を表すパラメータとしてｒ，ｓ，ｔ，ｕはそれぞれ独立に１以上Ｎ以下の整数であり、ｍ＝（ｓ−１）Ｎ＋ｒ及びｎ＝（ｕ−１）Ｎ＋ｔとして二電子積分の配列要素を(ｍ｜ｎ)として表すと、Ｊ１rsは二電子積分の条件ｍ≦ｎを満たす配列要素(ｍ｜ｎ)を使用したクーロン積分の一部を表す行列Ｊ１の行列要素であり、Ｊ２rsは二電子積分の条件ｍ≧ｎを満たす配列要素(ｍ｜ｎ)を使用したクーロン積分の一部を表す行列Ｊ２の行列要素であり、Ｋ１rsは二電子積分の条件ｍ≦ｎを満たす配列要素(ｍ｜ｎ)を使用した交換積分の一部を表す行列Ｋ１の行列要素であり、Ｋ２rsは二電子積分の条件ｍ≧ｎを満たす配列要素(ｍ｜ｎ)を使用した交換積分の一部を表す行列Ｋ２の行列要素であり、ｄ(ｍ，ｎ)は対角要素が１／２かつ非対角要素が１のＮ2×Ｎ2個の要素を持つ行列ｄの行列要素であり、
通信機器を介し相互に接続された複数の計算機を備える計算機クラスタを有し、
前記計算機クラスタのノード数をｍとし、
ｒ，ｔの分割数が等しく、かつ、ｓ，ｕの分割数が等しくなるように、行列Ｆ，Ｈ，Ｄ，Ｊ，Ｊ１，Ｊ２，Ｋ，Ｋ１，Ｋ２は分割数Ｍの部分行列に分割され、二電子積分はＭ2個の部分に分割され、
分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕの各範囲が前記各計算機に割り当てられ、
割り当てられた範囲にしたがって前記部分行列は前記各計算機に重複なく格納され、
割り当てられた範囲にしたがって前記各計算機は二電子積分を計算することとし、
前記各計算機は、前記行列を分割した部分行列を格納する行列格納部と、前記計算機クラスタ中の他の計算機に対して前記部分行列を送受信する転送制御部と、前記行列格納部に格納された前記部分行列に関する演算を実行する演算処理部と、を有し、
前記複数の計算機のおのおのを識別する指標をｉ，ｊとして前記各計算機をＰ(ｉ，ｊ)で表し、ｉ及びｊの最大値をそれぞれｉmax及びｊmaxとし、
部分行列の個数が分割数Ｍとなるように分割された１以上Ｎ以下の整数ｒ，ｓ，ｔ，ｕが前記各計算機に割り当てられた範囲をＲ，Ｓ，Ｔ，Ｕで表し、
前記密度行列の要素がＤtu，Ｄrs，Ｄts及びＤruで表される前記密度行列Ｄの分割された部分密度行列をそれぞれＤ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)とし、
行列要素がＪ１rsで表されるクーロン積分の一部を表す前記行列Ｊ１の分割された部分行列をＪ１(ＲＳ)とし、
行列要素がＪ２tuで表されるクーロン積分の一部を表す前記行列Ｊ２の分割された部分行列をＪ２(ＴＵ)とし、
行列要素がＫ１ruで表される交換積分の一部を表す前記行列Ｋ１の分割された部分行列をＫ１(ＲＵ)とし、
行列要素がＫ２tsで表される交換積分の一部を表す前記行列Ｋ２の分割された部分行列をＫ２(ＴＳ)とし、
前記密度行列Ｄが複数の前記部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)に分割されて該複数の部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)が前記複数の計算機のそれぞれの行列格納部に分散して格納され、
前記各計算機において当該計算機の演算処理部が、計算条件が満たされるときに、前記行列格納部に格納された前記部分密度行列Ｄ(ＴＵ)，Ｄ(ＲＳ)，Ｄ(ＴＳ)及びＤ(ＲＵ)を用いて前記行列Ｊ１，Ｊ２，Ｋ１及びＫ２の一部分を計算する処理を第１の処理とし、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、転送条件が成立するときに、前記行列格納部に格納されている前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を計算機Ｐ(ｉ，ｊ＋１)に送信し、かつ、計算機Ｐ(ｉ，ｊ−１)から転送されてきた前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を前記行列格納部に格納する処理を第２の処理とし、
前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を計算機Ｐ(ｉ＋２，ｊ)に送信し、かつ、計算機Ｐ(ｉ−２，ｊ)から転送されてきた前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を前記行列格納部に格納する処理を第３の処理とし、
ｋ＝(ｊ−１)ｉmax＋ｉとして計算機Ｐ(ｉ，ｊ)を計算機Ｐ(ｋ)と表すことにして、前記各計算機Ｐ(ｋ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を計算機Ｐ(ｋ＋２)に送信し、かつ、計算機Ｐ(ｋ−２)から転送されてきた前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を前記行列格納部に格納する処理を第４の処理とし、
前記第１乃至第４の処理を（ノード数／２）に相当する回数だけ繰り返すことによって前記行列Ｊ１，Ｊ２，Ｋ１，Ｋ２の一部分を計算する処理を第５の処理とし、
前記第５の段階による繰り返しののち、前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、転送条件が成立するときに、前記行列格納部に格納されている前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を計算機Ｐ(ｉ，ｊ＋１)に送信し、かつ、計算機Ｐ(ｉ，ｊ−１)から転送されてきた前記部分行列Ｋ１(ＲＵ)及びＤ(ＲＵ)を前記行列格納部に格納する処理を第６の処理とし、
前記第５の段階による繰り返しののち、前記各計算機Ｐ(ｉ，ｊ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を計算機Ｐ(ｉ＋１，ｊ)に送信し、かつ、計算機Ｐ(ｉ−１，ｊ)から転送されてきた前記部分行列Ｋ２(ＴＳ)及びＤ(ＴＳ)を前記行列格納部に格納する処理を第７の処理とし、
前記第５の段階による繰り返しののち、前記各計算機Ｐ(ｋ)において当該計算機の転送制御部が、前記行列格納部に格納されている前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を計算機Ｐ(ｋ＋１)に送信し、かつ、計算機Ｐ(ｋ−１)から転送されてきた前記部分行列Ｊ２(ＴＵ)及びＤ(ＴＵ)を前記行列格納部に格納する処理を第８の処理とし、
ｎを部分密度行列Ｄ(ＴＳ)が転送されるたびに１増加する０から始まる番号とし、ｔ＝ｍ／ｊmaxとして、前記転送条件はｉ＝(ｎ ｍｏｄ ｔ)＋１が成り立つときであり、
μ＝(ｊ−１)ｉmax＋ｉ    （ｉ，ｊ＝｛１，２｝），
ν＝(ｌ−１)ｋmax＋ｋ    （ｋ，ｌ＝｛ａ，ｂ｝）として、
前記計算条件は
μ＝ν，  μ＋ν＝奇数  ｆｏｒ  μ＜ν，  μ＋ν＝偶数  ｆｏｒ  μ＞ν
であり、前記第１乃至第８の処理が実行されて前記行列Ｊ，Ｋ及び前記フォック行列が計算される、並列計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分子シミュレーションなどに適した並列計算方法及び装置に関し、特に、ＲＨＦ（制限ハートリー・フォック；Restricted Hartree-Fock）法による分子軌道計算に適合した並列計算方法及び装置に関する。
【背景技術】
【０００２】
量子化学理論の発展や計算機技術の進歩によって、計算により、分子の構造、物性や、分子内の化学結合や分子軌道、電子状態などを精度よくシミュレーションできるようになってきた。そのような手法は一般に分子軌道法と呼ばれる。分子軌道法の中でも、経験的パラメータに原則として依存しない非経験的分子軌道法は、近似計算であるにせよシュレーディンガー方程式を解くために莫大な計算量を必要とするため、これまでは、小さな分子にしか適用することができなかった。しかしながら、近年のコンピュータの性能の著しい向上により、生体関連物質を含む比較的大きな分子に対しても非経験的分子軌道法計算を実行できるようになり、例えば、生理活性を有する物質の解析や探索に使用されるようになってきている。【０００３】
非経験的分子軌道法にはいくつかの手法があるが、分子の全エネルギーを得るために最も使用される方法として、ハートリー・フォック（ＨＦ）法がある。ＨＦ法は、シュレーディンガー方程式に対して１電子近似、線形近似を行なったロータン方程式（式(1)）を解く方法として定式化されている。【０００４】
【数１】
0004612546.tif 000002
【０００５】
式(1)において、解析対象である分子における原子軌道（ＡＯ；Atomic Orbital）の数をＮ、分子軌道（ＭＯ；Molecular Orbital）の数をＭとすると、Ｆ，Ｓは、いずれもＮ×Ｎ行列、ＣはＭ×Ｎ行列、εはＭ次元ベクトルである。Ｆはフォック行列と呼ばれ、式(2)で与えられる。【０００６】
【数２】
0004612546.tif 000003
【０００７】
ここでＤは密度行列と呼ばれ、式(3)のようにＭＯ係数Ｃによって定義されている。【０００８】
【数３】
0004612546.tif 000004
【０００９】
ここで、記号Σでの"occ"は、電子が占有する分子軌道についての和であることを表している。Ｓ，Ｈ，（ｒｓ｜ｔｕ）は、各々、重なり積分、Ｈコア積分、２電子積分と呼ばれる物理量であり、原子軌道φrを用いて、式(4)〜(6)のように表される。【００１０】
【数４】
0004612546.tif 000005
【００１１】
ここで、記号Σにおける"core"は、原子核について和であることを表す。ところで式(1)は、線型方程式の型に書かれてはいるが、フォック行列Ｆが原子軌道φiに依存して決まるため、実際には非線形方程式であって、完全に解くことはできない。そこで、この方程式を解くのに用いられるのが、自己無撞着場の方法（ＳＣＦ(Self-consistent field)法）である。【００１２】
ＳＣＦ法では、よく知られているように、
［１］  ＭＯ係数Ｃの初期推測値を求める；
［２］  密度行列ＤをＭＯ係数Ｃから求める；
［３］  得られた密度行列Ｄを使い、フォック行列Ｆを求める；
［４］  フォック行列Ｆを対角化し、固有値εと固有ベクトルを求める；
［５］  得られた固有ベクトルから、新しいＭＯ係数Ｃと密度行列Ｄを求める；
［６］  密度行列Ｄが変化しなくなるまで、［３］から［５］までをくり返す；
という手順で計算が行われる。【００１３】
ＳＣＦ法の計算において、その費やす時間の大部分は［３］のフォック行列Ｆの計算である。その理由は、２電子積分（ｒｓ｜ｔｕ）の計算をＮ4回繰り返すからである。一度計算した２電子積分の結果をディスクなどのストレージ装置に保存しておく方法も考えられるが、大規模計算、例えばＮが数万程度の場合であると、必要なディスク容量が膨大になってしまうため、多くの場合は２電子積分を毎回計算するダイレクト方式が取られる。したがって、フォック行列Ｆの計算を高速化することが、ＳＣＦ法計算全体の高速化に直結する。【００１４】
この分子軌道法計算を高速に実行する方法として、例えば、特開２０００−２９３４９４号公報、特開２００１−３１２４８５号公報及び特開平９−５０４２８号公報に開示された方法がある。これらの方法は、１台のベクトル計算機などのホスト機で行列計算などを行ない、その一方で、フォック行列Ｆの計算または２電子積分の計算を並列計算機や計算機クラスタに行なわせる方法である。【００１５】
しかしこれらの方法では、対角化などの行列計算をいわゆるホスト機で行なうため、ホスト機のメモリ容量を超える大きさの行列を扱うことはできない、という問題点がある。これに対してはホスト機を複数台並列に用意するなどの対処法は存在するが、この対処法は、高価なため、容易に行なうことはできない。近年は、汎用計算機の低価格化や性能向上もあり、計算機クラスタで高速で廉価なシステムを作れるようになった。汎用計算機クラスタでは、計算機１台あたりのメモリ容量は高性能計算機に比べ小容量であるが、接続する計算機の台数を増やせばシステム全体の容量は大容量になる。また、接続する計算機の台数を増やすことは、高速化にもつながる。ただし、汎用計算機クラスタでは、計算機１台ごとのメモリ容量は小さいため、大型分子の行列計算を１台の計算機で行なうことはできず、分子軌道数が数万軌道になると、１つの行列を1台の計算機のメモリ上に確保することもできない、という問題点がある。
【特許文献１】特開２０００−２９３４９４
【特許文献２】特開２００１−３１２４８５
【特許文献３】特開平９−０５０４２８
【発明の開示】
【発明が解決しようとする課題】
【００１６】
上述したように、計算機クラスタのような並列計算機システムを用いたとしても、大規模かつ高速な分子軌道計算を行うためには解決すべき多くの課題が残されている。大規模かつ高速な分子軌道計算を実現するために必要なのは、第１に、全ての行列要素を常に分散してメモリ領域に保存し、行列計算の際にも１台の計算機上に集めない計算方法の確立である。これにより、計算規模はシステム全体の総メモリ容量のみに依存し、計算機１台のメモリ容量には依存しなくなり、また高価なホスト機を用意する必要もなくなる。すなわち、大規模計算を行なうためには、接続される廉価な計算機の個数を多くすればよいことになる。第２に、上記の方法において、計算量を削減する手法の確立である。１台の計算機上で計算する場合には計算量を１／１６にする方法が知られているが、上記のように全ての行列要素を分散してメモリ領域に保存した場合の計算量を削減する方法は知られていない。並列台数を増やせば高速化できるが、計算量を削減できればさらなる高速化につながるので、このような手法の確立は重要である。【００１７】
そこで本発明の目的は、密度行列を分割しても、アルゴリズムの工夫によって計算を高速に行えるようにでき、さらに、大規模計算を可能にし、従来は計算できないでいた生体高分子などの分子軌道計算を行うことができる並列計算方法を提供することにある。【００１８】
本発明の別の目的は、密度行列を分割しても、アルゴリズムの工夫によって計算を高速に行えるようにでき、さらに、大規模計算を可能にし、従来は計算できないでいた生体高分子などの分子軌道計算を行うことができる並列計算装置を提供することにある。
【課題を解決するための手段】
【００１９】
本発明の並列計算方法は、通信機器を介し相互に接続された複数の計算機からなる計算機クラスタを使用して分子軌道法におけるハートリー・フォック法の計算を実行するための並列計算方法であって、各計算機は、密度行列を分割した部分密度行列を格納する行列格納部と、計算機クラスタ中の他の計算機に対して部分密度行列を送受信する転送制御部と、行列格納部に格納された部分密度行列に関する演算を実行する演算処理部と、演算と転送との繰り返しの制御を行う制御部と、を備え、密度行列を複数の部分密度行列に分割してそれらの複数の部分密度行列を複数の計算機のそれぞれの行列格納部に分散して格納する段階と、各計算機においてその計算機の演算処理部が行列格納部に格納された部分密度行列に対する２電子積分を含む演算処理を実行する第１の段階と、転送順序に従い、各計算機においてその計算機の転送制御部が行列格納部に格納されている部分密度行列を通信機器を介して他の計算機に転送し、かつ、通信機器を介して転送されてきた部分密度行列を行列格納部に格納する第２の段階と、を有し、制御部が、転送制御部と演算処理部とに第１の段階と第２の段階とを複数の計算機の台数に相当する回数繰り返させることによって、部分密度行列を複数の計算機間で順次転送させつつ全ての部分密度行列に対して演算処理を実行させる。
【００２０】
この並列計算方法は、上述したＲＨＦ法の計算に適したものである。本発明によれば、密度行列を複数の計算機上に分散して保存した場合でもＲＨＦ法の計算が可能となり、計算時間を短縮することができる。本発明では、密度行列の複製を用いて積分計算を半数に減らし、計算時間を短縮するようにしてもよい。また、密度行列とその複製を計４個用意し、２電子積分における（ｒｓ｜ｔｕ）⇔（ｔｕ｜ｒｓ）の対称性を使うことで、さらに計算時間を短縮するようにしてもよい。【００２１】
本発明の並列計算装置は、分子軌道法におけるハートリー・フォック法の計算を実行するための並列計算装置であって、通信機器を介し相互に接続された複数の計算機を備える計算機クラスタを有し、各計算機は、密度行列を分割した部分密度行列を格納する行列格納部と、計算機クラスタ中の他の計算機に対して部分密度行列を送受信する転送制御部と、行列格納部に格納された部分密度行列に関する演算を実行する演算処理部と、を有し、密度行列を複数の部分密度行列に分割して複数の部分密度行列を複数の計算機のそれぞれの行列格納部に分散して格納し、転送順序に従い、各計算機において、転送制御部により、行列格納部に格納されている部分密度行列を通信機器を介して他の計算機に転送し、かつ、通信機器を介して転送されてきた部分密度行列を行列格納部に格納することによって、複数の部分密度行列を複数の計算機間で順次転送させながら、演算処理部により、部分密度行列に対する２電子積分を含む演算処理を実行し、転送と演算処理とを複数の計算機の台数に相当する回数繰り返すことによって、全ての部分密度行列に対して演算処理を実行する。
【００２２】
本発明は、密度行列を分割したハートリー・フォック法の計算方法に関するものであって、分割された部分密度行列を順次転送することによりフォック行列の生成を可能にし、作業領域を増やし異なる転送順序を組み合わせることにより計算量を減らし、転送方法を一回跳ばすことにより転送量を削減したものである。本発明の方法は、計算規模がシステム全体のメモリ容量にのみ依存する方法であるので、多数のコンピュータを並列接続することで大規模計算を可能にするととともに、計算時間を短縮することを可能にする。
【図面の簡単な説明】
【００２３】
【図１】分散メモリ型並列計算機すなわちＰＣクラスタとして構成された本発明の実施の一形態の並列計算装置の構成を示すブロック図である。
【図２】各計算機の論理的な構成を示すブロック図である。
【図３】本発明の並列計算方法に基づく、密度行列を分割した場合におけるフォック行列生成アルゴリズムを示すフローチャートである。
【図４】ノード数４の場合における領域(ＲＳ)（行列Ｊ(ＲＳ)）に対する転送順序を表した図である。
【図５】ノード数４の場合における領域(ＴＵ)（行列Ｄ(ＴＵ)）に対する転送順序を表した図である。
【図６】ノード数４の場合における領域(ＲＵ)（行列Ｋ(ＲＵ)）に対する転送順序を表した図である。
【図７】ノード数４の場合における領域(ＴＳ)（行列Ｄ(ＴＳ)）に対する転送順序を表した図である。
【図８】図６に示した転送順序を分かりやすく書き直した図である。
【図９】ノード数４のとき、２電子積分（ＲＳ｜ＴＵ）を（ｍ｜ｎ）と書き直し、行列であるとみなして、２電子積分の計算実行の有無を説明する図である。
【図１０】ノード数９のとき、２電子積分（ＲＳ｜ＴＵ）を（ｍ｜ｎ）と書き直し、行列であるとみなして、２電子積分の計算実行の有無を説明する図である。
【発明を実施するための最良の形態】
【００２４】
本実施形態では、図１に示すような計算機クラスタすなわち分散メモリ型並列計算機を想定している。図1に示す本発明の実施の一形態の計算機システムは、同様の性能を持った複数台の計算機を、通信機器によって接続したものである。従来の分子軌道計算アルゴリズムでは、大容量のメモリを必要とするため、ホスト計算機としていわゆるスーパーコンピュータなどの高性能計算機を用意することが多い。そして、高性能計算機は一般に高価であるため、費用面の問題となる場合がある。ところが本発明の方法を用いれば、そのようなホスト計算機を必要としないため、費用を軽減できる。【００２５】
図１に示した例では、計算機システムは、複数台（ここではｎ台）の計算機１1〜１nと、これら計算機１1〜１nが接続するハブ２とを備えた計算機クラスタとして構成されている。計算機１1〜１nとしては、典型的には、パーソナルコンピュータ（ＰＣ）が使用されるので、この計算機クラスタは、ＰＣクラスタということになる。ここでは１台のハブ２を用いて複数の計算機を接続しているが、各計算機を接続する形態はこれに限定されるものではなく、例えば、リング型あるいはバス型のネットワークに接続するようなものであってもよい。【００２６】
図２は、上述した計算クラスタを構成する各計算機における論理的な機能を示したブロック図である。本実施形態では、フォック行列の算出に必要な密度行列などの各行列を部分行列に分割して各ノード（計算機クラスタを構成する各計算機）に分割し、各ノードすなわち計算機ではその格納している部分行列に対してあるいはその部分行列に基づいて演算を行うとともに、ノード間でそのような部分行列を転送し、このような演算と転送とを繰り返すことによって、最終的な結果（例えばフォック行列）を得るようにしている。このように各計算機が機能するために、各計算機（ノード）は、図２に示すように、部分行列を格納する行列格納部１１と、行列格納部１１に格納されている部分行列を別のノードに転送し、別のノードから部分行列を受け取るための転送制御部１２と、例えば２電子積分などの演算を行って行列格納部１１内の部分行列に関する演算処理を実行する演算処理部１３と、演算と転送との繰り返しの制御を行う制御部１４と、が設けられている。【００２７】
次に、本実施形態におけるこのような並列計算装置を用いた、密度行列Ｄを分割した場合のフォック行列生成アルゴリズムの手順について、図３を用いて説明する。本実施形態の方法では、密度行列を複数の部分密度行列に分割し、それをノード間で転送しつつ２電子積分を繰り返し、最後にＨコア行列との和を足し合わせることによって、フォック行列を生成する。図３では、複数のノード間での部分密度行列の転送を説明するために、ＰＣ１とＰＣ２の２つのノードでの処理が並列して示されている。【００２８】
まず、カウンタｎを用意して、ステップ１０１において、カウンタの初期値をｎ＝０とする。次に、ステップ１０２において、ｎに１を加算し、ステップ１０３において、２電子積分を部分的に計算し、計算した計算した２電子積分値を用い、上述の式(2)の計算を行う。そして、ステップ１０４において、次に必要な部分密度行列を得るために、密度行列の転送を行う。ここでノードＰＣ１からノードＰＣ２に部分密度行列が転送される。ノードＰＣ１には別のノードから部分密度行列が送られて来るので、ノードＰＣ１は、ノードＰＣ２に転送した部分密度行列の代わりに、その送られてきた部分行列を行列格納部内に格納する。またノードＰＣ２は、格納していた部分密度行列をさらに別のノードに転送する。【００２９】
そして、ステップ１０５において、カウンタｎが、ノード数（すなわち計算機数）に満たないかかどうかを判定する。ｎ＜ノード数の場合には、ステップ１０２〜１０４の処理を繰り返すためにステップ１０２に戻り、カウンタｎを１だけインクリメントして再び２電子積分を行う。このとき行う計算では、転送されてきた部分密度行列に合わせ、前回とは異なる部分を計算させる。一方、ステップ１０５においてカウンタｎがノード数と等しくなるかまたは超えたときは、全ノードで全ての部分密度行列に対して計算が行われたことになるので、ステップ１０６において、Ｈコア行列等を足し合わせ、計算を終了する。【００３０】
本発明の並列計算方法は上述したものに限定されるものではない。転送される部分行列や転送の態様を選択することによって、以下に説明するように、各種の実施形態で本発明を実施することができる。以下の説明では、説明の簡単のために、ノード数が４であり、また、行列を部分行列に分割する際の分割数が４であるとする。【００３１】
《例１：巡回密度行列法》
ます、巡回密度行列法と呼ぶ実施形態について説明する。再びフォック行列Ｆを式(7)のように表す。【００３２】
【数５】
0004612546.tif 000006
【００３３】
式(7)において、行列を表しているのは、Ｆrs，Ｈrs，Ｄtu（ｒ，ｓ，ｔ，ｕ＝１，…，Ｎ）である。行列の分割数４より、式(8)に示すように、ｒ，ｓ，ｔ，ｕを各々２つの領域に分割する。【００３４】
【数６】
0004612546.tif 000007
【００３５】
このように領域を分割すると、行列は４つに分割される。分割された部分行列を式(9)のように呼ぶことにする。【００３６】
【数７】
0004612546.tif 000008
【００３７】
また、これらをまとめて表す場合には、式(10)のように表すこととする。【００３８】
【数８】
0004612546.tif 000009
【００３９】
この部分行列を、４つのノード（計算機）に分配する。ノード名をＰ１１，Ｐ２１，Ｐ１２，Ｐ２２として、部分行列が各ノードに式(11)に示すように分配されるとする。このように行列が分配された状態を初期分配状態（Ｓ−０）と呼ぶことにする。【００４０】
【数９】
0004612546.tif 000010
【００４１】
さて、式(7)におけるｔ，ｕについての和は、全領域について計算しなければならないが、各ノードには密度行列Ｄの一部が保持されているだけなので、このままでは計算できない。そこで、密度行列Ｄを転送し、その都度、式(7)の一部を計算していくことにする。この方法がうまく行くための条件は、各ノードが常に行列Ｄの各々異なる部分行列を持つことである。そのような方法のひとつとして、巡回的に部分行列を転送する方法がある。これは式(7)を式(12)〜(14)のように計算することである。【００４２】
【数１０】
0004612546.tif 000011
【００４３】
ここで、１，２はＲ，Ｓの部分領域を表し、ａ，ｂはＴ，Ｕの部分領域を表すので、それらの領域全てについて和を取ることとし、和の記号は省略した。式(12)は、それぞれノードＰ１１〜Ｐ２２上での計算を表しており、初期分配状態（Ｓ−０）では第２項まで計算できる。第３項以降は、密度行列Ｄを転送した後でなければ計算できない。そこで、密度行列Ｄにのみ注目すると、その転送順序は図５に示すようになっていることが分かる。ここで、図の（Ｓ−０）〜（Ｓ−３）は、転送によって変化した分配状態の名前である。部分行列Ｄ(ａａ)に注目すれば、Ｐ１１，Ｐ２１，Ｐ１２，Ｐ２２の順に巡回することが分かる。逆に、ノードＰ２１に注目すると、Ｄ(ｂａ)，Ｄ(ａａ)，Ｄ(ｂｂ)，Ｄ(ａｂ)の順に部分密度行列が巡って来ることが分かる。すなわち、全ての部分密度行列がノードＰ２１に順次転送されてきたことになる。全ノードについて同様なので、結局、式(7)を計算するには、この順序に部分密度行列を転送すればよいことになる。この転送を実現するには、ノードの名前を式(15)のように読みかえると便利である。【００４４】
【数１１】
0004612546.tif 000012
【００４５】
このようにすると、以下のようなアルゴリズムによって、上記の転送による計算は実現できる。【００４６】
［１］  Ｆの一部分を計算する；
［２］  ノードＰ(ｉ)は、自らが格納している部分密度行列をＰ(ｉ＋１)へ送信する；
［３］  ノードＰ(ｉ)は、Ｐ(ｉ−１)が格納していた部分密度行列を受け取る；
［４］  ［１］〜［３］をノードの数だけ繰り返す。【００４７】
ただし、４ノードで考えているので、ノード番号ｉには周期的境界条件ｉ＝ｉ＋４を課す。図５のように、ノードの数だけの回数（ここでは４回）転送を行うと、部分密度行列が一周し、計算の初期分配状態（Ｓ−０）に戻り、計算が終了する。【００４８】
《例２．二重巡回密度行列法》
次に、二重巡回密度行列法と呼ぶ形態について説明する。ここでは、密度行列Ｄの複製を用いることにより、積分計算を半数に減らし、計算時間を短縮するようにしている。ここでの記号は、上述した巡回密度行列法と同様のものを使用する。この方法では、式(7)を式(16)のように分解する。【００４９】
【数１２】
0004612546.tif 000013
【００５０】
ここでＪ，Ｋは、各々、クーロン積分と交換積分の和を示す行列である。これを、巡回密度行列法の場合と同様に、領域とノードごとの計算に書き直すと、式(17),(18)を得る。【００５１】
【数１３】
0004612546.tif 000014
【００５２】
ここでは、各ノードで計算される２電子積分（ｒｓ｜ｔｕ）が、Ｊ，Ｋの分配状態ごとに等しくなるように並べられている。言い換えると、２電子積分（ｒｓ｜ｔｕ）を一回計算するだけでよいように並べてある。そのために、Ｋの部分行列も転送しなければならない。行列Ｊ(ＲＳ)，Ｄ(ＴＵ)，Ｋ(ＲＵ)，Ｄ(ＴＳ)の転送は、それぞれ、図４〜図７に示すようになる。Ｋ(ＲＵ)（Ｒ，Ｓ，Ｔ，Ｕは領域）の転送は、一見複雑に見えるが、図８のように書き直すと分かりやすい。すなわち、Ｋ(ＲＵ)については、Ｐ１１とＰ１２、Ｐ２１とＰ２２の間でのみ転送がおき、一方Ｄ(ＴＳ)は、図７より、Ｐ１１とＰ２１、Ｐ１２とＰ２２の間でのみ転送がおこる。これは、ノードを式(19)のように読みかえることで分かりやすくなる。【００５３】
【数１４】
0004612546.tif 000015
【００５４】
このようにしたとき、
［１］  Ｋ(ＲＵ)の転送は、Ｐ(ｉ，ｊ)，（ｉ，ｊ＝｛１，２｝）のｉが等しいノードとの間でのみ行われ、また、
［２］  Ｄ(ＴＳ)の転送は、Ｐ(ｉ，ｊ)，（ｉ，ｊ＝｛１，２｝）のｊが等しいノードとの間でのみ行われる。【００５５】
Ｋ(ＲＵ)は、転送される場合と転送されない場合とが存在するが、これは分配状態（Ｓ−ｎ）の状態番号ｎ（＝０，１，２，…）と巡回周期ｔ（＝１，２，３，…）で判定できる。まず、巡回周期ｔは、ノード数をｍとして、式(20)で与えられる。【００５６】
【数１５】
0004612546.tif 000016
【００５７】
これを用いることにより、Ｋ(ＲＵ)の転送が起きる条件は具体的には式(21)のようになる。【００５８】
【数１６】
0004612546.tif 000017
【００５９】
これが成り立つノードＰ(ｉ，ｊ)でのみ、次回に転送を起こさなければならない。以下において、式(21)を転送条件と呼ぶ。これら転送を実現する計算アルゴリズムは、以下のようになる。【００６０】
［１］  Ｊ，Ｋの一部分を計算する；
［２］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、自らが格納するＫ(ＲＵ)をＰ(ｉ，ｊ＋１)へ送信する；
［３］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、Ｐ(ｉ，ｊ−１)が格納していたＫ(ＲＵ)を受け取る；
［４］  Ｐ(ｉ，ｊ)は、自らが格納するＤ(ＴＳ)をＰ(ｉ＋１，ｊ)に送信する；
［５）  Ｐ(ｉ，ｊ)は、Ｐ(ｉ−１，ｊ)が格納していたＤ(ＴＳ)を受け取る；
［６］  Ｐ(ｋ)は、自らが格納するＤ(ＴＵ)をＰ(ｋ＋１)へ送信する；
［７］  Ｐ(ｋ)は、P(ｋ−１)が格納していたＤ(ＴＵ)を受け取る；
［８］  ［１］〜［７］をノードの数だけ繰り返す；
［９］  フォック行列Ｆを計算する。【００６１】
ただし、ｋ＝(ｊ−１)ｉmax＋ｉである。この方法でも、全ての転送が終了したとき、分配状態は初期状態（Ｓ−０）に戻る。【００６２】
《例３．四重巡回密度行列法  その１》
次に、四重巡回密度行列法と呼ぶ形態について説明する。ここでは、密度行列Ｄとその複製とを合計４個用意し、さらに、２電子積分における（ｒｓ｜ｔｕ）⇔（ｔｕ｜ｒｓ）の対称性を用いることで、二重巡回密度行列法よりもさらに積分計算を減らし、計算時間の短縮を図っている。ここでの記号は、上述した巡回密度行列法と同様のものを使用する。この方法では、式(7)を式(22)〜(24)のように分解する。【００６３】
【数１７】
0004612546.tif 000018
【００６４】
これは、ｒ，ｓによって一意に決まる数ｍと、ｔ，ｕによって一意に決定される数ｎを用いて、クーロン積分Ｊ及び交換積分Ｋを２つの行列に分けて計算することを表している。２電子積分（ｒｓ｜ｔｕ）は、ｍ，ｎを用いて（ｍ｜ｎ）と表される。２電子積分は（ｒｓ｜ｔｕ）＝（ｔｕ｜ｒｓ）という対称性を持つので、条件ｍ≦ｎより、（ｍ｜ｎ）を行列と考えると、Ｊ１，Ｋ１は（ｍ｜ｎ）のその行列の下三角部分、Ｊ２，Ｋ２は（ｍ｜ｎ）の上三角部分を計算していることになる。条件ｍ≦ｎをひとまず無視して、式(25),(26)に示すように、式(22)を領域とノードごとの計算に書き直す。【００６５】
【数１８】
0004612546.tif 000019
【００６６】
この計算を実現する各行列の転送順序としては、二重巡回密度行列法と同じものを使用する。行列Ｊ１(ＲＳ)，Ｄ(ＲＳ)については図４、行列Ｄ(ＴＵ)，Ｊ２(ＴＵ)については図５、行列Ｋ１(ＲＵ)，Ｄ(ＲＵ)については図６、行列Ｄ(ＴＳ)，Ｋ２(ＴＳ)については図７にしたがった転送を行う。すなわち領域(ＲＳ)，(ＴＵ)，(ＲＵ)，(ＴＳ)によって転送方法が異なる。次に、条件を領域ごとに適用できるように、数ｍ，ｎを式(27)のように書き直す。【００６７】
【数１９】
0004612546.tif 000020
【００６８】
ここで、ｉ，ｊは領域Ｒ，Ｓの番号｛１，２｝を表し、ｋ，ｌは領域Ｔ，Ｕの番号｛ａ，ｂ｝を表す。ただし、ａ＝１，ｂ＝２と換算する。このｍ，ｎを使用して、行列ＪをＪ１，Ｊ２に、行列ＫをＫ１，Ｋ２に分けて計算する条件は、以下のようにいくつか考えられる。【００６９】
【数２０】
0004612546.tif 000021
【００７０】
例えば、条件（ｃ−１），（ｃ−３）を適用した場合は、Ｊ１，Ｊ２，Ｋ１，Ｋ２の計算は次のようになる。【００７１】
条件（ｃ−１）を適用した場合、Ｊ１，Ｊ２，Ｋ１，Ｋ２の計算は式(28)で表される。【００７２】
【数２１】
0004612546.tif 000022
【００７３】
条件（ｃ−３）を適用した場合、Ｊ１，Ｊ２，Ｋ１，Ｋ２の計算は式(29)で表される。【００７４】
【数２２】
0004612546.tif 000023
【００７５】
条件（ｃ−３），（ｃ−４）の方が、各ノードの計算量が比較的平均化される。結局、計算アルゴリズムは以下のようになる。【００７６】
［１］  条件（ｃ−１）〜（ｃ−４）の何れかを満たすとき、Ｊ１，Ｊ２，Ｋ１，Ｋ２の一部分を計算する；
［２］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、自らが格納するＫ１(ＲＵ)，Ｄ(ＲＵ)をＰ(ｉ，ｊ＋１)へ送信する；
［３］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、Ｐ(ｉ，ｊ−１)が格納していたＫ１(ＲＵ)，Ｄ(ＲＵ)を受け取る；
［４］  Ｐ(ｉ，ｊ）は、自らが格納するＫ２(ＴＳ)，Ｄ(ＴＳ)をＰ(ｉ＋１，ｊ)に送信する；
［５］  Ｐ(ｉ，ｊ)は、Ｐ(ｉ−１，ｊ)が格納していたＫ２(ＴＳ)，Ｄ(ＴＳ)を受け取る；
［６］  Ｐ(ｋ)は、自らが格納するＪ２(ＴＵ)，Ｄ(ＴＵ)をＰ(ｋ＋１)へ送信する；
［７］  Ｐ(ｋ)は、Ｐ(ｋ−１)が格納していたＪ２(ＴＵ)，Ｄ(ＴＵ)を受け取る；
［８］  ［１］〜［７］をノードの数だけ繰り返す；
［９］  Ｊ，Ｋを計算する；
［１０］  Ｆを計算する。【００７７】
ただし、ノード番号は、式(30)のように読みかえている。【００７８】
【数２３】
0004612546.tif 000024
【００７９】
《例４．四重巡回密度行列法  その２》
次に、四重巡回密度行列法と呼ぶ形態の別の例について説明する。【００８０】
上述した四重巡回密度行列法では、ノード数が奇数個の場合に限り、条件（ｃ−３），（ｃ−４）下の計算を別の方法で行なうことができる。ノード数が４，９で条件（ｃ−３）を満たす場合について、領域ごとの２電子積分（ｒｓ｜ｔｕ）＝（ｍ｜ｎ）を、図９、図１０のように図示する。白四角の部分は、計算する２電子積分（ｍ｜ｎ）を表し、黒四角の部分は、条件（ｃ−３）によって計算しない（ｍ｜ｎ）を表す。また、各ノードＰ（ｉ，ｊ）（ｉ，ｊ＝｛１，２｝または｛１，２，３｝）については、横一列を計算する。計算の順序は、対角成分（ｍ｜ｍ）から計算が始まり、転送により（ｍ｜ｍ−１）に移動する。図９、図１０の四角形内部の数字が個の計算順序を表している。ノード数９の場合は、２，４，６，８に対応する四角形部分は全ノードで黒四角形であり、２電子積分を計算しないことを示している。ノード数が奇数個の場合は、転送を繰り返すと、黒四角形部分と白四角形部分とを交互に辿ることになる。ノード数４の場合は、どの番号の四角形部分においても必ず一つは白四角形があり、ノード数が偶数個の場合にも一般化できる。したがって、ノード数が奇数個の場合には、１，３，５，７，９の四角形部分に対応して計算しさえすればよく、転送を一回分跳ばして行なうことができる。ただし、最後の一回だけは一回分のみ転送する。この場合の計算アルゴリズムは次のようになる。【００８１】
［１］  Ｊ１，Ｊ２，Ｋ１，Ｋ２の一部分を計算する；
［２］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、自らが格納するＫ１(ＲＵ)，Ｄ(ＲＵ)をＰ(ｉ，ｊ＋１)へ送信する；
［３］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、Ｐ(ｉ，ｊ−１)が格納していたＫ１(ＲＵ)，Ｄ(ＲＵ)を受け取る；
［４］  Ｐ(ｉ，ｊ)は、自らが格納するＫ２(ＴＳ)，Ｄ(ＴＳ)をＰ(ｉ＋２，ｊ)に送信する；
［５］  Ｐ(ｉ，ｊ)は、Ｐ(ｉ−２，ｊ)が格納していたＫ２(ＴＳ)，Ｄ(ＴＳ)を受け取る；
［６］  Ｐ(ｋ)は、自らが格納するＪ２(ＴＵ)，Ｄ(ＴＵ)をＰ(ｋ＋２)へ送信する；
［７］  Ｐ(ｋ)は、Ｐ(ｋ−２)が格納していたＪ２(ＴＵ)，Ｄ(ＴＵ)を受け取る；
［８］  ［１］〜［７］を（ノード数／２）に相当する回数繰り返す；
［９］  Ｊ１，Ｊ２，Ｋ１，Ｋ２の一部分を計算する；
［１０］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、自らが格納するＫ１(ＲＵ)，Ｄ(ＲＵ)をＰ(ｉ，ｊ＋１)へ送信する；
［１１］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、Ｐ(ｉ，ｊ−１)が格納していたＫ１(ＲＵ)，Ｄ(ＲＵ)を受け取る；
［１２］  Ｐ(ｉ，ｊ)は、自らが格納するＫ２(ＴＳ)，Ｄ(ＴＳ)をＰ(ｉ＋１，ｊ)に送信する；
［１３］  Ｐ(ｉ，ｊ)は、Ｐ(ｉ−１，ｊ)が格納していたＫ２(ＴＳ)，Ｄ(ＴＳ)を受け取る；
［１４］  Ｐ(ｋ)は、自らが格納するＪ２(ＴＵ)，Ｄ(ＴＵ)をＰ(ｋ＋１)へ送信する；
［１５］  Ｐ(ｋ)は、Ｐ(ｋ−１)が格納していたＪ２(ＴＵ)，Ｄ(ＴＵ)を受け取る；
［１６］  Ｊ，Ｋを計算する；
［１７］  Ｆを計算する。【００８２】
条件（ｃ−４）を満たす場合は、転送順序を逆にするか、最後の一回分のみの転送を最初に行なえばよい。すなわち、上記のアルゴリズムを［９］，…，［１５］，［１］，…，［８］，［１６］，［１７］と行なえばよい。【００８３】
《例５．一般化》
上述した各種の巡回密度行列法は、ノード数Ｎ、分割数Ｍ（＞Ｎ）の場合でも計算することができるが、各行列の分割方法は揃えておく必要がある。すなわち、領域ＲとＴの個数が一致し、領域ＳとＵの個数が一致していなければならない。「四重巡回密度行列法その２」では、一般化すると次のようなアルゴリズムになる。【００８４】
［１］  条件（ｃ−３）を満たすとき、Ｊ１，Ｊ２，Ｋ１，Ｋ２の一部分を計算する；
［２］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、自らが格納するＫ１(ＲＵ)，Ｄ(ＲＵ)をＰ(ｉ，ｊ＋１)へ送信する；
［３］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、Ｐ(ｉ，ｊ−１)が格納していたＫ１(ＲＵ)，Ｄ(ＲＵ)を受け取る；
［４］  Ｐ(ｉ，ｊ)は、自らが格納するＫ２(ＴＳ)，Ｄ(ＴＳ)をＰ(ｉ＋２，ｊ)に送信する；
［５］  Ｐ(ｉ，ｊ)は、Ｐ(ｉ−２，ｊ)が格納していたＫ２(ＴＳ)，Ｄ(ＴＳ)を受け取る；
［６］  Ｐ(ｋ)は、自らが格納するＪ２(ＴＵ)，Ｄ(ＴＵ)をＰ(ｋ＋２)へ送信する；
［７］  Ｐ(ｋ)は、Ｐ(ｋ−２)が格納していたＪ２(ＴＵ)，Ｄ(ＴＵ)を受け取る；
［８］  Ｊ１，Ｊ２，Ｋ１，Ｋ２の一部分を計算する；
［９］  Ｐ（ｉ，ｊ）は、転送条件が成立するとき、自らが格納するＫ１(ＲＵ)，Ｄ(ＲＵ)をＰ(ｉ，ｊ＋１)へ送信する；
［１０］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、Ｐ(ｉ，ｊ−１)が格納していたＫ１(ＲＵ)，Ｄ(ＲＵ)を受け取る；
［１１］  Ｐ(ｉ，ｊ)は、自らが格納するＫ２(ＴＳ)，Ｄ(ＴＳ)をＰ(ｉ＋２，ｊ)に送信する；
［１２］  Ｐ(ｉ，ｊ)は、Ｐ(ｉ−２，ｊ)が格納していたＫ２(ＴＳ)，Ｄ(ＴＳ)を受け取る；
［１３］  Ｐ(ｋ)は、自らが格納するＪ２(ＴＵ)，Ｄ(ＴＵ)をＰ(ｋ＋２)へ送信する；
［１４］  Ｐ(ｋ)は、Ｐ(ｋ−２)が格納していたＪ２(ＴＵ)，Ｄ(ＴＵ)を受け取る；
［１５］  ［８］〜［１４］を｛（ノード数／２）−１｝に相当する回数繰り返す；
［１６］  Ｊ１，Ｊ２，Ｋ１，Ｋ２の一部分を計算する；
［１７］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、自らが格納するＫ１(ＲＵ)，Ｄ(ＲＵ)をＰ(ｉ，ｊ＋１)へ送信する；
［１８］  Ｐ(ｉ，ｊ)は、転送条件が成立するとき、Ｐ(ｉ，ｊ−１）が格納するＫ１(ＲＵ)，Ｄ(ＲＵ)を受け取る；
［１９］  Ｐ(ｉ，ｊ)は、自らが格納するＫ２(ＴＳ)，Ｄ(ＴＳ)をＰ(ｉ＋１，ｊ)に送信する；
［２０］  Ｐ(ｉ，ｊ)は、Ｐ(ｉ−１，ｊ)が格納するＫ２(ＴＳ)，Ｄ(ＴＳ)を受け取る；
［２１］  Ｐ(ｋ)は、自らが格納するＪ２(ＴＵ)，Ｄ(ＴＵ)をＰ(ｋ＋１)へ送信する；
［２２］  Ｐ(ｋ)は、Ｐ(ｋ−１)が格納していたＪ２(ＴＵ)，Ｄ(ＴＵ)を受け取る；
［２３］  Ｊ，Ｋを計算する；
［２４］  Ｆを計算する。【００８５】
条件（ｃ−４）を満たす場合は、転送を逆に巡回させるか、最初の転送を一回分にすればよい。【００８６】
以上、本発明の好ましい実施形態を説明したが、本発明は、計算機クラスタでの実現を前提とするものである。したがって、計算機クラスタを構成する各計算機は、上述した各ノードでの処理を実行するものでなくてはならない。各計算機は、ノードとしての処理を実現するための計算機プログラムを読み込み、そのプログラムを実行することによって、上述した各処理を実行するようになる。そのようなプログラムは、磁気テープやＣＤ−ＲＯＭなどの記録媒体によって、あるいはネットワークを介して、計算機に読み込まれる。【００８７】
具体的にはそのプログラムは、複数のノードから構成される計算機クラスタにおける各ノードの計算機を、密度行列を分割した部分密度行列を格納する行列格納部、計算機クラスタの他のノードに対して前記部分密度行列を送受信する転送制御部、行列格納部に格納された部分密度行列に関する演算を実行する演算処理部、として機能させ、それによって、複数の部分密度行列が複数のノード間で順番に転送されながら、各ノードにおいて部分密度行列に対する演算処理が実行されるようにする。【００８８】
さらには本発明の範疇には、上述したプログラムからなるプログラムプロダクト、このプログラムを格納した機械可読記録媒体、このプログラムを伝送する伝送媒体も含まれる。
【図１】
0004612546.tif 000037
【図２】
0004612546.tif 000038
【図３】
0004612546.tif 000039
【図４】
0004612546.tif 000040
【図５】
0004612546.tif 000041
【図６】
0004612546.tif 000042
【図７】
0004612546.tif 000043
【図８】
0004612546.tif 000044
【図９】
0004612546.tif 000045
【図１０】
0004612546.tif 000046