(57)【特許請求の範囲】
【請求項１】
少なくとも記憶装置と演算装置とを具備したコンピュータを用い、前記演算装置において、分子軌道法計算の計算過程で得られる２電子積分値を用いて繰り返し計算を行なうことによって対象分子の分子軌道法計算を行なう方法であって、
前記２電子積分値の個数は、前記対象分子の基底関数の４乗に比例し、
前記２電子積分値のうち、予め定めた量の２電子積分値を、前記対象分子の軌道量子数の和が小さい２電子積分値から優先的に前記記憶装置に記憶させておき、
前記演算装置は、前記繰り返し計算を行なう場合には、前記記憶装置に記憶された２電子積分値については、前記記憶装置から読み出す一方、前記記憶装置に記憶されていない２電子積分値については、計算することによって該繰り返し計算で用いる２電子積分値を取得するようにした分子軌道法計算方法。
【請求項２】
少なくとも記憶装置と演算装置とを具備したコンピュータを用い、前記演算装置において、分子軌道法計算の計算過程で得られる２電子積分値を用いて繰り返し計算を行なうことによって対象分子の分子軌道法計算を行なう方法であって、
前記２電子積分値の個数は、前記対象分子の基底関数の４乗に比例し、
前記対象分子の基底関数を、積分１つあたりの計算負荷の大きい順番にソートし、
このソート結果に基づいて、積分１つあたりの計算負荷の大きい基底関数に対応する２電子積分値から優先的に前記記憶装置に記憶させておき、
前記演算装置は、前記繰り返し計算を行なう場合には、前記記憶装置に記憶された２電子積分値については、前記記憶装置から読み出す一方、前記記憶装置に記憶されていない２電子積分値については、計算することによって該繰り返し計算で用いる２電子積分値を取得するようにした分子軌道法計算方法。
【請求項３】
少なくとも記憶手段と演算手段と制御手段とを具備し、前記演算手段において、分子軌道法計算の計算過程で得られる２電子積分値を用いて繰り返し計算を行なうことによって対象分子の分子軌道法計算を行なう装置であって、
前記２電子積分値の個数は、前記対象分子の基底関数の４乗に比例し、
前記制御手段は、前記２電子積分値のうち、予め定めた量の２電子積分値を、前記対象分子の軌道量子数の和が小さい２電子積分値から優先的に前記記憶装置に記憶させ、
前記演算装置は、前記繰り返し計算を行なう場合には、前記記憶装置に記憶された２電子積分値については、前記記憶装置から読み出す一方、前記記憶装置に記憶されていない２電子積分値については、計算することによって該繰り返し計算で用いる２電子積分値を取得するようにした分子軌道法計算装置。
【請求項４】
少なくとも記憶手段と演算手段と制御手段とを具備し、前記演算手段において、分子軌道法計算の計算過程で得られる２電子積分値を用いて繰り返し計算を行なうことによって対象分子の分子軌道法計算を行なう装置であって、
前記２電子積分値の個数は、前記対象分子の基底関数の４乗に比例し、
前記対象分子の基底関数を、積分１つあたりの計算負荷の大きい順番にソートするソート手段を更に備え、
前記制御手段は、前記ソート手段によってなされたソート結果に基づいて、積分１つあたりの計算負荷の大きい基底関数に対応する２電子積分値から優先的に前記記憶装置に記憶させ、
前記演算装置は、前記繰り返し計算を行なう場合には、前記記憶装置に記憶された２電子積分値については、前記記憶装置から読み出す一方、前記記憶装置に記憶されていない２電子積分値については、計算することによって該繰り返し計算で用いる２電子積分値を取得するようにした分子軌道法計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば分子軌道法計算方法および計算装置に係り、更に詳しくは、コンピュータを用いて行われる大規模な科学技術計算である分子軌道法計算に好適な方法および装置に関する。
【背景技術】
【０００２】
分子軌道法は原子の電子軌道の線形結合により表現された分子の電子軌道を基底関数として分子の電子状態を解析する計算化学の分野で非常に良く用いられている。
【０００３】
以下に、従来なされている分子軌道法の計算方法の一例として、一般的に良く知られているHantree-Fock法を用いて行う場合について、その概要を説明する。Hantree-Fock法については、例えば、非特許文献１，２に詳しい。
【０００４】
Hantree-Fock法において解くべきHantree-Fock-Roothaan方程式では、以下に示す式（１）から式（６）の通り表される。
【数１】
0004741802.tif 000002
【０００５】
基底関数は、分子軌道法で求める分子軌道を展開するために用いられる関数群であり、計算する分子である対象分子を大きくしたり、計算精度を上げたりすると、基底関数の数Ｎが増加する。この基底関数を用いることによって、分子軌道と呼ばれる関数｛ψ｝は、以下に示す式（１０）〜（１２）に示すように、基底関数の線形結合で表され、基底関数はさらにデカルトガウス型関数｛ｇ｝で展開されている。
【数２】
0004741802.tif 000003
【０００６】
上記縮約係数、軌道指数、縮約長はそれぞれ基底関数の種類によって固定された定数であり、通常の分子軌道計算では変化することはない。ｎ＝（ｎｘ，ｎｙ，ｎｚ）は角運動量指数で、各成分の和λ＝ｎｘ＋ｎｙ＋ｎｚを軌道量子数と呼び、この値が基底関数の基本的な型を決める。λ＝０，１，２，３…である関数を、それぞれｓ，ｐ，ｄ，ｆ…型の関数と呼び、より大きなλを持つ関数は、一般に「高次の」関数と呼ばれる。
【０００７】
さて、上記式（１）では、Fock行列Ｆと行列Ｓとを与えて、一般化固有値問題を解き、固有値（軌道エネルギー）ｅ＝ｄｉａｇ（ε１，ε２，・・・，εＮ）と対応する固有ベクトル（分子軌道係数）Ｃ＝（ｃ１，ｃ２，・・・，ｃＮ）を求める。密度行列は分子軌道係数を用いて、以下に示す式（７）で計算される。  
【数３】
0004741802.tif 000004
【０００８】
ここで、ｎは分子中の電子数である。
【０００９】
式（１）では、Fock行列と重なり行列とを与えて、分子軌道係数と軌道エネルギーを求める。ところが、与えるべきFock行列が、求めるべき分子軌道係数を用いて計算されるために、この方程式は非線型方程式であり、繰り返し計算を必要とする。
【００１０】
分子の（電子）エネルギーは、収束した分子軌道係数を用いて計算された密度行列、Fock行列などを用いて、以下に示す式（８）で与えられる。  
【数４】
0004741802.tif 000005
【００１１】
Fock行列に表れる２電子積分と呼ばれる値（ｉｊ｜ｋｌ）を、全ての基底関数｛ψｉ｝の４重対に対して求める必要があるため、Fock行列作成における計算コストは基底関数の数Ｎの４乗に比例する（Ｏ（Ｎ４））。
【００１２】
計算に用いる基底関数は実関数であることが多く、２電子積分には以下の式（９）に示すような対称関係が成り立つ。
【数５】
0004741802.tif 000006
【００１３】
上述したようなHantree-Fock法を適用し、コンピュータを用いて行なう分子軌道計算の一般的な流れを、図７のフローチャートを用いて説明する。
【００１４】
まず、対象分子のデータおよび分子軌道の展開に用いる関数群のデータがコンピュータに読み込まれ（Ｓ１）、次に、式（３）、式（７）および式（８）を用い、与えられたデータに基づいて１電子積分Ｈcore、初期エネルギー、および初期電子密度行列Ｄが計算される（Ｓ２）。
【００１５】
そして、式（４）を用いて、全ての２電子積分を計算しながら、与えられた電子密度行列と掛け合わせてＦｏｃｋ行列が作成される（Ｓ３）。なお、２電子積分計算を行なう場合には、式（９）に示すような対称関係を利用し、例えば図８に示すようなループ構造をもつプログラムを用いることによって、無駄な２電子積分計算が回避されている。更に、式（１）を用いて、Ｆｏｃｋ行列と重なり行列とから一般化固有値問題が解かれ、式（８）を用いて新たなエネルギーが、式（７）を用いて電子密度行列がそれぞれ計算される（Ｓ４）。
【００１６】
そして、ステップＳ４で計算されたエネルギーおよび電子密度行列が収束した場合（Ｓ５：Ｙｅｓ）には、収束した電子密度行列を用いて、全エネルギーや電荷分布などが計算され、分子軌道計算が完了する（Ｓ６）。一方、収束していない場合（Ｓ５：Ｎｏ）には、ステップＳ３の処理に戻り、分子軌道計算が完了するまで、ステップＳ３からステップＳ５までの処理が繰り返し行なわれる。
【非特許文献１】「新しい量子化学（上）−電子構造の理論入門−」A.ザボ、N.S.オストランド著、大野公男、阪井健男、望月祐志  訳、東京大学出版会
【非特許文献２】「分子軌道法」藤永茂  著、岩波書店
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、このような従来の分子軌道法計算方法では、以下のような問題がある。
【００１８】
すなわち、従来の分子軌道法計算においては、ステップＳ３のＦｏｃｋ行列生成時に２電子積分値が必要となるが、この２電子積分値の取り扱いが、コンピュータを用いた分子軌道計算の高速化に対する大きな障害となっている。
【００１９】
本来、解析対象の系を固定すれば２電子積分値は定数となるので、計算開始時に一度だけ計算すれば良い。したがって、２電子積分値がすべてコンピュータのメモリに格納できるような小規模な系を解く場合には、メモリ上の値が参照可能である。これを間接法分子軌道法という。
【００２０】
しかし、２電子積分値の総数は基底関数の四乗に比例するため、対象分子の系の規模がある程度大きくなると、２電子積分値を格納するために必要なメモリ量が著しく増大し、メモリに格納することができなくなり、さらに系が巨大になるとコンピュータのハードディスクにすら格納できず計算不能となってしまうという問題がある。
【００２１】
そのため、大規模な系を解く場合には、必要なときに２電子積分値を再計算する直接法を用いることにより対処している。しかしながら、この場合、記憶コストを演算コストに置き換えているため、今度はコンピュータの演算時間が増大してしまうという問題がある。実際、全処理時間の９９％以上が２電子積分値計算であることも少なくない。
【００２２】
本発明はこのような事情に鑑みてなされたものであり、分子軌道法計算の過程で得られる２電子積分値を、再計算して求めるものと、バッファ領域のような記憶装置に記憶しておき、計算時にそれを読み出して行なうものとに分けて実行することによって、分子軌道法計算の高速化を図ることが可能な分子軌道法計算方法および装置を提供することを目的とする。
【課題を解決するための手段】
【００２３】
上記の目的を達成するために、本発明では、以下のような手段を講じる。
【００２４】
すなわち、請求項１の発明は、少なくとも記憶装置と演算装置とを具備したコンピュータを用い、演算装置において、分子軌道法計算の計算過程で得られる２電子積分値を用いて繰り返し計算を行なうことによって対象分子の分子軌道法計算を行なう方法であって、２電子積分値のうち、予め定めた量の２電子積分値を記憶装置に記憶させておく。そして、演算装置は、繰り返し計算を行なう場合には、記憶装置に記憶された２電子積分値については、記憶装置から読み出す一方、記憶装置に記憶されていない２電子積分値については、計算することによって該繰り返し計算で用いる２電子積分値を取得する。ここで、２電子積分値の個数は、対象分子の基底関数の４乗に比例する。
【００２５】
従って、請求項１の発明の分子軌道計算方法においては、以上のような手段を講じることにより、計算時間のかかる２電子積分値については可能な限り記憶装置に記憶しておくことができる。そして、繰り返し計算時には、計算時間のあまりかからない２電子積分値については再計算して取得する。一方、計算時間のかかる２電子積分値については、記憶装置から読み出して取得することによって、再計算する必要がなくなるので、分子軌道法計算の高速化を図ることが可能となる。
【００２６】
更に、請求項１の発明は、対象分子の軌道量子数の和が小さい２電子積分値から優先的に記憶装置に記憶させる。
【００２７】
従って、軌道量子数の和が小さい２電子積分値から優先的に記憶装置に記憶させることができる。軌道量子数の和が小さい２電子積分値は、多大な計算時間を要するので、繰り返し計算時には、計算時間のあまりかからない軌道量子数の和が大きい２電子積分値のみを再計算すれば良く、分子軌道法計算の高速化を図ることが可能となる。
【００２８】
請求項２の発明は、少なくとも記憶装置と演算装置とを具備したコンピュータを用い、前記演算装置において、分子軌道法計算の計算過程で得られる２電子積分値を用いて繰り返し計算を行なうことによって対象分子の分子軌道法計算を行なう方法であって、対象分子の基底関数を、積分１つあたりの計算負荷の大きい順番にソートし、このソート結果に基づいて、積分１つあたりの計算負荷の大きい基底関数に対応する２電子積分値から優先的に記憶装置に記憶させておき、演算装置は、繰り返し計算を行なう場合には、記憶装置に記憶された２電子積分値については、記憶装置から読み出す一方、記憶装置に記憶されていない２電子積分値については、計算することによって該繰り返し計算で用いる２電子積分値を取得する。ここで、２電子積分値の個数は、対象分子の基底関数の４乗に比例する。
【００２９】
従って、請求項２の発明の分子軌道計算方法においては、以上のような手段を講じることにより、計算負荷の大きい基底関数に対応する２電子積分値から優先的に記憶装置に記憶させることができる。計算負荷の大きい基底関数に対応する２電子積分値は、多大な計算時間を要するので、繰り返し計算時には、計算時間のあまりかからない２電子積分値のみを再計算すれば良く、分子軌道法計算の高速化を図ることが可能となる。
【００３０】
請求項３の発明は、少なくとも記憶手段と演算手段と制御手段とを具備し、演算手段において、分子軌道法計算の計算過程で得られる２電子積分値を用いて繰り返し計算を行なうことによって対象分子の分子軌道法計算を行なう装置であって、制御手段は、２電子積分値のうち、予め定めた量の２電子積分値を記憶装置に記憶させる。また、演算装置は、繰り返し計算を行なう場合には、記憶装置に記憶された２電子積分値については、記憶装置から読み出す一方、記憶装置に記憶されていない２電子積分値については、計算することによって該繰り返し計算で用いる２電子積分値を取得する。ここで、２電子積分値の個数は、対象分子の基底関数の４乗に比例する。
【００３１】
従って、請求項３の発明の分子軌道計算装置においては、以上のような手段を講じることにより、計算時間のかかる２電子積分値については可能な限り記憶手段に記憶しておくことができる。そして、繰り返し計算時には、計算時間のあまりかからない２電子積分値については再計算して取得する。一方、計算時間のかかる２電子積分値については、記憶手段から読み出して取得することによって、再計算する必要がなくなるので、分子軌道法計算の高速化を図ることが可能となる。
【００３２】
更に、請求項３の発明は、制御手段が、対象分子の軌道量子数の和が小さい２電子積分値から優先的に記憶装置に記憶させる。
【００３３】
従って、軌道量子数の和が小さい２電子積分値から優先的に記憶手段に記憶させることができる。軌道量子数の和が小さい２電子積分値は、多大な計算時間を要するので、繰り返し計算時には、計算時間のあまりかからない軌道量子数の和が大きい２電子積分値のみを再計算すれば良く、分子軌道法計算の高速化を図ることが可能となる。
【００３４】
請求項４の発明は、少なくとも記憶手段と演算手段と制御手段とを具備し、演算手段において、分子軌道法計算の計算過程で得られる２電子積分値を用いて繰り返し計算を行なうことによって対象分子の分子軌道法計算を行なう装置であって、対象分子の基底関数を、積分１つあたりの計算負荷の大きい順番にソートするソート手段を更に備える。そして、制御手段は、ソート手段によってなされたソート結果に基づいて、積分１つあたりの計算負荷の大きい基底関数に対応する２電子積分値から優先的に記憶装置に記憶させる。演算装置は、繰り返し計算を行なう場合には、記憶装置に記憶された２電子積分値については、記憶装置から読み出す一方、記憶装置に記憶されていない２電子積分値については、計算することによって該繰り返し計算で用いる２電子積分値を取得する。ここで、２電子積分値の個数は、対象分子の基底関数の４乗に比例する。
【００３５】
従って、請求項４の発明の分子軌道計算装置においては、以上のような手段を講じることにより、計算負荷の大きい基底関数に対応する２電子積分値から優先的に記憶手段に記憶させることができる。計算負荷の大きい基底関数に対応する２電子積分値は、多大な計算時間を要するので、繰り返し計算時には、計算時間のあまりかからない２電子積分値のみを再計算すれば良く、分子軌道法計算の高速化を図ることが可能となる。
【発明の効果】
【００３６】
本発明の分子軌道法計算方法および装置によれば、分子軌道法計算の過程で得られる２電子積分値を、再計算して求めるものと、バッファ領域のような記憶装置に格納しておき、計算時にそれを読み出して行なうものとに分けて実行することによって、分子軌道法計算の高速化を図ることが可能となる。
【発明を実施するための最良の形態】
【００３７】
以下に、本発明を実施するための最良の形態について図面を参照しながら説明する。
【００３８】
なお、以下の形態の説明に用いる図中の符号は、図７と同一ステップについては同一符号を付して示すことにする。
【００３９】
本発明の最良の形態を図１から図６を用いて説明する。
【００４０】
図１は、本形態に係る分子軌道法計算方法を適用した分子軌道法計算装置の一例を示す構成概念図である。
【００４１】
この分子軌道法計算装置１０は、入力部１２と、制御部１４と、記憶部１６と、演算部１８と、出力部２０とを備えており、図２に示すフローチャートにしたがって動作する。なお、図２のフローチャートでは、図７のフローチャートにおける処理と同一のステップについては、同一のステップ番号を付している。すなわち、図２に示すフローチャートは、図１に示すフローチャートにおけるステップＳ１とステップＳ２との間にステップＳ１１を追加し、ステップＳ３の代わりにステップＳ３１乃至ステップＳ３４としたものである。
【００４２】
入力部１２は、図示しないマウスやキーボード等の入力手段を備えており、オペレータがこれら入力手段を操作することによって、従来技術で説明したような対象分子の分子軌道法計算に必要な諸データが入力されるようにしている。そして、必要な諸データが入力されると、入力部１２は、この入力された諸データを制御部１４に出力する（Ｓ１）。
【００４３】
制御部１４は、この分子軌道法計算装置１０の全体制御を司る部位であって、ステップＳ１において入力部１２から出力された諸データを演算部１８に出力したり、必要な処理を施したり（Ｓ１１）、記憶部１６にバッファ領域１７を確保する（Ｓ３１）。
【００４４】
必要な処理として、例えば、入力部１２から出力された諸データに基づいて、対象分子の基底関数を、計算負荷の大きい順番にソートする。すなわち、２電子積分値は４つの基底関数を含んだ積分であるが、その軌道量子数の組み合わせによって２電子積分値の型が決まる。２電子積分値計算ルーチンでは、一般には、この積分タイプごとに呼び出すサブプログラムが異なる。通常の２電子積分値計算ルーチンは、縮約殻（contracted shell）の４重ループ構造をとっている。この縮約殻とは、同じ軌道量子数、同じ中心、それに、同じ縮約係数、軌道指数の組を持つ関数の集まりである。縮約殻の軌道量子数の並びは、何も前処理をしなければ、ばらばらなので、縮約殻の４重ループの最も内側で決まる積分タイプは、事実上、ランダムな並びで現れる。そうすると、バッファに保存する積分のタイプを限定する作業が面倒になる。積分１つあたりの計算量を考慮した場合、軌道量子数の和が小さい積分からバッファに保存したほうが好ましいため、積分タイプごとに２電子積分値を計算して、保存することは、性能向上に必要不可欠である。
【００４５】
具体的なソート方法の一例について図３を用いて説明する。
【００４６】
図３は、Thymine（原子数１５，基底関数６−３１Ｇ＊、軌道数１４７）を対象分子とした場合における各タイプの２電子積分１つあたりの計算コストの比を示すグラフである。横軸は、ＥＲＩ（Electron Repulsion Integral：２電子積分タイプの２電子反発積分）のタイプを軌道順に示し、縦軸は、ＥＲＩのタイプが（ｄｄ，ｄｄ）である場合を基準とした場合における（１）実行時間、（２）浮動小数演算数、（３）全実行命令数、（４）メモリアクセス数に対する比をそれぞれ示している。この結果は、各タイプの２電子積分値計算コストを、一般に用いられているプロセッサの性能カウンタ利用のためのプログラムであるperformance counter library（ＰＣＬ）を用いて測定し、その値を、計算した全ての積分数で割った値を、各積分タイプの積分１個あたりの計算コストと換算することによって得た。
【００４７】
図３を見て分かるように、積分１個あたりの計算コストは、最も軌道量子数の和の小さな（ｓｓ，ｓｓ）タイプが最も高く、（１）実行時間で比較すると、（ｄｄ，ｄｄ）タイプの６０倍以上もかかっていることが分かる。この場合、（ｓｓ，ｓｓ）および（ｐｓ，ｓｓ）タイプを優先的にバッファ領域１７に記憶するようにすれば効果的であることがわかる。それ以外は何れも計算コストはさほど高くないので、バッファ領域１７に記憶させるメリットはあまりない。したがって、この結果に基づき、対象分子の基底関数を、計算負荷の大きい順番にソートすることによって、バッファ領域１７に記憶させるべき基底関数の優先順位を決定するようにしている。
【００４８】
そして、演算部１８から２電子積分値が出力された場合には、このソート結果に基づいて、計算負荷の大きい基底関数に対応する２電子積分値から優先的にバッファ領域１７に記憶させる（Ｓ３２）。
【００４９】
なお、上述したようなソートを用いた方法の代わりに、入力部１２から出力された諸データに基づいて、対象分子の軌道量子数の和を求めておき、演算部１８から２電子積分値が出力された場合には、軌道量子数の和が小さい２電子積分値から優先的にバッファ領域１７に記憶させるようにしてもよい。
【００５０】
また、制御部１４は、ステップＳ３３、ステップＳ３４、およびステップＳ４において演算部１８が、２電子積分値を用いて繰り返し計算を行なう場合には、逆に、バッファ領域１７から２電子積分値を取り出し、演算部１８に引き渡す。そして、エネルギー、電子密度行列が収束し（Ｓ５）、演算部１８によって最終結果が得られた場合（Ｓ６）には、この結果を取り出し、出力部２０に出力する。
【００５１】
演算部１８は、入力部１２から出力された諸データを制御部１４を介して取得し、これら諸データに基づいて、１電子積分、初期エネルギーおよび初期電子密度行列を計算する（Ｓ２）。そして、全ての２電子積分値をタイプ毎に計算しながら、与えられた電子密度行列と掛け合わせて初期Ｆｏｃｋ行列を作成する。その際に、制御部１４を介して、計算負荷の大きい基底関数に対応する２電子積分値や、軌道量子数の和が小さい２電子積分値など、予め定められた２電子積分値およびそれに付随する４つの添え字をバッファ領域１７に記憶させる（Ｓ３２）。
【００５２】
そして、ステップＳ３２で記憶された２電子積分値およびその添え字、ならびに電子密度行列を制御部１４を介してバッファ領域１７から取得し、これらを用いて、Ｆｏｃｋ行列の部分和を計算する（Ｓ３３）。次に、バッファ領域１７に記憶されていない２電子積分値を計算しながら、与えられた電子密度行列と掛け合わせてＦｏｃｋ行列を完成させる（Ｓ３４）。更に、ステップＳ３３およびステップＳ３４で計算されたＦｏｃｋ行列と重なり行列とを用いて一般化固有値問題を解き、新たなエネルギーおよび電子密度行列を計算し（Ｓ４）、エネルギー、電子密度行列が収束する（Ｓ５）まで、ステップＳ３３、ステップＳ３４およびステップＳ４からなる繰り返し計算を行なう。
【００５３】
このように演算部１８は、繰り返し計算を行なう場合には、バッファ領域１７に記憶された２電子積分値については、制御部１４を介してバッファ領域１７から読み出す一方、バッファ領域１７に記憶されていない２電子積分値については、計算することによって該繰り返し計算で用いる２電子積分値を取得している。
【００５４】
バッファ領域１７に記憶する２電子積分値は、上述したように、計算負荷の大きい基底関数に対応する２電子積分値や、軌道量子数の和が小さい２電子積分値である。計算時間の観点からは、計算負荷の大きい基底関数に対応する２電子積分値や、軌道量子数の和が小さい２電子積分値ほど、計算時間がかかる。そのため、このように計算時間がかかる２電子積分値については、バッファ領域１７に記憶しておき、繰り返し計算時（Ｓ３３）には、これらの２電子積分値については再計算することなくバッファ領域１７から取り出す一方、計算時間があまりかからず、再計算が容易な２電子積分値については、バッファ領域１７に記憶せず、繰り返し計算時（Ｓ３４）には、演算部１８で再計算して用いるようにしている。
【００５５】
バッファ領域１７に記憶させる方法（間接法）は高速であるが、記憶部１６の容量の観点から規模の大きな対象分子には使用できない。その一方で、再計算する方法（直接法）は低速となるが、規模の大きな対象分子に対しても使用することができる。上述したように、２電子積分値の計算時間はすべての場合において同一とは限らないことから、計算時間が大きい２電子積分値のみ記憶できるようバッファ領域１７を確保してここに記憶しておき、計算時間があまりかからない２電子積分値を再計算して取得することにより、直接法と間接法の両者の手法の欠点を回避しつつ、長所を活かすことにより、対象分子に応じて高速な分子軌道計算を行なうようにする。
【００５６】
したがって、ステップＳ３１で確保されるバッファ領域１７のサイズは、対象分子に応じて高速な分子軌道計算を実現するように、記憶部１６の記憶容量の範囲内において、対象分子に応じて定めるようにする。具体的なバッファ領域１７のサイズの決定方法について、図４を用いて説明する。
【００５７】
図４は、(Gly)5（グリシン５量体）の各ＥＲＩタイプに対する積分数と、それに対応した必要メモリ容量（ＭＢ）を示す図である。更には、最も軌道量子数の和の小さなＥＲＩタイプからの必要メモリ容量（ＭＢ）を累積した累積必要メモリ容量（ＭＢ）も示している。
【００５８】
図４より、バッファ領域１７のサイズが１６ＭＢであれば、（ｓｓ，ｓｓ）タイプの積分全部と、（ｐｓ，ｓｓ）タイプの積分の一部を記憶できることがわかる。また、バッファ領域１７のサイズが１２８ＭＢであれば、（ｐｓ，ｐｓ）タイプまでの積分のほとんどを記憶できることがわかる。更に、バッファ領域１７のサイズが２５６ＭＢの場合、（ｐｐ，ｐｓ）タイプまでの積分の多くを記憶できることになり、ステップＳ３３，ステップＳ３４およびステップＳ４でなされる繰り返し計算で毎回計算すべき積分の大部分を、比較的負荷の軽い（ｐｐ，ｐｐ）タイプのみとすることができるようになる。これにより、後述するように、バッファ領域１７のサイズに対する性能向上の程度を、linear-scaleよりも向上することを可能としている。
【００５９】
更に演算部１８は、ステップＳ５において、エネルギー、電子密度行列が収束した場合には、この収束した電子密度行列を用いて、全エネルギーや電荷分布などを計算することによって対象分子の分子軌道計算を完了し、計算結果を制御部１４を介して出力部２０に出力する（Ｓ６）。
【００６０】
出力部２０は、図示しない表示画面を備えており、この計算結果を表示画面から表示する。
【００６１】
次に、以上のように構成した本形態に係る分子軌道法計算方法を適用した分子軌道法計算装置の動作について説明する。
【００６２】
この分子軌道法計算装置１０によって対象分子の分子軌道計算を行なう場合には、先ず、入力部１２の図示しないマウスやキーボード等の入力手段を使うことによって、対象分子の分子軌道計算に必要な諸データを入力する必要がある。必要な諸データが入力されると、この入力された諸データは、入力部１２から制御部１４へと出力される（Ｓ１）。
【００６３】
次に、制御部１４において、ステップＳ１において入力部１２から出力された諸データに基づいて、対象分子の基底関数が、計算負荷の大きい順番にソートされる（Ｓ１１）。あるいは、この代わりに、入力部１２から出力された諸データに基づいて、対象分子の軌道量子数の和の小さい順番にソートされるようにしても良い。一方、演算部１８では、ステップＳ１において入力部１２から出力された諸データに基づいて、１電子積分、初期エネルギーおよび初期電子密度行列が計算される（Ｓ２）。
【００６４】
次に、制御部１４によって、記憶部１６にバッファ領域１７が確保される（Ｓ３１）。必要なバッファ領域１７のサイズは、対象分子によってある程度わかるので、そこから類推することによって、対象分子に応じて高速な分子軌道計算を実現するように、記憶部１６の記憶容量の範囲内において決定される。あるいは、オペレータが設定するようにしても良い。
【００６５】
そして、演算部１８では、ステップＳ１において入力部１２から出力された諸データに基づいて、全ての２電子積分値をタイプ毎に計算しながら、与えられた電子密度行列と掛け合わせることによって初期Ｆｏｃｋ行列が作成される。更に、ステップＳ１１でなされたソート結果にしたがって、計算負荷の大きい基底関数に対応する２電子積分値や、軌道量子数の和が小さい２電子積分値が、付随する４つの添え字とともにバッファ領域１７に記憶される（Ｓ３２）。
【００６６】
更に、ステップＳ３２で記憶された２電子積分値およびその添え字、ならびに電子密度行列が、制御部１４を介してバッファ領域１７から演算部１８に引き渡される。そして、演算部１８では、これらを用いてＦｏｃｋ行列の部分和が計算される（Ｓ３３）。次に、演算部１８において、バッファ領域１７に記憶されていない２電子積分値が計算され、更に与えられた電子密度行列と掛け合わせることによってＦｏｃｋ行列が完成される（Ｓ３４）。
【００６７】
しかる後に、演算部１８では、ステップＳ３３およびステップＳ３４で計算されたＦｏｃｋ行列と重なり行列とを用いて一般化固有値問題が解かれ、新たなエネルギーおよび電子密度行列が計算される（Ｓ４）。そして、演算部１８によって、エネルギー、電子密度行列が収束すると判定された場合（Ｓ５：Ｙｅｓ）には、更に、この収束した電子密度行列を用いて、全エネルギーや電荷分布などが計算され、この計算結果が分子軌道計算の最終結果として出力部２０の表示画面から表示される。（Ｓ６）。
【００６８】
一方、演算部１８によって、収束していないと判定された場合（Ｓ５：Ｎｏ）には、ステップＳ３３、ステップＳ３４およびステップＳ４からなる繰り返し計算が収束するまで行われる。
【００６９】
上述したように、本形態に係る分子軌道法計算方法を適用した分子軌道法計算装置においては、分子軌道法計算の過程で得られ、繰り返し計算に用いる２電子積分値のうち、計算負荷の大きい基底関数に対応する２電子積分値や、軌道量子数の和が小さい２電子積分値など、再計算して取得するのに計算時間が大きい２電子積分値については、バッファ領域１７に記憶しておき、繰り返し計算時には、再計算することなく、バッファ領域１７から取り出して繰り返し計算に用いることができる（間接法）。
【００７０】
一方、再計算して取得するのにさほど計算時間を要しない２電子積分値については、バッファ領域１７に記憶せず、繰り返し計算時には、その都度再計算して取得し、繰り返し計算に用いることができる（直接法）。
【００７１】
上記した間接法は高速であるが、記憶部１６の容量の観点から規模の大きな対象分子には使用できないという特徴がある一方、直接法は低速であるが、規模の大きな対象分子に対しても使用することができるという特徴を有している。
【００７２】
本発明は、この直接法と間接法とを組み合わせ、かつ対象分子に適切なバッファ領域１７のサイズを設定することにより、直接法と間接法の両者の手法の欠点を回避しつつ、両者の長所の融合が可能となり、高速な分子軌道計算を行なうことが可能となる。
【００７３】
更には、分子軌道法計算のような膨大な科学技術計算では、極めて多数のプロセッサを用いて並列計算を行うことがなされている。このような場合、用いたプロセッサ数から期待される実行性能（linear-scale）を得ることができない場合がある。しかしながら、本形態に係る分子軌道法計算方法を適用した分子軌道法計算装置を用いることによって、このような実行性能の低下を阻止できるばかりではなく、適切なバッファ領域１７のサイズを設定することによって、用いたプロセッサ数から期待される実行性能よりもむしろ高い所謂super-linearな実行性能が実現される。この効果について、Crambin（４６アミノ酸残基、６４２原子、１９７４軌道、基底関数ＳＴＯ−３Ｇ）を対象分子として行った２電子積分の結果を例に説明する。
【００７４】
図５は、バッファ領域１７を設けなかった場合におけるプロセッサ数と、プロセッサ数が１個の場合に対する各プロセッサ数における速度向上率との関係を示している。すなわち、横軸は、プロセッサの数であり、縦軸は、必要な計算を完了するまでの時間が、１個のプロセッサが用いられた場合に対して何倍短くなったかを示している。
【００７５】
２電子積分値計算は、元来、並列性が非常に高いことを反映して、図５に示すように、１２８個のプロセッサを使用した場合でも、１個のプロセッサを使用した場合の１２５倍あまりの速度向上が得られている。しかしながら、この時点でも、図中（ｂ）に示すように、用いたプロセッサ数に比例して実行性能が向上するlinear-scaleの速度向上直線（図中（ａ））よりも若干性能が落ちている。すなわち、数１００個以上のプロセッサを用いて並列計算を行う場合には、性能向上が頭打ちになることを示している。
【００７６】
それに対し、図６は、１個のプロセッサあたり、それぞれ３２ＭＢ（図中（ｃ））、６４ＭＢ（図中（ｄ））、および１２８ＭＢ（図中（ｅ））のバッファ領域１７を設けた場合のプロセッサ数と速度向上率との関係を示している。図６に示すように、１個のプロセッサあたりのバッファ領域１７のサイズを３２ＭＢとした場合であっても、図５に示すようなバッファ領域１７無しの場合に見られた速度向上率の低下がなくなるのみならず、図中（ａ）に示すlinear-scaleよりも高い速度向上直線であるsuper-linear scalabilityを示している。バッファ領域１７のサイズが１２８ＭＢの場合、１２８個のプロセッサ使用時に、１個のプロセッサ使用時の１４４．６倍ものsuper-linearな速度向上効果が得られた。
【００７７】
このように、本形態に係る分子軌道法計算方法を適用した分子軌道法計算装置を用いることによって、多くのプロセッサを用いた場合に見られる実行性能の低下を阻止できるばかりではなく、適切なバッファ領域１７のサイズを設定することによって、用いたプロセッサ数から期待される実行性能よりもむしろ高い所謂super-linearな実行性能を実現することが可能となる。
【００７８】
以上、本発明を実施するための最良の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。特許請求の範囲の発明された技術的思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の技術的範囲に属するものと了解される。
【図面の簡単な説明】
【００７９】
【図１】本発明の最良の形態に係る分子軌道法計算方法を適用した分子軌道法計算装置の一例を示す構成概念図。
【図２】同形態に係る分子軌道法計算方法を適用した分子軌道法計算装置の動作例を示すフローチャート。
【図３】Thymineを対象分子とした場合におけるＥＲＩタイプと、２電子積分計算コストとの関係を示す図。
【図４】(Gly)5（グリシン５量体）の各ＥＲＩタイプに対する積分数と、それに対応した必要メモリ容量（ＭＢ）、および必要メモリ容量（ＭＢ）を累積した累積メモリ容量（ＭＢ）を示す図。
【図５】バッファ領域を設けなかった場合におけるプロセッサ数と速度向上率との関係を示す図。
【図６】バッファ領域を設けた場合におけるプロセッサ数と速度向上率との関係を示す図。
【図７】従来技術における分子軌道法計算方法の流れを示すフローチャート。
【図８】対象関係を利用して２電子積分値計算を行なうプログラムの一例を示す図。
【符号の説明】
【００８０】
１０…分子軌道法計算装置、１２…入力部、１４…制御部、１６…記憶部、１７…バッファ領域、１８…演算部、２０…出力部
【図１】
0004741802.tif 000007
【図２】
0004741802.tif 000008
【図３】
0004741802.tif 000009
【図４】
0004741802.tif 000010
【図５】
0004741802.tif 000011
【図６】
0004741802.tif 000012
【図７】
0004741802.tif 000013
【図８】
0004741802.tif 000014