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にコード引渡し→本番実験?