読者です 読者をやめる 読者になる 読者になる

nano_exit

量子力学、固体物理、fortran、python、etc

VASPでEMAXを増やして計算したらcore dumpする件について(Ubuntu12.0.4)

VASPのコンパイルの問題ではなく、Linux側でデフォルトの設定だとstackの上限が8MB程度と小さいことが原因(あくまで自分のケースでは)。オーバーフローとか別のエラーを吐いて欲しかった。。。

ulimit -a

でいろんな上限が見れる。
一時的には

ulimit -s unlimited

でstackの上限を外せるが、ターミナルを閉じたりするとデフォルトに戻る。めんどい。

/etc/security/limits.conf

を弄ってstackの上限を外す。自分は適当に、

 * soft stack unlimited
 * hard stack unlimited

と付け加えた。*は全てのユーザーで、soft/hardは一般ユーザー/rootの上限を設定することを表す。ちゃんと理解していないので、ユーザーの指定とsoft/hardの役割が被っている気がしてならないが、VASPが動けばどうでも良い。
変更を反映させるにはrebootする必要がある。うちのワークステーションはSDDなのであまり気にならないが、立ち上がりが遅いと面倒な作業ではある。
変更されたかを見るには

ulimit -a

をターミナルに打ち込む。ulimitをunlimitだと思ってターミナルが反応せず一瞬頭を抱えたのは内緒。
VASPの問題なのかCPU側の問題なのかを判別するのは非常に難しいと痛感したトピックスではあった。

=== 追記 ===
stackの上限が問題になることももちろんあったが、追記として「Intel MKLとopenmpiを併用する場合」を補足しておく。
Intel MKLでBLACSのライブラリーを用いる場合、-lmkl_blacs_intelmpiか-lmkl_blacs_openmpiが選べる。ここでのコンパイルはopenmpiのコンパイラーであるmpifortもしくはmpif90で用いるのだが、intelmpiのライブラリを使うと、コンパイルは通るがコアダンプになることがわかった。
intelmpiはちゃんとIntel MPIを買って使いましょう。