« 2008年05月 | メイン | 2008年08月 »

2008年06月27日

Fedora 9 (x64)でGAMESSを使ってみるテスト。

とりあえずの報告。
Fedora 9 (x86-64)を以前使っていたAthlon 64 X2機にインストールしました。いやぁインストーラも昔に比べて洗練されて、非常に楽です。Windowsとぱっと見難易度は変わりません。
無事インストールが終わり、GAMESSのソースを展開してコンパイル開始。が、cshがないと。とりあえず現在のメインPC経由でネットにつなぎ、tcshをインストール。ふぅ。コンパイル自体は正常に進行し、あとはリンクするだけというところで今度は線形代数ライブラリがないと。ATLASをインストールし、今度こそ完了。無事並列で計算できました。

fedora9x64.jpg

3GBのメモリを積んでいますが、$SYSTEMでMWORDS=1100程度まで指定可能に(↑)。x64のcygwinがあれば、Windowsでも同じようにメモリを使えるんだろうが…まぁ、これでメモリを大量消費するNMRの計算なんかもかなり大きな分子まで実行可能になったんではなかろうか。

----

余談ですが、Fedora 9を使っていて、時々タイミング不明でUSBがきかなくなる現象がありました。マウス・キーボード・USBメモリが認識されなくなり、フリーズ状態。今後はとりあえずPS/2のマウスとキーボードでしのぐかなぁ…

【追記@15:30】
上記のUSBの問題は、キーボード/マウスについてはPS/2接続で安定。
「続きを読む」に、WineでWinmostarとFacioを動かした話を追記しました。

《並列計算ができるようになるまでの道程》

(1)Fedora 9のインストールメディアの入手
Fedoraのダウンロード案内のページから、DL終了後に自動で検証もしてくれるBittorrentでx86-64のisoファイルをダウンロード(1.5MB/secぐらい)。
isoファイルをDVDに焼き、インストールメディア完成。

(2)Fedora 9のインストール
インストールするPCのブート順を変えて、DVDドライブを第1優先にする。
ドライブに先のインストールメディアを入れて起動。最初はメディアチェックを要求される(パスもできる)ので、とりあえずチェックしておく。無事問題がなかったのでそのまま…と思ったら、追加でチェックするディスクがあれば入れろと言ってくる。ないのでキャンセルすると、先に進まない!多分これは作成側のミスだと思うが…しょうがないので再起動し、今度はメディアチェックをパスして先に進む。ここから先は順調。
パーティションは/boot, swap, /, /home, /usr, /tmpを別に設定。tmpは大きめにとり、GAMESSのスクラッチディスク領域に使う。本当はスクラッチ分散用に/scr1と/scr2を設定しておくんだったとちと後悔。まぁ、今回はお試しなのでそれは次の機会に。HDD容量も大して無いので。
あとはとんとんと進んで何事もなく終了。Vistaのインストールに比べて格段に短時間。おそらく実動20分弱では。あ、ちなみにインストールするプログラムの選択で「プログラム開発」をチェックしておく(これをチェックしないとgfortranとかインストールされないはず)。

(3)GAMESSのインストール
2008/04/11(R1)のLinux用ソースコード(Linux用といってもほとんどのUNIX系で共通のソースコードみたいだけど)をDLし、/home/s2k以下に展開(ユーザーs2kを作ってそれで作業してます)。あとはmisc以下のreadme.unixに従って作業をするだけ。
comp, compall, lked, ddi/compddiのパス(/home/s2k/gamess)やターゲット(ここではlinux64を選択)を書き換えて保存。compddiについては、cygwinではないのでSYSV=trueのまま。
と、ここでcompallを実行しようとするとcshなんて知らないと怒られてしまうので、GUI上部のシステム>管理>ソフトウェアの追加/削除でtcshを追加インストール。これでcshを使えるようになる。compall, compddiはこれで無事実行できる。最後にlkedは、線形代数ライブラリがないと怒られてしまうので、tcshを追加インストールしたときと同様にatlas-3.6.0-15.fc9 (x86_64)を選択してインストール(他にもACMLやMKLが使えるが…)。これでlkedも無事に通り、実行ファイルが生成する。

(4)GAMESSの実行テスト
以前にForumで公開したrungms改を利用。DL後、改行コードを

tr -d '\r' < rungms_min2 > rungms

といった要領で変更(CRLFからLFに:上記はCRを削除している)。
あとは自環境向けに書き換えてテストジョブを流す。時間の関係でrunallはしていないが、cygwin/gfortranで問題になったMP2系のジョブも正常に並列計算できた。今のところ、別に64bitになったからといって計算が速くなった実感はないのだが…


《WineでWinmostarとFacioを動かしてみた》

プログラムの追加/削除でWine 1.0.1を導入。以前はLinuxを使う障壁の一つがプログラムのインストールだったと思いますが、今は良くも悪くも簡単になって、敷居は下がってますね。
さて、Wineをインストールしたら、あとはバンバンWin32の実行ファイルを起動できます。Winmostarのインストール(解凍)も、exeファイルをダブルクリックするだけ。あとはホームの.wineフォルダ内にできた仮想Cドライブ直下にwinmos3フォルダができます。
Facioはzipファイルを解凍した後、そのままFacio.exeを実行できます。

Winmos_on_Wine.jpg Facio_on_Wine.jpg

Winmostarは、新しいバージョン(3.73とか)だとエラーが発生して落ちます(X11絡み?スクリーンショット↓)

Winmos_error.jpg

でも場合によってはアプリケーション>Wine>Wine File(↓)から起動すると普通に動いたり。

WineFiles.jpg

謎ですね。。。まぁ、これで分子を自由に組むのには困らないでしょう。

2008年06月02日

JOBを使って$VECと$HESSの読み込み

備忘録。
PC GAMESSのWebサイトで公開されている、GAMESS入出力加工専用マクロ『JOB』を使って、何気に面倒な$VECと$HESSのPUNCHファイルからの抽出を、.inpファイルと.punファイルのD&Dで実現するバッチファイルを作成しました。イマイチ美しくないコードですが。

-----------------

@echo off

set job_dir=D:\JOB
set f_inp=inp
set f_pun=pun

if "%~x1"==".inp" set f_inp=%1
if "%~x1"==".pun" set f_pun=%1

if "%~x2"==".inp" set f_inp=%2
if "%~x2"==".pun" set f_pun=%2

if %f_inp%==inp goto exterr
if %f_pun%==pun goto exterr

move %f_inp% %job_dir%\temp.inp

echo #copy_vec %f_pun% %job_dir%\temp.inp > %job_dir%\temp.job
%job_dir%\job.exe %job_dir%\temp.job

move %job_dir%\TEMP.INP %f_inp%

pause
exit

:exterr
echo 拡張子に誤りがあります
pause
exit

-----------------

ドロップされた2つのファイルの拡張子からどちらがinputでどちらがpunchかを判別し、JOB用のファイル(temp.job)を作成して実行。このとき、一回temp.inpに書き込んだ後元の.inpファイルにリネームしてますが、これはJOBがなぜか書き込み先の.inpファイルのファイル名を全て大文字にしてしまう(だからmove行でTEMP.INPと書いている)からです。
#copy_vecを#copy_hessに変えるだけで、$HESSの読み込みに対応します。

本当は、.outも読み込めばNORBを自動で入れてくれたりするので、その辺を実装したバージョンも書いていますが、GAMESS(US)の.outファイルには対応していないようなので(実際NORBは入らない)、それを省いたバージョンを使ってます。

この辺のは、JOBじゃなくてもperlでできたりしますが(最近GAMESS MLにポストされてましたね)、プログラム慣れしてない私にゃJOBが便利です。