smith 計算機システムの使い方

SMITHクラスタ計算機システムはインテルまたは互換CPUを用いた計算機システムです。


はじめに -クラスタシステムとは-

クラスタシステム

複数の計算機を束ねて多量の計算要求を効率よく実行できるように構成されたシステムのことです。

アクセス

システムへはログインサーバーという名前の計算機にアクセスして用います。

  • ログインサーバーへのログインの方法
  • ログインサーバーでできること

その他の計算機の利用方法

直接ログインせず、「ジョブ投入」という形式で利用します。

  • 能力別にグループ化された計算サーバーのグループ構成
  • 「ジョブスクリプトファイル」の書き方
  • 「ジョブ」の投入方法、確認方法、削除(強制終了)方法
  • 異常状態の確認と対処

ログインサーバー

smithシステム

  • 下の3台がログインサーバーです。
  • 基本的にはsmithを使ってください。
  • smithにファイルサーバーの機能(ファイルが収められているディスクがある)が設定されています。
  • どのログインサーバにログインしても同じホームディレクトリになります。(「ネットワークファイルシステム」機能)
  • ファイルは「RAIDシステム」により複数のディスクで構成されて保護されているので、ディスクが故障してもファイルが失われることはありません。
  • ファイルサーバーは毎日深夜にバックアップサーバーの/backup_homeにバックアップされています。間違って消去したファイルでも、そこに保存されていればコピーして再生できます。
    • [smith] 133.1.116.161
    • [rafiki] 133.1.116.162
    • [tiamat] 133.1.116.211

sbシステム

  • [sb100] 133.1.116.165 はsb100システムのログインサーバーです。

ログイン方法

以下では"$"はコマンドプロントを表すと見てください。

  • smithにログインする場合 (X11 のフォワーディングを許可する)
    $ ssh -Y [userID]@133.1.116.161
    を実行する。
  • sb100にログインする場合
    $ ssh -Y  [userID]@133.1.116.165
    を実行する。

初めてログインする際には

$ passwd

を実行してパスワードを変更すること。

公開鍵の登録方法

鍵システムを利用してsshで通信する場合に用います。データを暗号化して通信するので、通信経路でデータが覗き見られない安全な通信手段です。

  • ssh-keygenで秘密鍵(ファイルは通常 ~/.ssh/id_rsa )、と公開鍵(ファイルは通常 ~/.ssh/id_rsa.pub )を作成する。
    • ローカルホストで以下を実行
      ssh-keygen
      デフォルトでは秘密鍵と公開鍵がそれぞれ .ssh/id_rsaと .ssh/id_rsa.pubの名前で保存される。
  • 公開鍵をアクセス先のサーバーに追加登録する。(ファイルは通常 ~/.ssh/authorized_keys 公開鍵の前にアクセス元のIPアドレスを追加する必要がある。)
    • 公開鍵を表示する。
      cat id_rsa.pub
      この内容の先頭にアクセス元(クライアント、smithなど)のIPアドレスを追加して、アクセス先の(リモートホスト、東大物性研のohtakaなど)の .ssh/authorized_keysに追加する。(スパコンセンターではwebページを通じて公開鍵を登録することが多い)

工学研究科の外部からログインする場合

工学研究科の外部からログインするには先ず工学研究科のゲートウェイサーバにログインし、さらにsmith/sb100にログインする必要があります。従ってゲートウェイにユーザーアカウントを持っている必要があります。持っていない方は稲垣先生に問い合わせて下さい。ゲートウェイにユーザーアカウントを作成する場合、公開鍵の登録が必要となりますので準備しておいて下さい。 以下はポートフォワーディングしてsmithにログインする手順です。

  • 先ず以下を実行します
    ssh -L localhost:10022:133.1.116.161:22 -i ~/.ssh/[id_rsa] [user_name]@ssh-gw.eng.osaka-u.ac.jp -N
    ここで[id_rsa]は秘密鍵のファイル名、[user_name]はゲートウェイ上でのユーザーアカウント名です。
  • 次に別ウィンドウを開き、以下を実行します。
    ssh localhost -p 10022
    ここで10022はポート番号で、最初の手順で指定したポート番号と一致する必要があります。scpを使用する際はサーバ名をlocalhost、ポート番号を10022としておけば良いでしょう。

コンパイル/実行環境の設定

  • Fortranコンパイラ、cコンパイラはLinux標準のgfortran、gccの他、インテル社製のifort、iccを用いることができます。 intelコンパイラは多数のバージョンがあり、moduleを使用して意図的に制御します。
  • 使用可能なモジュールのリスト出力
    $ module available
    • モジュールの読み込み (smithの場合)
      $ module load intel/2020.2.254
      $ module load intelmpi/2020.2.254
      $ module load python/3.8
      など
      • ~/.bashrcへの記録(smithの場合)

        module load intel/2020.2.254
        module load intelmpi/2020.2.254
        module load python/3.8
    • モジュールの読み込み (sb100の場合)
      $ module load intel/2021.2.0
      $ module load intelmpi/2021.2.0
      など
      • ~/.bashrcへの記録(sb100の場合)

        module load intel/2021.2.0
        module load intelmpi/2021.2.0
  • 古くからのユーザ向け

古いintelコンパイラ用の設定は以下のように

# source /home/opt/settings/2017.4/intel-compiler.sh
# source /home/opt/settings/2017.4/intel-mpi.sh

などとしてコメントアウト、あるいは削除する。

ジョブキューイングシステム

  • システムで計算を実行するには、計算したい内容をジョブスクリプトファイルに書いてジョブキューイングシステムに投入する必要があります。
  • ジョブ管理システムはSGE(Sun Grid Engine)です。(OGS/GE 2011.11)
  • ジョブは、指定したグループの空いている計算機に自動的に割り当てられて実行されます。
  • 空きが足りない場合は、他のグループに空きがあっても実行されず、他のジョブの終了を待つことになります。
  • 同じ能力を持つ計算ノードはクラスごとにまとめられています。ジョブ投入時にクラスを指定します。

設定上の重要な点

  • .cshrcの中にcdのaliasが記載されている場合がありますが、削除しないとインテルFortran/MPIの初期設定でエラーが生じ正常に実行できません。削除してください。

複数ノードを用いた並列計算について

  • 用いるノード(コア)の数を増やすと自動的に並列度が上がりますが、ギガビットイーサネットで実装されているグループではあまり速くありません。ノード間通信を含む並列計算はあまり有効ではありませんのでご注意ください。INFINIBANDが実装されているグループでは並列計算の効率が向上することが期待されます。

ジョブの投入(実行)方法

  • 実行にはキューと並列環境(parallel_environment)を指定する必要があります。ジョブスクリプトrun.cshをグループ10に投入する場合、下記のようになります。
   qsub -q xh1.q  -pe x24 24 run.csh

ジョブの状態を見るには

   qstat

を実行します。特定のユーザのジョブの状態を見るには

   qstat -u [user name]

ジョブをキャンセルするには

  qdel [job ID]

を実行します。Job IDはqstatで表示される1コラム目の数字です。

計算機グループと対応するキュー及び並列環境

  • smith/rafikiからアクセス可能なノード群
    グループプロセッサコア数/CPU数ジョブ投入サーバキュー並列環境ノード間並列ファブリック
    4xeon8/2smith/rafiki/tiamatxe1.qx8
    5xeon12/2smih/rafiki/tiamatxe2.qx12
    6xeon sandy-bridge16/2smith/rafiki/tiamatxs2.qx16
    7xeon ivy-bridge16/2smith/rafiki/tiamatxi1.qx16
    10axeon Haswell24/2smith/rafiki/tiamatxh1.qx24infini-band
    10bxeon Haswell24/2smith/rafiki/tiamatxh2.qx24infini-band
    10cxeon Haswell24/2smith/rafiki/tiamatxh3.qx24infini-band
    10dxeon Haswell24/2smith/rafiki/tiamatyh1.qx24
    13xeon Broadwell32/2smith/rafiki/tiamatxb1.qx32infini-band
    14xeon Skylake32/2smith/rafiki/tiamatx17.qx32infini-band
    15xeon Cascade Lake40/2smith/rafiki/tiamatx19.qx40infini-band
    16xeon Cascade Lake52/2smith/rafiki/tiamatx20.qx40infini-band
  • sb100からアクセス可能なノード群
    グループプロセッサコア数/CPU数ジョブ投入サーバキュー並列環境ノード間並列ファブリック
    7acore i7 sandy-bridge6/1sb100all.qx6
    7bxeon E5-1650 sandy-bridge6/1rlall.qx6
  • グループ7a, 7bにジョブを投入するときはsb100でqsubコマンドを実行してください。
  • それ以外のグループにジョブを投入するときはsmithでqsubコマンドを実行してください。
  • ジョブスクリプトの書き方については、下の各グループごとの説明中に「ジョブスクリプトファイルの例」で説明しています。

グループ4, 5 xeシステム

  • xeon CPUで構成される計算機グループで、x8, x12 の2 parallel_environmentからなります。各ノードは2CPU(計8または12core)で構成されています。
  • ジョブスクリプトファイルの例 (cshの場合)
     #$ -S /bin/csh
     #$ -cwd
     #$ -q xe2.q
     #$ -pe x12 12
     #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
     mpirun ./STATE < nfinp_dav > nfout_dav
    • -cwd はジョブを投入した時のディレクトリがジョブ開始時のディレクトリになることを指示するオプションです。
    • -q はキュー(グループ)の名前でxe1.qあるいはxe2.qを指定します。
    • 上のx12(またはx8)はx12(またはx8)にジョブ投入することを示し、後ろの12が計算に用いるCOREの数を示すオプションです。xe1.qではx8が、xe2.qではx12の使用が可能です。またx12は12、x8は8でないと実行されないようになっていますので注意してください。
    • -Nオプションでジョブの名前を指定できます。(先頭文字は英字です。)
    • STATEの実行ファイルをジョブ投入前にシンボリックリンクしておいてください。
    • また、fort.37等、擬ポテンシャルのファイルも同様にリンクしておいてください。
  • ジョブスクリプトファイルの例 (bashの場合)
    #$ -S /bin/bash
    #$ -cwd
    #$ -q xe2.q
    #$ -pe x12 12
    #$ -N CO
    #$ -o CO_out
    #$ -e CO_err
    
    module load intel/2020.2.254
    module load intelmpi/2020.2.254
    
    export OMP_NUM_THREADS=1
    
    SRCDIR=${HOME}/STATE/src/state-5.6.6/src
    PPDIR=${HOME}/STATE/gncpp
    MPI_COMMAND="mpirun -np ${NSLOTS}"
    
    ln -fs ${SRCDIR}/STATE ./STATE
    
    ln -fs ${PPDIR}/C_pbe1/#vnew.data fort.37
    ln -fs ${PPDIR}/O_pbe1/#vnew.data fort.38
    
    INPUT_FILE=nfinp_dav
    OUTPUT_FILE=nfout_dav
    
    ${MPI_COMMAND} ${STATE}  < ${INPUT_FILE} > ${OUTPUT_FILE}

グループ7 sb100システム

  • Sanday-bridge アーキテクチャーのCore i7 CPUで構成される計算機グループです。各ノードは1CPU(6core)で構成されています。メモリは16GBです。
  • AVX機能があり高速に計算できますが、組み込んだ新しいコンパイラの制限?(バグ?)のためコンパイルが正常に終了しません。特定のファイルだけ最適化レベルを落としてコンパイルする必要があります。エラーが出たら、CPPSRCフォルダに移動して、make.sysに書かれているオプションを設定し、最適化レベルだけ-O0にして手動でコンパイルしてください。分からなければ、他の人のSTATEバイナリをコピーして使ってください。
  • smithのデータを直接見ることができます。/homesmithにsmithの/homeをNFSリンクしていますのでアクセス可能です。
  • スクリプトの例 (cshの場合)
    • ハイブリッド並列(12コア確保、各ノードにプロセス確保、プロセスごと6-OMPスレッド)
      #!/bin/csh -f
      $$ -q sb.q
      #$ -pe x6 12
      #$ -cwd
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      setenv OMP_NUM_THREADS 6
      ln -fs ~/STATE/src/STATE_5.4.1/wrksrc6i5_/STATE .
      mpirun  -perhost 1 -np $NHOSTS ./STATE < nfinp > nfout
    • フラット並列(12コア)
      #!/bin/csh -f
      #$ -q sb.q
      #$ -pe x6 12
      #$ -cwd
      #$ -N JOBNAME
      ln -fs ~/STATE/src/STATE_5.4.1/STATE .
      mpirun -np $NSLOTS ./STATE < nfinp > nfout
  • スクリプトの例 (bashの場合)
    #$ -S /bin/bash
    #$ -cwd
    #$ -q sb.q
    #$ -pe x6 6
    #$ -N CO
    #$ -o CO_out
    #$ -e CO_err
    
    module load intel/2021.2.0
    module load intelmpi/2021.2.0
    
    export OMP_NUM_THREADS=1
    export I_MPI_PIN=1
    export I_MPI_FABRICS=shm:ofi
    unset  I_MPI_TCP_NETMASK
    
    ROOTDIR=${HOME}/STATE
    SRCDIR=${ROOTDIR}/src/state-5.6.9/src
    PPDIR=${ROOTDIR}/gncpp
    MPI_COMMAND="mpirun"
    STATE_EXEC=STATE
    STATE=./STATE
    
    ln -fs ${SRCDIR}/${STATE_EXEC} ${STATE}
    
    ln -fs ${PPDIR}/C_pbe1/#vnew.data fort.37
    ln -fs ${PPDIR}/O_pbe1/#vnew.data fort.38
     
    INPUT_FILE=nfinp_dav
    OUTPUT_FILE=nfout_dav
    
    ${MPI_COMMAND} ${STATE} < $INPUT_FILE > $OUTPUT_FILE

グループ8 xsシステム

  • Sanday-bridge アーキテクチャーのXeon CPUで構成される計算機グループです。各ノードは2CPU(計16core)で構成されています。メモリは32GBです。
  • AVX機能があり高速に計算できます。
  • スクリプトの例(cshの場合)
    • ハイブリッド並列(32コア確保、各ノードにプロセス確保、プロセスごと4-OMPスレッド)
      #!/bin/csh -f
      #$ -cwd
      #$ -q xs2.q
      #$ -pe x16 32
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
       
      setenv I_MPI_PIN     4 
      #setenv I_MPI_FABRICS shm:dapl 
      #setenv I_MPI_FABRICS shm:ofa
      setenv I_MPI_FABRICS shm:tcp
      #setenv I_MPI_DEBUG 7
      setenv OMP_NUM_THREADS         1
      
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      
      mpirun  ./STATE < nfinp_1 > nfout_1
  • フラット並列(32コア)
    #!/bin/csh -f
    #$ -cwd
    #$ -q xs2.q
    #$ -pe x16 32
    #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
    #$ -j y
    module load intel/2020.2.254
    module load intelmpi/2020.2.254
    setenv I_MPI_PIN     1                          
    #setenv I_MPI_FABRICS shm:dapl 
    #setenv I_MPI_FABRICS shm:ofa
    setenv I_MPI_FABRICS shm:tcp
    #setenv I_MPI_DEBUG 7
    ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE
    ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
    ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
    setenv OMP_NUM_THREADS         1                  ←ココが違うだけ
    cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
    mpirun  ./STATE < nfinp_1 > nfout_1
  • スクリプトの例 (bash)
    #$ -S /bin/bash
    #$ -cwd
    #$ -q xs2.q
    #$ -pe x16 16
    #$ -N JOB_NAME
    
    module load intel/2020.2.254
    module load intelmpi/2020.2.254 
    # Above settings should be consistent with those used in the compilation
    
    MPI_COMMAND=mpirun
    
    export I_MPI_PIN=1
    export I_MPI_ADJUST_ALLGATHERV=2
    export OMP_NUM_THREADS=1
    
    cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
    $MPI_COMMAND ./a.out < input.dat > output.dat

グループ9 xiシステム

  • 大容量なメモリ・localディスク搭載機です。gaussian計算はここで実行するのがよい。
  • Ivy-bridge アーキテクチャーのXeon CPUで構成される計算機グループです。各ノードは2CPU(計16core)で構成されています。メモリは128GBです。
  • AVX機能があり高速に計算できます。
  • スクリプトの例(cshの場合)
    • フラット並列(32コア)
      !/bin/csh -f
      #$ -cwd
      #$ -q xi1.q
      #$ -pe x16 32
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      setenv I_MPI_PIN     1                          
      #setenv I_MPI_FABRICS shm:dapl 
      #setenv I_MPI_FABRICS shm:ofa
      setenv I_MPI_FABRICS shm:tcp
      #setenv I_MPI_DEBUG 7
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      setenv OMP_NUM_THREADS         1                  ← hybrid計算の場合はここの数値を変える
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1
  • スクリプトの例(bash)
    #$ -S /bin/bash
    #$ -cwd
    #$ -q xi1.q
    #$ -pe x16 16
    #$ -N JOB_NAME
    module load intel/2020.2.254
    module load intelmpi/2020.2.254
    # Above settings should be consistent with those used in the compilation
    MPI_COMMAND=mpirun
    export I_MPI_PIN=1
    export I_MPI_ADJUST_ALLGATHERV=2
    export OMP_NUM_THREADS=1
    cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > 
    hostfile.$JOB_ID
    $MPI_COMMAND ./STATE < nfinp_1 > nfout_1

グループ10a-d xhシステム

  • Haswell アーキテクチャーのXeon CPUで構成される計算機グループです。各ノードは2CPU(計24core)で構成されています。メモリは64GBです。
  • グループ10内ではINFINIBANDによる並列計算が可能
  • グループ11内ではINFINIBANDによる並列計算が可能
  • AVX機能があり高速に計算できます。
  • スクリプトの例(cshの場合)
    • フラット並列(48コア)
      !/bin/csh -f
      #$ -cwd
      #$ -q xh1.q
      #$ -pe x24 48
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      setenv I_MPI_PIN     1           
      setenv I_MPI_FABRICS shm:tcp                       ← xh1 の場合 shm:dapl or shm:ofa でinfinibandが使えます
      #setenv I_MPI_DEBUG 7
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      setenv OMP_NUM_THREADS         1                  ← hybrid計算の場合はここの数値を変える
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1
  • スクリプトの例(bashの場合)
    • フラット並列(48コア)
      !/bin/bash -f
      #$ -cwd
      #$ -q xh1.q
      #$ -pe x24 48
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      
      export I_MPI_PIN=1           
      export I_MPI_FABRICS=shm:tcp                       ← xh1 の場合 shm:dapl or shm:ofa でinfinibandが使えます
      #export I_MPI_DEBUG=7
      setenv OMP_NUM_THREADS         1                  ← hybrid計算の場合はここの数値を変える
      
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
       
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1

グループ13 xbシステム

  • Broadwell アーキテクチャーのXeon CPU(Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz)で構成される計算機グループです。各ノードは2CPU(計32core)で構成されています。メモリは64GBです。
  • スクリプトの例(cshの場合)
    • フラット並列(64コア)
      !/bin/csh -f
      #$ -cwd
      #$ -q xb1.q
      #$ -pe x32 64
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      setenv I_MPI_PIN     1                             
      setenv I_MPI_FABRICS shm:dapl                      ← shm:ofa 
      #setenv I_MPI_DEBUG 7
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE    ← STATEの適切なバージョンを使用
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      setenv OMP_NUM_THREADS         1                   ← hybrid計算の場合はここの数値を変える
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1
  • スクリプトの例(bashの場合)
    • フラット並列(64コア)
      !/bin/bash
      #$ -cwd
      #$ -q xb1.q
      #$ -pe x32 64
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      
      export I_MPI_PIN=1                             
      export I_MPI_FABRICS=shm:dapl                      ← shm:ofa 
      #export I_MPI_DEBUG=7
      setenv OMP_NUM_THREADS         1                   ← hybrid計算の場合はここの数値を変える
      
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE    ← STATEの適切なバージョンを使用
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1

グループ14 x17システム

  • SkylakeアーキテクチャーのXeon CPU(Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz)で構成される計算機グループです。各ノードは2CPU(計32core)で構成されています。メモリは96GBです。
  • スクリプトの例(cshの場合)
    • フラット並列(2ノード64コア)
      !/bin/csh -f
      #$ -cwd
      #$ -q x17.q
      #$ -pe x32 64
      #$ -N JOB_NAME                                     ← ジョブの名称を設定できる
      #$ -j y
      
      module load intel/2020.2.254
      module load intelmpi/2020.2.254
      
      setenv I_MPI_PIN     1                             
      setenv I_MPI_FABRICS shm:dapl                      ← shm:ofa 
      #setenv I_MPI_DEBUG 7
      setenv OMP_NUM_THREADS         1                   ← hybrid計算の場合はここの数値を変える
      
      ln -fs ~/STATE/src/develop/STATE5.6.0/STATE STATE    ← STATEの適切なバージョンを使用
      ln -fs ~/STATE/gncpp/pot.O_pbe1  fort.37
      ln -fs ~/STATE/gncpp/pot.H_lda1  fort.38
      
      cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
      mpirun  ./STATE < nfinp_1 > nfout_1
  • スクリプトの例(bashの場合)
    #$ -S /bin/bash
    #$ -cwd
    #$ -q x17.q
    #$ -pe x32 32
    #$ -N JOB_NAME
    #$ -j y
    
    module load intel/2020.2.254
    module load intelmpi/2020.2.254
    # Above settings should be consistent with those used in the compilation
    
    MPI_COMMAND=mpirun
    
    export I_MPI_PIN=1
    export I_MPI_FABRICS=shm:dapl
    export OMP_NUM_THREADS=1
    
    cat $PE_HOSTFILE | awk '{ print $1":"$2/ENVIRON["OMP_NUM_THREADS"] }' > hostfile.$JOB_ID
    $MPI_COMMAND ./a.out < input.dat > output.dat

グループ15 x19システム

  • Cascade LakeアーキテクチャーのXeon CPU(Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz)で構成される計算機グループです。各ノードは2CPU(計40core)で構成されています。

グループ16 x20システム

  • Cascade LakeアーキテクチャーのXeon CPU(Intel(R) Xeon(R) Gold 6230R CPU @ 2.10GHz)で構成される計算機グループです。各ノードは2CPU(計52core)で構成されています。

使用可能なキューの調べ方

  • Yオプションなどを利用してsmithなどのログインノードへsshでログインします。ログインノード上で
 qmon

を実行することでqmonのウィンドウが立ち上がり

Queue Control

を見ると使用可能なキュー名(qsubの-qオプション以降に指定するオプション)を

Parallel Environment

見ると並列環境(qsubの-peオプション以降に指定するオプション)を確認することができます。

コンパイル

  • コンパイラの環境設定: ホームディレクトリにある.bashrc(lsでは見えません。ls -laとすると見えます。)に2行を追加して下さい。
    module load intel/2020.2.254
    module load intelmpi/2020.2.254

STATEのコンパイル

  • インクルードファイルmake.archをSTATEソースのディレクトリに置いてmakeしてください。
  • make.archの例
    ##################################  for (Xeon,smith) #################################
    F90    = mpiifort
    LINKER = mpiifort
    OMP    = -qopenmp
    OPT3   =
    FFLAGS= $(OMP) $(OPT3) -xSSE4.2 -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX
    FLAGG  = $(OMP) $(OPT3)
    FLAGD  = $(OMP) 
    FFTW_DIR=$(MKLROOT)/include/fftw
    INCLUDE = -I$(FFTW_DIR) 
     LIBS   = -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -mkl=parallel
    CPPDIR  = /usr/bin
    CPP     = $(CPPDIR)/cpp -P -C -traditional
     P_FLAGS  = -D_INTEL_DAVIDSON_ -D_MKL_FFTW_ -D_FFTW3_ -D_TIMER_ -D_OPENMP_FUNC_ -D_SCALAPACK_ \
               -D_ALLGATHERV_NOOVERLAP_
    ######################################################################

あるいは

##################################  for (Xeon,smith) #################################
F90    = mpiifort
LINKER = mpiifort
OMP    = -qopenmp
OPT3   =
 FLAGS  = $(OMP) $(OPT3) -axCOMMON-AVX512,CORE-AVX512,CORE-AVX2,CORE-AVX-I,AVX,SSE4.2,SSE4.1,SSSE3,SSE3,SSE2 -fixed -extend_source
FLAGG  = $(OMP) $(OPT3)
FLAGD  = $(OMP) 
FFTW_DIR=$(MKLROOT)/include/fftw
INCLUDE = -I$(FFTW_DIR) 
#for intelmpi
LIBS   = -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -mkl=parallel
CPPDIR  = /usr/bin
CPP     = $(CPPDIR)/cpp -P -C -traditional
##for intelmpi
P_FLAGS  = -D_INTEL_DAVIDSON_ -D_MKL_FFTW_ -D_FFTW3_ -D_TIMER_ -D_OPENMP_FUNC_ -D_SCALAPACK_ \
           -D_ALLGATHERV_NOOVERLAP_
################################################################################

過去の情報はSmithシステムの使い方 (旧) を参照して下さい。

ネットワーク構成

-- | 等はネットワークの接続を、[]でくくられた名前はコンピュータの名称をそれぞれ表す。

+ 工学部内 ODINS network
|
|           Backbone network( 工学部ネットワークから直接アクセスできない )
|               |
+- [smith] -----+   133.1.116.161 ログイン&アプリケーションサーバー & ファイルサーバー
+- [rafiki] ----+   133.1.116.162 ログイン&アプリケーションサーバー & バックアップ
+- [tiamat] ----+   133.1.116.211 ログイン&アプリケーションサーバー
|               |
|               | ■ノード名         サーバー CPUコアxCPU数  並列環境  キュー
|               |                   G番号   =ノードコア数
|               +-- [xe00]-[xe01]       4     4x2=8        x8       xe1.q
|               +-- [xe02]-[xe06]       5     4x2=8        x8       xe1.q
|               +-- [xe02]-[xe06]       6     6x2=12       x12      xe2.q
|               |
|               +-- [xs01]-[xs18]       8     8x2=16       x16      xs2.q
|               +-- [xi01]-[xi13]       9     8x2=16       x16      xi1.q
|               |      (大メモリ機)
|               +-- [xh01]-[xh36]      10a    12x2=24      x24      xh1.q
|               +-- [xh37]-[xh43]      10b    12x2=24      x24      xh2.q
|               +-- [yh01]-[yh03]      10d    12x2=24      x24      yh1.q
|               |
|               +-- [xb01]-[xb14]      13     16x2=32      x32      xb1.q
|               +-- [x1701]-[x1708]    14     16x2=32      x32      x17.q
|               +-- [x1901]-[x1906]    15     20x2=40      x40      x19.q
|               +-- [x2001]-[x2020]    16     26x2=52      x52      x20.q
|               |
|               |  ■引退ノード■
|               +-- [it??]-[it??]       0 (itanium)
|               +-- [opt00], [opt01]    コンパイルサーバー(opteron,opt01)
|               +-- [opt02]-[opt11]     1 (各ノード2CORE) mpich-opt 
|               +-- [opt12]-[opt21]     2 (各ノード4CORE) mpich-opt2
|               +-- [opt22]-[opt36]     3 (各ノード4CORE) mpich-opt3
|               +-- [xeon00] ---+      サブログイン・計算サーバー (ノード8CORE)
|               |               +--- [xeon01-07]  グループ6 (各ノード8CORE)
|               |
|               |
+- [sb100] -----+    133.1.116.165 別グループ計算サーバー
                |
                +-- [sb101]-[sb120]     7a    6x1=6       x6 ?      sb.q
                |
                |
                +-- [rl03]-[rl20]       7b    6x1=6       x6 ?      rl.q
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS