« "JOB"って何か知ってます? | メイン | 「可視化」の威力と怖さ »

WinGAMESSの割り当てメモリ量の増量

以前に、WinGAMESSで指定できるメモリ量の妙な制限の話を書きました。これについて、ちょっとだけ解決したので覚書を。

WinGAMESSはCygwin/gccでコンパイルされていますので、cygwinのメモリ制限に引っかかるそうです。で、以下のレジストリキーを追加することで、その最大割り当てメモリ量を拡張することができます
HKEY_LOCAL_MACHINE/SOFTWARE/Cygnus Solutions/Cygwin/heap_chunk_in_mb
このキーのDWORD値に適当なメモリ量をMB単位で入れます。私のワークステーションは現在3072MBのメモリが積まれていますので、(全部使えるわけではありませんが)3072(10進数で)と指定してみました。すると、今まではMWORDS=122が限界値でしたが、これが172まで行けるようになりました。

一応嬉しいんですが、この中途半端な数値は一体…そもそも、3072MBというのは8B/wordsで換算して384Mwordsに相当します。全部の領域が使えないとはいえ300ぐらいまでは指定できると思っていたのですが…
結局拡張はできたものの、以前に計算できなかったNMR計算(180Mwords必要)にはまだ手が届きません。どうしたらいいんでしょう。

そういえばPC GAMESSの方もメモリ指定は謎で、メモリ1024MB搭載時と3072MB搭載時で指定できるメモリ量が変わりません(どちらもMWORDS=228が限界)。こちらはcygwinが絡んでいないので何とも見当がつきません…

《追記》
PC GAMESSの場合、CPUのアーキテクチャ(に対応したバイナリ)によって指定できる最大メモリ量は異なるようです。Athlon/Opteron/Pentium II用バイナリでは、物理メモリを3GB積んでいても228Mwordsしか指定できませんが(上記の通り)、Pentium III/Pentium M用バイナリでは、物理メモリを1GBしか積んでいなくても253Mwordまで指定できます。OSは同じWindowsXP SP2ですから、CPU/バイナリによって違うというのは間違いないのではないでしょうか。
(訂正)parallel(2 nodes)だと228、sequentialだと253ということのようです。アーキテクチャは関係ありませんでした。

WinGAMESSはCPU specificなバイナリではないせいか、Athlon 64 X2でもPentium Mでも同じ172Mwordsが限界でした。でも、物理メモリ量が全然違うのに限界が同じとは、どういうこっちゃ!?
(Pentium Mマシンでは先のレジストリの値を物理メモリに合わせて1024にしたのですが…)

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)