CReSS のサンプル Cat's Eye

CReSS の最初に試すのは、多分、サンプルについている Cat's Eye だと 思う。
研究室の学生用にその実行と、データの読みだしについて記述する。

Cat's eye の実行

研究室の並列計算機を対象に記述する。

適当なディレクトリを作って CReSS を展開する。

mkdir CatsEye
cd CatsEye
tar zxvf ~tama/CRESS/Tars/cress2.2m.tar.Z
cd CReSS2.2m/
これで、CReSS のホーム (みたいなところ) にいる。
もちろんマニュアルをちゃんと読んで下さい。
それから、Doc/readme.first は絶対よむ。 (178行目の .1 は不要)

次に、うちの並列計算機では必要な変更をする。

cd User_Mod
vi declmpi.f90
vi では、 h:左、 j:下、k:上、l:右 の移動で、i文字列(ESC)で 文字列挿入[ (ESC) はエスケープキー ]、
a文字列(ESC)で、後ろに挿入。 dd で一行削除、x で一文字削除、/検索文字列 で検索文字列を探す。など。。。
他のエディタとはかなり雰囲気の違う動作をするので、習熟の要あり。
Windows 系なら、WinSCP などと、秀丸やサクラエディタなどを組み合わせて 編集するのも良いと思う。
(漢字コードや改行コードで思わぬエラーが起こる事も ある)
編集するのは、
      use mpi

!!    include 'mpif.h'
となっているところを
!      use mpi

     include 'mpif.h'
とする。(この作業は、玉川の手元のPC FreeBSD + mpich2 + gfortran では不要)

そして、cd .. として、~/CatsEye/CReSS2.2m/ に戻って

vi compile.conf
として、
LDFLAGS = -O3
FFLAGS  = -O3
FC      = ifort
とする。( 玉川の手元のPC FreeBSD + mpich2 + gfortran では FC = gfortran42 )

そして、./compile.csh solver ./compile.csh unite として、 実行ファイル solver.exe unite.exe を作成する。

実行に必要なファイルを Form からコピー

cp Form/user.conf.cats.eye.form user.conf
cp Form/sounding.txt.cats.eye.form test.sounding.txt
(後者の test は、user.conf 中で実験名がテストだから)

そして演算実行。
もし、シングル CPU なら ./solver.exe < user.conf > LOG & として、 tail -f LOG とかして見ていれば良いが、
マルチCPUなので、もうちょっと複雑 になる。

まず、使用するCPU数に合わせた設定を user.conf で行う。

 
vi user.conf
 &dimset
  xpedim =   8
  ypedim =   1
  xdim   =  99
  ydim   =   4
  zdim   = 139
の xpedim ypedim を xpedim*ypedim が使用するCPU数なのでそれを考えて設定する。 xdim ydim の値に制限があるので、Doc/readme.user.conf を注意して読む事。
"[xdim - 3]/xpedim" must be integer."[ydim - 3]/ypedim" must be integer.
ここでは、xpedim = 4 ypedim = 1 としたとする。使用するCPUは4つである。

計算実行

実行は、

bsub -n 4 -o LOG_BSUB "mpijob mpirun ./solver.exe < user.conf > LOG"
となる。LOG_BSUB には bsub に関する状況が出力され、LOG には CReSS 実行時の 情報が出力される。

同じ実行の方法であるが、ジョブ管理ソフトを使わず、直接 mpi を使うには machinefile として、
例えば以下のデータ (PCに合わせるべし) を作成し、

tamacalc1:1
tamacalc2:1
tamacalc3:1
tamacalc4:1
1つのCPUを持つ、tamacalc1 云々と読む。ホスト名は /etc/hosts に存在すべし。
以下のように、4つのCPUで実行とすることもできる。実行CPUを指定するので 研究室の他の人とかぶらないように注意。
mpirun -np 4 -machinefile machinefile ./solver.exe < user.conf > LOG
bsub 系のコマンドのライセンスが切れたら、こちらを使う事。
もし、エラーでおかしくなったら、ps aux をそれぞれのホストで行い mpirun とか solver とかいう名前の入った自分のプロセスを kill して 殺すようにする必要有り。

データ処理

ともかく計算が終ったら、unite で *pe00* という名前のファイルを くっつける。

 &uniconf_uni
  fltyp_uni = 'dmp'
  flitv_uni = 40.e0
  rmopt_uni =  1
とある。fltyp_uni = 'geo' にすると test.geometry* が、
このままだと test.dmp* が一つにまとまる。2回やって両方まとめるべし。
./unite.exe < user.conf

その後、例えば、 readcateye.f90 のようなプログラムを 作成して、データを読みだし、図化など行う。
(地形や気象データを用いた本格的なデータの場合、もっと汎用的なソフトを 製作してある ここ

これ以降の作業は、並列計算機から、192.168.1.12 などにデータを 移して、そちらで行う。

データの移動

cd
tar cvf -  CatsEye/CReSS2.2m | ssh 192.168.1.12 'tar xf -'
とすると、192.168.1.12 の同じ場所にデータがコピーされる。
ssh 192.168.1.12 あるいは、putty などで 192.168.1.12 にログインし データがあることを確認後、特に理由が無ければ、計算結果を消去する。
cd CatsEye/CReSS2.2m
rm test.dmp* test.geography*

次に、192.168.1.12 にログインして

cd CatsEye/CReSS2.2m
とする。また、同じディレクトリに、 readcateye.f90 を置く。
( wget http://tama.green.gifu-u.ac.jp/CReSS/CatsEye/readcateye.f90 で取得できる )
そして、コンパイル
gfortran -o readcateye readcateye.f90
実行
./readcateye > X_Z_Pt240
 dmp file name と入力を促されたら
test.dmp000240.united.bin

readcateye.f90 はあくまでサンプルなので、必要に応じて改変して使う必要がある。
( ここでは、温位を X、Z 座標とともに X Z Pt の順で、 XZ断面データを出力している。 )
このあたりも ここに載っている が、念のためここにも略述する。

出力されたデータを使って、コンター図を作ってみる。
GMTというソフトを利用する。 研究室のGMTのページ 等を 参照のこと。
GMT 実行用のスクリプト

set input   = X_Z_Pt240
# set output  = Pt240.ps
set output  = Pt240.eps    # eps file name
set lonmin  = 20
set lonmax  = 970
set latmin  = 10
set latmax  = 685

set dlon    =  1
set dlat    =  1
set tmp     =  temporal.grd
set ContourLevel = 300/315/0.5
set fcolor  =  xxx.cpt
set scale   =  15/10


# set EPS type file
gmtset PAPER_MEDIA = a4+

makecpt -Crainbow -T$ContourLevel > $fcolor

surface $input -G$tmp -R$lonmin/$lonmax/$latmin/$latmax -I$dlon/$dlat

grdimage $tmp -JX$scale -R$lonmin/$lonmax/$latmin/$latmax \
 -B"a100:(m):/a50:(m)::.Potential Temperature at 240sec:WeSn" \
 -C$fcolor -K >! $output

grdcontour $tmp -JX$scale -R$lonmin/$lonmax/$latmin/$latmax \
 -C$fcolor  -O   >> $output

\rm $tmp
\rm $fcolor
を適当な名前で置いて、tcsh スクリプトのファイル名 とすれば、 Pt240.eps という画像ファイルができる。 詳しくは、それぞれのコマンドを man grdimage のようにするか、 grdimage として実行するか、Google など他のWWWページの解説を探すか、 するべし。

玉川のページ 研究室 CReSS関係ページ研究室 流域圏科学研究センター 岐阜大学


tama@green.gifu-u.ac.jp
〒501-1193 岐阜市柳戸1-1
岐阜大学流域圏科学研究センター
Tel/Fax: 058-293-2430