WRF 3.0.1.1 Install on HA8000 with Intel Compiler

Table of Content

東大情報基盤センターのスパコンHA8000にWRFをインストールしたときの記録です.Serial, OpenMP, MPIそれぞれに対応しています.

ライブラリのインストール

GRIB2をサポートするにはJasPer,libpng,zlibが必要です.ここを参照して確認およびインストールをします.

  • zlib: /usr/libと/usr/includeにそれぞれlibz.aとlibz.hが存在することを確認しましたので,HA8000にはインストール済みです
  • libpng: /usr/libと/usr/includeにそれぞれlibpng12.so.0およびpng.hが存在することを確認しましたので,HA8000にはインストール済みです.
  • JasPer: これはインストールされていないようなので,以下でインストールします.

ここからダウンロードしたら,以下の手順でインストールします.ここも参考になります.

  • $ unzip jasper-1.900.1.zip
  • $ cd jasper-1.900.1
  • $ ./configure --prefix=/home/**ID**/usr  #絶対pathが必要
  • $ make
  • $ make install
  • $ export JASPERLIB=~/usr/lib
  • $ export JASPERINC=~/usr/include

exportの部分は.bash_profileに記述しておくのがよいでしょう.

NetCDFのインストール

最初にIntel compilerの設定を行います.以下を.bash_profileに記述するとよいでしょう.

  • source /opt/intel/fce/10.1.018/bin/ifortvars.sh
  • source /opt/intel/cce/10.1.018/bin/iccvars.sh
  • source /opt/itc/mpi/mpiswitch.sh mpich-mx-intel

UnidataのHPからnetcdf-4.0.tar.gzをダウンロードし,適当なディレクトリで展開します.

  • $ tar -xvzf netcdf-4.0.tar.gz
  • $ cd netcdf-4.0
  • $ export CC=icc
  • $ export FC=ifort
  • $ export F90=ifort
  • $ export F77=ifort
  • $ export CXX=icpc
  • $ export PROCESSFLAGS='-DpgiFortran'
  • $ export CPPFLAGS='-DpgiFortran'
  • $ export CFLAGS='-O3 -xO -ip -no-prec-div -static -no-multibyte-chars'
  • $ export CXXFLAGS='-O3 -xO -ip -no-prec-div -static -no-multibyte-chars'
  • $ export FFLAGS='-O3 -xO -ip -no-prec-div -static'
  • $ export CPP='icc -E'
  • $ export CXXCPP='icpc -E'
  • $ ./configure -disable-cxx --prefix=/home/**ID**/usr/local/netcdf-4.0
  • $ make
  • $ make check # 正常にコンパイルされたかcheck
  • $ make install

WRF V3のインストール

いよいよWRF V3をインストールしましょう.まず,環境変数NETCDFを以下のように設定します.また,NetCDFのbinにPATHを通しておきます..bash_profileに記入しておきましょう.

  • export NETCDF=~/usr/local/netcdf-4.0
  • export PATH=~/usr/local/netcdf-4.0/bin:$PATH

ここのページの最後のところでWRFのユーザー登録をします.その後指示に従って,ダウンロードページに入り,最新版をダウンロードしましょう.必要なデータやユーティリティも併せてダウンロードします.なお,WRF-VarとWRF-Chemistryはここでは対象としませんのでダウンロード不要です.執筆時点ではWRFV3.0.1.1.tar.gzが最新版ですので,これを適当なディレクトリで以下の様に展開します.

  • tar -xvzf WRFV3.0.1.1.tar.gz

WRFV3ディレクトリに移動し,いよいよコンパイルテストです.まずは,configureからです.

  • ./configure

と入力します.すると,以下の画面が現れます.テストですので,もっとも簡単な構成ということで,まずは5番を選びます.なお,Intel Compilerを使用することとしていますから,意味のあるオプションは5番から8番です.

------------------------------------------------------------------------
Please select from among the following supported platforms.

   1.  Linux x86_64, PGI compiler with gcc  (serial)
   2.  Linux x86_64, PGI compiler with gcc  (smpar)
   3.  Linux x86_64, PGI compiler with gcc  (dmpar)
   4.  Linux x86_64, PGI compiler with gcc  (dm+sm)
   5.  Linux x86_64 i486 i586 i686, ifort compiler with icc  (serial)
   6.  Linux x86_64 i486 i586 i686, ifort compiler with icc  (smpar)
   7.  Linux x86_64 i486 i586 i686, ifort compiler with icc  (dmpar)
   8.  Linux x86_64 i486 i586 i686, ifort compiler with icc  (dm+sm)
   9.  Linux i486 i586 i686 x86_64, PathScale compiler with pathcc  (serial)
  10.  Linux i486 i586 i686 x86_64, PathScale compiler with pathcc  (dmpar)
  11.  x86_64 Linux, gfortran compiler with gcc   (serial)
  12.  x86_64 Linux, gfortran compiler with gcc   (smpar)
  13.  x86_64 Linux, gfortran compiler with gcc   (dmpar)
  14.  x86_64 Linux, gfortran compiler with gcc   (dm+sm)
  15.  Cray XT Catamount/Linux x86_64, PGI compiler with gcc  (serial)
  16.  Cray XT Catamount/Linux x86_64, PGI compiler with gcc  (dmpar)
  17.  Cray XT CNL/Linux x86_64, PGI compiler with gcc  (serial)
  18.  Cray XT CNL/Linux x86_64, PGI compiler with gcc  (smpar)
  19.  Cray XT CNL/Linux x86_64, PGI compiler with gcc  (dmpar)
  20.  Cray XT CNL/Linux x86_64, PGI compiler with gcc  (dm+sm)
  21.  Cray XT CNL/Linux x86_64, Pathscale compiler with gcc  (serial)
  22.  Cray XT CNL/Linux x86_64, Pathscale compiler with gcc  (smpar)
  23.  Cray XT CNL/Linux x86_64, Pathscale compiler with gcc  (dmpar)
  24.  Cray XT CNL/Linux x86_64, Pathscale compiler with gcc  (dm+sm)

Enter selection [1-24] : 5

次に現れる選択肢はnestingに関わるものですが,ここでは0を選びます.

------------------------------------------------------------------------
Compile for nesting? (0=no nesting, 1=basic, 2=preset moves, 3=vortex following) [default 0]: 0

以上で,configure.wrf というファイルができます.このファイルを適切に編集することが推奨されていますが,ここでは何もせずに動くか試してみました.以下の様にidealテストケースのem_b_waveを選んでコンパイル,実行してみたところ,成功でした.

  • $ export WRF_EM_CORE=1 # 環境変数の設定(不要かも)
  • $ ./compile em_b_wave >& compile.log
  • $ cd run
  • $ ulimit -s unlimited # segmentation faultとなるので必須
  • $ ./ideal.exe
  • $ ./wrf.exe

もし,ideal.exeとwrf.exeができていなかったら,コンパイルに失敗したということですので,compile.logを調べてみましょう.コンパイルには相当に時間がかかりましたので,気長に待ちましょう.なお,ネスティングオプションで1を選べばOne-way nesting用のコンパイルとなります.

configure.wrfに関する補足

configure.wrfには様々なコンパイルオプションが書かれていますので,ここを適切に書きかえることで,高速な実行ファイルが作られます.ここを参照して,configure.wrfのFCOPTIMを以下のように書き換えてみました.オプションの意味はIntel Fortran Compiler 10.1のマニュアルに出ています.

  • FCOPTIM         =       -O3 -unroll0 -xO -fno-alias -ip

しかし,実行速度の違いはわかりませんでした.

Nestingと並列計算用のコンパイル

./configureで現れる選択肢のうち,6から8番が並列計算用コンパイルです.それぞれ次の意味になります.

  • 6番 (smpar): OpenMP(ノード内並列)
  • 7番 (dmpar): MPI(ノード間並列)
  • 8番(sm+dm): MPI + OpenMP

./configureで上のいずれかを選び,nestingオプション1で以下のコンパイルにすべて成功しました.最後の&はバックグラウンドで実行するためのオプションです.

  • ./compile em_real >& compile_em_real.log &

configure.wrfの書き換えは一切行っていませんが,MPIではコンパイラとしてmpif90やmpiccが選択されておりますし,特に問題はなさそうです.なお,さらに高速化を図るためのオプションについては./configureがコンソールにはき出すlogに記載されていますが,まだ検討していません.

Technorati タグ: ,,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください