すべてのプロダクト
Search
ドキュメントセンター

Elastic High Performance Computing:WRF を使用して気象シミュレーションを実行する

最終更新日:Apr 30, 2025

このトピックでは、気象シミュレーションのために Elastic High Performance Computing (E-HPC) クラスターで Weather Research and Forecasting Model (WRF) を実行する方法について説明します。

背景情報

WRF は、天気予報に広く使用されているオープンソースのメソスケール数値システムです。 さまざまなコンピューティング プラットフォーム上で、既存データの再構築や将来の天気予報など、幅広い大気プロセス研究とシミュレーションをサポートしています。 詳細については、WRF 公式 Web サイトをご覧ください。

このトピックでは、WRF が E-HPC と組み合わせてどのように機能するかを説明するために、12 km の解像度で気象活動をシミュレートします。 このトピックでは、2019 年の米国の冬の嵐を例として使用します。 シミュレーションでは、降水量、気温、風速などの主要な気象要因を分析および研究し、12 時間の期間におけるそれらの変化と分布を示します。

準備

  1. 次のいずれかの方法を使用して E-HPC クラスターを作成します。

    • テンプレートを使用してクラスターを作成します。 詳細については、「テンプレートベースの作成」をご参照ください。

      重要

      クラスタ テンプレートを使用してクラスターを作成する場合は、クラスターを作成する前に、[計算ノードとキュー] ページで [ノード構成] を変更する必要があります。

      image

    • 手動でクラスターを作成します。 詳細については、「標準クラスターを作成する」をご参照ください。

    この例では、クラスターに次の構成を使用します。

    項目

    構成

    シリーズ

    Standard Edition

    デプロイメント モード

    パブリック クラウド クラスター

    クラスター タイプ

    SLURM

    ノード構成

    • 次の仕様の管理ノード 1 つ、ログイン ノード 1 つ、計算ノード 4 つ:

      • 管理ノード: ecs.c8ae.xlarge タイプ、4 vCPU、8 GiB メモリの Elastic Compute Service (ECS) インスタンス

      • ログイン ノード: ecs.c8ae.xlarge タイプ、4 vCPU、8 GiB メモリの ECS インスタンス

      • 計算ノード: ecs.c8ae.16xlarge タイプ、64 vCPU、128 GiB メモリの ECS インスタンス

    • 計算ノードは、[eRDMA ネットワーク] を介して相互接続されています。

    イメージ

    Alibaba Cloud Linux 2.1903 LTS 64 ビット

  2. クラスター ユーザーを作成します。 詳細については、「ユーザーを管理する」をご参照ください。

    ユーザーは、クラスターへのログイン、ソフトウェアのコンパイル、ジョブの送信に使用されます。 この例では、次の設定を使用します。

    • ユーザー名: testuser

    • ユーザー グループ: sudo 権限グループ

  3. (条件付きで必須) クラスターを手動で作成する場合は、wrf-aocc ソフトウェアをインストールする必要があります。 テンプレートを使用してクラスターを作成する場合は、この手順をスキップします。 詳細については、「クラスターでソフトウェアをインストールおよびアンインストールする」をご参照ください。

    説明

    wrf-aocc ソフトウェアがクラスターにインストールされると、他のすべての依存ソフトウェアが自動的にインストールされます。

ステップ 1: 環境を確認して構成する

  1. E-HPC ポータルにログインします。 詳細については、「E-HPC ポータルにログインする」をご参照ください。

  2. 右上隅にある image をクリックして、Workbench を使用してクラスターに接続します。

  3. 次のコマンドを実行して、ソフトウェアが正常にインストールされているかどうかを確認します。 これにより、システムが必要なバージョンの環境を正常にロードすることが保証されます。

    module avail

    出力例:

    image

  4. conus12km ワークロードを構成します。

    1. 次のコマンドを実行して、ワークロード ファイルをダウンロードして解凍します。

      cd ~
      wget https://ehpc-perf.oss-cn-hangzhou.aliyuncs.com/yt710/WRFV4/input-data/v4.4_bench_conus12km.tar.gz
      
      tar -zxvf v4.4_bench_conus12km.tar.gz
      cd v4.4_bench_conus12km
      ln -s /opt/ehpc_common_softwares/nwp/wrf-aocc/4.4.2/aliyun/2/x86_64/run/* .
    2. 次のコマンドを実行して、NCL プログラミング言語をダウンロードして解凍します。

      cd ~
      wget https://ehpc-perf.oss-cn-hangzhou.aliyuncs.com/AMD-Genoa/WRFV4/ncl_draw.tar.gz
      tar -zxvf ncl_draw.tar.gz
  5. 次のコマンドを実行して、~/.bashrc ファイルを変更します。

    vim ~/.bashrc

    ファイルに次のコードを追加します。

    module load aocc/4.0.0   aocl/4.0.1   gcc/12.3.0   hdf5/1.10.5   libfabric/1.16.0   mpich-aocc/4.0.3   netcdf/4.8.0   szip/2.0.0   wrf-aocc/4.4.2   zlib/1.2.13
    
    export NCARG_ROOT=~/ncl
    
    export PATH=$NCARG_ROOT/bin:$PATH
  6. 4 つの計算ノードで次のコマンドを実行して、NCL と ImageMagick をインストールします。

    説明

    コンソールですべての 4 つのノードにリモート コマンドを送信して、迅速に実行できます。 詳細については、「コマンドを送信する」をご参照ください。

    sudo yum install -y ncl ImageMagick
  7. 次のコマンドを実行して、png2gif.sh という名前のジョブ実行ファイルを作成します。

    cd ~
    vim png2gif.sh

    クリックしてサンプル スクリプトを表示します。

    #!/bin/sh
    
    echo date
    echo "------------get wrfout_d01 file-------------" // wrfout_d01 ファイルを取得する
    ls -al wrfout_d01* | awk '{print $9}'
    echo "----------start change png tp gif-----------" // png から gif への変換を開始する
    
    
    out_gif=''
    for i in "$@"; do
      case $i in
        -out)
          shift
          out_gif=$1 
          break 
          ;;
        *)
          echo "Other parameter: $i" // その他のパラメーター
          ;;
      esac
    done
    WRFPath=`pwd`
    for file in `ls -al wrfout_d01* | awk '{print $9}'`; do
            export FILE_PATH="/$WRFPath/$file"
            echo "-----------$FILE_PATH-----------"
            ncl surface.ncl
    done
    echo "----------surface.ncl file-----------" // surface.ncl ファイル
    ls -al wrfout_d01*.png | awk '{print $9}'
    
    echo "----------convert delay start-----------" // 変換遅延開始
    if [ -n "$out_gif" ]; then
      convert -delay 50 wrfout_d01_2019-11-26*.000001.png "$out_gif"
    else
      convert -delay 50 wrfout_d01_2019-11-26*.000001.png wrfout_d01_2019-11-26.000001.gif
    fi

ステップ 2: ジョブを送信する

環境を確認して構成したら、Workbench ダイアログ ボックスを閉じて、次の手順に進みます。

  1. 上部のナビゲーション バーで、[タスク管理] をクリックします。

  2. ページの上部にある [送信者] をクリックします。

  3. [ジョブの作成] ページで、パラメーターを指定します。 次の表にパラメーターを示します。

    説明

    その他のパラメーターについては、デフォルト設定を保持します。

    • 基本パラメーター

      パラメーター

      説明

      [ジョブ名]

      wrf-conus12

      ジョブの名前。

      ジョブ ファイルを自動的にダウンロードして解凍する必要がある場合、解凍ディレクトリにはジョブの名前が使用されます。

      [出力ファイル]

      • 変数名: out

      • 変数値: test.gif

      ジョブの出力ファイル。

      [キュー]

      comp

      ジョブを実行するキュー。

      クラスターの作成時に計算ノードをキューに追加した場合は、ジョブをキューに送信します。 そうしないと、ジョブは実行に失敗します。 計算ノードをキューに追加しなかった場合、ジョブはスケジューラのデフォルト キューに送信されます。

      [コマンド]

      オンラインで編集

      スケジューラに送信するジョブ実行コマンド。 コマンドまたはスクリプト ファイルの相対パスを入力できます。 E-HPC ポータルは次の方法をサポートしています。

      • オンラインで編集

      • ローカル ファイルを使用

      • アップロードされたファイルを使用

      [ノード数]

      4

      ジョブの実行に使用される計算ノードの数。

      [タスク数]

      4

      各計算ノードがジョブの実行に使用するタスクの数、つまりプロセスの数。

      [スレッド数]

      2

      タスクが使用するスレッドの数。 このパラメーターを指定しない場合、スレッド数は 1 になります。

      クリックしてサンプル コマンドを表示します。

      #!/bin/bash
      
      ln -s ~/v4.4_bench_conus12km/* .
      ln -s ~/ncl/* .
      ln -s ~/png2gif.sh .
      
      rm -rf rsl.error.????
      rm -rf rsl.out.????
      
      rm -rf wrfout*
      
      ulimit -s unlimited
      ulimit -l unlimited
      
      export WRF_NUM_TILES=16
      export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
      export OMP_STACKSIZE="16M"
      
      
      # mpi + omp // mpi + omp
      mpirun   -genv FI_PROVIDER="verbs;ofi_rxm" -bind-to core:2 ./wrf.exe
      
      source png2gif.sh -out 'test.gif' 
    • 詳細パラメーター

      パラメーター

      説明

      [MPI プロファイル]

      有効

      MPI パフォーマンス プロファイリングを有効にするかどうかを指定します。

  4. [送信] をクリックします。

    操作が完了すると、ジョブが [実行中] ステータスになっていることがわかります。

    image

ステップ 3: ジョブの詳細を表示する

  1. [タスク管理] ページで、送信されたジョブを見つけ、[アクション] 列の [表示] をクリックします。

  2. ジョブの詳細ページで、次の図に示すように、ジョブの詳細を表示できます。

    image

  3. ジョブが [完了] ステータスになったら、[入力ファイルと出力ファイル] タブをクリックし、右上隅のドロップダウン リストから [出力ファイル] を選択して、実行結果を表示します。

    image

    次の GIF 図は、結果の例を示しています。

    test