VASP 6.4.1がリリースされました。実はvasp 6.3.0からlibxcが使用可能なのですが、vasp 6.4.1に最新のlibxc 6.1.0を組み込んで、libxcを使用した場合、実行時間が早くなるかを試験しました。
libxcに関しては、https://tddft.org/programs/libxc/ をご参照下さい。
使い方は簡単で、インプット(INCAR)で
GGA=PA
としている部分を
GGA = LIBXC
LIBXC1 = GGA_X_PBE
LIBXC2 = GGA_C_PBE
と変更するだけで、VASPビルド時にlibxcが組み込んであれば、VASPの内部でlibxcが呼ばれて使用されます。VASPでの使い方等の詳細は、https://www.vasp.at/wiki/index.php/GGA や https://www.vasp.at/wiki/index.php/LIBXC1 にあります。
libxcを組み込む事は、様々なアプリで行なわれています。libxcを使用する事で高速になる事を期待しての事ですが、効果は期待出来ないというのが経験的には言われています。系が小さい場合、まず、効果が期待出来ない事から、単一原子からなる系の原子を増やしてみて、実行時間が早くならないかを期待して、計算させてみました。
GGA=PE
で計算した場合の計算時間を100とした場合に、GGA=LIBXC
とした場合の計算時間を表したのが上記のグラフです。
小さい系の場合、効果が殆ど出ない事は予想してはいたのですが、1000原子くらいまで増やさないと効果が出ないという事で、結構、特殊な場合でしか期待出来ないようです。原子の種類を複数にして、計算時間が長い系を使ってもみましたが、どうやら、効果が出るかどうかは、原子の数が一定以上の場合のみのようでした。
恐らく、libxcを使う事で、原子1つあたりで微小な効果はあるのだと思います。ただ、その効果が余り小さ過ぎて、それなりの規模にならないと差が出ないのでしょう。
並列数に関係無く、効果が出ているので、libxcの効果が出るような規模の系であれば、5%程度の計算時間の短縮でも無視出来ない差なのかもしれないので、使う場合もあるとは思いますが、使用する場面がかなり限定的ですね。
libxcへのインターフェースの実装が余り大々的にアナウンスされなかったのも納得するようには思います。どうしても、こうした巨大な系を使用しなくてはいけない場合、ちょっぴりですが、計算時間を短くする方法はあるみたいです。