GAMESS 2007.03 (R3)のコンパイル
なかなか重い腰が上がらなかった、GAMESSのソースコードからのコンパイル。やっと実施してみることにしました。
細かい内容には触れませんが、cygwinは1.5.19(gcc-3.4.4.1)を使いました。ソースコードに同梱のマニュアル通りにコンパイルができます。但しcompallとcompddi,lkedは「./」を頭につけて実行する必要がありました。ddiのsysVはoffです(cygwinでのコンパイルでは必須?)。あと、tinkerモジュールを組み込みました。QM/MMは興味ありますし。
コンパイルにかかった時間はトータルで20分ほど。特につまずくこともなく、あっという間に終了しました(ちょっと拍子抜け?)。
生成した実行ファイルでベンチマークしてみました。例によって有機ラジカルのUMP2 Gradientです。但し、基底関数にaug-cc-pVDZを使って計算時間を延長してます。
NUMBER OF CARTESIAN GAUSSIAN BASIS FUNCTIONS = 154です。
| 1 CPU | 2 CPU | parallel eff. | ||
| WinGAMESS 07.03(R1) | CPU | 981.4 | 486.4 | 2.018 |
| Wall | 988.1 | 602.3 | 1.641 | |
| GAMESS 07.03(R3) (original) | CPU | 1016.9 | 447.1 | 2.274 |
| Wall | 1022.7 | 546.8 | 1.870 |
1 CPUでの計算効率は、Webリリースのprecompiled binaryが有利(自分でコンパイルしたbinaryは0.966倍の効率)ですが、並列化効率は自分でコンパイルしたbinaryの方が有利(Wall clock timeで1.1倍)という結果でした。ちなみに並列計算の入力ではMWORDS=1, MEMDDI=22ですが、シングルスレッドの入力ではMWORDS=120(実際には96で足ります)ということで、メモリ効率も良いです。
今回の比較は、ソースのリビジョンが違う(R1とR3)ので単純に比較できないのですが(もしかしたらUMP2 Gradientに関わる最適化がされているかも?)、並列計算では自分のところでコンパイルしたものを使った方が効率が上がるかもしれません。
コンパイル&並列化については、pc-chem.infoで近くコンテンツ化予定です。乞うご期待。
【追記】
最新の(正確には2006.09~)GAMESSではCCSD(T)のエネルギー計算が並列でできることになっていますが、WinGAMESS 07.03では1 CPUと2 CPUで計算時間に変わりなし(むしろ2 CPUが遅いぐらい)。もちろん、タスクマネージャー上では2つのコアが両方動いていますが…何してるん?
(※各ステップごとのCPU時間を見る限り、SCFは短縮されていますがCCで時間がかかってる)
また、上で紹介した私がコンパイルしたバイナリでは、precompiledのものに比べ倍時間がかかります。どうもCCのルーチンだけ特殊?