Top/研究のページ/領域気象モデル

領域気象モデル

WRF

WRFについての情報

WRF 導入準備

  1. 導入の前に
    1. ハードウエア環境
      • CPU
        AMD Phenom(tm) II X6 1065T Processor : 6コア, 2.90 GHz

      • GPGPU
        Nvidia "Geforce GTX 660" with compute capability 3.0

        ※ なお、GPGPU を WRF に使うことについてのここの記述を見ると、一見、圧倒的なパフォーマンスを示しているように見える。
        しかし、よく見ると、Micro Physics のプログラムについてであり、全体のパフォーマンスは 1.25倍であるときちんと書いてある。
        現時点では、WRF 全体で速くなることはほとんどなさそうである。

        ※ ただし、Smiling Life の記事は期待を持たせる。
    2. ソフトウエア環境
      Debian GNU/Linux (squeeze) で、主な導入済みパッケージは次のとおり。
      gfortran4:4.4.5-1The GNU Fortran 95 compiler
      gcc4:4.4.5-1The GNU C compiler
      libnetcdf-dev1:4.1.1-5Development kit for NetCDF
      libnetcdf61:4.1.1-5An interface for scientific data access to large binary data
      csh20070713-2Shell with C-like syntax, standard login shell on BSD systems
      libopenmpi-dev1.4.2-4high performance message passing library -- header files
      libopenmpi1.31.4.2-4high performance message passing library -- shared library
      openmpi-bin1.4.2-4high performance message passing library -- binaries
      openmpi-checkpoint1.4.2-4high performance message passing library -- checkpoint support
      openmpi-common1.4.2-4high performance message passing library -- common files


    3. コンパイラの選択

      WRF を Linux 上で動作させるとき、標準でサポートされているコンパイラは、PGI, Intel, Pathscale, gfortran である。
      このうち、無料で利用できるのは Intel と gfortran であり、さらに、「何の対価もなくプログラム開発するときだけ無償」
      とする Intel のコンパイラは使えない。そこで gfortran を使うことになる。(※ ベンチマークで比較することは、いつかやってみよう。)

      Open64 というコンパイラの選択肢もある。しかし、情報が極端に少ない。

      なお、コンパイラを変更すると、OpenMPI も同じコンパイラでコンパイルしなおす必要があるようだ。このことからしても、
      gfortran を選ぶのはそれほど悪い選択肢ではない。

      ここでは、gfortran と Open64 について、可能な範囲で試してみる。

  2. ソースプログラムの取得
    1. ユーザー登録
      WRF は無償で手に入れることができる。しかし、ユーザー登録は必要である。
      http://www.mmm.ucar.edu/wrf/users/download/get_source.html にアクセスしてユーザー登録をする。
      二度目からは、Returning User をクリックすれば、メールアドレスを入力するだけでダウンロードページへつながる。
      (更新 : 2013-03-25 (月) 14:11:54)

    2. プログラムの種類
      WRF を利用するために、ソースプログラムをダウンロードしようとすると、いくつかの種類のファイルに分かれている
      ことに気づいて戸惑う。これらのソースプログラムはそれぞれ役割がある。(更新 : 2013-03-25 (月) 14:41:27)
      • ARW : Advanced Research WRF
        力学計算や放射計算などが組み込まれたソースプログラム。WRF の中核的なプログラム。

      • WPS : WRF Preprocessor System
        現実のデータを ARW に与えるための前処理プログラム。 理想的な地形、簡単な初期条件を用いて計算する場合には不必要である。

      • WRF-DA : WRF Data Assimilation
        データ同化システムのようである。詳しくはわからない。

      • WRF-Chem :
        大気中の化学物質の輸送を計算するプログラムのようである。詳しくはわからないが、現在は ARW に組み込んで使うようだ。

      • Post-Processing Software :
        WRF から出力されたものを図にするためのソフトウエア

      • Utilities :
        その他の補助的なソフトウエア

    3. ダウンロード
      • 本体
        ソフトウエアの種類は上述のとおりなので、とりあえず必要なのは、ARW と Post-Processing Software である。
        とりあえずコンパイルできること、実行できることを確かめるためには、ARW だけでよい。
        http://www.mmm.ucar.edu/wrf/users/download/get_sources.html#V341 から ARW をダウンロードする。
        現時点で、Ver 3.4.1 が最新である。30MB 弱の大きさである。
        (更新 : 2013-03-25 (月) 14:41:27)

      • 更新ファイル
        いくつかの必要な更新ファイルが出ている(cf. Known Problems)。
        対策のとられた日付けが、Ver 3.4.1 のリリースの日(2012年8月16日)よりも前であっても安心してはいけない。
        それほど親切ではないので、確認しながら自分で対策をとる。具体的にはファイルをダウンロードして入れ換える。
        今回の場合( module_mp_radar.F と input_wrf.F )は、全体にあまり影響を与えないように思われるが、気持ちよくするために入れ換える。

        また、WRF では実行する度にソースツリーが変更される。そこで、入れ換えた状態のソースツリーを別途保存しておく。
        (更新 : 2013-03-25 (月) 14:58:36)


WRF 試しの実行まで( gfortran serial で )

  1. configure
    コンパイラとして gfortran を選ぶ。また、CPU は一つのコアだけを用いるとして、serial を選択する。
    実際の入力と出力結果は次の通り。->は入力に関係した行であることを意味する。
    -> [localhost] ~/WRFV3 15:34:15 $ ./configure 
       checking for perl5... no
       checking for perl... found /usr/bin/perl (perl)
       ** WARNING: No path to NETCDF and environment variable NETCDF not set.
       ** would you like me to try to fix? [y]
    -> y
       Enter full path to NetCDF include directory on your system
    -> /usr/include
       Enter full path to NetCDF library directory on your system
    -> /usr/lib
       ...(中略) 
       ------------------------------------------------------------------------
       Please select from among the following supported platforms.
       
          1.  Linux x86_64, PGI compiler with gcc  (serial)
         ...(中略)
         23.  x86_64 Linux, gfortran compiler with gcc   (serial)
         ...(中略)
       
    -> Enter selection [1-34] : 23
       ------------------------------------------------------------------------
    -> Compile for nesting? (0=no nesting, 1=basic, 2=preset moves, 3=vortex following) [default 0]: 0
       
       Configuration successful. To build the model type compile .
       ...(以下省略)
    (更新 : 2013-03-25 (月) 15:48:29)

  2. compile
    具体的に実行可能プログラムを作るには、compile コマンドを実行する。
    -> ./compile
    すると、こんな理想化条件が実行できます、というメッセージが出てくるので、2次元の海陸風モデルを選んで実行する。
    -> ./compile em_seabreeze2d_x
    結構な時間をかけてコンパイルすることになる。一番最後に、コンパイルの所要時間が表示された。
       build started:   2013年  3月 25日 月曜日 15:46:02 JST
       build completed: 2013年 3月 25日 月曜日 15:57:42 JST

    なお、選べるサンプルプログラムは次の通り。
    次元ケースの名称設定
    1em_scm_xysingle column model, 4 km, full physics
    2em_grav2d_xgravity current, 100 m
    2em_hill2d_xflow over a hill, 2 km
    2em_seabreeze2d_xwater and land, 2 km, 20km top, full physics
    2em_squall2d_xsquall line, 250 m
    2em_squall2d_ytranspose of above problemINITIALIZATION
    3em_b_wavebaroclinic wave, 100 km
    3em_firesurface fire, 50 m
    3em_heldsuarezglobal case with polar filtering, 625 km
    3em_leslarge eddy simulation, 100 m
    3em_quarter_sssuper cell, 2 km
    3em_tropical_cyclonehurricane, 15 km


  3. 実行
    -> cd test/em_seabreeze2d_x
    -> csh ./run_me_first.csh
    -> ./ideal.exe
    -> time ./wrf.exe
    最後に
      d01 2007-06-01_17:00:00 wrf: SUCCESS COMPLETE WRF
    と表示されて実行も終了。time で測った所要時間は次のとおり。
       real	4m59.360s
       user	4m50.266s
    (更新 : 2013-03-25 (月) 16:15:02)

WRF 試しの実行まで( gfortran dmpar で )

  1. configure
    コンパイラとして gfortran を選ぶ。また、CPU の複数コアを用いる MPI を利用するとして、dampr を選択する。
    実際の入力と出力結果(ほとんど省略)
    -> [localhost] ~/WRFV3 15:34:15 $ ./configure 
       ...(中略)
       ------------------------------------------------------------------------
       Please select from among the following supported platforms.
       
          1.  Linux x86_64, PGI compiler with gcc  (serial)
         ...(中略)
         25.  x86_64 Linux, gfortran compiler with gcc   (dmpar)
         ...(中略)
       
    -> Enter selection [1-34] : 25
       ------------------------------------------------------------------------
       ...(以下省略)

  2. compile
    2次元の海陸風モデルは、MPIに対応していない。そこで、3次元の傾圧不安定波を選んで実行する。
    -> ./compile em_b_wave
    結構な時間をかけてコンパイルすることになる。一番最後に、コンパイルの所要時間が表示された。
       build started:   2013年  3月 25日 月曜日 17:19:28 JST
       build completed: 2013年 3月 25日 月曜日 17:31:53 JST

  3. 実行
    -> cd test/em_b_wave
    -> csh ./run_me_first.csh
    -> mpirun -n 5 ./ideal.exe
    -> time mpirun -n 5 ./wrf.exe
    ログは表示されない。mpirun を使って実行するところがミソ。この場合、5個のコアを使っている。time で測った所要時間は次のとおり。
       real	3m21.428s
       user	16m32.850s
       sys	0m2.952s
    同じプログラムを serial で実行すると、dmpar では2〜3倍の速さで動いていることがわかる。
       real	9m19.641s
       user	9m2.306s
       sys	0m14.033s
    (更新 : 2013-03-25 (月) 18:37:30)


トップ   新規 検索 最終更新   ヘルプ   最終更新のRSS