玉川研究室で、CReSS を使うには。
前書き、CReSS は、名古屋大学の坪木と榊原によって書かれた非静力学数値気象モデルである。
公式ページは、ここ
CReSSを用いた毎日の気象シミュレーションは名大にあります。
研究室では、2006年春現在、CReSS Ver.2.1 を使って、並列計算機上で計算を行っています。
ここでは、そのやり方を、なるべく整理して記述してみます。
まずは、計算できる状況を自分のディレクトリに作成します。
並列計算機 tamacalc は研究室のローカルネット内からは、192.168.1.200 で見えます。
(2011年現在 192.168.1.203 192.168.1.204 で作業してください)
この計算機に、ssh でログインしてください。Windows からだと putty が使えます。
最初に、作業ディレクトリ (HOWTO_TEST)を作ります。
もちろん適宜変更して使ってください。以下、緑字は入力文字です。
mkdir HOWTO_TEST
そして、移動します。
cd HOWTO_TEST
次に CReSS のコードを展開します。(ver 2.2 を使うべし )
tar zxvf ~tama/CRESS/Tars/cress2.1m.tar.Z
ちなみに、CReSS
のソースコードおよびマニュアルは、~tama/CRESS/Tars 以下にあります。
- ソースコード cress2.1m.tar.Z
(m はマルチプロセッサ用、s はシングル用)
- マニュアル cress.guide1.4.pdf (ただし、Ver.1.4 用なので、若干違う)
- 参考になる設定ファイル user.conf.2.1m.recommend
話を戻して、ソースコードを展開すると以下のようなディレクトリが作られます。
ls
CReSS2.1m
この CReSS2.1m に入ってみると
cd CReSS2.1m
ls
Doc Form Src User_Mod compile.conf
compile.csh
Doc の下にある、readme.first readme.user.conf は必読!です。
実際いろいろ動かす前に、研究室の計算機に合わせた変更が必要になります。
CReSS
に関するメモ のページに書いてあるのですが、必要部分のみこちらにも記述します。
最初にしなければ行けない事 :(2011 現在 以下の書き換え作業は不要です)
User_Mod/declmpi.f90 (User_Mod 以下にある
declmpi.f90 というファイル) の
16行目、
use mpi
と書かれている行を次行のようにコメントアウトして
! use mpi
18行目
!! include 'mpif.h'
を
include 'mpif.h'
とコメント記号を外して活かします。
この作業と、後で出て来る設定ファイルの変更作業は、Linux 上のファイルの変更作業ですので、
UNIX 系のエディッタを使うのが便利です。玉川は vi を十数年間愛用していますが、
学生の皆さんが普段目にするエディタやワープロとは大きく違うので、練習してから作業する方が
いいと思います。
参考 上下左右は、kjhl です。
文字を挿入する時は、i挿入したい文字列(Esc)と打鍵します。
ここで
(Esc)は Esc と書かれたエスケープキーです。
この i がポイントで、挿入 (insert) の意味です。
i の代りに a だと追加、o だと次行を挿入して入力、O だと上の行を挿入して入力と
なります。また、文字を消すには x 、1文字上書きするには r 、
行を消すには dd です。10x と打つと 10 文字消えるなど、数字と組み合わせることも
できます。yy で覚えて p や P でペーストするとか / や ? で検索、:%s/aaa/bbb/g などと
いうように置換など、非常に多くの機能があります。正規表現も覚える価値があります。
この後、User_Mod の上のディレクトリ (Windowsのフォルダと同じ概念)で、
Doc/readme.first に書かれているように、compile.conf を設定して、
./compile.csh solver
と入力すると、solver.exe (CReSS本体の実行ファイル へのリンクですが)が生成さ
れ、実際に
動かす事ができるようになります。
コンパイル設定のファイル compile.conf は、その中の
LDFLAGS =
FFLAGS =
FC =
の3行をそれぞれ
LDFLAGS = -O3
FFLAGS = -O3
FC = ifort
( gforttan にしてください [2011追加] )
としておくのがよいと思います。最後の ifort は、solver.exe 以外のコンパイルに必須です。
また、 -O3 を -fast とすると、もっと最適化を頑張ってくれるので、計算が早くなるのではないかと期待しています。
(効果と副作用は未確認)
-fast の時に、unite の実行に問題があったと言う報告が学生から上がっています(未確認)。
この現象は、実際には、コンパイル時に最適化を強く施したので、
並列計算機のフロントエンドのCPUでは動かなくなったということのようです。
tamacalc2 〜 tamacalc9 のノードに rsh して、実行すれば、シングルCPU用の
実行形式でも動作するようです。もちろん、solver.exe は bsub コマンドを通じて
ジョブとして投入されますので、計算ノードで実行され動作します。(2006.7.14の玉川の理解)
2006.8.30 の玉川の経験によると、状況によって実行エラーがでることがあるようです。fast のせいかどうかは、完全には確認できていません。当面 -O3 を勧めます。
コンパイラオプションについては、
XLsoft のページ (日本語) の 「コンパイラ最適化ガイド」 が有効です。
2011の状況
並列計算用PCが ubuntu1 ubuntu2 に代わっているので、コンパイラは gfortran
になっています。また openmpi を使っていますので、MPICH2 の環境です。上記
declmpi.f90 の書き換えは不要です