完成まであと一歩。。かな?- (wnabe_060619 104KB)
Download
Report
Transcript 完成まであと一歩。。かな?- (wnabe_060619 104KB)
KISSMEコード開発
完成まであと一歩
。。かな?
物理気候コアモデル改良SG
渡辺 真吾
本日の話題
昨年度末からのコード開発の流れを概観
KISSME成層圏版のコンパイル手順を解説
(この資料をマニュアル代わりに使える予定)
いずれは実行スクリプトの解説も追加予定
MIROC-KISSMEコード整備
L20 海陸炭素循環版 に 対流圏化学を組込(L32t)
MIROC当時最新版への化学・hybrid座標、proj/CHASERS,
KISSMEのマージ ;以後MIROC本体に含まれ、保守一本化
斎藤さんのio、カプラ-回り?を導入
Hybrid並列化による高速化
→ kissme-src-20060111.tar
L80 海陸炭素循環+成層圏物理版 ( 気候チューニング開始
….sSPRINTARSバグで中断 )
MIROC から AGCM単体 作成 + 海洋解像度を簡単に変更
できるように hAhO, hAmO, mAhO, mAmO など整備 (by 西村さん)
MIROC最新版にproj/CHASERS, KISSMEを再度マージ
proj/MAはproj/KISSMEに統合
L80成層圏化学版
(バグ近日解決予定)
→ kissme.20060606.tar (ゴロがいいので、この名前で近日リリース予定)
プログラムの構造とコンパイル
※KISSMEは独特の構造を持ちます
MPMD (大気+陸面 ⇔ 海洋・海氷)
大気と海洋とで並列化構造が異なる
大気: hybrid-MPI (8ノード), 海洋: flat-MPI (2ノード)
コンパイルオプション(src/sysdep/Makedef.ES)異なる
→ ソースツリーを2つ用意して別々にコンパイル
海洋のマスクファイルが従来のMIROC-midと異な
る (src/oinclude/zocdim.F, NTN=120)
コンパイル手順を記述したシェルスクリプトを用意
src/proj/KISSME/util.kissme/MAKE_KISSME.csh
これを実行可能にして実行するとKISSME成層圏化
学版ができる。
MAKE_KISSME.csh
大気のソースツリー kissme_atm 海洋の kissme_ocn、さら
にバイナリやデータをまとめて置く kissme という3つのディ
レクトリを作成し、大気、海洋の順でコンパイルを 行う。
mv MIROC3.2 kissme_atm # 大気のソースツリー
tar xf kissme.20060606.tar
mv MIROC3.2 kissme_ocn # 海洋のソースツリー
mkdir -p kissme
# まとめて置く場所
mkdir -p kissme/bin/ES
# バイナリの置き場
cd kissme
# ↓データ実体へのシンボリック・リンク
ln -fs /S/data004/d0619/MIROC-DATA/c20c c20c
ln -fs /S/data004/d0619/MIROC-DATA/data data
ln -fs /S/data004/d0619/MIROC-DATA/mask mask
MAKE_KISSME_ATM.csh # 大気コンパイル ~20 min on ceres
MAKE_KISSME_OCN.csh # 海洋コンパイル ~ 8 min on ceres
MAKE_KISSME_ATM.csh (1)
cd kissme_atm
# 大気のソースツリーへ
setenv GCMDIR `pwd`
# topディレクトリ指定
set PROJDIR = $GCMDIR/src/proj/KISSME
mv Mkinclude Mkinclude.org
# ↓KISSME成層圏版専用
ln -fs $PROJDIR/util.kissme/Mkinclude.top Mkinclude
cd $GCMDIR/src/sysdep
mv Makedef.ES Makedef.ES.org
# ↓hybrid-MPI オプション
ln -fs $PROJDIR/util.kissme/Makedef.ES.Pauto Makedef.ES
cd $GCMDIR/src/oinclude
# ↓KISSME用海洋mask
mv zocdim.mid.F zocdim.mid.F.org
ln -fs $PROJDIR/util.kissme/zocdim.mid.F_20040223 zocdim.mid.F
cd $GCMDIR/src
make dirs includes
cd $PROJDIR/simcyclelib
# Simcycleコンパイル
make; make install
cd $GCMDIR/src
# 大気コンパイル
make lib gcm
MAKE_KISSME_ATM.csh (2)
以下の二つのファイルはopenMPで並列化する必要がある
cd $GCMDIR/src/sysdep
rm Makedef.ES
# ↓openMP オプション
ln -fs $PROJDIR/util.kissme/Makedef.ES.Popenmp Makedef.ES
cd $GCMDIR/src/dynamics
# dmfix.F コンパイル
rm dmfix.o
make lib
cd $GCMDIR/src
# chem_wdep.F コンパイル
rm $PROJDIR/chem_wdep.o
make gcm
# 再度大気本体にリンク
# ↓まとめの場所にコピー
cp $GCMDIR/bin/ES/* $GCMDIR/../kissme/bin/ES
MAKE_KISSME_OCN.csh
cd kissme_ocn
# 海洋のソースツリーへ
setenv GCMDIR `pwd`
# topディレクトリ指定
set PROJDIR = $GCMDIR/src/proj/KISSME
mv Mkinclude Mkinclude.org
# ↓KISSME成層圏版専用
ln -fs $PROJDIR/util.kissme/Mkinclude.top Mkinclude
cd $GCMDIR/src/sysdep
mv Makedef.ES Makedef.ES.org
# ↓flat-MPI オプション
ln -fs $PROJDIR/util.kissme/Makedef.ES.static Makedef.ES
cd $GCMDIR/src/oinclude
# ↓KISSME用海洋mask
mv zocdim.mid.F zocdim.mid.F.org
ln -fs $PROJDIR/util.kissme/zocdim.mid.F_20040223 zocdim.mid.F
cd $PROJDIR
# SCLIB, SPECIALA を削除
mv Mkinclude.CHASERS-MA Mkinclude.CHASERS-MA.org
sed -e s^'$(LIBDIR)/$(SCLIB)'^^ Mkinclude.CHASERS-MA.org | sed
s/'$(SPECIALA) $(SPECIALO)'/'$(SPECIALO)/' >
Mkinclude.CHASERS-MA
cd $GCMDIR/src
# 海洋コンパイル
make dirs lib cgcmo
# ↓まとめの場所にコピー
cp $GCMDIR/bin/ES/* $GCMDIR/../kissme/bin/ES
今後の予定
KISSME成層圏化学版のbug-fix
sSPRINTARSのbug-fix
成層圏物理版の対流圏→成層圏気候チュー
ニング
実行スクリプト・マニュアル類整備
KISSME成層圏化学版のチューニング
by 大気組成G?
炭素循環Gにコード引渡し→本番実験?