EIC TOP

Intel MPI / Open MPI

EICシステムでは、標準のMPIライブラリとしてSGI Message Passing Toolkit(MPT)を採用しています。
MPTは高速計算サーバ、並列計算サーバの性能を発揮できるよう最適化されたMPIライブラリで、EICでは特に追加の設定を行うこと無く、そのまま利用することができます。

並列計算サーバ(Gクラス、Hクラス)では、MPTの他に以下のMPIライブラリが利用可能です。高速計算サーバ(A~Fクラス)では、利用できません。

  • Intel MPI
  • Open MPI

※なお、システム上の一般的なアプリケーション(OpenFOAM、PETScなど)はMPT環境で構築されていますので、こららのアプリケーションを使用する場合はMPT環境に戻ってください。

Intel MPI利用方法

MPI環境の変更

  • フロントエンドeic上で、MPI環境を変更します。moduleコマンドで切り替えます。
    eic /home/user> module switch mpt intelmpi
    eic /home/user> echo $MPI_ROOT
    /opt/intel/impi/5.0.2.044/intel64
  • MPTに戻る場合もmoduleコマンドで切り替えます。
    eic /home/user> module switch intelmpi mpt

コンパイル

  • コンパイル時は以下のコマンドをご利用ください。(iの数に注意!)

    mpiiccCコンパイラ
    mpiicpcC++コンパイラ
    mpiifortFortranコンパイラ

  • コンパイル例
    mpiifort -O3 -xCORE-AVX2 sample.f

ジョブ実行

Intel MPIではmpiexec.hydraコマンドを使用します。

  • MPIジョブのスクリプト例
    #!/bin/csh
    #$ -ac P=24
    #$ -ac n=432
    #$ -ac T=1
    #$ -jc G
    #$ -cwd
    mpiexec.hydra -np 432 dplace -s1 ./a.out
  • ハイブリッドジョブ(2プロセスx18ノードx12スレッド)のスクリプト例
    #!/bin/csh
    #$ -ac P=24
    #$ -ac n=432
    #$ -ac T=1
    #$ -jc H
    #$ -cwd
    setenv OMP_NUM_THREADS 12
    setenv I_MPI_JOB_RESPECT_PROCESS_PLACEMENT disable
    setenv I_MPI_PIN_DOMAIN socket
    setenv KMP_AFFINITY compact
    mpiexec.hydra -ppn 2 ./a.out
    (通常のMPTと違い、P=24,T=1で投入します。)
    例で示されているOMP_NUM_THREADS、I_MPI_JOB_RESPECT_PROCESS_PLACEMENT、I_MPI_PIN_DOMAIN、KMP_AFFINITYの指定が必要です。

Open MPI利用方法

MPI環境の変更

  • フロントエンドeic上で、MPI環境を変更します。moduleコマンドで切り替えます。
    eic /home/user> module switch mpt openmpi
    eic /home/user> echo $MPI_ROOT
    /home/app/openmpi-1.8.4
  • MPTに戻る場合もmoduleコマンドで切り替えます。
    eic /home/user> module switch openmpi mpt

コンパイル

  • コンパイル時は以下のコマンドをご利用ください。(iの数に注意!)

    mpiccCコンパイラ
    mpic++C++コンパイラ
    mpifortFortranコンパイラ

  • コンパイル例
    mpifort -O3 -xCORE-AVX2 sample.f

ジョブ実行

Open MPIではmpiexecコマンドを使用します。

  • MPIジョブのスクリプト例
    #!/bin/csh
    #$ -ac P=24
    #$ -ac n=432
    #$ -ac T=1
    #$ -jc G
    #$ -cwd
    mpiexec -np 432 dplace -s1 ./a.out
  • ハイブリッドジョブ(2プロセスx18ノードx12スレッド)のスクリプト例
    #!/bin/csh
    #$ -ac P=2
    #$ -ac n=432
    #$ -ac T=12
    #$ -jc H
    #$ -cwd
    setenv KMP_AFFINITY compact
    source ${TMP}/hybrid-mpi-$JOB_ID/env.csh
    mpiexec -np $TOTAL_PROCS -bind-to socket ./a.out
    env.shでOMP_NUM_THREADSが自動的に設定されます。例で示されているKMP_AFFINITYの指定が必要です。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ